00:10:06 | FromDiscord_ | <moerm> *** forum server problem? *** The forum is *very* slow currently |
00:13:45 | * | zyklon joined #nim |
00:16:37 | * | xet7 quit (Quit: Leaving) |
00:20:09 | FromDiscord_ | <exelotl> when wrapping a C function pointer type, should I use {.noconv.} or something else? |
00:26:04 | * | shpx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
00:26:05 | * | zyklon quit (Read error: Connection reset by peer) |
00:26:45 | * | shpx joined #nim |
00:31:30 | * | shpx quit (Client Quit) |
00:32:53 | * | shpx joined #nim |
00:37:01 | FromGitter | <dom96> moerm: seems fast for me. Maybe your internet? |
00:39:59 | * | leorize joined #nim |
00:42:28 | * | zyklon joined #nim |
00:42:36 | * | wildlander quit (Quit: Konversation terminated!) |
00:44:09 | FromDiscord_ | <moerm> @dom96 Yes. It's OK again (whatever the reason was. maybe my ISP) |
00:44:40 | * | theelous3 joined #nim |
01:01:03 | * | ng0 quit (Ping timeout: 256 seconds) |
01:04:24 | * | ng0 joined #nim |
01:24:11 | * | lritter quit (Remote host closed the connection) |
01:33:04 | * | leorize quit (Remote host closed the connection) |
01:33:30 | * | leorize joined #nim |
01:35:35 | FromDiscord_ | <domain3000> Sex dating Discord > http://discord.amazingsexdating.com |
02:03:29 | * | Tyresc quit (Quit: WeeChat 2.4-dev) |
02:23:48 | * | gangstacat quit (Ping timeout: 245 seconds) |
02:26:08 | * | ng0_ joined #nim |
02:28:53 | * | ng0 quit (Ping timeout: 256 seconds) |
02:57:41 | * | Snircle_ quit (Quit: Textual IRC Client: www.textualapp.com) |
03:00:35 | * | banc quit (Quit: Bye) |
03:01:53 | FromDiscord_ | <moerm> see you |
03:04:12 | * | abm quit (Read error: Connection reset by peer) |
03:17:01 | * | banc joined #nim |
03:24:41 | * | cspar_ joined #nim |
03:25:48 | * | cspar quit (Ping timeout: 250 seconds) |
03:40:18 | * | dddddd quit (Remote host closed the connection) |
03:52:57 | * | oculux quit (Quit: blah) |
04:01:23 | * | nsf joined #nim |
04:02:58 | * | oculux joined #nim |
04:03:05 | * | oculux quit (Client Quit) |
04:03:38 | * | oculux joined #nim |
04:21:08 | * | kapil____ joined #nim |
04:30:31 | FromGitter | <gogolxdong> How to convert slice to seq? |
04:36:08 | FromGitter | <kaushalmodi> you mean an array to seq? |
04:36:24 | FromGitter | <kaushalmodi> I believe `newSeq` + `for` loop is the way to go: https://github.com/nim-lang/Nim/blob/ab425d793af1a5c0b221bfbeab382b4781479c63/lib/system.nim#L3391-L3395 |
04:38:24 | FromGitter | <kaushalmodi> you shouldn't need `newSeq`, but I think it would be more efficient than doing `.add` starting from an empty `@[]` |
04:39:25 | FromGitter | <gogolxdong> sorry, slice to JsonNode |
04:39:40 | FromGitter | <gogolxdong> not array , slice like data[1..^1] |
04:41:24 | FromGitter | <gogolxdong> in karax |
04:41:51 | FromGitter | <kaushalmodi> `dat[1 .. ^1]` would technically be a seq |
04:42:01 | * | Marumoto quit (Ping timeout: 244 seconds) |
04:42:14 | FromGitter | <kaushalmodi> `Slice` / `HSlice` is simply a 2-element object |
04:42:45 | FromGitter | <kaushalmodi> that said, not sure how I would convert that slice to JsonNode |
04:42:55 | FromGitter | <kaushalmodi> s/slice/seq |
04:43:26 | leorize | it's technically an array so it can be treated as an array in JsonNode? |
04:44:25 | FromGitter | <kaushalmodi> https://nim-lang.github.io/Nim/system.html#%5B%5D%2CopenArray%5BT%5D%2CHSlice%5BU%2CV%5D shows that the HSlice notation input returns a seq |
04:58:48 | * | Marumoto joined #nim |
05:02:00 | * | theelous3 quit (Ping timeout: 250 seconds) |
05:05:26 | * | leorize quit (Remote host closed the connection) |
05:28:24 | FromGitter | <gogolxdong> something like this ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5c38297883c7e377654ed204] |
05:29:37 | * | Marumoto quit (Ping timeout: 268 seconds) |
05:34:35 | * | darithorn quit (Quit: Leaving) |
06:07:18 | * | vlad1777d joined #nim |
06:11:03 | * | narimiran joined #nim |
06:25:45 | * | NimBot joined #nim |
06:38:23 | * | leorize joined #nim |
06:50:22 | * | s3govesus quit (Ping timeout: 272 seconds) |
06:53:00 | * | krux02 joined #nim |
07:04:43 | * | shpx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
07:09:32 | * | kapil____ quit (Quit: Connection closed for inactivity) |
07:09:46 | * | Marumoto joined #nim |
07:11:36 | Araq | https://www.twitch.tv/araq4k |
07:11:47 | Araq | DAILY SCRUM LIVE STREAM! |
07:11:51 | Araq | ;-) |
07:23:42 | * | absolutejam_phon joined #nim |
07:24:04 | * | absolutejam_phon quit (Read error: Connection reset by peer) |
07:26:01 | * | LargeEpsilon joined #nim |
07:28:26 | * | LargeEpsilon quit (Client Quit) |
07:41:47 | * | gangstacat joined #nim |
07:42:50 | * | BigEpsilon joined #nim |
07:53:34 | Araq | in case you missed it |
07:54:23 | Araq | join us on Monday |
07:59:14 | * | vlad1777d quit (Ping timeout: 250 seconds) |
08:00:35 | FromGitter | <Varriount> Araq: Any idea if Twitch has a way to send love streams into your head while you sleep? 😉 |
08:02:10 | * | miran joined #nim |
08:02:47 | * | narimiran quit (Ping timeout: 240 seconds) |
08:03:39 | * | miran is now known as narimiran |
08:09:04 | * | absolutejam joined #nim |
08:09:07 | absolutejam | morning |
08:09:29 | narimiran | morning |
08:11:22 | absolutejam | you ever dream of code? |
08:11:26 | absolutejam | think I need more sleep. |
08:28:25 | absolutejam | does defer always do something last or is it only in the event of an exception? |
08:28:29 | absolutejam | eg defer myFile.close |
08:30:27 | leorize | always do something |
08:30:49 | leorize | and you shouldn't use defer that way |
08:31:06 | leorize | it's quite different than expected |
08:32:26 | leorize | eg. let myFile = open(); defer: close myFile is equal to try: let myFile = open() finally: close myFile |
08:33:05 | leorize | which means it will be called anyway if open() failed, possibly freeing whatever is it that myFile is refering to at the callsite |
08:34:25 | absolutejam | what's the correct approach for this then? |
08:34:34 | * | zyklon quit (Read error: Connection reset by peer) |
08:34:59 | leorize | use an explicit try-finally block |
08:36:19 | Araq | leorize, I think that's a myth I'm responsible for |
08:36:35 | Araq | and defer for file closing works fine |
08:36:49 | Araq | I never use 'defer', that's why I'm not sure |
08:38:39 | absolutejam | Sorry, how is your example different leorize? |
08:38:42 | absolutejam | Not had my morning coffee yet |
08:39:21 | absolutejam | let foo = open(...); defer foo.close |
08:39:31 | absolutejam | is what I have now, but I wasn't sure if it was correct |
08:41:11 | leorize | Araq said it's fine to use it like that so :P |
08:51:28 | * | zyklon joined #nim |
09:03:51 | Araq | don't ask me, try it for yourself, inspect the C code with -d:release (release makes it easier to comprehend) |
09:06:32 | * | banc quit (Ping timeout: 272 seconds) |
09:07:45 | * | xet7 joined #nim |
09:07:46 | * | livcd quit (Remote host closed the connection) |
09:07:53 | * | livcd joined #nim |
09:07:55 | * | banc joined #nim |
09:16:44 | FromGitter | <deansher> And perhaps if you are up for making a contribution, find the place in documentation where the behavior should have been made clear and submit a PR to make it clear? "Use the force, read the intermediate code source" being an awesome available option but a bit extreme. :-) |
09:20:15 | * | xet7 quit (Quit: Leaving) |
09:22:37 | krux02 | nim gdb debugging stream: https://www.twitch.tv/araq4k |
09:23:35 | absolutejam | well, it's not that it's unclear tbh |
09:23:46 | absolutejam | it's just not a feature I'm familiar with |
09:25:36 | Zevv | "RAII" |
09:26:53 | absolutejam | where do 'pragmas' come from? |
09:26:58 | absolutejam | is it a feature from another language? |
09:30:40 | * | xet7 joined #nim |
09:31:45 | * | shpx joined #nim |
09:33:16 | * | Marumoto quit (Ping timeout: 250 seconds) |
09:36:20 | * | Marumoto joined #nim |
09:40:24 | * | sheerluck joined #nim |
09:42:48 | * | nc-x joined #nim |
09:43:00 | nc-x | araq krux02 |
09:43:09 | nc-x | that code is due to https://github.com/nim-lang/Nim/pull/10026 |
09:43:19 | nc-x | can probably be removed if you do your patch |
09:44:00 | FromGitter | <alehander42> maybe you need to comment on the stream, not sure if they'll see it here |
09:44:46 | nc-x | can you post it there? |
09:44:51 | nc-x | i am not on twitch |
09:49:46 | Araq | https://github.com/nim-lang/Nim/issues/10240 |
09:53:47 | * | nc-x quit (Ping timeout: 256 seconds) |
09:54:04 | * | xet7 quit (Ping timeout: 264 seconds) |
09:54:07 | * | Marumoto quit (Ping timeout: 240 seconds) |
09:54:41 | * | floppydh joined #nim |
10:19:59 | * | shpx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
10:25:21 | * | OrganicAnywhere joined #nim |
10:28:29 | * | shpx joined #nim |
10:28:58 | * | chemist69 joined #nim |
10:32:43 | * | Vladar joined #nim |
10:45:22 | * | dom96_w joined #nim |
10:58:18 | * | cspar_ quit (Ping timeout: 268 seconds) |
10:58:23 | * | cspar joined #nim |
10:58:50 | dom96_w | Araq: No recording of livestream? :( |
10:59:32 | * | CcxWrk quit (Ping timeout: 268 seconds) |
11:00:23 | * | ng0_ is now known as ng0 |
11:01:13 | * | nc-x joined #nim |
11:01:47 | nc-x | dom96_w: araq said it will be uploaded on youtube |
11:01:59 | Araq | yeah I have the recording |
11:02:14 | Araq | but we're thinking about redoing it :P |
11:02:25 | nc-x | lol |
11:02:52 | Araq | but hey, we fixed 2 bugs |
11:03:11 | * | absolutejam_phon joined #nim |
11:03:37 | * | absolutejam_phon quit (Read error: Connection reset by peer) |
11:05:41 | dom96_w | Redoing it? You've already fixed the bugs, there is no re-do's :P |
11:05:47 | dom96_w | Just upload it, the more videos the better |
11:07:44 | FromGitter | <mratsim> killer app incoming: https://github.com/bluenote10/nim-electron-karax |
11:08:26 | dom96_w | :o |
11:08:51 | FromGitter | <kayabaNerve> But does it count as an app |
11:09:37 | dom96_w | .to(cstring) wat https://github.com/bluenote10/nim-electron-karax/blob/master/src/main.nim#L40 |
11:10:08 | FromGitter | <kayabaNerve> Shhhhhhhh |
11:10:15 | FromGitter | <kayabaNerve> Code's not bad if you never have anyone review it |
11:10:34 | FromGitter | <kayabaNerve> Just shift your paradigm /s |
11:10:46 | * | PMunch joined #nim |
11:11:20 | FromGitter | <alehander42> what is the problem with `to(cstring)` ? |
11:11:41 | dom96_w | I've never seen it and it makes me wonder why it exists |
11:11:46 | dom96_w | you can just write .cstring |
11:11:50 | * | CcxWrk joined #nim |
11:11:53 | FromGitter | <alehander42> no .. this is a JsObject |
11:12:03 | dom96_w | oh |
11:12:30 | FromGitter | <alehander42> i can agree that maybe `cast` is better because it makes people use stuff like this less and type their objects more |
11:12:41 | FromGitter | <alehander42> but it's an acceptable helper for prototyping |
11:13:15 | dom96_w | IMO it shouldn't be called `to` |
11:13:20 | dom96_w | maybe something like `getAs` |
11:13:31 | dom96_w | to make it clearer that there is some container and that it can fail |
11:13:52 | FromGitter | <alehander42> `as` is better indeed, `to` implies that there is a conversion going on |
11:14:28 | FromGitter | <alehander42> `getAs` because `as` is a keyword? |
11:14:44 | dom96_w | because that's too short |
11:14:56 | dom96_w | and to imply that there is some runtime thing happening |
11:15:09 | FromGitter | <alehander42> but there is no runtime thing happening |
11:15:27 | FromGitter | <alehander42> it's an escape hatch for the type system |
11:15:53 | Araq | the escape hatch is spelt 'cast' |
11:15:53 | dom96_w | So if I write .to(MyRandomObj) it won't raise an exception? |
11:16:13 | FromGitter | <alehander42> yes, it's equivalent to `cast` |
11:16:31 | Araq | mratsim: very interesting indeed. if only we had an electron alternative, but oh well |
11:17:16 | * | CcxWrk quit (Ping timeout: 244 seconds) |
11:17:33 | absolutejam | keep getting caught out by not declaring my Type properties as public |
11:17:38 | absolutejam | / exported |
11:17:41 | * | OrganicAnywhere quit () |
11:17:51 | absolutejam | is it a type 'field'? |
11:18:04 | Araq | yep |
11:18:17 | FromGitter | <alehander42> honestly i expect such an alternative would depend on wasm one day (in order to be still working well in browsers, but having a slimmer runtime) |
11:18:24 | dom96_w | alehander42: huh, so what will happen? |
11:18:36 | FromGitter | <alehander42> @dom96 it's literally a cast |
11:18:36 | Araq | yeah to be honest, I think we picked the wrong default years ago and 'public' should be the default |
11:18:40 | * | dddddd_ joined #nim |
11:18:41 | dom96_w | Do I get JS errors because the field's don't exist (if I `to` on an object)? |
11:18:49 | Araq | but nobody agrees with me, so ... it's ok |
11:18:50 | narimiran | agreed for public |
11:18:57 | Araq | damn. |
11:19:02 | narimiran | it has bitten me so many times |
11:19:12 | Araq | runnableExample catches it though |
11:19:13 | narimiran | and the reversed way seems more logical to me |
11:19:15 | * | dddddd_ is now known as dddddd |
11:19:20 | Araq | because it runs it from a client module |
11:19:21 | narimiran | but i guess that train has left.... |
11:19:33 | FromGitter | <alehander42> @dom96_w a.to(B) <=> castB (a) |
11:19:38 | FromGitter | <mratsim> explicit (public) better than implicit? |
11:20:48 | narimiran | or is 'ship has sailed' the english version |
11:20:49 | FromGitter | <alehander42> so in this sense, `to` does nothing on runtime, it expands to `a` |
11:20:58 | Araq | well in the stdlib most symbols are public, in the compiler most are private |
11:21:04 | narimiran | 'train has left' is the direct translation from croatian :D |
11:21:17 | Araq | so it depends on the domain I guess |
11:21:33 | FromGitter | <alehander42> narimiarn, i am surprised, you have such a coastline! |
11:21:46 | Araq | narimiran, I think English has this saying, at least I immediately understood it |
11:21:56 | dom96_w | alehander42: again, what happens when I cast (`to`) to something silly? |
11:22:01 | Araq | "this ship has sailed" |
11:22:05 | Araq | "this train has left" |
11:22:33 | absolutejam | I just need to get it into my muscle memory |
11:22:48 | FromGitter | <alehander42> @dom96_w the operation that takes the result of `to` might raise, but `to` itself can't |
11:22:52 | narimiran | @alehander42 i live by the sea, i guess i've gotten used to it |
11:23:10 | FromGitter | <alehander42> @dom96_w if you don't do anything with the result of an incorrect cast, nothing will happend |
11:24:14 | FromGitter | <alehander42> `to` is a noop |
11:24:49 | Araq | oh, it's Friday |
11:25:04 | Araq | could stream more. |
11:25:20 | Araq | wanna see me add markdown features to our RST pipeline? |
11:25:21 | narimiran | Araq: back to business: it is nice that we have clickable types in the documentation, but what would be nice (i would have used it so many times in the last few days) to have proc name clickable to give you the direct link to it |
11:25:41 | FromGitter | <mratsim> ^ |
11:26:13 | narimiran | now if you click on its name in the contents on the left, that happens (you get the direct link), but not when you in the documentation part |
11:26:25 | narimiran | (i hope i have explained what i mean) |
11:26:34 | Araq | narimiran, well you know how the docgen works, I showed you ;-) |
11:26:37 | * | theelous3 joined #nim |
11:27:27 | narimiran | ok, putting it on my todo list :) |
11:27:48 | Araq | on my list: - []() links (never remember the order) |
11:27:53 | Araq | - headers with #, ## |
11:27:58 | narimiran | so: markdown |
11:27:59 | Araq | anything else? |
11:28:16 | narimiran | `code` not doubletick |
11:28:26 | Araq | that's part of RST already |
11:28:35 | Araq | but I can change its rendering style |
11:29:09 | narimiran | `foo` gives you some kind of italic (similar to asterisks), ``foo`` gives you code |
11:29:16 | FromGitter | <alehander42> @dom96 at the very least we have to add better explanation of how the dynamic JsObject and normal types interact to jsffi docs, i'll try to do that this month |
11:30:13 | dom96_w | Araq: Don't create a frankenstein |
11:30:20 | narimiran | ^ |
11:32:00 | dom96_w | Write an asciidoc parser from scratch instead ;) |
11:32:07 | narimiran | hahah |
11:32:20 | Araq | we already have markdown extensions, ```nim comes to mind |
11:32:29 | Araq | and RST is quite close to markdown |
11:32:46 | Araq | and I don't want to migrate to markdown completely because it's shit |
11:33:08 | Araq | adding 2 more features won't kill us, we already have the frankenstein, might as well put some lipstick onto it |
11:33:17 | narimiran | ok, then implement just []() and # headers |
11:33:29 | narimiran | and we won't tell you that we now have markdown :D |
11:34:45 | Araq | and I might fix this RST specific problem where stuff is simply left out instead of a proper error message |
11:36:35 | Araq | does anybody have an example handy? |
11:36:41 | * | CcxWrk joined #nim |
11:37:25 | narimiran | i *think* that putting `..code-blok::` (without space between .. and code-block) silently ignores that block |
11:37:43 | narimiran | or something like that has tripped me in the past |
11:39:46 | federico3 | https://forum.nim-lang.org/t/4524#28312 nice tip on nesting templates in macros. Should this go in the manual? |
11:40:44 | FromGitter | <GULPF> Another rst issue: for single paragraphs, no <p> element is created. This messed up the spacing, especially when there is a runnable examples code block below the paragraph. |
11:41:37 | FromGitter | <GULPF> example: https://nim-lang.github.io/Nim/times.html#toParts%2CDuration |
11:42:11 | FromGitter | <GULPF> Compare the spacing before "Examples: " for that proc and the one below |
11:42:33 | narimiran | hey @GULPF i don't know why gist notifications don't work (i also didn't get a notification for your reply), so if you manage to update that list of most used packages, please ping me here |
11:42:50 | absolutejam | is there a more extensie style guide than the one on the website? |
11:43:02 | FromGitter | <GULPF> @narimiran ok, will do |
11:43:26 | narimiran | absolutejam: just follow this https://nim-lang.org/docs/nep1.html and you'll be fine |
11:44:03 | narimiran | absolutejam: also, there is a tool called `nimpretty` you could use |
11:44:45 | dom96_w | GULPF: IMO that's just something the "Examples" should do, it should add some padding |
11:45:26 | narimiran | dom96_w: but it is different if there is one line of text above it or multiple lines |
11:45:29 | absolutejam | Yeah, I've seen that but some languages have a community style guide with more examples |
11:45:41 | absolutejam | this isn't me having a go, I'm just curious if it currently exists |
11:52:38 | FromGitter | <kayabaNerve> Araq: Electron alternative? What about WebView? ⏎ ⏎ It's not a browser that runs HTML/JS and so on. It's a... library? for native code to create a pseudo browser to display HTML/CSS and run JS. |
11:52:56 | FromGitter | <kayabaNerve> I'm using it for a GUI in my Nim app. |
11:53:00 | Araq | these libs tend to be terrible to build |
11:53:22 | Araq | how do you do it? |
11:53:55 | * | nc-x quit (Quit: Page closed) |
11:54:21 | dom96_w | My dream is an Electron written in Nim. Just a framework that makes creating GUIs in libcef easy |
11:54:27 | PMunch | Ah the age old discussion of UI toolkits. Guess I should continue work on my own UI toolkit.. |
11:54:56 | absolutejam | https://xkcd.com/927/ |
11:55:07 | FromGitter | <alehander42> i cant really see how all of those fix the bloat of having a browser engine |
11:55:19 | PMunch | I don't even need to click that to knw which one it is :P |
11:55:19 | FromGitter | <alehander42> and stuff on top of it |
11:55:49 | PMunch | My idea though is to use the native toolkits, but not in a 1:1 way like WxWidgets or NiGui |
11:56:05 | FromGitter | <alehander42> @PMunch and how would you target a browser |
11:56:17 | PMunch | By having a browser target |
11:56:30 | Araq | problem is that the browser, its DOM and event model are everywhere |
11:56:39 | Araq | and quite portable. |
11:56:54 | FromGitter | <alehander42> would it be easy to map the same ui to html/css ? |
11:57:54 | absolutejam | narimiran: where's that? |
11:58:10 | PMunch | Well the idea is to tell the graphical toolkit what you need in terms of inputs and outputs and then let the target decide how to display them. |
11:58:14 | narimiran | absolutejam: where's what? |
11:58:22 | PMunch | With some more manual control than that though :P |
11:58:29 | absolutejam | nimpretty |
11:58:48 | absolutejam | is it a 3rd party util? didn't see it on Nimble |
11:58:57 | FromGitter | <alehander42> PMunch, and would it be easy to ensure you produce the exact same behavior for all targets |
11:58:58 | narimiran | absolutejam: i think it should come preinstalled with nim |
11:59:05 | FromGitter | <alehander42> behavior+looks |
11:59:20 | absolutejam | https://github.com/nim-lang/Nim/issues/7420 - Don't think it's there any more? |
11:59:26 | * | livcd quit (Changing host) |
11:59:26 | * | livcd joined #nim |
11:59:35 | PMunch | alehander42, the entire point is that looks shouldn't be the same. Function should be the same, looks should depend on the system. |
11:59:52 | FromGitter | <alehander42> ehhh, it's debatable if this is a good thing |
11:59:54 | narimiran | absolutejam: no, there definitely is, 0.19.2 had lots of fixes for it |
12:00:12 | narimiran | absolutejam: https://github.com/nim-lang/Nim/tree/devel/nimpretty |
12:00:15 | FromGitter | <alehander42> people start to get used to having the same recognizable ui everywhere |
12:00:59 | PMunch | alehander42, oh definitely. But the idea is to decouple function from UI, but through a modular system allow the user to manually create UIs for each target if they want, or rely on a "UI target engine" to create one for them based on platform guidelines. |
12:01:06 | narimiran | absolutejam: if you installed nim via choosenim, i don't know if it comes bundled or not |
12:01:11 | absolutejam | oh, I did |
12:01:14 | absolutejam | mb |
12:01:27 | Araq | IMHO this is a typical programmer's perspective ("Must use native UI"), ordinary users appreciate when the program looks the same on every OS instead |
12:01:37 | livcd | why not sciter ? |
12:01:58 | PMunch | alehander42, well most desktop apps would probably end up looking the same since the UI toolkits are similar. But a mobile app shouldn't look anything like a desktop app, and a TUI shouldn't look like a GUI |
12:03:07 | PMunch | Araq, disabled people really prefer native UIs though since they have much better accessibility options than some custom made system |
12:03:18 | PMunch | And they tend to be very optimised |
12:03:27 | livcd | which reminds me that the sciter bindings for nim are probably outdated at this point |
12:03:35 | dom96_w | Web Browsers have pretty good accessibility nowadays |
12:03:39 | Araq | disabled people have no choice and to use the internet though |
12:03:44 | dom96_w | I wouldn't be surprised if it's better than native in fact |
12:04:07 | livcd | dom96_w: you really liked how glasswire looked right ? |
12:04:27 | dom96_w | yep |
12:04:39 | PMunch | dom96_w, well they can't offer the same level of contextuality though seing how every UI element nowadays is just a super styled div. |
12:04:48 | livcd | was stalking you and accidentally discovered glasswire as well |
12:04:57 | livcd | beautiful desktop apps are a scarcity |
12:16:34 | absolutejam | does it make sense to put nimpretty in Nimble? |
12:17:16 | FromGitter | <zacharycarter> not much has changed - http://blog.johnnovak.net/2016/05/29/cross-platform-gui-trainwreck-2016-edition/ |
12:17:36 | narimiran | absolutejam: it comes with nim, it's just that choosenim isn't updated yet to include it, AFAIK |
12:18:08 | FromGitter | <zacharycarter> I guess it depends what your GUI needs are - if you're building a desktop app and you are willing to spend a lot of time optimizing or you don't care about performance - electron is a fine candidate |
12:18:34 | absolutejam | I was trying to build it manually but it's bawking ../compiler/pathutils.nim(13, 22) Error: cannot open file: pathnorm at me |
12:18:36 | FromGitter | <zacharycarter> webviews might work in certain scenarios - but they are not for every situation |
12:18:57 | FromGitter | <zacharycarter> for instance - the games industry has moved away from and scrapped most engine tooling that was built around CEF / web views |
12:19:11 | FromGitter | <zacharycarter> for multiple reasons |
12:19:34 | FromGitter | <zacharycarter> the most obvious - C++ devs aren't going to be necessarily great at working with the web |
12:20:17 | FromGitter | <zacharycarter> I don't really think we need a "Nim electron" |
12:20:20 | FromGitter | <zacharycarter> electron is enough - isn't it? |
12:20:43 | FromGitter | <zacharycarter> what we need is - https://github.com/trustable-code/NiGui - to be finished |
12:20:52 | narimiran | absolutejam: since you have choosenim, do `choosenim update devel` and then `choosenim devel`, and then try to build it |
12:25:00 | FromGitter | <kayabaNerve> Araq WebView is a header. A singular C (I think C, not C++) header you include and walk away. There's no linking. It uses various OS APIs to handle the actual browser. It's a cross-platform abstraction. |
12:25:20 | FromGitter | <kayabaNerve> I do have to admit it's minimal. I liked it because it didn't have Electron bloat, but I do think it may cut back too far... |
12:28:50 | FromGitter | <zacharycarter> https://deplinenoise.files.wordpress.com/2017/03/webtoolspostmortem.pdf |
12:29:10 | FromGitter | <zacharycarter> webview is limited - and it's a bit clumsy to work with, as you need to communicate with the host process via sockets |
12:30:03 | * | absolutejam_phon joined #nim |
12:30:35 | * | absolutejam_phon quit (Read error: Connection reset by peer) |
12:31:22 | FromGitter | <zacharycarter> off to work |
12:33:59 | FromGitter | <alehander42> @PMunch of course, TUI is different, but I am not sure if the web UI should be different: at the very least you either need ~ 2x the manpower/manhours to do 2 ui-s or your engine must be really good in abstracting away the differences which seems hard |
12:34:02 | * | sheerluck quit (Quit: Leaving) |
12:34:34 | FromGitter | <kayabaNerve> @zacharycarter You don't need to use sockets |
12:34:38 | FromGitter | <alehander42> socket communication can be abstracted/hidden pretty neatly by nim macros |
12:34:45 | PMunch | Well WebUIs can be two quite different things |
12:34:45 | FromGitter | <kayabaNerve> Or if you do, it's abstracted to the point I don't even notice. |
12:34:54 | FromGitter | <kayabaNerve> I've bound Nim functions and called them over JS. |
12:34:58 | FromGitter | <kayabaNerve> That's how I communicate. |
12:35:09 | PMunch | A web site and a web app can look completely different |
12:35:15 | FromGitter | <zacharycarter> well web sockets |
12:35:24 | FromGitter | <kayabaNerve> You can just bind functions |
12:35:42 | FromGitter | <kayabaNerve> I'm not denying the possibility it's internally using web sockets to call bound functions |
12:35:52 | FromGitter | <kayabaNerve> I'm saying I've never touched web sockets while I've used WebView |
12:35:54 | FromGitter | <alehander42> @kayabaNerve i think i've done something similar with methods invoking sending stuff with json thru socket |
12:36:05 | FromGitter | <zacharycarter> if you're doing something with the JS backend sure |
12:36:13 | FromGitter | <zacharycarter> but I'm not quite sure how you're going to do that with the C backend |
12:36:15 | FromGitter | <kayabaNerve> I'm using JS to call Nim. |
12:36:19 | FromGitter | <alehander42> you can communicate with the c backend in the same way |
12:36:20 | FromGitter | <zacharycarter> oh I see |
12:36:21 | FromGitter | <kayabaNerve> Which is via the C. |
12:36:33 | FromGitter | <kayabaNerve> And the Nim wrapper doesn't have socket macros |
12:36:39 | FromGitter | <kayabaNerve> And I haven't wrote ANY socket code |
12:36:40 | FromGitter | <zacharycarter> I don't know - I've only ever seen people use web sockets with web view |
12:36:54 | FromGitter | <kayabaNerve> That said, it's a bitch about threads. It requires being on the primary thread for Linux/Mac to work. You then lose all access over that thread, which makes safe shutdowns and event loops impossible |
12:36:55 | FromGitter | <zacharycarter> but your method sounds feasible |
12:36:59 | FromGitter | <zacharycarter> yeah |
12:37:10 | FromGitter | <kayabaNerve> I legit have a setInterval immediately execute so I can track Channels |
12:37:30 | FromGitter | <kayabaNerve> I say, OK, I can't have this thread, call my code every 0.06 seconds so I can have thread comms |
12:37:35 | FromGitter | <alehander42> @PMunch yeah, but I am talking about the typical usecase, e.g. if you build slack/spotify/<myissueapp> etc , you would love if you can get desktop and web app versions with almost the same code(with some edge cases maybe) |
12:37:37 | FromGitter | <kayabaNerve> It's such a dirty hack |
12:37:41 | FromGitter | <zacharycarter> :P |
12:37:51 | FromGitter | <zacharycarter> the best kind |
12:38:29 | FromGitter | <alehander42> I am just trying to say that this is not trivial and there is a reason why electron/similar stuff is succesful: your idea sounds cool and i hope it can take off |
12:39:04 | PMunch | alehander42, yeah that is part of the idea. Basically keep more or less the exact same code for the functionality, and then have the option of generating, generating with guiding, or completely custom making a UI. |
12:39:06 | FromGitter | <alehander42> (maybe flutter will also get there? they target the canvas in web ui, but i have no idea if they have desktop versions) |
12:39:28 | Araq | er ... |
12:39:43 | Araq | VS Code on Windows doesn't accept my '}' |
12:39:51 | absolutejam | narimiran: 👍 |
12:39:53 | Araq | any ideas what might cause this? |
12:39:53 | absolutejam | thanks |
12:40:01 | Araq | I can type '{' just fine though |
12:40:25 | FromGitter | <alehander42> i think it's hard to separate a lot of the ui logic: e.g. if you have to create a complicated tree component, but write a separate html ui, wouldn't you need special case javascript/css handling code etc |
12:40:37 | FromGitter | <zacharycarter> Araq: have you recently installed any extensions or changed any key bindings? |
12:40:58 | FromGitter | <zacharycarter> I've seen extensions override key bindings before in VSCode - but it'd be very weird if one was overriding `}` |
12:41:16 | FromGitter | <zacharycarter> you might also check the VSCode console / error log and see if anything is going on there |
12:42:41 | Araq | good points |
12:43:33 | Araq | my console is full of [Extension host] |
12:43:48 | Araq | =outline about my .nim files |
12:44:45 | * | shpx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
12:44:53 | Araq | and in the console I can type } |
12:45:19 | * | Vladar quit (Remote host closed the connection) |
12:45:29 | narimiran | this should be printed as an evidence why indentation-based languages are better :D |
12:45:59 | * | Vladar joined #nim |
12:46:23 | Araq | it's one of these days... |
12:46:30 | Araq | I dunno why I use VS code |
12:47:00 | FromGitter | <zacharycarter> I think it's the extensions - they're so convenient until they start breaking things |
12:47:31 | FromGitter | <zacharycarter> In the output tab - there is a drop down menu where you can inspect output from various output streams in VSCode |
12:47:39 | FromGitter | <zacharycarter> there are quite a few of them - sometimes I find weird issues with VSCode lurking there |
12:47:55 | * | shpx joined #nim |
12:48:18 | FromGitter | <zacharycarter> but in general I agree - VSCode suffers from a lot of the same problems that Atom did - even if it did solve a lot of the performance problems |
12:48:43 | FromGitter | <zacharycarter> I'd be very curious to hear people's experiences using a modal editor + LSP or Sublime Text + LSP |
12:48:53 | FromGitter | <zacharycarter> anywho - now I'm really off to work ;P |
12:49:26 | * | Jehan_ joined #nim |
12:52:38 | PMunch | zacharycarter, I use Vim + LSP, great experience :) |
12:52:59 | FromGitter | <alehander42> i am also using sublime, but haven't started with lsp yet |
12:53:08 | FromGitter | <alehander42> but instlaling it |
12:53:39 | absolutejam | I use VSCode with Vim mode |
12:54:02 | absolutejam | I need to get my Vim-fu down and move over more |
12:54:25 | absolutejam | LSP? |
12:54:34 | narimiran | absolutejam: same here. and it is okayish. not perfect, but for me it's ok to get some of vim functionality combined with vscode goodies |
12:55:00 | absolutejam | yeah, it's pretty good, but there are times it frustrates me |
12:55:39 | absolutejam | like ctrl K + o to open a project folder doesn't work because Vim mode intercepts it, and transversely, things like :edit aren't implemented |
12:55:56 | absolutejam | So I have to jump between VS Code and Vim keybinds |
12:56:38 | narimiran | absolutejam: you can do `"vim.useCtrlKeys": false`to have your ctrl enabled |
12:57:32 | absolutejam | I haven't looked at the vim config tbh haha |
12:57:35 | absolutejam | should really |
12:58:09 | absolutejam | I really like VS Code's ability to keybind based on things like if you're in the terminal, or if you have a nim file open |
12:58:13 | absolutejam | that's slick as |
12:58:34 | narimiran | ...this is getting quite offtopic ;) |
12:59:51 | absolutejam | yeah, sorry haha |
13:00:40 | * | dom96_w quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
13:01:23 | absolutejam | anyone used nimyaml? |
13:05:43 | PMunch | absolutejam, you asked about LSP. It's a way to get Nim support in different editors |
13:06:15 | absolutejam | oh, language server protocol? |
13:06:20 | PMunch | langserver.org and Nim implementation: github.com/PMunch/nimlsp |
13:06:24 | PMunch | Yes |
13:08:42 | * | shpx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
13:12:31 | * | shpx joined #nim |
13:24:00 | * | nsf quit (Quit: WeeChat 2.3) |
13:24:35 | FromGitter | <timotheecour> @araq https://github.com/nim-lang/Nim/pull/10274 fixes a serious bug |
13:27:46 | * | cspar_ joined #nim |
13:28:40 | Araq | is that the famous control+C OSX bug? |
13:30:21 | * | cspar quit (Ping timeout: 246 seconds) |
13:30:44 | leorize | timotheecour: I don't think you should use commandLineParams()[0] |
13:31:55 | leorize | and yea, c_system can return < 0, but looks like was ignored long ago so I didn't add an exceptions there |
13:31:55 | FromGitter | <timotheecour> what’s the famous control+C osx bug? I actually have a bug I haven’t yet reported related to that, but not sure that’s the 1 u’re referring to |
13:32:37 | FromGitter | <timotheecour> it think the 1 i had w control C was different: when kill parent process, child processes keep running, I have a local repro for that; will report it |
13:33:32 | FromGitter | <timotheecour> @leorize r u the same person as @alavis? sorry i’m getting confused w ppl having different handles |
13:33:34 | * | ng0 quit (Remote host closed the connection) |
13:33:41 | leorize | yep |
13:33:46 | * | rect0x511 joined #nim |
13:34:08 | * | rect0x511 quit (Client Quit) |
13:34:37 | * | ng0 joined #nim |
13:35:45 | Araq | yeah that's what I mean, child process not killed |
13:36:13 | FromGitter | <timotheecour> ya, that’s a separate bug, and it’s also quite serious, and the fix shdn’t be too hard |
13:39:15 | * | rect0x51_l joined #nim |
13:39:24 | * | cspar_ quit (Ping timeout: 250 seconds) |
13:39:46 | rect0x51_l | is there a binarySearchTree or equivelant data structure in stdlib? |
13:43:04 | Araq | rect0x51_l, compiler/btrees is a stdlib candidate |
13:43:19 | Araq | once we figured out how delete() in it :P |
13:44:08 | rect0x51_l | oh, waiting for destructors? |
13:44:24 | Araq | no |
13:44:39 | Araq | we don't have a BTree delete operation |
13:44:49 | rect0x51_l | I see |
13:45:58 | Araq | but BTrees are much better than binary trees on today's machines |
13:46:20 | rect0x51_l | hmm didn't know |
13:46:29 | rect0x51_l | interesting |
13:47:59 | FromGitter | <timotheecour> araq i think we should make https://nim-lang.github.io/Nim/lib.html show docgen for `compiler/**` ; otherwise you’ll get questions like that |
13:48:34 | leorize | the compiler is not a part of the stdlib |
13:48:40 | FromGitter | <timotheecour> we can put a big fat warning: `use it at your own risk, it may disppear and is not as tested as stdlib` but still useful to show |
13:48:42 | leorize | it should not be there imo |
13:48:52 | leorize | it could be elsewhere |
13:48:54 | FromGitter | <timotheecour> well it should be somewher |
13:49:33 | Araq | we also should consider to use BTrees over hash tables |
13:49:59 | Araq | performance is worse but there are no security problems with hashing attacks |
13:50:00 | FromGitter | <timotheecour> given that compiler is part of Nim repo (and will probably be for a while/forever), it would make sense to just show the docs there |
13:50:17 | absolutejam | Can somebody please tell me what I'm doing wrong here? |
13:50:19 | absolutejam | https://hastebin.com/ibuyopikib.nim |
13:50:44 | leorize | use `=`, not `:` for line 11 |
13:50:57 | rect0x51_l | Are BTrees so performant in ram? Araq can you point to some relevant resource that explains why? |
13:51:01 | FromGitter | <timotheecour> (that’d also help ppl use it and discover/fix bugs etc; out of sight out of mind; also it’d help making ppl add more documentation to `compiler/**` which is not very well documented so far |
13:51:40 | Araq | rect0x51_l, because of hardware CPU caches |
13:51:40 | absolutejam | okay, done that |
13:51:52 | absolutejam | also tried SomeType().init because I didn't know if it had to be instantiated first |
13:52:09 | absolutejam | oh wait |
13:52:31 | absolutejam | oh, so it was both |
13:52:56 | leorize | that's not really what you want to do I assume |
13:52:59 | absolutejam | so colons for instantiating via SomeType() and = for function calls (I thought colons worked for function calls too) |
13:53:15 | absolutejam | and I have to SomeType().init(...) |
13:53:18 | absolutejam | right? |
13:53:22 | leorize | the convention is initSomeType() :P |
13:53:29 | absolutejam | I know but that makes me feel icky |
13:53:30 | narimiran | absolutejam: beside these small fixes, i'm not sure you're generally on the right path |
13:53:35 | absolutejam | I should be idiomatic, I know |
13:54:00 | narimiran | leorize: but SomeType is ref object, so `newSomeType` (cc absolutejam ) |
13:54:34 | leorize | oh yeah, I always use stack objects :P |
13:55:09 | absolutejam | would that just be `type SomeType = object` then? |
13:55:23 | rect0x51_l | so... data are more easily cached if the tree has lower height? |
13:55:32 | leorize | absolutejam: depends on what you want |
13:55:57 | leorize | if you need reference semantic, use ref object |
13:56:00 | leorize | else use object |
13:56:19 | narimiran | absolutejam: here you go http://ix.io/1y2M/ |
13:56:31 | * | dom96_w joined #nim |
13:57:20 | dom96_w | timotheecour: the child process not killed bug has already been reported |
13:57:36 | leorize | narimiran: we don't have result type overloading, so you shouldn't name your functions like that :P |
13:57:51 | narimiran | absolutejam: and here is with a simple object http://ix.io/1y2P |
13:58:11 | absolutejam | I don't need a ref object ~I don't think~ but when I did it without ref, I couldn't use ``` proc `name=` ``` |
13:58:24 | narimiran | leorize: i'm just typing quickly here to show an example of what works. but i agree — my second example is just a bit better :) |
13:58:37 | leorize | absolutejam: you can still use it without ref object |
13:58:59 | absolutejam | at what point is the object created in the last exampel narimiran ? |
13:59:10 | * | stefanos82 joined #nim |
13:59:12 | leorize | when the function begins |
13:59:23 | narimiran | well, when the function is called :P |
13:59:55 | absolutejam | I'm lost. Is 'result' automatically an instance of SomeType? |
13:59:58 | absolutejam | in that example |
14:00:01 | leorize | yep |
14:00:11 | absolutejam | oh fuck, I didn't know that |
14:00:22 | leorize | result is the special variable that's returned when the function ends |
14:00:37 | absolutejam | I knew about result, but I didn't know it did _that_ |
14:00:46 | leorize | this doesn't work for ref object, mind you :P |
14:00:49 | narimiran | absolutejam: you can create an object without a function: `let test2 = SomeType(name: "xyz", something: 7)` |
14:01:01 | leorize | because ref object default is nil |
14:01:12 | absolutejam | Yeah, but I wanted to a bit of validation, etc. |
14:01:19 | FromGitter | <timotheecour> @dom96 i guess that’d be https://github.com/nim-lang/Nim/issues/9616 ; ok |
14:01:46 | absolutejam | so initSomeType or what I was aiming for was SomeType.init(something="...") |
14:02:12 | leorize | make your init proc take typedesc[SomeType] as the first param |
14:02:42 | rect0x51_l | ok I see, in BTrees there are chunks of data in contiguous adresses, while in BST there are more spread out in memory, thus harder to cache. |
14:03:11 | absolutejam | ah, I see |
14:03:21 | absolutejam | because I was requiring an instance of SomeType |
14:03:29 | rect0x51_l | wow... and I'm being teached that BTrees are only for secondary memory... |
14:03:39 | absolutejam | okay, sorry, I realise this is pretty basic stuff |
14:03:55 | absolutejam | I need to revisit the whole ref thing again because as much as I think I understand it, I go away, write some code and get it wrong haha |
14:04:20 | Araq | rect0x51_l, in some way hardware advanced to be more disk-like |
14:04:49 | Araq | and RAM is not "random access" |
14:05:27 | narimiran | absolutejam: nhf, but i think you should try to go slower, and first cover the basics. don't jump straight in the deep water. it will make your journey easier and more enjoyable in the long run |
14:05:38 | absolutejam | yeah, it's my own fault |
14:05:52 | absolutejam | I'm trying to prototype something and skipping over some of the finer details |
14:06:58 | rect0x51_l | Araq: you gave me enough puzzling for ~a week, thanks |
14:07:05 | absolutejam | okay, so if I switch my type to object or object of RootObj |
14:07:31 | absolutejam | my `name=` proc now spits out "Error: 'self.name' cannot be assigned to" on compile |
14:07:52 | narimiran | start slowly and read the available learning resources, please. |
14:09:43 | * | Snircle joined #nim |
14:09:52 | absolutejam | yeah, sorry. I am actually reading the resources, but I'm jumping between a few at a time |
14:10:42 | Araq | Jehan_, https://github.com/nim-lang/Nim/issues/10271 is why I've grown to dislike GCs ;-) |
14:11:04 | Araq | always some weird heuristics and guesswork involved |
14:11:40 | Araq | and programmers do not understand why stuff is not freed "immediately" when it goes out of scope |
14:11:52 | Jehan_ | Araq: Yeah, GCs offload programmer work on the language implementer. But that's the same reason why I consider GCs to be absolutely essential (outside of domains where they don't work). |
14:12:24 | Jehan_ | Speaking of which, do you see any problem with enabling GC_set_all_interior_pointers(0) for the Boehm GC? |
14:12:35 | Araq | no |
14:12:48 | Jehan_ | Hmm, I may write a PR for that, then. |
14:13:12 | Jehan_ | Reason: it's currently the highest throughput GC for Nim (by a large margin) if you don't care about pause times. |
14:13:30 | Araq | there is no good automatic way to do MM |
14:13:51 | Jehan_ | But with all interior pointers on, it basically adds two words to the size of each allocation that is an exact multiple of two words. |
14:14:03 | Jehan_ | Depends on how you define good, I think? |
14:14:14 | Araq | sure :-) |
14:14:41 | Jehan_ | I'd say that there is no good way to do manual memory management myself. :) Or, in essence, that it's all about tradeoffs. |
14:15:40 | Araq | Boehm still needs to care about interior pointers on the stack |
14:15:49 | Araq | but I don't think you can disable that part |
14:16:11 | Jehan_ | Yes, but that's a separate mechanism. |
14:16:41 | Jehan_ | The setting is about pointers originating in heap objects or global variables. |
14:18:03 | Araq | well let me put it this way: Allocations are always something worth optimizing and when you do you have fewer but bigger allocations and then "freeing as soon as you can" becomes more important and hopefully also less expensive |
14:19:17 | Jehan_ | Are they, though? That would depend on the problem domain, I'd argue. |
14:19:51 | absolutejam | I'm rereading PMunch's blog post for the third time |
14:22:33 | Jehan_ | Here's some performance data: https://gist.github.com/rbehrends/be15230b31a098c647e4cdbeb67af0f0 |
14:22:37 | PMunch | Is that good or bad? |
14:22:39 | * | nsf joined #nim |
14:22:57 | PMunch | absolutejam ^ |
14:23:15 | * | vlad1777d joined #nim |
14:23:33 | absolutejam | It's not the article that's at fault, don't worry :P |
14:23:35 | Araq | Jehan_, benchmarks. ;-) |
14:25:10 | Araq | here is what mark&sweep does for an app that keeps increasing its liveset (like a compiler): The time spent in its mark phase increases while at the same time it cannot free much |
14:25:33 | Araq | mark©: same problem |
14:25:37 | Jehan_ | Yup. That's why the benchmark keeps a large liveset allocated throughout. |
14:26:34 | Jehan_ | You can still keep tracing/sweeping work at O(allocation work). |
14:26:43 | Araq | reference counting: independent of the size of liveset |
14:27:38 | Jehan_ | Yes, I know. I fully agree that a GC should be configurable. |
14:27:38 | Araq | and what C++/Rust do can be seen as one bit reference counting with essentially the same properties |
14:28:06 | Jehan_ | Yeah, that's a point I've made myself before. No disagreement. :) |
14:32:08 | Araq | yes and then when you make programmers care about owning/non-owning pointers and back references the system suffers from cascading recursive freeing |
14:32:39 | Araq | well at least that can be made incremental too |
14:33:07 | FromDiscord_ | <Gilgamish> Hello, sorry for the stupid question but I've been googling for a while with no luck. I have two modules play and playerInput in the same folder (src) |
14:33:07 | FromDiscord_ | <Gilgamish> |
14:33:07 | FromDiscord_ | <Gilgamish> play uses playerInput, playerInput declares a type and some methods for said type. I can not for the life of me import playerInput into play. |
14:34:36 | FromDiscord_ | <Gilgamish> |
14:34:36 | FromDiscord_ | <Gilgamish> https://cdn.discordapp.com/attachments/371759389889003532/533292648904130581/unknown.png |
14:34:53 | leorize | you didn't export the type |
14:35:15 | leorize | and you shouldn't use from import |
14:35:33 | FromDiscord_ | <Gilgamish> Thanks! |
14:35:48 | leorize | import like that will only get you the type and not the methods |
14:35:58 | Jehan_ | Yeah, I think Herb Sutter even had that result in a stack overflow once. :) |
14:37:02 | Araq | different topic: I'd like to make our allocator "shared" |
14:37:31 | Araq | and here is what I've come up with: Every chunk has a threadId, the creating thread sets its ID |
14:38:06 | Araq | when currentThread.id == chunk.threadId it's the same owner and can dealloc() in it |
14:38:19 | Araq | otherwise it puts the deallocation request in a thread specific queue |
14:38:34 | Araq | that the the owning thread occasionally needs to process |
14:38:48 | Araq | the big question is: "what does occasionally mean"? |
14:38:59 | Araq | and: What if the owner died? |
14:47:20 | * | shpx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
14:48:05 | Zevv | If the owner is terminating in a controlled way it should allocate all its resources. If it dies unexpectedly, I guess all bets are off. Or it should leave a will and pass all its resources to another thread, which probably get messy |
14:48:59 | Araq | others can have pointers to the chunks that belong to the dying owner |
14:49:19 | Jehan_ | Well, a POSIX thread at least can't really "die". Or rather, you can always intercept cancellation requests. |
14:49:46 | Jehan_ | So, you could keep it around indefinitely for when you need to assign a new logical thread to it. |
14:49:48 | * | shpx joined #nim |
14:50:13 | Araq | hmm |
14:50:58 | * | shpx quit (Client Quit) |
14:51:18 | Zevv | the 'occasional' part is also tricky. If a thread is not doing any allocations and is not waiting for any systems call, should it be interrupted? You can not possible add checking conditions into every loop? |
14:51:31 | Zevv | /possibly/ |
14:51:41 | Araq | I can but I don't want to ;-) |
14:53:32 | Jehan_ | Actually, this can be overridden by C calls, so not something that one should rely on. But still, you could always get a cleanup handler run before the thread terminates. |
14:58:32 | Jehan_ | The easiest solution would be to handle it sort of like GC heuristics for when to collect, but then you'd run the risk of wasting memory. But that would be no different from what the GC currently does. |
14:59:28 | Araq | everything except the easy global (spin)locking solution risks wasting memory |
15:00:51 | Zevv | How bad can it be worst case? Is a thread is busy and not doing allocations, it will not look at its todo-queue, but it will also not be growing its own footprint. |
15:01:24 | Zevv | As soon as it needs to do allocations itself, it will see the queue and do the cleanups |
15:02:44 | Zevv | The current allocations from a thread can temporary be wasted, but can not grow larger. |
15:03:24 | Jehan_ | Well, we can always say that this is okay and that if memory is so tight, then people need to explicitly invoke the cleanup process. |
15:03:48 | Jehan_ | Or make it configurable. |
15:04:15 | Araq | we can also check the queue before IO calls, these are already slow |
15:06:22 | Jehan_ | Well, I think the typical problem case would be a computation-heavy part of the program. |
15:06:23 | Zevv | any system call |
15:06:38 | Araq | Zevv, yeah that seems to be the worst case. On the other hand, checking the queue in every alloc() call doesn't feel right either |
15:07:02 | Jehan_ | That allocates a bunch of memory, does a ton of CPU-heavy work, frees the memory (or thinks it does), and then goes back. |
15:07:13 | Zevv | Do it when its own memory grows by factor N, like 120% |
15:07:26 | Jehan_ | Yup. Basically, the GC approach. |
15:07:51 | Jehan_ | Though you can make the overhead much tighter, possibly even an absolute number. |
15:08:36 | Jehan_ | The GC growth factor is predicated on the need to keep the collection/allocation work ratio bounded. |
15:08:54 | Jehan_ | I'm not sure that this holds here, too. |
15:09:09 | Zevv | These allocation requests queues should probably be smarter then a queue - they should only hold every unique request once for each thread |
15:09:18 | Jehan_ | Hmm, actually, it may. |
15:10:29 | Jehan_ | You may actually need to deallocate at a faster rate than you allocate, assuming there is a sufficient number of requests in the queue. |
15:13:09 | * | Jesin quit (Quit: Leaving) |
15:13:50 | Araq | Zevv, there are no allocation requests, only deallocation requests |
15:14:04 | Zevv | sorry, that's what I ment |
15:14:37 | Araq | and they are "unique", you can free a pointer only once |
15:15:16 | Zevv | But could three threads request the same pointer to be freed? Or the same thread request this more then once? |
15:15:35 | Araq | No. and you can misuse the memory in the freed block to hold a singly linked list |
15:15:53 | Araq | lockfree singly linked list seems possible |
15:15:59 | * | zyklon quit (Read error: Connection reset by peer) |
15:16:19 | Zevv | Is there a minimum size for allocations? Your list should fit, even in small blocks |
15:16:36 | Araq | yeah, minimum size 16 bytes or something. then every alloc() needs to do an atomic read, cheap enough to always do it |
15:19:44 | * | Jesin joined #nim |
15:21:39 | Araq | could work. A simple producer/consumer system then means the producer ends up doing all alloction work |
15:21:47 | * | floppydh quit (Quit: WeeChat 2.3) |
15:24:17 | * | vlad1777d quit (Ping timeout: 258 seconds) |
15:29:37 | * | pwntus joined #nim |
15:29:37 | * | pwntus quit (Changing host) |
15:29:37 | * | pwntus joined #nim |
15:34:17 | * | zyklon joined #nim |
15:35:23 | * | itschin joined #nim |
15:47:26 | * | Jehan_ quit (Quit: Leaving) |
16:10:16 | * | chemist69 quit (Ping timeout: 260 seconds) |
16:12:22 | * | absolutejam quit (Ping timeout: 250 seconds) |
16:12:47 | * | itschin quit (Ping timeout: 240 seconds) |
16:15:20 | * | itschin joined #nim |
16:16:28 | * | banc quit (Quit: Bye) |
16:29:35 | * | itschin quit (Quit: Leaving) |
16:37:59 | * | banc joined #nim |
16:54:44 | * | Geezus42 quit (Ping timeout: 268 seconds) |
16:55:47 | * | Geezus42 joined #nim |
16:57:45 | * | Snircle quit (Quit: Textual IRC Client: www.textualapp.com) |
16:58:02 | * | nsf quit (Quit: WeeChat 2.3) |
16:59:14 | * | mbomba joined #nim |
17:00:06 | * | mbomba left #nim (#nim) |
17:06:35 | * | narimiran quit (Remote host closed the connection) |
17:08:27 | * | dom96_w quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
17:08:51 | * | narimiran joined #nim |
17:09:20 | * | narimiran quit (Remote host closed the connection) |
17:09:52 | * | narimiran joined #nim |
17:10:22 | * | dom96_w joined #nim |
17:19:12 | narimiran | hi guys, i'm using manjaro i3 and since recently when i do "open folder" in some program, i3 opens 'catfish'. how can i change this back to 'thunar', like it was before? |
17:19:13 | * | zyklon quit (Read error: Connection reset by peer) |
17:19:21 | narimiran | eerrrm, wrong channel |
17:22:20 | * | Trustable joined #nim |
17:24:47 | rect0x51_l | Araq: How is ram not ram? Can't solve your enigma >_< |
17:24:53 | Zevv | probably related to xdg-open, or an "alternatives" setting if you're using a debian |
17:25:30 | PMunch | Yeah definitely xdg-open related |
17:28:45 | FromGitter | <Varriount> @Araq What about using the algorithm that GC paper described? |
17:32:13 | narimiran | Zevv, PMunch: i've found it. in MIME types, "inode/directory" was set to catfish |
17:33:30 | Araq | Varriount: that's RC + cycle detection |
17:34:04 | Araq | it is nice, but for our discussion the same as RC |
17:36:20 | * | zyklon joined #nim |
17:37:45 | PMunch | You're lucky it was that easy.. I find that xdg-open is always a PITA to fix |
17:37:48 | * | PMunch quit (Remote host closed the connection) |
17:38:22 | Araq | rect0x51_l, because it's much faster when you don't use its 'random access' feature and access it sequentially |
17:39:19 | rect0x51_l | ohh i see, for caching reasons again |
17:41:57 | Araq | caching but also prefetching |
17:47:59 | Araq | https://www.bleepingcomputer.com/news/security/linux-systemd-affected-by-memory-corruption-vulnerabilities-no-patches-yet/ |
17:48:05 | * | miran joined #nim |
17:49:13 | * | narimiran quit (Ping timeout: 245 seconds) |
17:50:34 | rect0x51_l | systemd has been critisized a lot. |
17:51:00 | * | miran is now known as narimiran |
17:51:34 | * | isaac[m] joined #nim |
17:53:34 | Araq | so funny how the self proclaimed experts in C fail to produce correct code. Every. Single. Time. |
17:53:38 | rect0x51_l | it is unnecessary complexity |
17:55:54 | * | Marumoto joined #nim |
17:55:55 | * | xet7 joined #nim |
17:59:44 | isaac[m] | Greetings - Nim n00b here. I was curious if anyone has experience they could share for using Nim in embedded or IoT projects. Looking at SoC type stuff for networking and cryptography. |
18:00:09 | * | rect0x51_l quit (Ping timeout: 252 seconds) |
18:01:26 | isaac[m] | <isaac[m] "Greetings - Nim n00b here. I was"> I’m the world’s worst c developer looking for superpowers. nim looks like an incredible tool. |
18:06:46 | Araq | isaac[m], check out "Nimbus" |
18:06:51 | * | Snircle joined #nim |
18:09:39 | * | skellock joined #nim |
18:11:00 | isaac[m] | <freenode_Ara "isaac, check out "Nimbus""> will do. didn't realize the status guys were targeting embedded apps |
18:12:30 | isaac[m] | I'm a big fan of Pony lang and was working on a port of cjdns to that, but now am eyeballing Nim instead. |
18:13:07 | * | banc quit (Ping timeout: 240 seconds) |
18:16:40 | Zevv | isaac[m]: I'm doing some relatively small devices, but still Linux based, 8M flash + 32m ram. "Embedded" is a broad concept these days. |
18:17:11 | Araq | fun is over, back to the harder destructor bugs |
18:19:47 | Zevv | Funny thing these constructors. I hardly use them ever, and dont't miss them at all. Still for others it is such a critical component that they consider Nim unfinished without. I wonder how there can be such different views. Is it only because I skipped Java and C++? |
18:19:48 | * | zyklon quit (Read error: Connection reset by peer) |
18:19:58 | * | banc joined #nim |
18:21:44 | Zevv | destructors, that is, of course |
18:23:18 | Araq | Java lacks them too |
18:23:26 | * | dom96_w quit (Quit: Textual IRC Client: www.textualapp.com) |
18:24:03 | Zevv | Ah, that's what I get from skipping those :) Ignorance is bliss |
18:28:28 | * | absolutejam joined #nim |
18:34:22 | shashlick | just pushed #include support in nimterop and several fixes |
18:36:15 | * | rect0x51_l joined #nim |
18:36:46 | * | zyklon joined #nim |
18:37:07 | * | darithorn joined #nim |
18:37:20 | * | rect0x51_l quit (Client Quit) |
18:43:57 | * | so quit (Ping timeout: 246 seconds) |
18:44:49 | FromGitter | <Clyybber> @Araq Is https://github.com/nim-lang/Nim/issues/6347 really fixed? Reordering the type statements changes the behaviour to not call the destructor. |
18:48:59 | Araq | it doesn't matter, it's a known big problem waiting for a solution |
18:51:30 | * | so joined #nim |
18:57:43 | FromGitter | <Clyybber> So it's a duplicate? |
18:58:00 | isaac[m] | Zevv: 👍 yeah, true that! you didn't miss much by skipping Java. I left it in 2005 or so. I hardly recognize it, now. Nim's way to implement generics is so much simpler and cleaner. You get the abstraction without all the boilerplate. I think this is more of an accomplishment than many might realize on the surface. |
19:05:50 | * | Marumoto quit (Remote host closed the connection) |
19:10:54 | * | theelous3 quit (Ping timeout: 246 seconds) |
19:16:38 | Zevv | C++ just never clicked for me. I've been doing C for ages, and about 12 years ago I picked up Lua. Lua+C have been my primary work horses for over a decade, but I'm *so* sick of duck typing. |
19:18:55 | Zevv | I tried C++ again, Go, Rust, all the usual suspects. And them I happened to walk into Nim. I feel it shares lots of the philosophy of Lua - provide mechanisms but don't force any design patterns. Has been a pretty much frictionless journey. |
19:29:13 | Araq | Zevv: blog about it! |
19:31:58 | * | vlad1777d joined #nim |
19:40:09 | skellock | absolutely @Zevv -- plz share your story; i'd love hear this stuff |
19:42:22 | skellock | we should start a blog series of these in a visual format -- put it up on the official site |
19:42:30 | * | Vladar quit (Remote host closed the connection) |
19:42:39 | skellock | i think i just re-invented "case studies" |
19:43:19 | * | Vladar joined #nim |
19:43:20 | * | theelous3 joined #nim |
19:43:52 | isaac[m] | +1. sounds like a good blog post. Im a rubyist for the most part (not rails - backend microservices, data processing, api's etc) and i get it on the duck typing. |
19:45:05 | skellock | i'm heading into a new gig in feb -- and i'm bringing nim with me =) |
19:48:22 | * | Tyresc joined #nim |
19:53:28 | * | xet7 quit (Quit: Leaving) |
19:54:05 | narimiran | skellock: what's the gig about? |
19:54:36 | skellock | small SaaS company |
19:55:21 | * | xet7 joined #nim |
19:55:23 | skellock | no reason i can't use nim for that... talks to redis, talks to pg, can make http requests... done |
20:03:43 | isaac[m] | we used Go in my last company. results were a bit mixed. we had devs from scala/java, ruby, python, and 2 really intense PHP gurus. |
20:03:44 | isaac[m] | pluses: less bickering during code reviews, sweet compile times, and easy to abuse channels without fear. almost as fast as C, which is still overkill for many things. |
20:03:44 | isaac[m] | minuses: longer than expected ramp-up times despite claims of "easy" syntax, poor error handling consistency, devs looking for framework bloat that doesn't exist, and a general lack of enthusiasm for its spartan nature. C style for loops everywhere feels downright medieval compared to modern iterators and range sugars. also - the repetitive nil checking gets tiresome. |
20:05:30 | * | theelous3 quit (Ping timeout: 250 seconds) |
20:05:30 | isaac[m] | skellock: just started using jester. SaaS work should be a slam dunk. Is the protobuf lib used much in nim? |
20:12:17 | skellock | i haven't tried jester yet (nor the protobuf lib other than kickin' tires) |
20:13:08 | skellock | i'm suprised you said ramp-up with go... interesting to hear that from someone with experience |
20:15:26 | absolutejam | is it possible/idiomatic to return an item or nil |
20:15:46 | isaac[m] | yes ... it's oversold IMO. the scala guys especially were not that enthusiastic about it. my 1 C++ engineer was really torqued that there weren't generics, either. |
20:16:12 | isaac[m] | absolutejam: yes. rob pike has talked about this at length. |
20:16:16 | absolutejam | eg. MyType.getSomething("foo") - return MyType.something.foo or nil |
20:17:08 | absolutejam | Sorry, who is Rob Pike? |
20:17:30 | dom96 | absolutejam: use Option[MyType] |
20:17:40 | absolutejam | I'ma googlin' but I don't know if it's a 'The Rob Pike' |
20:17:46 | absolutejam | thanks |
20:18:04 | isaac[m] | i recall sending this around ... https://speakerdeck.com/campoy/understanding-nil |
20:18:11 | absolutejam | ffs, I write Option[Rob] |
20:18:17 | absolutejam | :facepalm: |
20:18:19 | isaac[m] | haha |
20:18:22 | absolutejam | *wrote |
20:19:11 | skellock | haha |
20:19:13 | isaac[m] | Nim's fluent mix of styles and python syntax is so slick. |
20:19:48 | * | shpx joined #nim |
20:20:21 | isaac[m] | Rob Pike is a co-author of Go lang. He worked at Bell Labs and contributed a lot to Unix. |
20:20:26 | absolutejam | and if I'm checking against this result, should I be doing if not a.something.isNull ? |
20:20:40 | absolutejam | Ah, right |
20:21:06 | isaac[m] | ^ yeah that. if nil crap everywhere. |
20:21:13 | absolutejam | I went for the ol' Python crutch of is not a.something but that only works with bools |
20:21:38 | dom96 | if you're using Option then you use `isSome` or `isNone` |
20:21:38 | * | zyklon quit (Read error: Connection reset by peer) |
20:21:47 | isaac[m] | similar exits for ruby :D |
20:22:04 | dom96 | if you have a ref type then it's nillable so you can just return `nil` |
20:22:08 | dom96 | and check for it with `isNil` |
20:22:29 | isaac[m] | assuming is_nil works, too? |
20:22:55 | dom96 | yep |
20:23:08 | isaac[m] | dom96: beautiful book btw. i'm just getting through the first few chapters. you earned a convert. |
20:23:17 | dom96 | Thanks :D |
20:23:49 | skellock | we need more books |
20:25:14 | skellock | (said the guy who never wrote a book) |
20:25:15 | isaac[m] | i wonder ... is do / end really so troublesome to pythonistas? :P |
20:26:05 | dom96 | Nothing stops you from writing #do / #end ;) |
20:26:37 | isaac[m] | lol - fair enough |
20:27:39 | Zevv | Q: How can I make my macro report the proper line number when I detect an error? Now it just points to the start of the code block |
20:28:47 | dom96 | the `macros.error` proc takes an optional NimNode, set it to the NimNode you are processing |
20:28:58 | Zevv | Takk! |
20:29:16 | * | Amun_Ra quit (Ping timeout: 272 seconds) |
20:31:23 | * | Amun_Ra joined #nim |
20:31:37 | isaac[m] | has anyone worked on Actor macros in Nim? |
20:32:15 | isaac[m] | it looks like the main concurrency primitive is async await. are there others? |
20:33:07 | Zevv | threadpools, parallel |
20:33:31 | Zevv | and posix.fork() for the true connaisseur, of course :) |
20:34:23 | isaac[m] | w00t |
20:35:12 | Zevv | isaac[m]: https://nim-lang.org/docs/manual.html#parallel-amp-spawn |
20:35:23 | isaac[m] | being a ruby hacker, well versed in abusing fork. |
20:35:54 | skellock | web scale (tm) |
20:36:27 | FromGitter | <kaushalmodi> skellock: looking forward to more of your awesome blog posts :) |
20:36:30 | Zevv | It is already 2019, and I fork() a lot. I have decided long ago that I am just not smart enough for threads. |
20:37:02 | FromGitter | <kaushalmodi> narimiran: You should add skellock's pants blog too |
20:37:09 | skellock | kaushalmodi: thx! |
20:37:16 | narimiran | link? |
20:37:16 | Zevv | I'd rather take a stapler to the forhead then to spend another day of my life debugging mutexes |
20:37:23 | FromGitter | <kaushalmodi> https://totallywearingpants.com/ |
20:37:30 | * | zyklon joined #nim |
20:37:49 | narimiran | too few articles, no? |
20:38:17 | skellock | ya, only have the 2 there for now... turns out writing is hard |
20:38:48 | FromGitter | <kaushalmodi> narimiran: that's why asking skellock to write more :) |
20:38:53 | isaac[m] | <freenode_Zev "It is already 2019, and I fork()"> no shame. fork is often the correct tool to use when many are making code way too complicated with other primitives. |
20:39:50 | isaac[m] | Zevv: thx for the link. yeah this looks good. |
20:40:16 | Zevv | skellock: that's a pretty sweet list of the good things. Guess I will be using this as the "yeah, look at this" while indoctrinating people about Nim. |
20:40:58 | FromGitter | <kaushalmodi> narimiran: we need Nim Planet |
20:41:06 | FromGitter | <kaushalmodi> are you aware of Planet thingy |
20:41:26 | narimiran | what would that be? |
20:41:32 | FromGitter | <kaushalmodi> it's like a blog aggregator showing a stream of posts from multiple nim blog RSS feeds |
20:41:43 | narimiran | i know that i stumbled a long time ago on some python planet or something like that |
20:41:57 | FromGitter | <kaushalmodi> here's emacs planet: http://planet.emacsen.org/ |
20:42:04 | narimiran | ok, let's first have "a stream of posts from multiple nim blogs" ;) |
20:42:40 | skellock | haha |
20:42:48 | FromGitter | <kaushalmodi> yeah, this can wait :P |
20:43:04 | FromGitter | <kaushalmodi> planet emacsen source for future ref: https://github.com/hober/planet.emacsen.org/ |
20:43:18 | dom96 | https://planet.nim-lang.org/ |
20:43:22 | dom96 | Already exists ;) |
20:43:28 | FromGitter | <kaushalmodi> huh? |
20:43:57 | skellock | wtf man, not cool to withhold info like this |
20:43:59 | FromGitter | <kaushalmodi> skellock: add your feed to that planet then! |
20:44:19 | FromGitter | <kaushalmodi> I have like 7 Nim posts: https://scripter.co/tags/nim/ |
20:44:45 | FromGitter | <kaushalmodi> adding that nim tag feed to nim-lang planet |
20:44:48 | FromGitter | <kaushalmodi> .. looking into how |
20:45:08 | dom96 | federico3: ^ |
20:45:39 | FromGitter | <kaushalmodi> the nim planet needs the official Nim logo etc at the top |
20:45:44 | skellock | kaushalmodi: issue #3 on my blog repo -- fix rss feed |
20:45:48 | FromGitter | <kaushalmodi> and also instructions on how to contribute to it |
20:46:04 | FromGitter | <kaushalmodi> skellock: switch to Hugo :P |
20:46:26 | skellock | i did! and i broke that too! |
20:46:29 | FromGitter | <kaushalmodi> skellock: ok, that issue link went to Nim repo |
20:46:36 | federico3 | uh? |
20:46:46 | FromGitter | <kaushalmodi> heh, I can be your Nim world Hugo help |
20:46:55 | FromGitter | <kaushalmodi> feel free to shoot questions |
20:47:13 | FromGitter | <kaushalmodi> federico3: how do I add my blog feed to Nim planet? |
20:47:25 | federico3 | of course |
20:47:31 | federico3 | one sec.. |
20:47:44 | FromGitter | <kaushalmodi> if you scroll up, I had like 2 instant comments |
20:48:03 | FromGitter | <kaushalmodi> the planet site needs official Nim logo at the top, and instructions on how to contribute to it |
20:48:36 | FromGitter | <kaushalmodi> may be to the top banner .. because paging down seems to go into an infinite stream |
20:48:45 | * | wildlander joined #nim |
20:48:45 | isaac[m] | (random n00b making n00b comments) - so nim has a real threadpool, awesome. i kinda dig how you just directly expose epoll. golang's sql interface has all this magic in it that manages the threadpool and it can take you by surprise. things like having to exec a stmt to open the conn after opening the conn ... look broken. |
20:48:46 | * | aguspiza joined #nim |
20:49:32 | FromGitter | <kaushalmodi> federico3: Also, the site never seems to top loading |
20:49:37 | FromGitter | <kaushalmodi> it's stuck on something |
20:49:58 | FromGitter | <kaushalmodi> in Firefox, the "loading page" animation in the tab seems to be going on for last 5 mins or so |
20:51:32 | federico3 | https://github.com/FedericoCeratto/nim-planet |
20:51:34 | federico3 | here |
20:55:05 | FromGitter | <kaushalmodi> federico3: something's odd with github .. I forked that repo, but that link is 404 |
20:55:12 | FromGitter | <kaushalmodi> my fork's link |
20:55:22 | FromGitter | <skellock> they're having issues atm |
20:55:32 | federico3 | sounds like a GH issue |
20:55:46 | FromGitter | <kaushalmodi> yeah, will wait |
20:56:17 | skellock | everyone is uploading their private source code to github now |
20:59:55 | FromGitter | <kaushalmodi> federico3: https://github.com/FedericoCeratto/nim-planet/pull/1 |
20:59:56 | isaac[m] | ^ yeah no doubt, huh |
21:00:01 | * | absolutejam quit (Quit: WeeChat 1.9.1) |
21:00:01 | federico3 | thanks! |
21:00:08 | * | Vladar quit (Remote host closed the connection) |
21:00:18 | federico3 | heh, the pull leads to a 404 for me |
21:00:20 | FromGitter | <kaushalmodi> can you look into that "forever page loading" issue? |
21:00:29 | FromGitter | <kaushalmodi> press F5 5 times :P |
21:00:35 | FromGitter | <kaushalmodi> you'll get it in one of those |
21:00:42 | federico3 | possibly more |
21:00:47 | FromGitter | <kaushalmodi> hehe |
21:00:53 | rayman22201 | https://www.githubstatus.com/ |
21:00:59 | rayman22201 | github is broken atm :-/ |
21:01:48 | Zevv | I noticed, my PR just limbo'ed |
21:04:52 | * | BigEpsilon quit (Quit: WeeChat 2.3) |
21:09:09 | federico3 | still blocked at 'fatal: Could not read from remote repository.' |
21:09:54 | FromGitter | <kaushalmodi> federico3: what's blocked? |
21:10:07 | FromGitter | <kaushalmodi> I see that PR already merged |
21:10:07 | federico3 | git pull |
21:10:20 | federico3 | yep but I cannot fetch it :D |
21:10:37 | FromGitter | <kaushalmodi> ah, I see |
21:10:52 | FromGitter | <kaushalmodi> I thought some CI must be picking up from that repo's git hooks |
21:15:44 | * | cspar_ joined #nim |
21:16:25 | * | oculux quit (Quit: blah) |
21:17:11 | * | oculux joined #nim |
21:18:03 | federico3 | ok, the planet is unstuck. GH still is. Perhaps it would be nice to integrate with mastodon to announce blog posts but the planet codebase is unmaintained. |
21:18:56 | * | oculux quit (Client Quit) |
21:20:07 | * | oculux joined #nim |
21:29:56 | Araq | dom96: https://github.com/nim-lang/Nim/pull/10254 |
21:31:22 | dom96 | replied |
21:33:54 | * | skellock quit (Ping timeout: 250 seconds) |
21:40:14 | * | zachk joined #nim |
21:40:44 | dom96 | FOSDEM 2019 soon: https://forum.nim-lang.org/t/4461#28491 |
21:42:26 | * | narimiran quit (Ping timeout: 244 seconds) |
21:45:05 | * | zachk quit (Changing host) |
21:45:05 | * | zachk joined #nim |
21:54:45 | * | absolutejam_phon joined #nim |
21:56:44 | * | absolutejam_phon left #nim (#nim) |
21:56:55 | * | absolutejam_phon joined #nim |
21:57:03 | * | absolutejam_phon quit (Remote host closed the connection) |
21:57:17 | * | absolutejam_phon joined #nim |
21:57:31 | FromGitter | <alehander42> Oh I use telegram |
21:58:18 | * | absolutejam_phon quit (Read error: Connection reset by peer) |
21:58:20 | FromGitter | <alehander42> I always knew bot very well known Russian social networks will become huge |
21:58:43 | dom96 | the Nim telegram channel feels like a different world lol |
21:58:56 | dom96 | Loving the memes |
22:00:24 | * | absolutejam_phon joined #nim |
22:00:45 | * | absolutejam_phon quit (Read error: Connection reset by peer) |
22:05:16 | * | krux02 quit (Remote host closed the connection) |
22:06:48 | * | Trustable quit (Remote host closed the connection) |
22:11:30 | * | aguspiza quit (Ping timeout: 246 seconds) |
22:11:44 | * | powerbit joined #nim |
22:12:25 | * | absolutejam_phon joined #nim |
22:12:56 | absolutejam_phon | Think my laptop charger has died 😭 |
22:13:14 | absolutejam_phon | Nim compiles on Android right?! |
22:17:25 | * | Snircle quit (Read error: Connection reset by peer) |
22:17:59 | * | Snircle joined #nim |
22:29:43 | rayman22201 | using Termux on android, I have actually gotten Nim to run on android actually. It killed my battery and it's a terribl experience to code on your phone, but it totally works lol |
22:39:00 | xace | rayman22201: did they add nim as a package? |
22:41:01 | rayman22201 | No. But pulling from git works flawlessly |
22:41:04 | rayman22201 | https://stisa.space/articles/compile-nim-on-android/ |
22:41:14 | * | rect0x51 joined #nim |
22:41:17 | * | shpx quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
22:41:19 | rayman22201 | You just need to install the glob package |
22:41:22 | rayman22201 | apt install libandroid-glob apt install libandroid-glob-dev |
22:44:32 | rayman22201 | That article is old, but I tried it very recently (about a month ago with #head) and it still works fine. |
22:44:57 | rayman22201 | I was at a family holiday dinner and was bored lol. |
22:46:10 | xace | thanks for the link ill check it out |
23:10:06 | * | rect0x51 quit (Quit: WeeChat 2.3) |
23:15:56 | * | oculux quit (Quit: blah) |
23:16:30 | * | oculux joined #nim |
23:24:29 | * | zyklon quit (Read error: Connection reset by peer) |
23:35:54 | * | skellock joined #nim |
23:41:33 | * | zyklon joined #nim |
23:55:01 | * | zyklon quit (Read error: Connection reset by peer) |