00:02:10 | * | luis quit (Quit: luis) |
00:02:21 | * | luis joined #nim |
00:04:21 | FromDiscord | <nikki> https://media.discordapp.net/attachments/371759389889003532/766089036262801418/unknown.png |
00:04:28 | FromDiscord | <nikki> sets of enums compiling down to bit sets is pretty great |
00:06:07 | Yardanico | built-in nim sets are bit sets :) |
00:06:26 | Yardanico | {'a'..'z'} is a bit set too |
00:08:53 | * | bung joined #nim |
00:13:29 | * | bung quit (Ping timeout: 256 seconds) |
00:13:56 | * | luis_ joined #nim |
00:14:03 | * | luis quit (Quit: luis) |
00:14:11 | * | luis_ is now known as luis |
00:15:26 | FromDiscord | <juan_carlos> When is says `Error: type mismatch` at CT whats that `Defect` ?. |
00:16:09 | FromDiscord | <juan_carlos> is not `ValueError`. |
00:16:21 | Yardanico | ? |
00:20:45 | Yardanico | @juan_carlos can you repeat the question with more info? :) |
00:21:45 | FromDiscord | <Elegant Beef> Any clues to why my `const` is clearly populated at compiletime but is empty at runtime? |
00:22:29 | FromDiscord | <Elegant Beef> https://play.nim-lang.org/#ix=2AKi |
00:22:32 | FromDiscord | <Elegant Beef> Code in question |
00:22:48 | Yardanico | classic |
00:23:04 | FromDiscord | <Elegant Beef> Use of a sequence i assume? |
00:23:08 | FromDiscord | <juan_carlos> I am trying to use `doAssertRaises()`, must provide a `Defect` type as argument, I need to do `var foo: array[1, string] = []` inside, that raises, but I dont know what kind of Defect is it. |
00:24:03 | * | Vindaar quit (Remote host closed the connection) |
00:24:08 | Yardanico | you can't catch a compile-time error |
00:24:11 | Yardanico | with doAssertRaises |
00:24:20 | Yardanico | doAssertRaises is for runtime exceptions |
00:24:28 | FromDiscord | <juan_carlos> Yes, I just noticed, makes sense. |
00:24:37 | Yardanico | for checking if something compiles you can use "compiles" |
00:24:44 | Yardanico | but it won't give you specific error |
00:24:54 | FromDiscord | <juan_carlos> yes thanks, `when compiles` |
00:25:25 | Yardanico | @Elegant yeah something like that, can't remember the exact issue name |
00:25:29 | Yardanico | there are workarounds though |
00:26:39 | FromDiscord | <that_dude> Still trying to learn the language, but how do I chose between making a type and using a table? |
00:27:18 | FromDiscord | <Elegant Beef> `import tables` followed by `let a = initTable[T1,T2]()` |
00:27:35 | FromDiscord | <Elegant Beef> https://nim-lang.org/docs/tables.html |
00:27:42 | Yardanico | @that_dude wdym "making a type and using a table"? |
00:27:46 | FromDiscord | <that_dude> sorry, I'm not asking how to do it, I'm asking when I should use one over the other |
00:27:46 | Yardanico | those are two different things |
00:28:07 | Yardanico | ah, well, if your object will look something like a map/table/dict, then you might just use the tables module |
00:28:08 | FromDiscord | <that_dude> as far as I can understand, both become containers that hold named data |
00:28:10 | Yardanico | to not reinvent the wheel |
00:28:14 | Yardanico | tables are key:value mappings |
00:28:24 | FromDiscord | <Elegant Beef> Tables are for storing key value pairs, in a connected relationship, objects are for grouping data for specific logic to work on |
00:28:26 | Yardanico | objects can be anything |
00:28:32 | Yardanico | tables are objects internally too |
00:28:44 | Yardanico | but tables module gives you a lot of procedures to work on those objects |
00:28:48 | FromDiscord | <Elegant Beef> Accessing fields from tables is slower than normal object fields |
00:29:15 | FromDiscord | <Elegant Beef> Are you coming from JS where objects are practically just tables? 😛 |
00:29:20 | FromDiscord | <that_dude> I'm comming from python |
00:29:26 | FromDiscord | <that_dude> (edit) 'comming' => 'coming' |
00:29:32 | FromDiscord | <Elegant Beef> Yard any insight in afformentioned "Workaround" 😄 |
00:29:32 | Yardanico | nim tables are python dicts (mostly) |
00:29:50 | Yardanico | except the fact that nim tables can't have multiple types for keys and values, there can be only 1 key type and 1 value type for each table |
00:30:07 | FromDiscord | <Elegant Beef> Do i just abuse an array of an overly silly size and use that to hold them 😄 |
00:30:07 | FromDiscord | <nikki> tables are for dynamic grows / lookups while objects are for data that has many instances with the same structure -- mostly |
00:30:19 | Yardanico | @Elegant why? |
00:30:25 | FromDiscord | <Elegant Beef> Why what? |
00:30:29 | Yardanico | why use an array |
00:30:48 | FromDiscord | <Elegant Beef> Cause the sequence isnt working and you seemed to indicate it was the sequence that was the issue |
00:31:06 | Yardanico | can you give a reproducable example so I can quickly fix it |
00:31:15 | Yardanico | I mean the one which gives you an empty seq when you add values at comp-time |
00:32:21 | FromDiscord | <nikki> @that_dude a big distinction is nim has a "compile time" / "runtime" difference -- if the member names and layout are fixed at compile time that's when an object makes a lot of sense. at runtime it's just a memory offset (on native backends) vs. looking up the key dynamically |
00:33:06 | FromDiscord | <Elegant Beef> It works fine for the manually written version on latest |
00:33:09 | FromDiscord | <Elegant Beef> So weird |
00:34:23 | FromDiscord | <Elegant Beef> Well a minimal example also works on devel |
00:34:30 | Yardanico | yeah something was fixed |
00:35:05 | FromDiscord | <Elegant Beef> Well i guess i'll have to find what is causing this behaviour |
00:35:12 | FromDiscord | <Elegant Beef> Nothing is clear to why it is |
00:35:21 | FromDiscord | <Elegant Beef> Thanks anywho |
00:37:07 | FromDiscord | <that_dude> thanks nikki I think I understand now. |
00:37:16 | Yardanico | yeah, please don't think of nim as "compiled python" :) |
00:37:33 | Yardanico | really the only similar thing between python and nim is the off-side rule (indentation-based syntax) |
00:38:03 | FromDiscord | <nikki> i think given only a background where objects are dynamic like that, the introduction of this distinction is a new concept |
00:38:08 | FromDiscord | <that_dude> I'd say I'm trying not to, but all I know comes from my little knowledge in python and lua so I'm trying to kinda equate it |
00:38:26 | Yardanico | @nikki well I've only used Python before Nim as well :) |
00:38:30 | FromDiscord | <nikki> JIT's tend to optimize a lot though. i think V8 optimizes for small JS objects with sinilar layouts |
00:38:39 | FromDiscord | <nikki> (edit) 'sinilar' => 'similar' |
00:38:47 | Yardanico | well, I'm not talking about performance |
00:39:00 | FromDiscord | <nikki> oh for sure. i'm just laying out all the relevant info |
00:39:09 | FromDiscord | <nikki> to continue what i was saying earlier |
00:39:43 | FromDiscord | <nikki> i think it spreads over expressiveness, semantics, performance, ... |
00:40:42 | * | xioren quit (Quit: leaving) |
00:41:35 | FromDiscord | <nikki> in python too like the concept of a class is such a distinct new thing. like for a more pure mappy lang-- there are things like lua or js |
00:42:15 | FromDiscord | <nikki> like dicts and classes are distinct concepts in python while in many langs they're relationships between the same world of "maps" |
00:42:24 | FromDiscord | <nikki> (edit) '"maps"' => '"maps/tables"' |
00:42:55 | FromDiscord | <that_dude> While I'm here, when I use type, should I use rootObj or ref of rootObj? I feel like when I was trying to read about it, I was getting confused in the abstract way it was described. I guess what do I gain for using the ref? |
00:43:09 | Yardanico | nonono |
00:43:15 | Yardanico | RootObj is only for when you need inheritance |
00:43:21 | Yardanico | if you don't have inheritance, you don't need it at all |
00:43:23 | FromDiscord | <that_dude> I get that |
00:43:26 | Yardanico | and can just have "object" or "ref object" |
00:43:34 | FromDiscord | <that_dude> object for non inheritence |
00:43:37 | Yardanico | also |
00:43:46 | FromDiscord | <that_dude> but thats not what I'm asking |
00:43:49 | Yardanico | if you need to inherit from an object *and* use methods for runtime dispatch - you call it as "ref object of RootObj" |
00:43:53 | FromDiscord | <nikki> https://www.reddit.com/r/nim/comments/7dm3le/tutorial_for_types_having_a_hard_time/dpz9vue/ |
00:43:56 | FromDiscord | <nikki> found this recently |
00:44:03 | FromDiscord | <nikki> this particular comment |
00:44:08 | Yardanico | if you just need inheritance without actually using runtime dispatch - you don't need ref or RootObj |
00:44:24 | FromDiscord | <that_dude> sorry but what is runtime dispatch? |
00:44:36 | Yardanico | when the program decides which routine (method) to call at runtime |
00:44:38 | FromDiscord | <that_dude> just calling it? |
00:44:42 | FromDiscord | <that_dude> got it |
00:44:45 | Yardanico | procs are statically bound (compiler knows which proc will be called at compile-time) |
00:44:50 | FromDiscord | <nikki> i think ref, in a way that's orthogonal to inheritance, is more about reference semantics of the = operator |
00:44:59 | Yardanico | "I guess what do I gain for using the ref?" "ref object" vs "object" is reference vs value semantics :) |
00:45:06 | Yardanico | ref object is a managed reference to an object |
00:45:14 | FromDiscord | <nikki> like when you do v = u --> modifications to v later modify u |
00:45:15 | Yardanico | lives on the heap |
00:45:20 | Yardanico | yes, with ref it will be like that |
00:45:22 | Yardanico | ref semantics |
00:45:29 | Prestige | ranges don't support high to low for iteration, right? Like if I wanted to iterate from 9..3 |
00:45:37 | Yardanico | Prestige: there's countdown |
00:45:43 | Yardanico | https://nim-lang.org/docs/system.html#countdown.i%2CT%2CT%2CPositive |
00:45:52 | Yardanico | but yeah, .. proc doesn't support iteration from high to low |
00:45:58 | Prestige | neat, thanks |
00:46:03 | Yardanico | sorry, iterator* |
00:46:07 | Yardanico | when you do "for a in 3 .. 5" you actually call the .. iterator |
00:46:17 | Yardanico | ranges are not involved here |
00:46:24 | FromDiscord | <nikki> if they're not ref objs then v = u makes v be a copy of u but modifications don't affect each other from here on |
00:46:28 | Prestige | ah I see |
00:46:33 | Yardanico | @nikki yes |
00:46:44 | FromDiscord | <nikki> just trying to explain value semantics |
00:46:50 | Yardanico | Prestige: https://nim-lang.org/docs/system.html#...i%2CT%2CT |
00:46:59 | FromDiscord | <nikki> i think the gc comes about cuz to impl ref semantics on current machines, you need gc |
00:47:22 | Yardanico | yeah, but many people associate gc with a "tracing garbage collector" like in Java |
00:47:26 | Yardanico | not something light like reference counting |
00:47:28 | Yardanico | which ARC does |
00:47:54 | Yardanico | for some info about ARC/ORC you can read https://github.com/Yardanico/website/blob/yard-arc-orc-article/jekyll/_posts/2020-10-14-what-are-arc-and-orc-in-nim.md btw :) |
00:47:54 | FromDiscord | <nikki> yeah i've seen ppl be on either side of that meaning. probably the most important distinction is determinism |
00:48:10 | FromDiscord | <nikki> read this one when you posted it earlier today 🙂 |
00:48:16 | FromDiscord | <nikki> it's good! |
00:48:22 | Yardanico | this one is with a few edits |
00:48:27 | Yardanico | I've taken down the dev.to version for now |
00:48:34 | FromDiscord | <nikki> oh word |
00:48:36 | Yardanico | so we can get it published on the nim blog and then share it on reddit/hn/etc |
00:48:46 | Yardanico | and then I'll unhide it on dev.to and make a russian translation to habr.com too |
00:49:07 | Yardanico | I just forgot about nim blog's guest posts when I was writing that article on yesterday's morning |
00:50:17 | * | luis quit (Read error: Connection reset by peer) |
00:50:38 | FromDiscord | <nikki> i think nim can be a good language to redo some concepts i've been exploring in c++ |
00:50:56 | Yardanico | for sure :) |
00:51:08 | Yardanico | there are other interesting guest posts in the nim blog btw (if you haven't seen them already) |
00:51:08 | Yardanico | like https://nim-lang.org/blog/2020/06/30/ray-tracing-in-nim.html |
00:51:40 | FromDiscord | <nikki> yeah i saw that title but haven't read it yet :0 |
00:52:05 | FromDiscord | <nikki> i think i should rest my eyes lol, been using screens a lot |
00:54:49 | FromDiscord | <nikki> got sucked in, this is a good article @Yardanico ! |
00:54:58 | Yardanico | it's by github.com/mratsim :) |
00:55:04 | Yardanico | https://github.com/mratsim |
00:55:27 | FromDiscord | <nikki> good article @mratsim 🙂 |
00:55:41 | Yardanico | he made arraymancer, weave and a lot more stuff for Nim |
00:58:11 | FromDiscord | <nikki> if i paste a picture in discord, would that be visible to you @Yardanico ? or should i imgur it |
00:58:16 | Yardanico | of course it will be visible |
00:58:24 | Yardanico | the bridge will send the link to the media to IRC |
00:58:29 | FromDiscord | <nikki> cool |
00:58:37 | FromDiscord | <nikki> https://media.discordapp.net/attachments/371759389889003532/766102695203045376/unknown.png |
00:58:58 | FromDiscord | <nikki> something from the game engine -- you can see the data types in C++ on the right, and on the left there is an auto-generated editor UX. the engine is running in the browser through wasm |
00:59:02 | FromDiscord | <nikki> and the UI is using the DOM |
00:59:04 | Yardanico | wow nice |
00:59:05 | FromDiscord | <nikki> but it also compiles to native |
00:59:34 | FromDiscord | <nikki> it's "ECS"-ey -- you can see how the sprite drawing rule just queries for entities with Position and Sprite |
00:59:44 | FromDiscord | <nikki> anyways I think nim is a great fit for this kinda stuff |
01:00:15 | FromDiscord | <nikki> https://media.discordapp.net/attachments/371759389889003532/766103099856257054/unknown.png |
01:00:28 | FromDiscord | <nikki> esp. cuz of this weird DSL-like immediate mode API i have to render HTML from C++-wasm lol |
01:02:20 | FromDiscord | <nikki> excited to dig into nim further. right now i'm working my way through the "nim in action" book just to get some coverage of the lang and ecosystem, while continuing to work on my stuff in other langs |
01:04:12 | * | luis joined #nim |
01:04:32 | FromDiscord | <Yardanico> good luck :) |
01:04:44 | FromDiscord | <nikki> thank you 🙂 |
01:12:57 | * | apahl quit (Ping timeout: 260 seconds) |
01:13:53 | * | apahl joined #nim |
01:15:59 | * | luis quit (Quit: luis) |
01:16:10 | * | luis joined #nim |
01:17:22 | FromDiscord | <William_CTO> How do I get nim to output the C/c++ code instead of compiling all of it? |
01:18:02 | FromDiscord | <Yardanico> @William_CTO well, you certainly can do that with --compileOnly, but *are you sure* this is what you want? |
01:18:13 | FromDiscord | <Yardanico> try nim c --nimcache:mydir --compileOnly file.nim |
01:18:23 | FromDiscord | <William_CTO> I just want to see the C it outputs |
01:18:31 | FromDiscord | <William_CTO> what is the nimcache for? |
01:18:32 | FromDiscord | <Yardanico> well it always outputs the C code |
01:18:43 | FromDiscord | <Yardanico> nimcache is where nim stores C/C++/ObjC files and object files |
01:18:50 | FromDiscord | <Yardanico> ~/.cache/nim on linux by default |
01:18:51 | disbot | no footnotes for `/.cache/nim`. 🙁 |
01:19:02 | FromDiscord | <William_CTO> kk |
01:19:11 | FromDiscord | <Yardanico> also you'll see a lot of scary C code if you compile with the command I've shown above |
01:19:21 | FromDiscord | <Yardanico> to remove all of the safety checks and exceptions checking, try the same but with -d:danger |
01:19:46 | FromDiscord | <William_CTO> ok thanks a bunch |
01:22:05 | FromDiscord | <William_CTO> looks like I won't be doing that again 😄 |
01:23:00 | FromDiscord | <Yardanico> well, don't be scared of it |
01:23:21 | FromDiscord | <Yardanico> Naive Nim code can be more efficient than naive C code, believe it or not |
01:23:24 | FromDiscord | <Yardanico> in some isolated cases, but still |
01:23:53 | FromDiscord | <William_CTO> I'm not, but now I know what it looks like |
01:23:53 | FromDiscord | <Yardanico> you can also make the output even smaller with a few other things (it would be much better if you're on latest nim devel or at least on 1.4 release candidate) |
01:24:06 | FromDiscord | <Yardanico> nim c --gc:arc -d:danger --panics:on -d:useMalloc -d:noSignalHandler |
01:24:32 | FromDiscord | <William_CTO> Also, I only found out about nim when looking for a different language to write my Discord bot in. Its currently written in python |
01:24:42 | FromDiscord | <Yardanico> oh, nice, so from the discord api server |
01:24:46 | FromDiscord | <William_CTO> mhm |
01:24:55 | FromDiscord | <Yardanico> yeah, the discord bridge is using |
01:24:58 | Yardanico | ircord as well |
01:25:03 | Yardanico | I mean dimscord* |
01:25:05 | FromDiscord | <William_CTO> Don't get me wrong, d.py is great, but when your bot is in 100+ servers ... |
01:25:25 | FromDiscord | <William_CTO> Yeah, I was looking at using dimscord (great name) |
01:25:38 | FromDiscord | <Yardanico> the discord <-> irc bridge used here is the first real deployment of dimscord :) |
01:25:41 | FromDiscord | <Yardanico> !repo ircord |
01:25:42 | disbot | https://github.com/Yardanico/ircord -- 9ircord: 11Discord <-> IRC bridge in Nim 15 9⭐ 1🍴 |
01:25:48 | FromDiscord | <Yardanico> the code isn't the best, but it (usually) works :D |
01:25:51 | * | Tanger joined #nim |
01:26:48 | FromDiscord | <Yardanico> it bridges all channels except <#753721959308853319> in the Primary section and all channels in the Community section |
01:27:12 | FromDiscord | <Yardanico> irc -> discord uses webhooks, discord -> irc receives updates from discord and posts via the irc library |
01:27:31 | FromDiscord | <William_CTO> "Ircord only depends on OpenSSL (for https), everything else is pure-Nim." What exactly does this mean? Is there not an ssl lib within nim? |
01:28:03 | FromDiscord | <Yardanico> well, there's no pure-nim SSL library for Nim (yet) |
01:28:07 | FromDiscord | <Yardanico> and creating one is a very big and expensive task |
01:28:16 | FromDiscord | <Yardanico> since it's a very security and performance-critical thing |
01:28:45 | FromDiscord | <Yardanico> so yeah, nim uses openssl for SSL like most other languages |
01:28:52 | FromDiscord | <William_CTO> Ah |
01:28:54 | FromDiscord | <William_CTO> Gotcha |
01:28:56 | FromDiscord | <Yardanico> you can also use libressl or similar though (if they're compatible with openssl) |
01:28:58 | * | xioren joined #nim |
01:29:02 | FromDiscord | <Yardanico> even statically link libressl |
01:29:08 | FromDiscord | <William_CTO> First day with nim so I'm still learning the syntax |
01:29:17 | FromDiscord | <Yardanico> did you see https://nim-lang.org/learn.html ? |
01:29:33 | FromDiscord | <Yardanico> there are text articles/small books and also a video series |
01:29:37 | FromDiscord | <William_CTO> following https://nim-lang.org/docs/tut1.html currently |
01:29:37 | FromDiscord | <Yardanico> and of course dom's book "Nim in Action" |
01:30:01 | FromDiscord | <William_CTO> Yeah, I want to read it, but broke college students don't usually have $40 to drop on language books lol |
01:30:11 | * | dddddd quit (Ping timeout: 240 seconds) |
01:30:55 | xioren | is there a python bytes.decode("utf-8") analog in nim? |
01:30:57 | FromDiscord | <Yardanico> you can also view some parts of it for free by manning's livebook |
01:31:07 | FromDiscord | <Yardanico> @xioren there's usually no need since Nim's strings are just byte sequences |
01:31:15 | FromDiscord | <Yardanico> do you need to handle utf-8 ? can you please elaborate a bit more |
01:32:30 | * | FromDiscord quit (Remote host closed the connection) |
01:32:33 | xioren | im reading a binary file which has utf replacements. in python i read in with .decode() and then use the ord() of each. reading the same binary file with nim gives the wrong order. |
01:32:44 | * | FromDiscord joined #nim |
01:32:57 | xioren | i can only get the correct order with the Runes procs in unicode |
01:32:59 | Yardanico | xioren: oh, so you need to handle utf8 characters specifically? |
01:33:01 | Yardanico | yeah that's right |
01:33:11 | Yardanico | you need to use the unicode module for that |
01:34:15 | * | apahl quit (Ping timeout: 272 seconds) |
01:34:19 | xioren | yeah i figured its just giving me hell because it converts the string to a seq |
01:34:30 | Yardanico | why? |
01:34:34 | Yardanico | strings are seqs in a way :) |
01:34:47 | xioren | right but i need to decode then split |
01:35:21 | xioren | string.split that is |
01:35:23 | Yardanico | why split? |
01:35:40 | Yardanico | split by space or something else? |
01:36:11 | Yardanico | because if you want to split by some ASCII character (like space or newline), then you can first split and only then decode the string into runes |
01:36:11 | * | apahl joined #nim |
01:36:59 | xioren | im implementing this https://github.com/kmike/text-unidecode and thats just how his binary is set up |
01:37:30 | xioren | in python its bytes.decode('utf-8').split('\x00') |
01:37:46 | xioren | and then use the ord of chars as the index |
01:37:55 | xioren | to do the swaps |
01:38:09 | Yardanico | not sure why do you need to port that library to nim? isn't |
01:38:14 | Yardanico | there's https://nim-lang.org/docs/unidecode.html |
01:38:15 | Yardanico | xioren: ^ |
01:39:01 | xioren | hmm |
01:39:07 | Yardanico | it's the exact port of that lib :P |
01:39:09 | Yardanico | and it's in stdlib |
01:39:21 | xioren | is that unidecode.dat part of stdlib? |
01:39:31 | xioren | or do i need to make my own? |
01:39:32 | Yardanico | yes |
01:39:36 | Yardanico | to the first question |
01:39:45 | xioren | interesting, gonna go try that, thanks. |
01:39:53 | Yardanico | it's 229kb |
01:39:56 | * | dddddd joined #nim |
01:40:00 | Yardanico | and it'll be embedded in your program's binary |
01:40:21 | FromDiscord | <Avatarfighter> dude |
01:40:22 | Yardanico | you can just check the description of unidecode |
01:40:26 | FromDiscord | <Avatarfighter> 229kb is so good |
01:41:07 | Yardanico | T5_ = minuspercent___dgYAo7RfdUVVpvkfKDym8wsystem(((NI) (ptrdiff_t) ((*p))), ((NI) 16)); |
01:41:19 | FromDiscord | <Avatarfighter> 😐 |
01:41:24 | xioren | holy cow that makes my life so much easier |
01:41:25 | FromDiscord | <Avatarfighter> yard hide that black magic 😛 |
01:41:36 | Yardanico | xioren: nim standard library is larger than one might think ;) |
01:41:52 | Yardanico | we even have an asyncsmtp module in the stdlib lol |
01:41:56 | xioren | apparently |
01:42:04 | Yardanico | you can always check https://nim-lang.org/docs/lib.html |
01:42:31 | xioren | yeah i usually always have that open in a tab but i guess i overlooked unidecode |
01:43:51 | Yardanico | and of course you can always check how unidecode is implemented if you want |
01:44:34 | Yardanico | oh interesting it uses <=% which is a rare nim operator :DDD |
01:44:41 | Yardanico | compares two ints as unsigned and returns a bool |
01:45:04 | FromDiscord | <Rika> people use that? |
01:45:08 | FromDiscord | <Rika> isnt that an old proc |
01:45:11 | Yardanico | https://github.com/nim-lang/Nim/blob/version-1-2/lib/pure/unidecode/unidecode.nim#L67 |
01:45:42 | Yardanico | i guess it's rarely used, but it exists |
01:52:25 | FromDiscord | <flywind> Does anyone know `nimforum` is compiled with `-d:release` or `-d:danger`? |
01:52:40 | Yardanico | -d:release |
01:52:45 | Yardanico | since it uses nimble |
01:53:14 | Yardanico | actually wait |
01:55:26 | FromDiscord | <Yardanico> @flywind if they're using this task - then no https://github.com/nim-lang/nimforum/blob/master/nimforum.nimble#L28 |
01:55:34 | FromDiscord | <Yardanico> ask @dom96 when he goes online |
01:55:41 | FromDiscord | <Yardanico> we can't know for sure :) |
01:55:46 | FromDiscord | <flywind> Thanks! |
02:02:32 | * | FromGitter quit (Ping timeout: 260 seconds) |
02:03:25 | * | oprypin quit (Ping timeout: 240 seconds) |
02:09:52 | * | bung joined #nim |
02:13:17 | * | rockcavera is now known as Guest62781 |
02:13:17 | * | rockcavera joined #nim |
02:14:54 | * | bung quit (Ping timeout: 272 seconds) |
02:15:43 | * | rockcavera quit (Killed (beckett.freenode.net (Nickname regained by services))) |
02:15:43 | * | rockcavera joined #nim |
02:17:01 | * | oprypin joined #nim |
02:17:08 | * | Guest62781 quit (Ping timeout: 260 seconds) |
02:17:09 | * | FromGitter joined #nim |
02:17:38 | * | rockcavera quit (Remote host closed the connection) |
02:18:09 | * | rockcavera joined #nim |
02:25:19 | * | madpata_ joined #nim |
02:28:50 | * | madpata quit (Ping timeout: 272 seconds) |
02:29:58 | FromDiscord | <SirJosh> hmm nim isn't on here <https://benchmarksgame-team.pages.debian.net/benchmarksgame/index.html> :(↵has there been any previous attempts to get nim on benchmarks game? i kinda wanna try get nim on there for fun |
02:30:20 | * | bung joined #nim |
02:30:43 | Yardanico | author of it explicitly said that he won't accept languages like Nim or Crystal |
02:30:54 | Yardanico | and that people are free to fork it if they want to add these languages |
02:31:25 | * | lbart quit (Ping timeout: 240 seconds) |
02:32:34 | * | rockcavera quit (Remote host closed the connection) |
02:36:06 | * | lbart joined #nim |
02:36:07 | * | lbart quit (Changing host) |
02:36:07 | * | lbart joined #nim |
02:41:55 | * | muffindrake quit (Ping timeout: 240 seconds) |
02:44:20 | * | muffindrake joined #nim |
02:45:51 | * | luis quit (Read error: Connection reset by peer) |
02:49:26 | FromDiscord | <Rika> which is kinda discriminatory ngl |
02:52:50 | Prestige | why would he not, laziness? |
02:55:48 | disruptek | iirc it's because such languages are too easy to create. |
02:57:41 | * | krux02 quit (Remote host closed the connection) |
03:04:00 | FromDiscord | <flywind> I use `typora` to write markdown docs, but it doesn't support Nim syntax highlight. So I choose `vscode` instead. |
03:04:15 | FromDiscord | <flywind> https://github.com/codemirror/CodeMirror/issues/6165 |
03:04:15 | disbot | ➥ Need syntax support for nim Programming language |
03:04:57 | * | luis joined #nim |
03:20:45 | * | xioren quit (Quit: leaving) |
03:27:09 | FromDiscord | <Rika> disruptek, do you believe it is easy to create nim |
03:27:23 | * | luis quit (Read error: Connection reset by peer) |
03:27:38 | FromDiscord | <Elegant Beef> I mean python is there so it cant be that 😄 |
03:27:38 | * | luis joined #nim |
03:27:46 | Prestige | Hehe |
03:28:38 | Yardanico | devel |
03:28:39 | Yardanico | nim c -d:danger --gc:arc --panics:on -d:noSignalHandler -d:useMalloc --cc:clang -d:strip -d:lto --opt:size c1.nim |
03:28:46 | Yardanico | strip -R .comment -R .note -R .note.ABI-tag c1 |
03:28:53 | Yardanico | wc c1 => 5184 bytes dynamically linked |
03:28:58 | Yardanico | now lets try with musl |
03:29:43 | Yardanico | 6288 statically linked with musl |
03:29:59 | Yardanico | i actually forgot --os:any -d:posix |
03:30:14 | Yardanico | with it it's 5616 bytes statically linked hello world with musl |
03:31:16 | Yardanico | https://github.com/Yardanico/random-stuff/blob/master/c1 the binary if you want to try |
03:31:25 | Yardanico | c1: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), statically linked, stripped |
03:33:57 | * | bung quit (Ping timeout: 258 seconds) |
03:59:57 | FromDiscord | <Avatarfighter> @Elegant Beef the guy must be too afraid of Crystal and Nim 😛 |
04:01:54 | FromDiscord | <Avatarfighter> wow |
04:02:02 | FromDiscord | <Avatarfighter> someone wrote WASM -> LLVM IR lmao |
04:02:44 | FromDiscord | <Avatarfighter> oh wow I think im stupid and just mixed up LLVM IR -> WASM |
04:02:58 | FromDiscord | <Avatarfighter> this is just in: I'm not https://github.com/WAVM/WAVM |
04:03:04 | FromDiscord | <Avatarfighter> ^ really cool |
04:05:35 | * | luis quit (Quit: luis) |
04:05:47 | * | luis joined #nim |
04:06:02 | * | supakeen quit (Quit: WeeChat 2.9) |
04:06:38 | * | supakeen joined #nim |
04:27:37 | * | njoseph quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
04:27:44 | * | njoseph joined #nim |
04:30:06 | FromDiscord | <Yardanico> @leorize from the =copy PR - you can check the diff and see that old = is still supported |
04:39:40 | FromDiscord | <iWonderAboutTuatara> Why are nim function params immutable? |
04:40:08 | FromDiscord | <iWonderAboutTuatara> I know idiom is to shadow, by the way |
04:40:17 | FromDiscord | <iWonderAboutTuatara> More a language design question than a practical one |
04:41:05 | FromDiscord | <Rika> idiom is not to shadow but to use another name is it not? |
04:41:20 | FromDiscord | <Rika> you can modify them if they are var or ref |
04:41:41 | leorize[m] | @iWonderAboutTuatara because it's common to not modify the parameter |
04:41:47 | FromDiscord | <Elegant Beef> Nim attempts to default immutable |
04:41:57 | FromDiscord | <Elegant Beef> Hence having the `let` keyword 😄 |
04:42:16 | leorize[m] | knowing that the parameter can't be modified allows the compiler to perform optimizations like passing by reference if the object is too big |
04:42:23 | FromDiscord | <iWonderAboutTuatara> Oh I see |
04:42:29 | FromDiscord | <iWonderAboutTuatara> Speed reasons |
04:42:39 | FromDiscord | <Elegant Beef> Also to protect yourself from yourself |
04:42:42 | FromDiscord | <iWonderAboutTuatara> @Elegant Beef idk I default to var |
04:42:55 | FromDiscord | <iWonderAboutTuatara> Even when things can be let, I just use var |
04:42:56 | FromDiscord | <Elegant Beef> Well idiomatic only uses var when you're mutating |
04:43:01 | FromDiscord | <iWonderAboutTuatara> Agreed |
04:43:08 | FromDiscord | <iWonderAboutTuatara> I wouldn't say Nim is immutable first |
04:43:11 | leorize[m] | you should default to `let` and `func` :P |
04:43:19 | FromDiscord | <iWonderAboutTuatara> I should I agree |
04:43:24 | FromDiscord | <Rika> i agree with let, but not really with func |
04:43:25 | FromDiscord | <iWonderAboutTuatara> My issue with func is debugging |
04:43:32 | FromDiscord | <Rika> until strict func is default |
04:43:40 | FromDiscord | <iWonderAboutTuatara> If I want to print something from inside a func |
04:43:44 | FromDiscord | <Elegant Beef> It's really designed to only have the data you need mutable, mutable |
04:43:47 | FromDiscord | <Rika> there is debugecho |
04:43:48 | FromDiscord | <iWonderAboutTuatara> I have to change it and everything that calls it to proc |
04:43:55 | FromDiscord | <iWonderAboutTuatara> Debugecho? |
04:44:01 | FromDiscord | <Rika> can print in func |
04:44:04 | FromDiscord | <Elegant Beef> it's a no side effect echo |
04:44:04 | FromDiscord | <Rika> no error |
04:44:10 | FromDiscord | <iWonderAboutTuatara> Oh that's really solid |
04:44:27 | FromDiscord | <Elegant Beef> ~~Solid like my poops~~ Channelling my inner diprustek |
04:44:27 | FromDiscord | <iWonderAboutTuatara> Is there a better way of debugging than print? |
04:44:41 | leorize[m] | nim-gdb |
04:44:41 | FromDiscord | <Elegant Beef> Using actual debug tooling |
04:44:52 | FromDiscord | <iWonderAboutTuatara> Never heard of either |
04:44:59 | FromDiscord | <iWonderAboutTuatara> Never used an actual debugger for anything |
04:45:04 | FromDiscord | <iWonderAboutTuatara> I always just print |
04:45:15 | FromDiscord | <Elegant Beef> Debuggers let you mark lines to stop the program at so you can do introspection and see what's happening |
04:45:37 | FromDiscord | <Elegant Beef> Then continue the program until another breakpoint |
04:45:43 | FromDiscord | <iWonderAboutTuatara> Oh so like checking what happens to a value after each operation? |
04:45:51 | FromDiscord | <Elegant Beef> Well i'm at a loss to why my const seq is getting reset 😄 |
04:46:10 | FromDiscord | <iWonderAboutTuatara> Weird |
04:46:26 | FromDiscord | <Yardanico> @Elegant Beef try something |
04:46:32 | FromDiscord | <Elegant Beef> I... uh have |
04:46:45 | FromDiscord | <Yardanico> If you have a compiletime seq like myseq try this |
04:47:12 | * | vicfred quit (Quit: Leaving) |
04:47:34 | FromDiscord | <Yardanico> sent a code paste, see https://play.nim-lang.org/#ix=2AL6 |
04:47:40 | FromDiscord | <Yardanico> it's silly but who knows |
04:49:08 | FromDiscord | <Yardanico> I hope the stuff you're storing in the comptime seq doesn't have refs? |
04:49:45 | FromDiscord | <Elegant Beef> This is it https://media.discordapp.net/attachments/371759389889003532/766160863181668372/unknown.png |
04:50:22 | FromDiscord | <Yardanico> so did you minimize it in 1 file so I can test? :) |
04:50:28 | FromDiscord | <Elegant Beef> The minimiize worked |
04:50:59 | FromDiscord | <Yardanico> then you minimized it wrongly :P |
04:51:04 | FromDiscord | <Yardanico> Is the source open? |
04:51:22 | FromDiscord | <Elegant Beef> Nope |
04:54:52 | * | mwbrown quit (Ping timeout: 244 seconds) |
04:55:53 | * | mwbrown joined #nim |
04:56:38 | FromDiscord | <Elegant Beef> Like this is almost exactly what i've got but it seemingly doesnt work for some weird reason inside my project https://play.nim-lang.org/#ix=2AL8 |
04:58:25 | FromDiscord | <Elegant Beef> But here check for yourself, got one big ol' nasty macro in there https://github.com/beef331/nimscripter |
04:59:02 | FromDiscord | <Elegant Beef> Was just a proof of concept mostly so didnt really want to make a repo until it was more concreate and useable |
04:59:08 | * | leeooox joined #nim |
05:05:01 | * | leeooox33 joined #nim |
05:05:36 | * | leeooox33 quit (Remote host closed the connection) |
05:08:56 | FromDiscord | <Elegant Beef> *needs devel afaik* |
05:17:10 | FromDiscord | <Yardanico> What a fine morning, eh? |
05:23:12 | FromDiscord | <Elegant Beef> About as fine as that code is clean |
05:28:47 | * | solitudesf joined #nim |
05:30:16 | * | narimiran joined #nim |
05:30:22 | * | bung joined #nim |
05:34:55 | * | bung quit (Ping timeout: 260 seconds) |
05:35:27 | * | apahl quit (Ping timeout: 260 seconds) |
05:36:29 | * | apahl joined #nim |
05:38:01 | * | luis quit (Quit: luis) |
05:38:18 | * | luis joined #nim |
05:41:03 | FromDiscord | <lqdev> about as fine as forced school during covid is |
05:41:31 | Yardanico | we too have to go to the uni :) |
05:41:42 | Yardanico | although not every day (our schedule is pretty light right now) |
05:42:59 | FromDiscord | <lqdev> let me go hooooome |
05:43:09 | FromDiscord | <lqdev> i wanna work on my game |
05:43:23 | FromDiscord | <lqdev> rather than divide polynomials to hell |
05:43:39 | FromDiscord | <Elegant Beef> Time to do programming like technisha, program on your phone 😄 |
05:43:47 | FromDiscord | <lqdev> oof |
05:46:02 | FromDiscord | <PizzaFox> why does choosenim use the `-f` flag in their curl snippet for installation↵> (HTTP) Fail silently (no output at all) on server errors |
05:46:11 | FromDiscord | <PizzaFox> that seems like a bad thing to do in an installer |
06:13:15 | * | luis quit (Read error: Connection reset by peer) |
06:25:02 | * | luis joined #nim |
06:30:23 | * | PMunch joined #nim |
06:32:13 | * | luis quit (Quit: luis) |
06:32:24 | * | luis joined #nim |
06:37:13 | * | maier joined #nim |
06:37:29 | * | maier is now known as kenran |
06:41:28 | * | luis quit (Read error: Connection reset by peer) |
06:41:41 | * | luis joined #nim |
07:02:45 | * | bung joined #nim |
07:15:29 | * | user0_ joined #nim |
07:17:28 | * | user0 quit (Ping timeout: 246 seconds) |
07:40:52 | * | apahl quit (Ping timeout: 260 seconds) |
07:41:47 | * | apahl joined #nim |
07:50:06 | * | luis quit (Quit: luis) |
07:50:40 | narimiran | Yardanico: you around? |
07:50:50 | Yardanico | sir, yes sir |
07:50:55 | narimiran | :) |
07:51:07 | narimiran | is the article ready or you need to do some more changes? |
07:52:21 | Yardanico | well, I'm not sure if the name is fine |
07:52:39 | Yardanico | maybe something like "Introduction to ARC/ORC in Nim" would fit better |
07:52:54 | Yardanico | but generally it seems to be ready, yes |
07:53:08 | narimiran | ok, let me quickly re-read it one more time |
07:53:21 | narimiran | and i like "Introduction to ARC/ORC in Nim" |
07:53:36 | Yardanico | well, guess I'll change that :) |
07:55:40 | narimiran | wow you even made a diagram!! |
07:55:59 | Yardanico | yes, I used some online diagram maker |
07:56:03 | * | lum joined #nim |
07:56:13 | Yardanico | they had SVG export and I used that, although I felt like i want to clean the svg from some metadata that website left |
07:56:22 | Yardanico | I spend more time on cleaning the svg than on the diagram |
07:56:32 | Yardanico | but it's not much anyway |
07:58:25 | Yardanico | changed the article name |
07:58:42 | Yardanico | oh wait |
07:58:44 | Yardanico | no need for a dot |
07:58:49 | narimiran | and the date? ;) |
07:59:03 | Yardanico | change to today? :D |
07:59:06 | narimiran | yep |
07:59:41 | Yardanico | done |
07:59:54 | narimiran | "you can try a 1.4 release candidate" - missing a dot |
08:00:03 | Yardanico | oh right |
08:00:37 | Yardanico | actually I think I'll change "But if you're eager to try them out, you can try a |
08:00:38 | Yardanico | [1.4 release candidate]" to "But if you're eager to try them out, there's a 1.4 release candidate available" |
08:00:53 | bung | anyone have time review my code ? https://play.nim-lang.org/#ix=2ALK |
08:01:25 | narimiran | Yardanico: hmm, or maybe point that to the current latest devel nightly? |
08:01:35 | narimiran | because everything in current devel will become 1.4 |
08:01:41 | Yardanico | is it possible? |
08:02:02 | Yardanico | i mean we don't have an always-latest link? |
08:02:12 | narimiran | let me try to find the link to use |
08:02:29 | Yardanico | ah found it |
08:02:33 | Yardanico | by cheating and replacing 0 with 4 |
08:02:33 | Yardanico | https://github.com/nim-lang/nightlies/releases/tag/latest-version-1-4 |
08:02:51 | narimiran | leorize, leorize[m], leorize[m]1 - we have only one asset per nightly? :/ |
08:03:03 | Yardanico | narimiran: wdym? |
08:03:06 | narimiran | Yardanico: nah, not that one |
08:03:11 | narimiran | https://github.com/nim-lang/nightlies/releases |
08:03:27 | narimiran | before it was like 9 different versions per build |
08:03:27 | Araq | lesson learned in 2020. if you re-use old compiler code written for different assumptions... don't. |
08:04:34 | narimiran | oh, it is at the bottom of that page |
08:05:14 | narimiran | i don't understand current way of nightlies |
08:05:39 | narimiran | "Latest successful build for branch ....." will always be updated with the latest stuff, right? |
08:06:01 | narimiran | but how do i get nightlies for a given date, e.g. for today/yesterday? |
08:06:50 | narimiran | https://github.com/nim-lang/nightlies/releases/tag/latest-devel -- this is the current latest devel, but the contents of it will be changed tomorrow, right? |
08:07:18 | narimiran | and it says it is alias for https://github.com/nim-lang/nightlies/releases/tag/2020-10-15-devel-a4c28394beab558a160671ab216e736b36276a94 - but there is only one tar.xz |
08:08:18 | Yardanico | @leorize ping ping? |
08:09:35 | Yardanico | narimiran: but what's the problem with https://github.com/nim-lang/nightlies/releases/tag/latest-version-1-4? |
08:09:37 | Yardanico | https://github.com/nim-lang/nightlies/releases/tag/latest-version-1-4 |
08:10:17 | narimiran | it is currently outdated |
08:10:40 | narimiran | it is 2020-10-07 version |
08:11:23 | narimiran | it is not a big deal, but now i realized i cannot pick anymore a nightly from any given date |
08:12:29 | narimiran | if somebody reads your article in 2 months, that latest link will lead to completely different version |
08:12:54 | Yardanico | but can't we edit it later? when 1.4 gets released for example |
08:13:02 | Yardanico | or is that bad? :P |
08:13:18 | FromDiscord | <that_dude> Sorry for the late night question, but there is something I hope you guys can clarify for me. I have some code that looks like this. var data: seq[(int, int)] and it bugs me that it isn't var data: seq[tuple[int, int]] or something similar. Is there a behind the scenes reason that just doesn't work? |
08:13:40 | Yardanico | well, the tuple[] syntax is for named tuples |
08:13:47 | Yardanico | (int, int) is "anonymous" tuples |
08:15:44 | FromDiscord | <that_dude> I guess I get that, but does tuple[] have to be for named ones? I feel like it wouldn't be that complex for the compiler or whatever to notice the data isn't named. Sorry for my lack of knowledge in stuff like this |
08:16:20 | Yardanico | narimiran: so what do we do with the 1.4-release candidate link? |
08:21:55 | narimiran | Yardanico: let me think for a bit. (and maybe leorize comes in the mean time :)) |
08:22:02 | Yardanico | it's okay, there's no rush :) |
08:23:10 | Araq | that_dude: it's a valid point but '(int, int)' is just as good, get over it and use it. |
08:23:39 | FromDiscord | <iWonderAboutTuatara> Should I make a PR for qsort proc/func in the algorithm stdlib module? |
08:23:39 | Araq | if we support tuple[int, int] too there would be yet another way to write the same |
08:24:02 | FromDiscord | <iWonderAboutTuatara> Irs supposed to be more efficient for smaller sets, which is not uncommon to be dealing with |
08:24:10 | FromDiscord | <iWonderAboutTuatara> So I think there's space for it |
08:24:24 | Araq | and then the Nim purgers would come along and demand all old usages of (int, int) must be purged |
08:25:38 | Araq | because "omg, inconsistent! makes the language harder to learn". so what. if you stop the constant language hopping you only need to learn it once. |
08:25:44 | FromDiscord | <iWonderAboutTuatara> Also it's a lot more efficient on memory, which is nice if space complexity is an issue |
08:26:45 | FromDiscord | <iWonderAboutTuatara> The only issue is that the `cmp` thing is super confusing |
08:32:58 | FromDiscord | <iWonderAboutTuatara> Ok, the use of cmp vs the enum for sortorder is super confusing |
08:33:41 | Yardanico | ? |
08:34:40 | * | lum quit (Quit: WeeChat 2.8) |
08:34:50 | FromDiscord | <that_dude> Araq: I don't think that people would get mad at (int, int) if tuple[int, int] were implemented because the first one would just become sugar or something. Also isn't consistency in general a good thing to have? I feel like I spent way too long trying to figure out why the compiler was mad at me for this. |
08:39:01 | * | hnOsmium0001 quit (Quit: Connection closed for inactivity) |
08:43:46 | * | newUser joined #nim |
08:45:25 | newUser | Hi, I have an exercise to translate from C++ to Nim (I have no idea...): https://play.nim-lang.org/#ix=2ALU |
08:46:12 | supakeen | newUser: As in homework? |
08:46:25 | newUser | no, only for me |
08:46:36 | FromDiscord | <iWonderAboutTuatara> Pretty insane if your homework involves nim |
08:46:37 | FromDiscord | <iWonderAboutTuatara> Oh |
08:46:52 | supakeen | Ok well, but it's still meant for learning so we won't throw out the answer :) |
08:46:59 | supakeen | Can you tell me what the C++ program does? |
08:47:01 | FromDiscord | <iWonderAboutTuatara> https://nim-by-example.github.io/files/ |
08:47:20 | FromDiscord | <iWonderAboutTuatara> Should help you a bit if you were confused about reading from files |
08:47:22 | supakeen | Because if you can describe that (to yourself) then you probably know what you need to write it in Nim. |
08:47:42 | newUser | if I put an file via main, I get the output to the file, if not to cout |
08:48:00 | newUser | but I only want to have one proc |
08:48:08 | Araq | that_dude: consistency can mean many different things. How about using ()'s consistently with the code out there which already uses it |
08:48:25 | FromDiscord | <mratsim> We don't talk about consistency here, it's a trigger word |
08:48:54 | FromDiscord | <mratsim> I do like the tuple[re: float64, im: float64] possibility though |
08:48:58 | FromDiscord | <iWonderAboutTuatara> I value consistency, Nim is pretty good with it |
08:49:03 | FromDiscord | <Rika> nim embraces an interesting balance between convenience and consistency |
08:49:12 | FromDiscord | <mratsim> maybe (re: float64, im: float64) would be a little less verbose |
08:49:15 | supakeen | I mean the C++ code is broken as well, but sure, you can open a file in Nim and write to it those functions are called `open` and `write` respectively and are in the link iWonderAboutTuatara gave you. |
08:49:15 | Araq | there is a reason why natural languages are constantly changing. it's never "consistent" |
08:49:25 | supakeen | What is the bit you're stuck on? |
08:49:37 | FromDiscord | <iWonderAboutTuatara> Right, but natural languages are hard to learn @Araq[IRC]#0000 |
08:50:01 | FromDiscord | <iWonderAboutTuatara> You can spend years and know barely enough to hold a basic conversation |
08:50:04 | FromDiscord | <mratsim> Yeah, in French COVID changed from masculine to feminine |
08:50:15 | FromDiscord | <Recruit_main707> @iWonderAboutTuatara something like this: https://play.nim-lang.org/#ix=2ALX |
08:50:25 | Araq | well but native speakers who had no trouble learning their mother tongue evolve them |
08:50:30 | FromDiscord | <iWonderAboutTuatara> Programming languages are constructed and do enjoy the benefits of consistency and directed evolution |
08:50:45 | FromDiscord | <iWonderAboutTuatara> @Recruit_main707 wrong guy lol |
08:50:46 | Araq | often indeed new stuff is added with some consistency wrt the old rules |
08:51:05 | FromDiscord | <Recruit_main707> oh, i scrolled until i saw an url :P |
08:51:07 | FromDiscord | <iWonderAboutTuatara> Well, no language has a governing body that's taken seriously |
08:51:07 | FromDiscord | <Recruit_main707> sorry |
08:51:16 | * | Vladar joined #nim |
08:51:22 | FromDiscord | <iWonderAboutTuatara> Lol npnp |
08:51:24 | FromDiscord | <Recruit_main707> > Yeah, in French COVID changed from masculine to feminine↵@mratsim same in Spanish, i dont know why tf they do it |
08:51:24 | Araq | yet they never are "consistent". |
08:51:48 | FromDiscord | <Rika> > Programming languages are constructed and do enjoy the benefits of consistency and directed evolution↵but has the downside that breaking changes are harder to execute; you can always teach people small changes really easily, good luck with compilers and code |
08:51:48 | FromDiscord | <iWonderAboutTuatara> Obviously, you can't have 100% consistency |
08:51:55 | newUser | supakeen : an Idea is proc WriteElem(cout: Stream) or so |
08:52:10 | FromDiscord | <Recruit_main707> newUser, the example i sent does that |
08:52:13 | FromDiscord | <iWonderAboutTuatara> That just causes a bad product, you have to make exceptions some times for usability. But they shouldn't be too common |
08:52:35 | FromDiscord | <mratsim> @Recruit_main707 I think in French it's because disease is feminine |
08:52:39 | supakeen | Recruit_main707: In Spanish they made it 'la COVID-19' but 'el coronavirus' ;) |
08:52:56 | FromDiscord | <Recruit_main707> its still pretty retarded |
08:52:56 | FromDiscord | <iWonderAboutTuatara> @Rika I think that's a specifically programming languages not conlangs in general |
08:53:04 | newUser | <Recruit_main707>: thx =D |
08:53:08 | FromDiscord | <iWonderAboutTuatara> Yeah the spanish authority on language is really weird |
08:53:08 | FromDiscord | <Recruit_main707> np |
08:53:12 | FromDiscord | <Rika> @iWonderAboutTuatara and indeed that is what i was addressing |
08:53:15 | supakeen | Because they made it the same as 'enfermedad' |
08:53:39 | FromDiscord | <iWonderAboutTuatara> All the language auths are weird |
08:54:04 | FromDiscord | <iWonderAboutTuatara> Never heard one speaker of a language speak well about the governing body of it |
08:54:05 | FromDiscord | <Recruit_main707> ^ |
08:54:13 | FromDiscord | <iWonderAboutTuatara> And nobody really respects any of their decrees |
08:54:21 | FromDiscord | <that_dude> I think I'm following you guys, and I'm am not suggesting removing (int, int), but just making both possible. In my case I feel like it make defining the type I was working on messier and messed with the structure of it. |
08:54:26 | supakeen | To be fair, the Dutch one is authorative. |
08:54:46 | supakeen | As in, if they decide that's how it's taught in school; it might take a while before those people start correcting you but it does happen ;) |
08:55:00 | Araq | I have never seen a "consistent" programming language, I'm beginning to think it doesn't mean anything. Python uses 'class' for 'define class' and 'def' for 'define method' |
08:55:04 | FromDiscord | <Rika> well ar/q already expressed their opinion on why having both could be a massive issue |
08:55:33 | FromDiscord | <iWonderAboutTuatara> @Araq[IRC]#0000 well I mean, you have to forgo consistency for usability some of the time |
08:55:56 | FromDiscord | <iWonderAboutTuatara> But doing this doesn't harm usability or learnability |
08:56:42 | FromDiscord | <iWonderAboutTuatara> Tuple [] is immediately obvious, and () sees enough use that people will understand it |
08:57:00 | FromDiscord | <iWonderAboutTuatara> I would prefer the less verbose option () but I don't see any reason to not give choice |
08:57:15 | FromDiscord | <iWonderAboutTuatara> Unless it's technically difficult of course |
08:57:20 | FromDiscord | <that_dude> ^ |
08:57:26 | FromDiscord | <Rika> see what ar/q said ↵> and then the Nim purgers would come along and demand all old usages of (int, int) must be purged↵> because "omg, inconsistent! makes the language harder to learn". so what. if you stop the constant language hopping you only need to learn it once. |
08:58:03 | Araq | here is one reason: the two syntaxes likely are different ASTs and the macros need to understand them both |
08:58:24 | FromDiscord | <iWonderAboutTuatara> That's a very good reason |
08:58:25 | Araq | other Nim programmers need to know both syntaxes because they might be used in the wild |
08:58:28 | Zevv | I almost converted someone to Nim, and now he's pointing to Zig |
08:58:31 | Zevv | quick, what do I tell him |
08:58:36 | FromDiscord | <that_dude> what is ast? |
08:58:39 | FromDiscord | <iWonderAboutTuatara> Metaprogramming |
08:58:47 | FromDiscord | <iWonderAboutTuatara> @Zevv[IRC]#0000 macros are cool and fun |
08:58:49 | FromDiscord | <mratsim> What does he want to write? |
08:58:53 | FromDiscord | <mratsim> start from his needs |
08:59:09 | FromDiscord | <iWonderAboutTuatara> @that_dude basically, each expression you write is a node in a big tree |
08:59:10 | FromDiscord | <Rika> maybe zig is a better fit for some people |
08:59:16 | FromDiscord | <mratsim> product don't sell with a laundry list of features now, they sell because they are a solution to a problem |
08:59:43 | FromDiscord | <iWonderAboutTuatara> Each node is of some type, which has some unique behavior |
08:59:54 | FromDiscord | <lqdev> AST = Abstract Syntax Tree |
08:59:55 | FromDiscord | <mratsim> that was marketing from the 80s "This car has foo, bar, baz, and also radio and airbags) |
09:00:12 | FromDiscord | <iWonderAboutTuatara> If you're a Godot user, they're nodes in the scenetree |
09:00:39 | FromDiscord | <iWonderAboutTuatara> Nim allows you to (through Nim code) directly modify the nodes, their position, their type, their value, etc |
09:00:49 | Zevv | mratsim: system programming, networking, video processing |
09:01:16 | FromDiscord | <iWonderAboutTuatara> So you can write code that reads and modifies code dynamically, super useful and fun |
09:01:30 | FromDiscord | <Rika> Zevv: i'm interested in why theyre leaning towards zig |
09:01:41 | FromDiscord | <mratsim> Does he need C++ libraries like OpenCV? |
09:01:46 | FromDiscord | <iWonderAboutTuatara> Yeah that's extremely weird |
09:01:55 | FromDiscord | <mratsim> because Zig doesn't have seamless interface with C++ |
09:02:01 | FromDiscord | <iWonderAboutTuatara> I don't think there's a remotely mature video processing library for zig |
09:02:07 | FromDiscord | <mratsim> or Nim |
09:02:09 | FromDiscord | <iWonderAboutTuatara> But there is for C, and c2nim is nice |
09:02:18 | FromDiscord | <Rika> maybe he is not familiar about the libraries |
09:02:20 | * | luis joined #nim |
09:02:26 | FromDiscord | <Rika> (edit) 'libraries' => 'library* support of each language' |
09:02:29 | FromDiscord | <mratsim> does he use Avisynth for video processing? because someone wrote a wrapper |
09:03:19 | FromDiscord | <mratsim> for networking what kind? if he happen to use P2P networking, I'm pretty sure Zig doesn't have the wealth of library we wrote at Status |
09:03:31 | Yardanico | Zig is still a very very new language |
09:03:34 | FromDiscord | <mratsim> and even for non-P2P there are stuff like Protobuf that take time to write |
09:04:00 | FromDiscord | <Rika> zig's younger than nim right? |
09:04:07 | FromDiscord | <Rika> is zig more popular? |
09:04:25 | Zevv | Rika: he's at the point where I was a few years a go, sick&tired of what he uses now and looking for the next thing to invest time in |
09:04:34 | Zevv | so logically he's looking at all viable options |
09:04:43 | Yardanico | @Rika no lol |
09:04:45 | FromDiscord | <Rika> ah i see |
09:04:48 | Yardanico | Zig is very new |
09:04:49 | FromDiscord | <Rika> no lol to which |
09:04:55 | FromDiscord | <lqdev> a little less popular i'd say |
09:04:56 | Yardanico | zig is much younger than nim |
09:05:00 | Yardanico | @lqdev it's much less popular |
09:05:03 | Yardanico | really |
09:05:05 | FromDiscord | <Rika> new languages can be more popular than some older ones |
09:05:10 | FromDiscord | <lqdev> V |
09:05:12 | Yardanico | there's still no package manager |
09:05:15 | Yardanico | V isn't popular either |
09:05:17 | FromDiscord | <Rika> ???????????? |
09:05:19 | Yardanico | star count doesn't matter |
09:05:24 | FromDiscord | <Rika> ZIG HAS NO PACKAGE MANAGER??? |
09:05:26 | Yardanico | yes |
09:05:30 | FromDiscord | <Rika> holy shit thats a massive L |
09:05:37 | Yardanico | there's only one small abandoned attempt at https://github.com/zigtools/zpm |
09:05:53 | Yardanico | https://github.com/ziglang/zig/issues/943 |
09:05:53 | disbot | ➥ package manager |
09:05:57 | FromDiscord | <Rika> that is really unfortunate |
09:06:08 | FromDiscord | <lqdev> *meanwhile V was supposed to be at 1.0 in december 2019. it's october 2020 and it's still not at 0.2* |
09:06:14 | Yardanico | shhhhhhhhh |
09:06:24 | FromDiscord | <Rika> lol |
09:06:31 | FromDiscord | <lqdev> at least they're working on it |
09:06:46 | FromDiscord | <lqdev> who knows what'll come out of it |
09:06:52 | FromDiscord | <lqdev> it's definitely not the language for me. |
09:07:19 | FromDiscord | <Rika> i dont know, i dont find it particularly interesting |
09:07:36 | FromDiscord | <Rika> comparing it with nim, rust, go, zig, V doesnt really have anything to stand out no? |
09:08:00 | FromDiscord | <Rika> other than the controversy but that's not because of the language itself |
09:08:30 | * | newUser quit (Remote host closed the connection) |
09:08:31 | * | lum_unreg joined #nim |
09:08:33 | Yardanico | deciding language syntax by twitter polls is really outstanding imo |
09:08:38 | Yardanico | no one have done that before |
09:08:39 | * | lum_unreg quit (Client Quit) |
09:13:08 | Araq | we need to attract more commercial parties, who cares if the hobbyists still prefer Basic or one of the newer languages. |
09:13:51 | * | lum_unreg joined #nim |
09:13:52 | Araq | We should copy what makes Go and Rust and C++ successful languages. |
09:13:55 | * | lum_unreg quit (Client Quit) |
09:14:18 | Araq | and that means not adding yet another syntax for tuple declarations, sorry. |
09:14:41 | Yardanico | we should just make a proprietary Nim fork, like one japanese company did to Zig :D |
09:14:51 | Araq | it means professionalism, caring about backwards compatibility |
09:15:00 | Yardanico | they were dissatisfied with Zig's creator handling of PRs and other stuff, and just forked it https://zen-lang.org/ |
09:15:26 | Araq | and bugfixing. |
09:15:43 | Araq | and following our 2020 plan |
09:17:18 | supakeen | stability would be preferred for me |
09:17:29 | supakeen | currently we only use nim at work for jobs that take less than one working day |
09:19:22 | Zevv | that's because coding in nim is so fast, right |
09:19:41 | supakeen | Zevv: honestly the reason is so that *if* we hit a bug we can rewrite in another language within a day as well |
09:20:08 | supakeen | and to give a no pressure way for people to try it out and get familiar with it |
09:20:08 | Araq | for example |
09:20:15 | Araq | https://forum.nim-lang.org/t/6925#43379 |
09:20:28 | Araq | mratsim is telling us what to add to fusion |
09:20:43 | Zevv | My new toy project (GPL) is now commercially used at my $customer, and time I spend on it are payed. Hope this might cause some traction for Nim in the company. |
09:20:57 | Yardanico | oh, the event viewer? |
09:21:03 | Zevv | yea |
09:21:03 | Araq | can anybody please help us with that? I think it's pretty important |
09:21:21 | supakeen | Zevv: That's also the reason why I have started my toy project because we have a need for it at work. |
09:22:05 | supakeen | Araq: You mean the different channel implementations? |
09:22:28 | Araq | I mean the atomic refcounting but new channels are welcome too |
09:22:54 | supakeen | For now I'll be busy with my PRNG implementations but after that I do want to toy with concurrent things. |
09:23:09 | FromDiscord | <mratsim> I've created an org for parallel Nim 😛 https://github.com/weavers-guild |
09:24:01 | Yardanico | inb4 "'let's create a #multithreading channel on discord" :P |
09:24:12 | Araq | atomic refcounts are vocabulary types, they need to be in fusion or in std |
09:24:55 | FromDiscord | <mratsim> it was more for concurrent data structure, taskpools, moving weave there and experiments with multithreaded and/or threadsafe async |
09:27:01 | * | newUser joined #nim |
09:28:08 | narimiran | Yardanico: the current link will be just fine for now. no need to wait any more. (but please add a dot after that link :)) |
09:28:16 | Yardanico | I did that :) |
09:28:17 | Yardanico | already |
09:28:25 | Yardanico | ah wait no I didn't commit |
09:28:30 | narimiran | :) |
09:28:32 | Yardanico | I changed the text to But if you're eager to try them out, there's a [1.4 release candidate](https://github.com/nim-lang/nightlies/releases/tag/2020-10-07-version-1-4-3b901d1e361f49d48fb64d115e42c04a4a37100c) available. |
09:28:41 | * | narimiran thumbs up |
09:29:03 | Araq | ah and he did it again, https://forum.nim-lang.org/t/6920#43378 |
09:29:23 | narimiran | crazy guy that mratsim! |
09:29:33 | Yardanico | maybe it's multiple people under the same account? |
09:29:45 | narimiran | Yardanico: that's the most plausible explanation!! |
09:29:45 | Araq | we can create issues and put bounties on it if that's what it takes to make #nim more productive |
09:29:46 | newUser | I'm searching for an equivalent std::ofstream::is_open, or can I use often in my code: if outFile.open("ForBlaBla.txt", fmWrite): ? |
09:29:57 | Yardanico | yeah |
09:30:26 | Yardanico | narimiran: pushed the change |
09:30:46 | narimiran | Yardanico: i was notified :) merging it and then it's time for some promotion :) |
09:30:53 | Araq | also, we might want to have fusion/json2.nim and don't care about the compile-time-ness of JSON. you can always use staticExec anyway |
09:30:54 | * | lum_unreg joined #nim |
09:31:28 | Araq | and omg, this new json2 wouldn't work on node.js either, terrible :-) |
09:31:31 | Yardanico | narimiran: pls mention @yardanic0 (my twitter) in the nim_lang tweet :P |
09:31:56 | narimiran | Yardanico: will do! and if you want, you can post it on reddit and HN for some sweet karma points :) |
09:32:12 | Yardanico | wow how did you update the website so fast |
09:32:13 | narimiran | https://nim-lang.org/blog/2020/10/15/introduction-to-arc-orc-in-nim.html |
09:32:22 | narimiran | Yardanico: time-bending |
09:32:25 | * | luis quit (Ping timeout: 272 seconds) |
09:32:56 | * | luis joined #nim |
09:33:48 | * | Kiloneie joined #nim |
09:34:11 | narimiran | (i'll wait with tweet until reddit and HN posts are alive, so i can link to them too) |
09:34:50 | Yardanico | yeah posted them |
09:35:03 | Yardanico | https://www.reddit.com/r/programming/comments/jbkerv/introduction_to_arcorc_in_nim/ https://reddit.com/r/nim https://news.ycombinator.com/item?id=24786649 |
09:35:16 | Yardanico | https://www.reddit.com/r/nim/comments/jbkel7/introduction_to_arcorc_in_nim/ |
09:35:25 | Yardanico | I guess you don't need to mention the r/nim one :P |
09:35:34 | Yardanico | but thanks a lot :) |
09:36:39 | narimiran | yeah, i prefer r/programming one |
09:37:39 | FromDiscord | <Ricky Spanish> anyyone know if nimterop maintains a list of acceptable types? i get ```#define ORT_API_CALL __declspec(naked)``` ``` # const 'ORT_API_CALL' has unsupported value '__declspec(naked)'``` this define producing this warning but it doesent seem to matter if its __stdcall or __declspec or any other type i put in, it seems to fail to convert |
09:38:08 | * | newUser quit (Remote host closed the connection) |
09:38:28 | Yardanico | time to get ready to answer questions on reddit an HN (if they get some traction) :P |
09:38:34 | ee7[m] | gets notification of blog post merged |
09:38:38 | Yardanico | hahaha |
09:38:38 | ee7[m] | :) |
09:38:46 | Yardanico | thanks for all of your fixes! |
09:38:56 | ee7[m] | No problem. You're welcome. |
09:41:32 | supakeen | I can only give two suggestions: Remove the "simple" words and I think "main difference between ARC and Nim GCs is that ARC is fully deterministic" Nim GCs should be refc? |
09:41:41 | supakeen | Nice article :) |
09:42:15 | Yardanico | we also have markAndSweep, boehm, go |
09:42:22 | Yardanico | supakeen: thanks a lot :P |
09:42:37 | supakeen | Then "current Nim GCs"? |
09:42:42 | supakeen | Maybe it's nitpicking. |
09:42:52 | Yardanico | well, we try to not call ARC a GC :P |
09:42:59 | supakeen | Ahhh that I did not know. |
09:43:01 | supakeen | Then it makes sense. |
09:43:08 | Yardanico | because most people associate GCs with tracing GCs |
09:43:15 | supakeen | Of course, yea. |
09:44:05 | Yardanico | also I'm curious if we'll get more nim users on the discord today than normally |
09:45:23 | * | superbia quit (Quit: WeeChat 2.9) |
09:46:37 | FromDiscord | <Kiloneie> why ? |
09:46:54 | supakeen | Because Nim might be a bit more in the spotlight today if the post gains traction. |
09:47:14 | Yardanico | @Kiloneie generally we see an influx of new discord users with each new release |
09:47:28 | Yardanico | and even just for new nim blog posts |
09:47:48 | Yardanico | so more people who don't know Nim might see a post about it in their feed on reddit/HN/twitter |
09:48:32 | * | Tanger quit (Remote host closed the connection) |
09:48:55 | FromDiscord | <Kiloneie> Well i know that you can do that on reddit, as long as it's not the same person spamming into the same topic the same thing... smthing smthing self promotion xD |
09:49:26 | Yardanico | it's not self promotion if it's a blog post :) |
09:50:05 | FromDiscord | <Kiloneie> well... reddit and rules not my thing xD |
09:50:25 | FromDiscord | <Kiloneie> i think metaprogramming should get another blog post |
09:50:30 | supakeen | I've posted a semi-accusative reply so if someone can set me straight on HN, please do :) |
09:52:42 | * | luis quit (Ping timeout: 260 seconds) |
09:53:50 | supakeen | Thank you :) |
09:54:32 | * | luis joined #nim |
09:59:53 | * | luis quit (Quit: luis) |
10:07:50 | * | luis joined #nim |
10:08:09 | narimiran | supakeen: thank you for asking the question there (and not here) to start the discussion, and the answer will be visible to the wider audience |
10:08:15 | * | luis quit (Remote host closed the connection) |
10:08:26 | supakeen | That's why I did that. |
10:08:28 | * | luis joined #nim |
10:08:31 | supakeen | It's a common criticism. |
10:08:32 | * | narimiran thumbs up |
10:08:46 | FromDiscord | <Rika> inb4 downvoted |
10:09:02 | * | luis quit (Disconnected by services) |
10:09:09 | supakeen | Luckily downvotes don't work on HN unless you have a whole bunch of pts. |
10:09:33 | narimiran | but there is HN algorithm working in background that can demote your post |
10:10:46 | narimiran | btw, supakeen, nice avatar on twitter |
10:10:56 | supakeen | Thank you :) It's what the nickname comes from anyways. |
10:11:06 | narimiran | yeah, i just realized that :) |
10:11:25 | Yardanico | that feeling when I posted my own post on the discord server in announcements :P |
10:11:28 | Yardanico | and mentioned myself :DD |
10:12:34 | narimiran | yo dawg.... |
10:13:33 | Yardanico | https://i.imgur.com/EB4vAhp.png |
10:13:38 | * | lum_unreg quit (Quit: WeeChat 2.8) |
10:14:18 | narimiran | :) |
10:14:26 | * | FromDiscord quit (Remote host closed the connection) |
10:14:40 | * | FromDiscord joined #nim |
10:16:26 | * | lum joined #nim |
10:17:30 | FromDiscord | <lqdev> lmao |
10:17:53 | FromDiscord | <Yardanico> apparently some people already use discord's follow channel feature |
10:18:12 | FromDiscord | <Yardanico> there are 4 discord servers subbed to the announcements channel |
10:19:40 | FromDiscord | <kaletaa> penis |
10:19:43 | FromDiscord | <Varriount> While ARC is a big step forward in terms of destructor & move functionality, I feel like the concept itself is being a tad over-hyped |
10:20:09 | supakeen | Perhaps it's the step itself that gets hyped, not the concept :) |
10:20:10 | * | letto quit (Quit: Konversation terminated!) |
10:21:58 | * | letto joined #nim |
10:23:26 | * | krux02 joined #nim |
10:24:50 | FromDiscord | <mratsim> ORC is more interesting than ARC due to cycle-counting for RC |
10:25:09 | FromDiscord | <mratsim> ARC itself is something that C++, Swift, Rust already have |
10:25:19 | Yardanico | we need 4raq to make an in-depth article about ARC/ORC :P |
10:25:29 | FromDiscord | <Varriount> Isn't it just mark & sweep? |
10:25:41 | FromDiscord | <Varriount> (for the cycle counting) |
10:25:41 | Yardanico | it's a completely different algorithm |
10:26:41 | FromDiscord | <mratsim> It's Beacon & Dingle coloring algorithm |
10:26:49 | Yardanico | isn't it Bacon? |
10:26:54 | FromDiscord | <mratsim> a hidden paper |
10:26:58 | FromDiscord | <mratsim> yeah Beacon Bacon 😉 |
10:27:40 | FromDiscord | <Rika> same thing |
10:27:55 | FromDiscord | <mratsim> Bacon is a beacon for my lunch |
10:29:08 | * | narimiran quit (Quit: leaving) |
10:29:40 | FromDiscord | <Varriount> Anyone know the status of the thread subgraph stuff? |
10:30:02 | FromDiscord | <mratsim> WHat's this? |
10:30:21 | Yardanico | https://github.com/nim-lang/RFCs/issues/244 |
10:30:22 | disbot | ➥ 'isolated' data for Nim ; snippet at 12https://play.nim-lang.org/#ix=2sjf |
10:30:35 | FromDiscord | <Varriount> Yes, that |
10:31:29 | * | testtestettettts joined #nim |
10:32:46 | testtestettettts | test |
10:33:19 | Yardanico | test? |
10:33:26 | Yardanico | hi lum |
10:33:42 | testtestettettts | hi |
10:33:48 | testtestettettts | iamtest |
10:34:03 | Yardanico | you're lum |
10:34:06 | lum | oh |
10:34:08 | lum | works |
10:34:26 | testtestettettts | Yardanico: yes, but i am test |
10:34:42 | lum | works |
10:34:51 | Yardanico | guess I had too much 'echo "test"'s today... |
10:34:58 | testtestettettts | okay, bye |
10:35:43 | * | testtestettettts quit (Remote host closed the connection) |
10:41:12 | FromDiscord | <kaletaa> poor test |
10:41:42 | FromDiscord | <Ricky Spanish> is it possible to modify nimsymkind in nimterop to set the type of a value being converted? |
10:44:07 | FromDiscord | <aooo> In nim, is it possible to replace stdin as it's typed? Example, if I'm typing the letter A can it be automatically replaced with B? |
10:44:46 | FromDiscord | <Rika> maybe in the terminal's raw mode, but im not skilled in that |
10:44:49 | Yardanico | well, if it can be done in some other language, it can be done in nim :P |
10:45:00 | PMunch | I mean you can send a clear character and then the B character |
10:45:01 | FromDiscord | <mratsim> if you can do it in C you can, but I'm not sure you can do it in C |
10:45:20 | FromDiscord | <mratsim> but the stdin is only read once you press enter |
10:45:26 | Yardanico | ah right |
10:45:32 | Yardanico | so you need two programs |
10:45:35 | FromDiscord | <Rika> it isnt if you change terminal properties |
10:45:50 | FromDiscord | <mratsim> in custom prompt you can though (like ncurses or less or vim or fzf) |
10:45:57 | FromDiscord | <Rika> if it was only read on enter, then stuff like linenoise wouldnt work |
10:46:38 | PMunch | https://viewsourcecode.org/snaptoken/kilo/02.enteringRawMode.html < this might help you |
10:46:44 | * | TomDotTom joined #nim |
10:46:46 | FromDiscord | <aooo> How is it that some text editors can replace tab length or even replace tabs as spaces? |
10:46:57 | FromDiscord | <Rika> > maybe in the terminal's raw mode, but im not skilled in that↵i cry |
10:47:23 | * | opal quit (Ping timeout: 240 seconds) |
10:47:45 | Yardanico | @aooo are you sure that they do it right in the stdin? |
10:48:01 | Yardanico | wouldn't they just receive tabs from the stdin and then convert them to spaces? |
10:48:09 | PMunch | That is impossible, stdin is append only afaik |
10:48:23 | FromDiscord | <Rika> yall please look into the link pmunch sent |
10:48:24 | PMunch | Or rather it's a stream |
10:48:27 | FromDiscord | <Rika> yall making me cry |
10:48:43 | Yardanico | i didn't sleep for quite a long time |
10:49:30 | FromDiscord | <aooo> I think it would just be easier to remap my keyboard tab as spaces. |
10:51:49 | Yardanico | seems like HN post didn't really succeed :) we're 47 in new |
11:02:18 | * | opal joined #nim |
11:05:58 | Araq | Yardanico, we'll resubmit with the release of 1.4 |
11:06:06 | Araq | which is btw done as far as I can tell |
11:06:07 | FromDiscord | <neow> hello, can I have a quick question? how do I most cleanly check if two ref variables are the same (that is, point to the same memory address) |
11:06:21 | Araq | but I said that last week ago too |
11:06:22 | * | nature joined #nim |
11:07:05 | FromDiscord | <Rika> neow i think == does that already |
11:07:20 | Araq | ah no, this is a showstopper |
11:07:24 | Araq | https://github.com/nim-lang/Nim/issues/15560 |
11:07:26 | disbot | ➥ dbQuote additional escape regression ; snippet at 12https://play.nim-lang.org/#ix=2AMM |
11:08:32 | * | nc-x joined #nim |
11:08:39 | nc-x | there's also https://github.com/nim-lang/Nim/milestone/8 |
11:09:05 | FromDiscord | <neow> > neow i think == does that already↵@Rika well for ref Table, nope https://play.nim-lang.org/#ix=2AMN |
11:09:39 | Araq | huh? |
11:09:40 | nc-x | 1.4 is turning out to be good. if nil checking, arc/orc, and concepts get completed for 1.6 it would be great :D |
11:09:50 | Yardanico | because tables have their own comparison operator @neow |
11:10:00 | Yardanico | https://nim-lang.org/docs/tables.html#%3D%3D%2CTable%5BA%2CB%5D%2CTable%5BA%2CB%5D |
11:10:22 | Yardanico | not sure how you would compare them as refs though |
11:10:28 | Yardanico | by casting to an empty ref object? :P |
11:10:41 | Araq | cast it to 'pointer' |
11:10:48 | Yardanico | ah yah that |
11:10:57 | Araq | but I consider it a bug |
11:11:22 | Araq | probably not worth changing it now but this shouldn't have survived the 1.0 review |
11:11:43 | Araq | TableRef should have ref equality |
11:12:01 | Yardanico | https://github.com/nim-lang/Nim/commit/79891b6b9b0cb324081dbd6b558534f91ec134fe introduced ref tables and this operator ;) |
11:13:53 | Araq | yeah and this is why every successful language has these "gotchas" and "quirks", it takes decades to develop a PL and ideally different authors are involved and when we added TableRef there was no experimental: "strictFuncs" to tell us what a bad idea this really is |
11:14:44 | Araq | nc-x, I long for IC for 1.6 |
11:15:03 | Araq | nil checking is done but pending my review |
11:15:27 | Araq | concepts are yours to take over, my branch is commented well :P |
11:16:03 | nc-x | lol |
11:16:32 | * | narimiran joined #nim |
11:17:57 | FromDiscord | <neow> so, casting to ptr Table will remain the way to compare ref Table's for pointer equality? |
11:18:23 | Araq | no need for 'ptr Table', cast[pointer](mytableRef) does the job |
11:18:26 | nc-x | what is remaining for the concepts branch to be completed? |
11:19:49 | Araq | a way to infer static-T values |
11:20:11 | Araq | and maybe a way to opt-in into the old non-declarative style |
11:21:19 | Araq | of course these can be combined, if you have the latter, static-T would be covered automatically |
11:21:26 | nc-x | 👍 |
11:22:14 | Araq | oh and a way to write "type T needs to be movable, copyable, trivially destructible" |
11:22:32 | Araq | maybe we can cover this later tho |
11:22:52 | Araq | (the syntax should be obvious) |
11:27:00 | * | landerlo joined #nim |
11:27:11 | * | lritter joined #nim |
11:30:27 | FromDiscord | <neow> sent a code paste, see https://play.nim-lang.org/#ix=2AMU |
11:31:04 | FromDiscord | <neow> https://play.nim-lang.org/#ix=2AMV in case the bridge misformated it |
11:33:44 | Yardanico | https://nim-lang.github.io/Nim/manual_experimental.html#automatic-dereferencing |
11:33:55 | Yardanico | it's disabled by default |
11:35:43 | PMunch | Hmm, I really wish we had a better docopt implementation.. |
11:38:01 | FromDiscord | <neow> > it's disabled by default↵@Yardanico[IRC]#0000 why does the same code execute fine for Tables? |
11:38:17 | Yardanico | because they have .add defined for the ref type itself |
11:38:22 | Yardanico | for TableRef |
11:38:27 | Yardanico | also you shouldn't use add for tables |
11:38:31 | Yardanico | use normal [] instead |
11:38:37 | narimiran | []= |
11:38:42 | Yardanico | []========> |
11:38:47 | Yardanico | <=% |
11:38:57 | Yardanico | ^that's the compare as unsigned operator from system |
11:39:18 | Yardanico | !echo -3 <=% 1 |
11:39:20 | FromDiscord | <Rika> auto-deref only works for fields by default afaik |
11:39:21 | FromDiscord | <neow> I see, so in case it's syntactic sugar .() I need to deref myself, but if it's polymorphism for ref types, I don't |
11:39:26 | Yardanico | !eval echo -3 <=% 1 |
11:39:28 | NimBot | false |
11:40:42 | PMunch | !eval -1 <=% uint.high |
11:40:43 | NimBot | Compile failed: /usercode/in.nim(1, 4) Error: type mismatch: got <int literal(-1), uint> |
11:40:51 | Yardanico | it's for comparing two ints as unsigned :) |
11:40:53 | Yardanico | it casts them |
11:41:15 | PMunch | !eval -1'u32 <=% uint32.high |
11:41:16 | NimBot | Compile failed: /usercode/in.nim(1, 1) Error: type mismatch: got <uint32> |
11:41:33 | PMunch | !eval -1 <=% uint32.high.int |
11:41:34 | NimBot | Compile failed: /usercode/in.nim(1, 4) Error: expression '-1 <=% int(high(uint32))' is of type 'bool' and has to be discarded |
11:41:43 | PMunch | !eval echo -1 <=% uint32.high.int |
11:41:45 | NimBot | false |
11:42:18 | PMunch | Ah, wait.. |
11:42:20 | FromDiscord | <neow> !eval echo -1 <=% int.high |
11:42:20 | PMunch | Damn it |
11:42:22 | NimBot | false |
11:42:39 | PMunch | @neow, it's about twice int.high |
11:43:05 | FromDiscord | <neow> !eval $uint(int.high) |
11:43:06 | NimBot | Compile failed: /usercode/in.nim(1, 1) Error: expression '$uint(high(int))' is of type 'string' and has to be discarded |
11:43:12 | PMunch | !eval echo -1 >% int.high |
11:43:14 | NimBot | true |
11:43:21 | FromDiscord | <neow> !eval echo $uint(int.high) |
11:43:23 | NimBot | 9223372036854775807 |
11:43:32 | FromDiscord | <neow> !eval echo $uint(-1) |
11:43:33 | NimBot | Compile failed: /usercode/in.nim(1, 11) Error: -1 can't be converted to uint |
11:43:50 | FromDiscord | <neow> what |
11:44:04 | Yardanico | ?? |
11:44:04 | PMunch | -1 can't be uints :P |
11:44:08 | Yardanico | you can't convert -1 to an uint :P |
11:44:12 | Yardanico | uint() is a conversion, not casting |
11:44:19 | PMunch | !eval echo cast[uint](-1) |
11:44:21 | Yardanico | !eval echo cast[uint](-1) |
11:44:22 | NimBot | 18446744073709551615 |
11:44:23 | NimBot | 18446744073709551615 |
11:44:26 | Yardanico | :DDD |
11:44:30 | FromDiscord | <neow> !eval echo cast[uint] (-1) |
11:44:32 | NimBot | 18446744073709551615 |
11:44:34 | PMunch | Haha, nice :P |
11:44:39 | * | nc-x quit (Ping timeout: 245 seconds) |
11:49:53 | * | rockcavera joined #nim |
11:51:21 | PMunch | fg |
11:51:28 | PMunch | Woops |
11:56:04 | * | oculux joined #nim |
11:58:43 | * | oculuxe quit (Ping timeout: 260 seconds) |
11:59:18 | * | TomDotTom quit (Ping timeout: 260 seconds) |
12:03:19 | * | TomDotTom joined #nim |
12:06:02 | * | supakeen quit (Quit: WeeChat 2.9) |
12:06:38 | * | supakeen joined #nim |
12:09:45 | FromDiscord | <krisppurg> !eval echo cast[uint] (-2) |
12:09:47 | NimBot | 18446744073709551614 |
12:10:20 | PMunch | Hmm, X is weird.. |
12:10:42 | PMunch | I try to position a window on a certain monitor, but that is apparently not as straight forward as you'd think.. |
12:14:47 | * | Kiloneie quit (Quit: Leaving) |
12:22:39 | lum | !eval echo "/ban lum" |
12:22:41 | NimBot | /ban lum |
12:22:48 | FromDiscord | <Rika> lmao |
12:22:57 | FromDiscord | <Rika> not how irc works |
12:32:01 | PMunch | ffs.. |
12:32:24 | FromDiscord | <Rika> why? |
12:32:44 | PMunch | XGetGeometry tells me the window is on position 3940, but XMoveWindow to 100, 100 doesn't change it |
12:32:54 | * | clyybber joined #nim |
12:33:24 | FromDiscord | <Rika> lol |
12:33:28 | FromDiscord | <Rika> that sounds broken |
12:33:51 | PMunch | Well, my right monitor starts at 3840 |
12:34:00 | PMunch | So it's 100 pixels to the right of that |
12:34:12 | PMunch | But I can't find any way to move it to actual 0, 0 |
12:34:17 | PMunch | Or 100, 100 |
12:37:33 | PMunch | ScreenCount also returns 1 |
12:37:47 | PMunch | And getting the size of it returns the combined size.. |
12:38:18 | PMunch | And they have the same parent |
12:38:57 | FromDiscord | <Vindaar> to be honest when setting up screen resolutions with `xrandr` I'm already confused by everything. So I'm not surprised by what you're sayingf |
12:39:26 | PMunch | I never got the hate for xrandr, I rarely have any issues with it |
12:48:01 | PMunch | Ah, the "move the window in the expose event" trick works in i3, but not in nimdow.. |
12:48:35 | FromDiscord | <Vindaar> I don't hate it, I just don't think it's intuitive, haha |
12:52:05 | * | TomDotTom quit (Ping timeout: 265 seconds) |
12:53:28 | FromDiscord | <Clyybber> @Varriount Isolated[T] already exists |
12:57:36 | Prestige | PMunch: what do you mean? |
13:03:30 | * | TomDotTom joined #nim |
13:07:28 | PMunch | Prestige, not sure what part you didn't understand. But I just figured out how to do this both in i3 and nimdow |
13:07:52 | PMunch | I simply had to set override_redirect to true |
13:08:39 | Prestige | Just the "trick" part |
13:10:26 | leorize[m] | narimiran: just woke up and I heard something is wrong with nightlies? |
13:10:45 | Prestige | And yeah that should work, but if you want it managed by nimdow I think you can just configure the window |
13:11:16 | narimiran | leorize[m]: from here on: https://irclogs.nim-lang.org/15-10-2020.html#08:05:14 |
13:11:34 | PMunch | Prestige, well I don't want it managed, that's the whole idea :P |
13:11:44 | * | dv3lood joined #nim |
13:11:53 | Prestige | Perfect, then you're doing the right thing |
13:12:37 | leorize[m] | narimiran: I know what's the issue, gonna push a fix real quick |
13:12:47 | narimiran | cheers! |
13:13:25 | * | dv3lood quit (Remote host closed the connection) |
13:17:54 | leorize[m] | fix pushed |
13:18:06 | leorize[m] | hopefully windows/osx keep working or I'll be mad :P |
13:21:57 | federico3 | there was a thread on the forum regarding https://nim-lang.org/features.html months ago but nothing changed it seems |
13:23:37 | leorize[m] | I wrote a thread about the frontpage but school is taking time away from actually working on that |
13:24:41 | narimiran | Yardanico: your article finally hit HN frontpage :) |
13:24:53 | narimiran | HN's algorithm works in mysterious ways |
13:25:07 | Yardanico | lol nice |
13:25:35 | narimiran | (now go and write some answers :P) |
13:26:39 | narimiran | "Is Nim a systems programming language?" might become new bikeshedding battleground! |
13:27:01 | narimiran | if anybody wants to give their answer to that question: https://news.ycombinator.com/item?id=24787956 |
13:27:07 | FromDiscord | <Rika> oh my GOD |
13:27:10 | FromDiscord | <Rika> i was just gonna say |
13:27:16 | FromDiscord | <Rika> i'd cry if someone legitimately asked that |
13:27:19 | FromDiscord | <Rika> i gues im crying |
13:29:00 | narimiran | also, it has been x-posted to r/ProgrammingLanguages and mratsim is there answering: https://old.reddit.com/r/ProgrammingLanguages/comments/jbkual/introduction_to_arcorc_in_nim/ |
13:29:02 | * | landerlo quit (Remote host closed the connection) |
13:30:15 | FromDiscord | <whisperdev> How do I modify and save environment variable on Windows? |
13:30:19 | FromDiscord | <whisperdev> via Nim |
13:30:36 | FromDiscord | <lqdev> idk i just use `setx` via cmd |
13:31:04 | leorize[m] | you can do some registry hacks but tbh cmd is very convenient :P |
13:31:16 | FromDiscord | <flywind> `putEnv` in `os` stdlib |
13:31:35 | * | Kiloneie joined #nim |
13:32:23 | FromDiscord | <whisperdev> for some reason it looks like putEnv is not changing the setting 😦 |
13:33:04 | leorize[m] | @flywind they want to save it, and on windows you need to either use `cmd setx` or do some registry modification like `finish.nim` |
13:33:20 | * | rockcavera quit (Remote host closed the connection) |
13:33:21 | FromDiscord | <Rika> why is it that i always see only criticism of nim in these forum comments? is this just the natural programming community's behaviour? |
13:33:21 | FromDiscord | <lqdev> narimiran: https://media.discordapp.net/attachments/371759389889003532/766292630358851624/unknown.png |
13:33:26 | FromDiscord | <lqdev> just send them this image |
13:33:32 | FromDiscord | <lqdev> anyone who asks this question. |
13:33:40 | FromDiscord | <Rika> theyll ask why you consider it a systems proglang |
13:33:48 | FromDiscord | <flywind> yea, it works only in application level I guess. |
13:34:47 | leorize[m] | @Rika it's just community behavior tbh, people who like Nim will participate in Nim development, so you don't hear too much there |
13:34:50 | FromDiscord | <lqdev> HN is a joke lol |
13:35:07 | FromDiscord | <lqdev> >However, this article says that ORC, a non-deterministic and non-hard-realtime GC system, is likely to become the new default GC in the future. |
13:35:11 | FromDiscord | <lqdev> >orc |
13:35:14 | FromDiscord | <lqdev> >non-deterministic |
13:35:22 | FromDiscord | <Rika> it is nondeterministic afaik |
13:35:27 | FromDiscord | <Rika> arc is deterministic |
13:35:27 | FromDiscord | <lqdev> is it? |
13:35:44 | FromDiscord | <lqdev> idk what these HNers have against GCs |
13:35:45 | FromDiscord | <Recruit_main707> r/woooosh |
13:35:49 | FromDiscord | <lqdev> they should go back to circlejerking rust |
13:35:53 | leorize[m] | yes it is |
13:36:06 | leorize[m] | well Java imprinted that GC is evil on everyone :P |
13:36:11 | FromDiscord | <lqdev> ORC is deterministic from what i understood listening to 4raq's nimconf talk |
13:36:29 | FromDiscord | <lqdev> it's basically ARC with a cycle detector |
13:36:34 | leorize[m] | ORC is not deterministic, it requires traveling of pointers at runtime |
13:36:36 | FromDiscord | <Recruit_main707> collector* |
13:36:43 | FromDiscord | <flywind> @whisperdev https://nim-lang.org/docs/registry.html |
13:36:55 | FromDiscord | <lqdev> leorize: understood |
13:37:23 | FromDiscord | <lqdev> i guess that destroys its deterministic-ness, but really, what's all the hype for anyways |
13:37:26 | leorize[m] | I think most people just don't understand what hard-realtime is tbh |
13:37:32 | FromDiscord | <lqdev> yeeeeeeah |
13:37:51 | FromDiscord | <Ricky Spanish> i uh just dont understand why anyone wouldnt view the ability to turn on/off gc as being nothing but an advantage tbh thats my main struggle of thought...like learn 1 language and use it for either by choice and then dip into C when you wanna feel dirty win-win in my books but even when its mentioned the debates seem to ignore it and focus on arguing over specific gc's |
13:37:52 | FromDiscord | <whisperdev> hmm so putEnv does not save it? |
13:38:59 | leorize[m] | @whisperdev putEnv change the environment of your process and the processes you're launching afterwards |
13:39:12 | leorize[m] | for "saving" it you have to modify the registry because Windows |
13:39:19 | leorize[m] | well I mean same goes for Linux |
13:39:26 | FromDiscord | <Recruit_main707> @Ricky Spanish gc:none will be getting deprecated, so that argument wont be useful |
13:39:29 | leorize[m] | just that Windows have a standardized way to save those |
13:39:43 | leorize[m] | @Recruit_main707 --gc:none is alive and well |
13:39:54 | FromDiscord | <lqdev> we should stop calling --gc options GCs really |
13:40:12 | FromDiscord | <lqdev> deprecate --gc:x and rename it to --mman:x 🤔 |
13:40:13 | leorize[m] | Araq already said --gc is a misnomer |
13:40:29 | FromDiscord | <lqdev> leorize: yea i remember |
13:41:05 | FromDiscord | <Recruit_main707> leorize: that doesnt change what i said |
13:41:28 | leorize[m] | ? |
13:42:39 | FromDiscord | <Recruit_main707> we still have gc:none, but it is most likely getting deprecated |
13:43:11 | FromDiscord | <lqdev> >--gc:none is alive and well |
13:43:17 | FromDiscord | <lqdev> --gc:none has its uses dude |
13:43:25 | FromDiscord | <lqdev> it doesn't need to be deprecated |
13:43:33 | FromDiscord | <lqdev> we just need to point beginners away from it. 😉 |
13:43:51 | FromDiscord | <lqdev> slap a million warnings all over it |
13:44:01 | FromDiscord | <lqdev> oh wait. it already _has_ a million warnings all over it |
13:44:02 | FromDiscord | <lqdev> *sigh* |
13:44:40 | FromDiscord | <Recruit_main707> dont tell me, tell 4raq, i like to have the option |
13:44:50 | FromDiscord | <Recruit_main707> https://github.com/nim-lang/RFCs/issues/177#issuecomment-696113293 |
13:44:51 | disbot | ➥ Unify Nim's GC/memory management options ; snippet at 12https://play.nim-lang.org/#ix=24Ua |
13:45:19 | FromDiscord | <Recruit_main707> ? |
13:45:50 | FromDiscord | <lqdev> i wonder why Araq wants --gc:go to stay |
13:46:05 | FromDiscord | <lqdev> even though there isn't much Go interop in the wild |
13:46:25 | FromDiscord | <lqdev> feels like quite a hurdle to maintain something that isn't gonna have much use. |
13:47:02 | leorize[m] | maybe it's being used in some proprietary software that we don't know of |
13:47:13 | leorize[m] | @Recruit_main707 hmm, I stand corrected then |
13:48:20 | FromDiscord | <Recruit_main707> so am i |
13:48:28 | FromDiscord | <Recruit_main707> had a stroke there |
13:48:31 | FromDiscord | <Recruit_main707> nvm |
13:49:48 | leorize[m] | anyone wanna try converting this person lol: https://news.ycombinator.com/item?id=24788467 |
13:50:02 | PMunch | Added some missing features to the randr wrapper: https://github.com/nim-lang/x11/pull/38 |
13:50:03 | disbot | ➥ Add wrappers for xrandr monitor functions |
13:50:29 | Araq | look, if argued well, --gc:none can stay |
13:50:42 | Araq | but so far I don't understand the arguments for it |
13:51:03 | Araq | that's probably my fault, I'll look into it |
13:51:49 | FromDiscord | <Recruit_main707> we could open a forum thread to discuss it? |
13:51:55 | FromDiscord | <whisperdev> Where can I find finish.nim? |
13:51:55 | * | TomDotTom quit (Remote host closed the connection) |
13:52:19 | * | TomDotTom joined #nim |
13:52:20 | narimiran | maybe we should emphasize more that ARC can (sometimes) replace gc:none? |
13:53:38 | narimiran | leorize[m]: PMunch just did :) |
13:54:00 | leorize[m] | so reading https://github.com/nim-lang/RFCs/issues/177, I think the issue here is that vitreo don't want destructor injections? |
13:54:01 | disbot | ➥ Unify Nim's GC/memory management options ; snippet at 12https://play.nim-lang.org/#ix=24Ua |
13:54:25 | Araq | leorize[m], no he want --exceptions:setjmp which is still available |
13:54:36 | Araq | and unrelated to gc:arc |
13:54:46 | Araq | (except that we consider it the better default for arc) |
13:55:02 | leorize[m] | isn't the bunch of `if`s are part of `try-finally` generation? |
13:55:10 | leorize[m] | even with setjmp we would still see them, no? |
13:55:52 | PMunch | Araq, is ARC a perfect solution for microcontrollers? If not then I'd like gc:none to stay.. |
13:56:53 | federico3 | I hope so |
13:57:12 | FromDiscord | <Recruit_main707> lets just open a thread for people to discuss it |
13:57:30 | PMunch | If it doesn't add a single byte of overhead when no GC'ed types are used then I'm fine with it |
13:58:04 | PMunch | A --warngc option would be nice though if it is removed and you really want to avoid the gc |
13:58:29 | Araq | PMunch, I'm not aware of a byte of overhead when no GC'ed types are used |
13:58:40 | Yardanico | PMunch: nim does that since forever with gc:none :) |
13:58:44 | Araq | however --exceptions:setjmp might be better than indeed |
13:58:54 | Araq | *then |
13:59:00 | Yardanico | it warns you for every time you've used something involving a GC |
13:59:20 | * | PMunch quit (Remote host closed the connection) |
13:59:47 | * | PMunch joined #nim |
14:02:16 | Araq | narimiran, I think it's more convincing to refer naysayers to https://forum.nim-lang.org/t/6916 |
14:02:20 | narimiran | federico3: while you're here - are the initial problems with 1.4RC resolved now with the last week's RC? |
14:02:43 | Araq | narimiran, btw the devel we have right now is 1.4, last RC |
14:03:03 | disruptek | the reason to keep --gc:none is that it gives us a rebuttal to the "but gc bad" crowd. it's silly, but it's worth the cost of supporting it. |
14:03:16 | narimiran | Araq: ok |
14:03:58 | Araq | disruptek, hah, ok. I have to admit that's convincing |
14:04:16 | leorize[m] | hmm, I kinda dislike it that arm nightlies are so slow to build |
14:04:25 | * | PMunch quit (Client Quit) |
14:04:32 | disruptek | if it was hard to support, you could make a better case against it. |
14:04:46 | leorize[m] | I'll need to invent a cross-compiling stategy for those. Running the arm compiler on x86 is too slow. |
14:05:04 | disruptek | why does the speed matter? |
14:05:31 | FromDiscord | <Rika> because dev time i assume] |
14:05:47 | leorize[m] | it kinda matters when everything else finishes 2-3x faster |
14:06:07 | * | arecacea1 joined #nim |
14:06:13 | disruptek | but why is that important? |
14:06:40 | leorize[m] | because if nightlies get out faster I can test them faster |
14:06:55 | disruptek | so you're saying that you're having trouble testing arm. |
14:06:56 | leorize[m] | the only reason I'm building nightlies like this is so that the compiler see some testing done |
14:07:20 | leorize[m] | but shashlick is working on a solution to test the generated compilers, so it doesn't make sense to have nightlies as the bottleneck |
14:07:45 | disruptek | what doesn't make sense is to introduce grief about performance that doesn't matter. |
14:07:57 | disruptek | i don't care if nightly builds take 3 days as long as they complete. |
14:08:26 | narimiran | disruptek: i care. |
14:08:41 | disruptek | i hear that but i don't hear any logical reasoning. |
14:09:18 | narimiran | because when Araq says "go go go", i don't want to say "slo' bro, see you in 3 days" |
14:09:36 | leorize[m] | https://github.com/nim-lang/nightlies/actions/runs/308652046 <- lol github broke |
14:10:31 | disruptek | so you're saying that arm is so unstable that you need a faster feedback loop? |
14:12:38 | narimiran | leorize[m]: i cannot push currently. it really might be broken |
14:12:51 | leorize[m] | it's because the current process is insanely inefficient |
14:13:26 | leorize[m] | though this is a problem that can be solved either by just throwing better hardware in or I do some magic software trick |
14:14:11 | disruptek | my opinion is that you are adding constraints that don't need to exist and it's really not even clear what would constitute success: 6hrs? 2hrs? 20mins? |
14:14:34 | disruptek | but, in the immortal words of our BDFL, "i don't care." |
14:14:58 | leorize[m] | it used to be 6hrs, I made it 2hrs now |
14:16:02 | disruptek | in the business of free software, people will always work on what's important to them. |
14:16:22 | leorize[m] | I work on these when I'm bored, really :P |
14:19:32 | Zevv | yay Yardanico on HN fp \p/ |
14:20:06 | leorize[m] | Araq: can you enable GH pages for fusion? |
14:20:23 | leorize[m] | we're building the docs but if you don't enable the option in repo settings github won't publish them afaik |
14:21:27 | disruptek | good. fusion is better left a dirty secret. 😁 |
14:22:57 | FromDiscord | <lqdev> disruptek: just out of sheer curiosity, why do you think fusion is bad? |
14:24:28 | * | narimiran quit (Ping timeout: 246 seconds) |
14:25:37 | FromDiscord | <Recruit_main707> https://forum.nim-lang.org/t/6930#43398 i created a thread so that it can be discussed in-depth, i hope it doesnt fall into the void and is just ignored |
14:26:03 | disruptek | i didn't support the formal argument for the idea in the RFC and outlined reasons there. the implementation has proven to be quite a bit different, and my arguments are even stronger against it. it's basically untested software that we cannot version with the fidelity we expect from package management. basically, we're tying poorly tested and widely disused code to particular compiler releases. |
14:27:27 | FromDiscord | <Rika> your reason sounds sensible to me |
14:27:39 | disruptek | you should expect nothing less. |
14:28:46 | Araq | I don't feel like arguing it again, you read my RFC which wasn't about fusion, apply it to fusion and then complain that it doesn't follow the RFC's ideas |
14:28:56 | disruptek | i can, but so can you. |
14:29:05 | disruptek | no point in beating the dead horse. |
14:29:08 | Araq | leorize[m], how to enable it? |
14:29:28 | disruptek | i support your right to embark on experiments. i'm just not supporting this one with participation. |
14:30:25 | leorize[m] | Araq: go to repo settings and you should find "Github Pages" around the bottom |
14:30:50 | leorize[m] | just tell it to build against the `gh-pages` branch |
14:30:59 | Araq | well I don't see it |
14:31:28 | * | narimiran joined #nim |
14:31:45 | Araq | oh wait |
14:31:56 | Araq | GitHub Pages is designed to host your personal, organization, or project pages from a GitHub repository. |
14:31:56 | Araq | Your site is published at https://nim-lang.github.io/fusion/ |
14:32:04 | narimiran | oh, you didn't see my messages because of my wonky internet connections |
14:32:14 | narimiran | i enabled it in the mean time |
14:32:31 | leorize[m] | it seems to be working now |
14:32:33 | narimiran | but it says it should be at https://nim-lang.github.io/fusion/ which doesn't exist |
14:32:43 | Araq | ah good because I'm about to leave, see you later |
14:33:16 | leorize[m] | https://nim-lang.github.io/fusion/theindex.html |
14:33:26 | narimiran | woohoo |
14:33:37 | leorize[m] | because timothee PR don't rename/copy theindex -> index |
14:34:00 | narimiran | classic "i'll leave the details for somebody after me" |
14:35:01 | Araq | I think it's more like "I did 20 things at once and still delivered 50-80% of the solution" |
14:35:18 | * | leorize[m] uploaded an image: 20201015_09h34m34s_grim.png (31KiB) < https://matrix.org/_matrix/media/r0/download/envs.net/c418df92fdc9010bcea74fb87a2561d9f994e1f0/20201015_09h34m34s_grim.png > |
14:35:39 | leorize[m] | hmm this is weird, is this a change in nim's docgen? |
14:35:43 | narimiran | leorize[m]: yes, it is proc grouping |
14:36:03 | narimiran | see system's docs for a better example |
14:36:25 | narimiran | e.g. scroll to https://nim-lang.github.io/Nim/system.html#int16 and see TOC on the left |
14:36:51 | leorize[m] | it looks very weird to me but I guess I'll get used to it |
14:38:13 | leorize[m] | can't we use a simplified render like ``` `[]=`(T, I, sink S) ```? |
14:38:47 | leorize[m] | this sort of colon separated values is kinda weird |
14:39:55 | FromGitter | <ynfle> Why won't this compile? https://play.nim-lang.org/#ix=2AO2 can't `int` be converted to `R`? |
14:40:54 | narimiran | do `1.R` |
14:41:14 | narimiran | `let x = [1.R, 2, 3, 4, 5]` |
14:42:28 | FromGitter | <ynfle> Ok |
14:42:54 | * | Vladar quit (Quit: Leaving) |
14:48:37 | * | madpata_ quit (Ping timeout: 258 seconds) |
14:51:21 | FromDiscord | <Clyybber> > Yardanico: your article finally hit HN frontpage :)↵HN has a revive feature, where a post has a chance to reappear after sometime |
14:51:46 | disruptek | it's always amazing to me how few people that comment seem to have read the articles. |
14:52:11 | * | hnOsmium0001 joined #nim |
14:53:22 | disruptek | and i'm one of them. so i dunno what that should teach me, but /something/, i guess, right? |
14:55:52 | * | landerlo joined #nim |
14:55:59 | FromDiscord | <Clyybber> orc is deterministic, strictly speaking |
14:56:39 | FromDiscord | <Clyybber> as in that theres nothing random about it. The only thing that could make it seem non-deterministic is that it starts collecting cycles after a certain threshold |
14:56:55 | * | NimBot joined #nim |
14:57:26 | disruptek | well i already made my one HN comment for the year. |
14:57:49 | disruptek | someone else can correct these knuckleheads. |
14:57:53 | leorize[m] | I was going to make one about newruntime but didn't |
14:59:02 | disruptek | there's still FUD, but it's more along the lines of "why should i nim when i can rust?" |
14:59:10 | FromGitter | <ynfle> what's the easiest way to test `proc` with random array? something like np.random.randint()? Is there a `proc` that outputs an array? |
14:59:21 | FromGitter | <ynfle> s/array/seq |
14:59:51 | disruptek | i would probably make a new seq with the size i want and then map random onto it. |
15:00:58 | leorize[m] | !eval import sequtils, random; randomize(); echo newSeqWith(random(), 10) |
15:01:01 | NimBot | Compile failed: /usercode/in.nim(1, 61) Error: type mismatch: got <> |
15:01:04 | FromDiscord | <lqdev> wrt proc grouping, i don't like that non-overloaded procs are grouped anyways |
15:01:57 | leorize[m] | !eval import sequtils, random; randomize(); echo newSeqWith(10, rand(100)) |
15:02:02 | NimBot | @[100, 44, 51, 41, 67, 41, 56, 99, 54, 26] |
15:02:40 | disruptek | neat. i have never used that, ever. |
15:03:48 | disruptek | i wonder if you could make a distinct int that is always initialized to a random value, using default() or something. |
15:04:18 | leorize[m] | doesn't seem like you can override the default value yet |
15:04:26 | leorize[m] | it'd be useful for range types |
15:04:31 | disruptek | yeah. |
15:05:10 | * | Vladar joined #nim |
15:06:45 | disruptek | i'm suffering a rare treat today: |
15:06:51 | disruptek | cream in my coffee. |
15:07:07 | leorize[m] | gah, the nightly build would have been successful if GH Actions didn't just die randomly |
15:09:24 | leorize[m] | narimiran: you can restart nightlies if you want to have 1.4.0 rc built |
15:09:42 | FromDiscord | <exelotl> "renamed '=' to '=copy'" - I like this, feels consistent rather than clever :) |
15:09:42 | narimiran | leorize[m]: can i do it just for 1.4 or everything will be rebuilt? |
15:09:57 | leorize[m] | everything, sadly |
15:10:18 | narimiran | ok, then there's no better way (yet) than i was already doing |
15:10:19 | * | kenran quit (Ping timeout: 256 seconds) |
15:10:38 | leorize[m] | but whatever that doesn't change won't get a rebuild |
15:10:39 | leorize[m] | so don't worry |
15:11:10 | leorize[m] | this is one of the time I want arm builds to be faster... |
15:13:03 | disruptek | yeah, okay, twice a year. |
15:13:26 | * | luis_ joined #nim |
15:13:26 | * | xioren joined #nim |
15:14:36 | disruptek | nimph should let me diff an upgrade of a dependency. |
15:15:15 | disruptek | leorize[m]: hey, what mergetool research do i need to do? just google it? |
15:15:32 | leorize[m] | git mergetool --help :P |
15:15:43 | leorize[m] | I think Zevv also knows a thing or too if you wanna ask him |
15:15:52 | disruptek | ah, tool-help. |
15:16:00 | leorize[m] | or since you use nvim you can checkout that fugitive.vim screencast I sent |
15:16:15 | disruptek | i discarded fugitive for some reason. |
15:16:28 | leorize[m] | `:Gdiff` is the only thing I love about fugitive.vim |
15:16:42 | leorize[m] | apparently someone cloned magit to vim now |
15:16:56 | disruptek | that's the one i use. |
15:17:37 | disruptek | so your nimsuggest change will make it to 1.4. |
15:17:40 | disruptek | that's sweet. |
15:18:13 | leorize[m] | it's pretty cool but I don't use vim to this level: https://github.com/jreybert/vimagit |
15:18:57 | disruptek | i do stage individual hunks sometimes. |
15:19:22 | disruptek | i don't know how to commit it yet though. i'm so lazy about my editor. |
15:19:30 | disruptek | it's ridiculous. such a major weakness of mine. |
15:19:46 | * | tsujp quit (Ping timeout: 246 seconds) |
15:20:00 | disruptek | in my old age i really have come to understand how it happens that old people get old. |
15:20:04 | leorize[m] | you can press `?` in magit buffer and it will show you the shortcuts |
15:20:23 | disruptek | i don't even enter the magit control-flow. |
15:20:34 | disruptek | actually, there was a time i did but i gave it up. |
15:21:34 | disruptek | anyway... think about this, youngsters: there was a time when python was a very high level language and the only reasonable alternative for most systems work was C. |
15:21:52 | disruptek | of course we abandoned c in droves. |
15:22:07 | * | tsujp joined #nim |
15:22:48 | disruptek | the arrival of high level stuff was game changing in a way that may be hard to appreciate having grown up in an era of choice. |
15:24:16 | * | kenran joined #nim |
15:24:29 | disruptek | leorize[m]: actually, it looks like i'm just using gitgutter for staging. |
15:24:39 | disruptek | do you use gitgutter? |
15:24:43 | FromDiscord | <speckledlemon> Magit really is amazing, even coming from the usual CLI |
15:25:09 | leorize[m] | I use gitgutter for the fancy indicators |
15:25:49 | disruptek | yeah, i had turned off vimagit for some reason while messing with nim.nvim. |
15:26:31 | leorize[m] | oh and now with `:NimReferences` working properly I may add the "mass rename" feature to nim.nvim |
15:26:44 | disruptek | hah, that would be amazing. |
15:28:37 | disruptek | just changing permissions in git clones into .vim/bundle has been a perfectly effective package management strategy for me. |
15:29:06 | * | kenran quit (Ping timeout: 272 seconds) |
15:30:14 | * | madpata joined #nim |
15:34:49 | * | vicfred joined #nim |
15:39:52 | * | letto quit (Ping timeout: 272 seconds) |
15:53:45 | FromDiscord | <nikki> commit in magit is 'cc' from the status page |
15:53:48 | FromDiscord | <nikki> magit-vim |
15:54:00 | FromDiscord | <nikki> do you stage with eg. 's'? |
15:54:51 | FromDiscord | <nikki> ohhhh jk i use fugitive lolol. which actually has a status page that's v similar to the emacs magit that i used for a while |
15:58:18 | nikki93 | hmm i should maybe try nim.nvim. i kept trying nvim and going back to vim8 for various little reasons |
15:58:32 | nikki93 | using nimlsp through coc.nvim on vim8 now |
15:58:50 | Prestige | I use nim.nvim and coc.nvim with neovim |
15:58:57 | Prestige | (with nimlsp) |
15:59:06 | * | arecacea1 quit (Remote host closed the connection) |
15:59:20 | * | luis_ quit (Remote host closed the connection) |
15:59:32 | * | arecacea1 joined #nim |
15:59:38 | nikki93 | huh word. do your completions come from nim.nvim or nimlsp-coc.nvim? |
15:59:41 | leorize[m] | I do know that nim.nvim work well enough that it pulled Zevv over to the dark side and never return :) |
15:59:44 | leorize[m] | but I'm the author so I'm biased |
16:00:56 | nikki93 | leorize[m]: yeah i might try again xD |
16:01:13 | Prestige | nikki93: everything through coc.nvim, I just use nim.nvim for syntax highlighting |
16:01:41 | Prestige | I need the error reporting :P |
16:01:48 | nikki93 | ah i see. that should be equivalent to what i'm getting then. |
16:02:03 | nikki93 | huh does nim.nvim on its own not do error reports |
16:02:14 | leorize[m] | not yet |
16:02:20 | nikki93 | coc is nice cuz it works really well for many of the other langs i use (typescript, c++, ...) |
16:02:21 | nikki93 | ah word |
16:02:42 | Prestige | nikki93: same, I use coc for everything |
16:02:44 | leorize[m] | there are like several ways to do error reporting and every plugin just invent their own |
16:02:52 | leorize[m] | not a big fan, which is why I don't have it in yet |
16:03:05 | nikki93 | yeah i think i agree for a lang-specific plugin |
16:03:26 | nikki93 | i think with coc it actually works out bc. i set manage to set common bindings and looks across all langs which is nice |
16:03:29 | Prestige | leorize[m]: I think that's why lsp is so big now, and with nvim's built in lsp it will be even more true |
16:03:52 | nikki93 | i ran into one thing which i'm curious whether it happens in both nim.nvim and nimlsp -- if i define a proc within a proc, it actually doesn't autocomplete it in that local scope |
16:04:13 | leorize[m] | once PMunch got semantic highlighting + actually got nimlsp to be bundled with nim, I'll gladly switch to it |
16:04:26 | leorize[m] | Prestige: the problem I'm referring to is within neovim ecosystem |
16:04:43 | Prestige | ah I see what you mean |
16:05:01 | leorize[m] | you have the quickfix list, and now you have this "virtual text" annotation thingy |
16:05:23 | nikki93 | yeahhh. when i was trying builtin lsp it was using that latter thing |
16:05:24 | Prestige | I think coc does both |
16:05:51 | leorize[m] | and then signs and key bindings, etc. |
16:06:02 | leorize[m] | there isn't a central api to hook in within neovim itself |
16:08:49 | * | letto joined #nim |
16:10:15 | * | rockcavera joined #nim |
16:12:55 | disruptek | virtual text seems to work well. i use it for reading commit messages for a given line. |
16:15:14 | disruptek | did 1.0.10 release? 'cause a bunch of stuff is failing suddenly. |
16:18:27 | disruptek | ah, yep. 10 vs. "10". |
16:20:22 | disruptek | /home/runner/work/criterion/criterion/criterion/tests/test1.nim(14, 24) Error: internal error: expr: param not init input_19410020 |
16:20:25 | disruptek | 387 |
16:20:26 | * | luis_ joined #nim |
16:21:00 | disruptek | i dunno how, but criterion fails even though it's in important packages. |
16:21:19 | FromDiscord | <Clyybber> on devel? |
16:21:27 | FromDiscord | <Clyybber> try --useVersion:1.2 please |
16:21:44 | disruptek | why would i do that? |
16:21:51 | FromDiscord | <Clyybber> I wonna know |
16:21:59 | disruptek | it's last night's ci on devel. |
16:22:03 | FromDiscord | <Clyybber> if it works |
16:22:05 | narimiran | @clyybber does that exist with 1.0.x? |
16:22:06 | FromDiscord | <Clyybber> ah |
16:22:11 | FromDiscord | <Clyybber> nope |
16:22:12 | disruptek | i will test it locally in a sec. |
16:22:41 | narimiran | disruptek: i've pushed nimble fix for that, maybe a similar fix is needed somewhere else? |
16:22:48 | narimiran | disruptek: or you need a newer nimble? |
16:22:56 | disruptek | no, it's fine now. |
16:23:03 | disruptek | you pushed it after my ci ran, i think. |
16:23:25 | disruptek | criterion is a separate issue. |
16:29:12 | kinkinkijkin | I can't seem to use async sockets for unix sockets |
16:29:39 | kinkinkijkin | specifying AF_UNIX returns protocol not supported, though i am not on windows |
16:29:52 | * | madpata quit (Ping timeout: 256 seconds) |
16:30:57 | FromDiscord | <aooo> When should I use a const rather than let? If both const and let more or less do the same thing, why ever use const if let works more? |
16:31:14 | disruptek | const is at compile-time while let is at runtime. |
16:32:02 | FromDiscord | <aooo> You got an example of when compile time would be better than at runtime? |
16:32:14 | disruptek | kinkinkijkin: did you look at my swayipc? |
16:32:27 | disruptek | !repo jason |
16:32:28 | disbot | https://github.com/disruptek/jason -- 9jason: 11JSON done right 🤦 15 30⭐ 1🍴 |
16:32:32 | FromDiscord | <lqdev> @aooo when your data is not determined during your program's runtime, but rather directly in your code, use const. |
16:32:52 | FromDiscord | <lqdev> const is useful for things like lookup tables |
16:32:55 | FromDiscord | <lqdev> which never change |
16:33:04 | FromDiscord | <Rika> runtime will add time to your program run, compile time will do that much less |
16:33:14 | kinkinkijkin | disruptek i did but not deeply |
16:33:19 | kinkinkijkin | can you relink it to me? |
16:33:23 | disruptek | !repo swayipc |
16:33:24 | disbot | https://github.com/disruptek/swayipc -- 9swayipc: 11swayipc (i3ipc) for Nim 15 5⭐ 0🍴 |
16:33:36 | kinkinkijkin | thanks |
16:33:38 | FromDiscord | <aooo> So using let far more than const will result in a bigger and slower binary? |
16:33:59 | disruptek | kinkinkijkin: the error message you see reminds me of the one i got while writing swayipc; there is some subtlety there that my code may clear up. |
16:34:11 | FromDiscord | <lqdev> @aooo not really |
16:34:27 | FromDiscord | <lqdev> the C compiler is smart enough to optimize compile-time literals away |
16:34:35 | FromDiscord | <lqdev> so that they're stored in the executable |
16:34:57 | FromDiscord | <lqdev> you use `let` when the content of the variable is determined at runtime |
16:35:04 | FromDiscord | <lqdev> so eg. with `readLineFromStdin()` |
16:35:24 | FromDiscord | <lqdev> or when you're doing some stuff in a proc argument |
16:35:28 | FromDiscord | <lqdev> (edit) 'in' => 'on' |
16:35:54 | FromDiscord | <lqdev> it's kinda hard to explain |
16:36:04 | disruptek | it's a legibility thing, too. |
16:36:15 | disruptek | const expresses a semantic that other programmers recognize. |
16:36:44 | FromDiscord | <aooo> What would be an example of something that would require compile time rather than runtime? |
16:37:00 | FromDiscord | <lqdev> really, not much stuff *requires* compile time eval |
16:37:02 | FromDiscord | <lqdev> it's an optimization |
16:37:09 | FromDiscord | <lqdev> and as disruptek said, legibility improvement |
16:37:22 | disruptek | introspection is largely compile-time in nim. |
16:37:42 | disruptek | any kind of meta-programming is pretty much entirely compile-time domain. |
16:38:06 | disruptek | i mean, sure, you /can do it/ and we do, obviously, in the compiler. |
16:38:24 | FromDiscord | <lqdev> yea but they were asking for what would require `const` i think |
16:38:43 | disruptek | i mean, i read "compile time rather than runtime". |
16:38:43 | leorize[m] | you can ask @mratsim :P |
16:39:07 | disruptek | yeah, the better question is when you should use let over const. |
16:39:14 | disruptek | much more interesting. |
16:39:20 | FromDiscord | <aooo> My question now is should I default to let or const? |
16:39:30 | disruptek | default to const for anything compile-time. |
16:39:46 | FromDiscord | <lqdev> there is no default |
16:40:13 | disruptek | eh i don't agree; i'd say you should default to const when it's available. |
16:40:22 | FromDiscord | <lqdev> whatever you put into a const ends up in the resulting binary, so you cannot modify it afterwards |
16:40:32 | disruptek | const:let square:rectangle |
16:40:37 | FromDiscord | <lqdev> and it cannot use things determined at runtime, eg. user input |
16:40:40 | leorize[m] | semantic wise, do you ever modify `let` variables? :P |
16:41:04 | disruptek | no, but they can have different qualities than mere mutability. |
16:41:21 | kinkinkijkin | yeah disruptek this isn't helping much |
16:41:24 | disruptek | consider a ref let, for example. |
16:41:33 | disruptek | kinkinkijkin: can you show us some code? |
16:41:34 | disruptek | ~paste |
16:41:35 | disbot | paste: 11a frowned-upon behavior in chat; please use a service such as https://play.nim-lang.org/ or http://ix.io/ or https://gist.github.com/ and supply us a URL instead. -- disruptek |
16:41:37 | leorize[m] | my biggest usage of const was to construct a lookup table at compile time |
16:41:59 | FromDiscord | <aooo> If I had the choice between let or const, and I had to pick one, should I prefer to use const or let if either compile time or runtime will work? I think that's where I'm confused. |
16:42:07 | FromDiscord | <lqdev> const. |
16:42:10 | kinkinkijkin | OH WAIT error changed |
16:42:24 | kinkinkijkin | now it's connection refused, time to figure that one out |
16:42:41 | disruptek | now you're cookin' with grease. |
16:42:52 | disruptek | aooo: again, prefer const. |
16:42:57 | FromDiscord | <nikki> @aooo i vote for const also |
16:43:49 | FromDiscord | <nikki> one other reason is that if the computation fails, it'll fail at compile time vs. at runtime |
16:44:03 | FromDiscord | <aooo> Thank you. I'll use const by default and let if gives me an error try let. |
16:44:57 | FromDiscord | <nikki> cool 🙂 it does depend on the error -- like if the error isn't because your usecase actually requires runtime initialization, it may be that you should still use const but fix the error elsehow |
16:45:14 | disruptek | narimiran: with 1.4 release, we are no longer backporting to 1.2, correct? |
16:45:30 | disruptek | and by `we`, i mean `you`. 😁 |
16:46:01 | FromDiscord | <lqdev> disruptek: i'm starting to promote nimph in my readmes btw |
16:46:09 | disruptek | any problems? |
16:46:13 | FromDiscord | <lqdev> not yet |
16:46:18 | disruptek | weird. |
16:46:27 | disruptek | maybe it's not actually running. |
16:46:32 | FromDiscord | <lqdev> mainly because i haven't really used it too much. didn't need to install any packages lately |
16:46:53 | disruptek | yeah, it helps that it's an app you only run when you need something from it. |
16:46:55 | narimiran | disruptek: probably not quite true |
16:47:02 | disruptek | narimiran: whatfer status reasons? |
16:47:07 | narimiran | ideally we don't, but in practice.... |
16:47:20 | narimiran | disruptek: yes, status-dependent |
16:47:25 | disruptek | okay. |
16:47:32 | disruptek | just curious whatfer gitnim reasons. |
16:53:14 | FromDiscord | <Clyybber> disruptek: Did --useVersion:1.2 work? |
16:54:49 | * | TomDotTom quit (Ping timeout: 264 seconds) |
16:54:54 | disruptek | holdon, i'm busy breaking gitnim because i'm dumb. |
16:57:31 | FromDiscord | <Clyybber> nice |
16:58:41 | disruptek | turns out that gitnim doesn't understand the difference between 10 and "10". |
16:59:25 | FromDiscord | <Clyybber> lol, those who did not sin shall throw stones |
16:59:50 | disruptek | did i say gitnim? i meant /nimble/ |
17:00:20 | disruptek | 1.0.10, 1.2.8, 1.3.7, and 1.4.0 are released: |
17:00:23 | disruptek | ~gitnim |
17:00:24 | disbot | gitnim: 11https://gitnim.com/ -- choosenim for choosey nimions -- disruptek |
17:00:40 | FromDiscord | <Clyybber> and why did you not receive mirans fix? |
17:00:56 | disruptek | i just got it after my ci ran. |
17:01:19 | FromDiscord | <Clyybber> ah |
17:01:34 | FromDiscord | <Clyybber> wait, gitnim is a seperate binary right? |
17:01:49 | FromDiscord | <Clyybber> the website says to run `git nim` |
17:02:01 | FromDiscord | <Clyybber> note the space |
17:02:06 | FromDiscord | <Clyybber> mind the gap |
17:02:06 | disruptek | yeah, the guy that wrote it is really good looking. |
17:02:15 | FromDiscord | <Clyybber> he minds the gap |
17:02:24 | disruptek | he's got magic hands. |
17:02:38 | FromDiscord | <Clyybber> and throbbing [redacted] |
17:02:56 | disruptek | you never saw gitnim? |
17:03:04 | FromDiscord | <Clyybber> I never used it |
17:03:08 | disruptek | lol |
17:03:15 | disruptek | really? |
17:03:18 | FromDiscord | <Clyybber> yeah |
17:03:36 | disruptek | funny. i really dunno why i do this shit. |
17:04:04 | FromDiscord | <Clyybber> I mean, I never used choosenim either |
17:04:12 | FromDiscord | <Clyybber> so I'm probably not the target audience |
17:04:25 | disruptek | trust me, it improves your life. |
17:05:02 | FromDiscord | <Clyybber> more versions never improve my life |
17:05:21 | FromDiscord | <Clyybber> I'm happy to live in devel land |
17:05:28 | FromDiscord | <brainproxy> sent a code paste, see https://play.nim-lang.org/#ix=2AOJ |
17:05:39 | FromDiscord | <brainproxy> (edit) 'https://play.nim-lang.org/#ix=2AOJ' => 'https://play.nim-lang.org/#ix=2AOL' |
17:06:46 | FromGitter | <sealmove> hey, is it possible to define a proc that accepts any (an arbitary type of) enum? |
17:06:57 | disruptek | use `enum` as a typeclass. |
17:07:08 | FromGitter | <sealmove> great |
17:07:14 | FromDiscord | <brainproxy> sent a code paste, see https://play.nim-lang.org/#ix=2AOM |
17:07:16 | * | letto quit (Ping timeout: 272 seconds) |
17:08:34 | FromDiscord | <Clyybber> hmm, probably the ar used in Github Actions doesn't support providing the args in a file |
17:09:22 | FromDiscord | <Clyybber> but we have github actions CI for mac |
17:09:31 | FromDiscord | <Clyybber> So I'm not sure whats wrong |
17:09:57 | FromGitter | <sealmove> and how do I get the underlying int of an enum? I mean if it has holes you can't do ord(myEnum). |
17:09:59 | FromDiscord | <Clyybber> disruptek, leorize, narimiran and shashlick are the CI wizards |
17:10:26 | disruptek | i don't even know what you're talking about. maybe discord dropped a message. |
17:10:50 | FromDiscord | <Clyybber> it probably pasted it into play.nim-lang |
17:10:58 | disruptek | aha. |
17:11:03 | disruptek | yeah, i ignore those. |
17:11:09 | FromGitter | <sealmove> oh, `ord` works, that's surprising |
17:11:11 | narimiran | @Clyybber i'm not in the same league with them |
17:11:11 | FromDiscord | <Clyybber> sealmove: Huh? ord works with holy enums |
17:11:36 | FromGitter | <sealmove> since holy enums are not ordinals i didn't expect it >< |
17:11:42 | disruptek | i use leorize's ci with minor hacks. i can't be bothered to learn it myself. |
17:11:56 | FromDiscord | <Clyybber> sealmove: ord existsto convert *to* an ordinal |
17:11:59 | disruptek | it's not really hard to hack, honestly. |
17:12:35 | leorize[m] | @brainproxy the file is used as a way to bypass windows small argument limit |
17:12:56 | disruptek | noone should ever need more than 64-bits for a JSON integer. |
17:13:08 | leorize[m] | it's supported by binutils, not sure what you're using there |
17:13:14 | disruptek | noone should ever need more than 640kb of memory. |
17:13:35 | FromDiscord | <Clyybber> disruptek: So is that a typo on the site? |
17:13:36 | FromDiscord | <brainproxy> ah! leorize is it possible that the logic that checks number of arguments is faulty and it's doing that even if it's not Windows? |
17:13:40 | disruptek | noone should ever need command-line arguments in excess of 2048 characters. |
17:13:50 | FromDiscord | <brainproxy> @Clyybber I've had good luck with GHA on macOS for the most part |
17:13:57 | FromDiscord | <brainproxy> I think leorize is onto something |
17:13:58 | disruptek | clyybber: what site? |
17:14:04 | FromDiscord | <Clyybber> gitnim.com |
17:14:09 | disruptek | no. |
17:14:18 | FromDiscord | <Clyybber> so git supports tasks? |
17:14:24 | disruptek | yes. |
17:14:28 | FromDiscord | <Clyybber> damn |
17:14:34 | leorize[m] | disruptek: turns out you need that for big projects |
17:14:37 | FromDiscord | <Clyybber> why are we building package managers again? |
17:14:44 | disruptek | i don't know. |
17:14:52 | disruptek | leorize[m]: /s |
17:14:55 | leorize[m] | @Clyybber I wager that git do it even better than nimble ever will |
17:15:00 | disruptek | obviously. |
17:15:12 | FromDiscord | <lqdev> 1.4 is not ready |
17:15:16 | FromDiscord | <lqdev> concepts seem to be broken |
17:15:19 | leorize[m] | rust also follows that with cargo btw |
17:15:23 | disruptek | git's underlying structure is very elegant. |
17:15:41 | disruptek | it's a good place to store data of the sort we have. |
17:15:45 | Prestige | how are they broken? |
17:15:52 | FromDiscord | <Clyybber> @lqdev doubt |
17:15:57 | leorize[m] | @brainproxy that feature should be cross-platform for the most part |
17:16:03 | disruptek | they've been this way for a long time afaict. |
17:16:05 | FromDiscord | <brainproxy> well clearly it's not |
17:16:09 | FromDiscord | <Clyybber> if its not a regression then its ready |
17:16:11 | FromDiscord | <lqdev> @Clyybber http://ix.io/2AOQ |
17:16:12 | FromDiscord | <brainproxy> bsd `ar` refuses to do it |
17:16:16 | FromDiscord | <lqdev> this compiled in 1.2.6 |
17:16:23 | FromDiscord | <lqdev> but not on devel |
17:16:29 | FromDiscord | <lqdev> (latest nightly) |
17:16:51 | FromDiscord | <lqdev> git hash 4ef255b69d00d66e4554bad72fab1780578792f5 |
17:17:02 | leorize[m] | @brainproxy why do you use that abomination again... what's your gh action setup? |
17:17:05 | FromDiscord | <lqdev> too bad i can't make a small example |
17:17:15 | FromDiscord | <lqdev> because concepts are absolute pain to debug |
17:17:24 | FromDiscord | <brainproxy> > why do you use that abomination↵which one specifically? |
17:17:27 | FromDiscord | <Clyybber> Hmm |
17:17:32 | FromDiscord | <brainproxy> lots abominations in play |
17:17:38 | FromDiscord | <brainproxy> (edit) 'lots ... abominations' => 'lotsof' |
17:17:51 | disruptek | it's some kinda var issue but i can't think of anything that changed. |
17:18:08 | FromDiscord | <Clyybber> disruptek: Call off your disbot |
17:18:09 | disruptek | i think araq did want to change this, though. |
17:18:14 | FromDiscord | <Clyybber> he tagged me in <#707912794246217758> lol |
17:18:18 | disruptek | what? |
17:18:33 | FromDiscord | <Clyybber> he pinged me in the <#707912794246217758> discord channel |
17:18:40 | FromDiscord | <Clyybber> because lqdev pinged me |
17:18:46 | FromDiscord | <Clyybber> he forwarded it somehow |
17:18:52 | disruptek | i dunno what that number means. |
17:18:52 | leorize[m] | @brainproxy can i see the code? |
17:19:00 | disruptek | nim-news, i guess. |
17:19:05 | FromDiscord | <Clyybber> @lqdev How big is the current repro? |
17:19:10 | FromDiscord | <Clyybber> disruptek: Yeah |
17:19:16 | FromDiscord | <Clyybber> but why am I nim-news |
17:19:43 | FromDiscord | <lqdev> about 400 lines, but should be relatively easy to distill as most code is irrelevant |
17:19:47 | leorize[m] | it's a "feature" |
17:19:54 | * | luis_ quit (Quit: luis_) |
17:19:59 | FromDiscord | <lqdev> https://github.com/liquid600pgm/rapid/blob/42dba70a2d97c0ecd5632de039e74df17775524c/src/rapid/game/tilemap.nim |
17:20:11 | FromDiscord | <Clyybber> 400 lines is fine |
17:20:16 | FromDiscord | <Clyybber> if you can get it down more thats great |
17:20:38 | * | narimiran quit (Ping timeout: 256 seconds) |
17:21:06 | FromDiscord | <Clyybber> more important is that its self contained |
17:21:13 | FromDiscord | <Avatarfighter> Disruptek this is what he means https://media.discordapp.net/attachments/371759389889003532/766349974283485234/image0.png |
17:21:15 | * | ehmry quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
17:21:43 | * | luis_ joined #nim |
17:21:57 | FromDiscord | <brainproxy> leorize: this link *should* take you to the line where GHA failed:↵https://github.com/status-im/nim-status/runs/1260263121?check_suite_focus=true#step:10:689↵below that line is some `|| true` stuff and `echo`s I added to try to figure out what's happening |
17:22:11 | FromDiscord | <Clyybber> @lqdev Maybe its related to a regression I've encountered too after https://github.com/nim-lang/Nim/pull/15211 |
17:22:11 | disbot | ➥ fix some issues overloading with generics and inheritance |
17:22:23 | FromDiscord | <Clyybber> Can you try with that change reverted? |
17:22:53 | * | ehmry joined #nim |
17:23:22 | * | TomDotTom joined #nim |
17:23:49 | FromGitter | <ynfle> > Compiled test files return the number of failed test as exit code ⏎ ⏎ What does this line from `unittest`? Is just ⏎ ⏎ ```nim c tests/t.nim ⏎ tests/t ⏎ echo $?``` [https://gitter.im/nim-lang/Nim?at=5f8885a5eb82301c1a2a3d21] |
17:24:03 | * | lritter quit (Quit: Leaving) |
17:24:48 | FromDiscord | <lqdev> disruptek: does gitnim support building from a specific commit? |
17:24:52 | FromDiscord | <nikki> @Clyybber i may also just live in devel land haha. weirdly mostly so that my nimlsp will just take me to stdlib in a repo .... |
17:24:56 | FromDiscord | <Clyybber> ynfile: The docs have been updated, it returns 1 on failure, not the amount of failed tests |
17:24:58 | FromDiscord | <brainproxy> https://github.com/nim-lang/Nim/blob/51e3e0c7c43e82932d9bbae2e6ccc876d29b9fab/compiler/extccomp.nim#L918-L923↵looks like even if it's not Windows environment, if the length exceeds 32_000 then it will use the `linkerArgs.txt` approach |
17:24:59 | FromDiscord | <lqdev> i wanna free myself from choosenim's headaches with the stdlib. |
17:25:07 | FromDiscord | <Clyybber> @nikki heh, nice |
17:25:58 | FromGitter | <ynfle> Thanks @Clyybber. I assume it'll be updated with the release of 1.4? Also, is there a way to get the number of failed test other `fail()`ing manually |
17:26:03 | leorize[m] | @brainproxy so osx ar doesn't support that stuff? |
17:26:09 | FromDiscord | <nikki> @Clyybber is https://github.com/nim-lang/Nim#compiling the best instructions to look at? |
17:26:09 | FromDiscord | <brainproxy> it does not |
17:26:12 | FromDiscord | <Clyybber> ynfile: Hmm, sorry I don't know |
17:26:23 | FromDiscord | <Clyybber> But yeah it should be updated with 1.4 |
17:26:25 | FromDiscord | <brainproxy> loerize, I mean apparently it does not |
17:26:32 | FromDiscord | <Clyybber> the devel docs already are updated |
17:26:34 | leorize[m] | I'm looking at status build system and I'm scared lol |
17:26:43 | leorize[m] | https://github.com/status-im/nim-status/runs/1260263121?check_suite_focus=true#step:9:91 |
17:26:45 | FromDiscord | <nikki> @lqdev what are the problems you're having with choosenim and the stdlib, outta curiosity? |
17:26:47 | leorize[m] | yep doesn't seem to support |
17:26:48 | FromDiscord | <Clyybber> @nikki yeah |
17:26:54 | FromDiscord | <nikki> @Clyybber do u use nimble at all or nah |
17:26:55 | FromDiscord | <Clyybber> I do ./koch boot -d:danger |
17:27:04 | FromDiscord | <Clyybber> @nikki not much, for testing stuff |
17:27:13 | leorize[m] | @brainproxy: --app:staticlib is kinda under utilized so we never caught all the issues |
17:27:13 | FromDiscord | <Clyybber> for my own repos I prefer submodules |
17:27:14 | FromDiscord | <lqdev> @nikki doesn't work very well when you build nim from the git repo |
17:27:30 | FromDiscord | <brainproxy> loerize, scared by the nimbus-build-system thing? is that what you were referring to? |
17:27:31 | FromDiscord | <nikki> @lqdev like with `devel --latest` or `#head`? |
17:27:33 | FromDiscord | <Clyybber> mainly because those allow me to let people build my stuff without being forced into a pk |
17:27:38 | FromDiscord | <Clyybber> (edit) 'pk' => 'pm' |
17:27:52 | FromDiscord | <lqdev> @nikki no, when building from nim's git repo. |
17:27:59 | FromDiscord | <lqdev> like, when you clone and bootstrap it. |
17:28:11 | FromDiscord | <nikki> @lqdev huh i see. so then you're not using choosenim right? or is there some mix of the two |
17:28:25 | FromDiscord | <nikki> @Clyybber i see. i may end up doing git submodules tbh bc. i kind of like the clarity they provide |
17:28:25 | FromDiscord | <lqdev> hm maybe it's not a problem with choosenim |
17:28:34 | FromDiscord | <lqdev> but with testament |
17:28:45 | disruptek | lqdev: gitnim is just a git repo with a tool that helps you fetch/list/checkout different nim branches. |
17:28:48 | FromDiscord | <Clyybber> yeah submodules are great |
17:28:54 | FromDiscord | <nikki> i do submodules / vendoring in c++ and other things and it's just so much clearer when the files are just there and you can just go to them |
17:29:03 | FromDiscord | <Clyybber> yeah, same |
17:29:16 | FromDiscord | <Clyybber> (edit) 'yeah, same' => 'yeah' |
17:29:21 | FromDiscord | <nikki> i can see how if you make a ton of small projects for cli tools or something a package mgr could be nice? idk |
17:29:44 | leorize[m] | @brainproxy just not a fan of your make-based build system |
17:30:11 | FromDiscord | <brainproxy> yeah, I don't love it either 🤷♂️ |
17:30:13 | disruptek | another idea behind gitnim is that it puts the source to gitnim adjacent to the compiler, so development of the tooling is concident with compiler development. |
17:30:36 | leorize[m] | but anyway, it appears that Nim only support binutils ar :/ |
17:30:36 | leorize[m] | maybe if you switch to llvm-ar it will work |
17:30:46 | FromDiscord | <haxscramper> It is not possible to get original documentation string when using `jsondoc`, correct? The only possible way would be to either re-parse proc definition manually (using `line` and `col` fields) or to parse `description` field, correct? |
17:31:07 | leorize[m] | jsondoc gives you the original docstring iirc |
17:31:39 | FromDiscord | <nikki> @Clyybber the one way in which choosenim has been nice is i have 3 platforms i frequent to dev on (mac, win, lin) to make sure my stuff works on everything; and maybe it's easier to install / manage nim just using choosenim vs. dealing with the build setup on each platform |
17:31:52 | FromDiscord | <nikki> but, maybe the effort is worth it for the control / clarity |
17:32:21 | FromDiscord | <haxscramper> leorize: no, I get `Documentation string for proc <tt class=\"docutils literal\"><span class=\"pre\">test</span></tt>` , `` ## Documentation string for proc `test` ``, which could be parsed back relatively easily, but I just want to make sure I haven't missed anything. |
17:32:27 | FromDiscord | <nikki> i think it's especially more true given nim's dev'y status (vs. if it were a more mature / stable thing that does releases every year or sth) |
17:32:30 | FromDiscord | <Clyybber> Yeah, I only have 1 main machine |
17:32:44 | FromDiscord | <lqdev> @Clyybber hm, i'm unable to make a smaller reproducible case |
17:32:52 | FromDiscord | <Clyybber> Is it one file? |
17:32:59 | FromDiscord | <lqdev> i think so |
17:33:10 | FromDiscord | <haxscramper> `s/I get <>/ I get <> from/` |
17:33:16 | FromDiscord | <dom96> lqdev: what problems are you having? |
17:33:23 | FromDiscord | <dom96> with choosenim? |
17:33:53 | FromDiscord | <brainproxy> leorize, just checked and the command in GHA is 33671 characters while on my laptop it's 30010, because of differences in the absolute paths |
17:34:08 | FromDiscord | <Clyybber> @lqdev Then its fine, no imports and incudes? |
17:34:10 | FromDiscord | <brainproxy> anyway, I guess I'll file an issue on the Nim repo |
17:34:36 | FromDiscord | <lqdev> @Clyybber there are a couple of imports for some small modules + std/tables |
17:34:43 | FromDiscord | <nikki> do you guys suggest mostly working against devel and not stable? if you're just learning the language and want to do gamedev'y things |
17:34:43 | FromDiscord | <lqdev> and nim-glm |
17:34:58 | FromDiscord | <Clyybber> hmm, might be nice to get rid of them |
17:35:03 | FromDiscord | <Clyybber> if possible |
17:35:06 | leorize[m] | lol |
17:35:18 | FromDiscord | <Clyybber> @nikki stable is fine, I'm on devel because I work on the compiler sometimes |
17:35:34 | FromDiscord | <nikki> i see. the main thing that inspired me to try devel was hearing that arc has more bugfixes on it |
17:35:34 | FromDiscord | <dom96> now that Nim is past the 1.0 release, stable should be more than fine |
17:35:56 | FromDiscord | <Clyybber> @nikki oh, yeah for arc devel is the way to go |
17:36:07 | FromDiscord | <Clyybber> but with the release of 1.4 stable should be fine too |
17:36:19 | FromDiscord | <nikki> yeah makes sense. are we close to 1.4 or far 😮 |
17:36:33 | FromDiscord | <Clyybber> it was planned to release today afaik ;P |
17:36:46 | FromDiscord | <nikki> the main usecase for arc for me was gonna see how it perfs vs. regular gc on ->C->wasm target |
17:37:06 | leorize[m] | @brainproxy an easy fix would be to write an `ar` wrapper that takes a `@file` argument and translates it into `normal arguments`. You can use xargs for that |
17:37:08 | * | luis_ quit (Remote host closed the connection) |
17:37:12 | leorize[m] | eventually we will want that fixed over on nim side |
17:37:33 | FromDiscord | <brainproxy> and just give it higher precedence on the path? |
17:37:52 | leorize[m] | yea |
17:37:53 | leorize[m] | or if you have llvm-ar just use that |
17:41:01 | FromDiscord | <nikki> interesting so i was having this bug yday where nimlsp wasn't working for 'goto def' within the stdlib. like if i follow goto def to the definition of `=>` then goto def of `nnkLambda` from there -- and it turns out it fails when using choosenim devel, but works fine when using choosenim stable |
17:41:14 | FromDiscord | <nikki> i did a workaround by giving nimlsp an explicit path to my own checkout of devel |
17:41:24 | FromDiscord | <nikki> i may just stick with stable for now |
17:41:39 | leorize | oh I should ping PMunch to handle the recent changes |
17:42:29 | nikki93 | leorize: oh nice you're here :o yeah it's the issue we were discussing on yday |
17:42:55 | FromGitter | <sealmove> Is there a common way to see if an ident (a NimNode) matches a string? |
17:43:06 | leorize[m] | I did a fix for nimsuggest recently to travel to the implementation of a symbol |
17:43:33 | Prestige | leorize: thanks for that, btw |
17:43:34 | FromDiscord | <lqdev> @Clyybber managed to get it down to 252 lines http://ix.io/2AP2 |
17:43:47 | FromDiscord | <lqdev> 258* |
17:43:56 | leorize[m] | yea but nimlsp will need a fix or that will be a bit finicky |
17:44:44 | FromGitter | <sealmove> ah there is `eqIdent` nice |
17:45:36 | * | mipri joined #nim |
17:48:03 | nikki93 | leorize: do you think that sounds related to why goto defs within my own files would work but -> stdlib -> from there would fail (i was basically mostly testing the => --> nnkLambda case) |
17:49:17 | leorize[m] | not sure, I haven't actually looked at nimlsp architecture |
17:49:34 | leorize[m] | so can you tell me how you do your goto defs? |
17:49:55 | leorize[m] | I can try to see if I can reproduce it with nimsuggest |
17:51:59 | nikki93 | hmm yeah. i wonder if i can find how to make nimlsp just log its nimsuggest requests or something so i can give you a proper log |
17:52:07 | nikki93 | but; speaking in terms of just UX actions i'm taking... |
17:53:46 | nikki93 | i have a simple file where i do `import sugar` then later use the `=>` macro to define a lambda. now if i do 'goto def' on the `=>`, i get to the definition of that macro fine. in the implementation of it, it mentions things like `nnkLambda`. if i cursor over to one of those and do another goto def, that ends up not doing anything (when i have `choosenim devel --latest`. if i have `choosenim stable` the last step works) |
17:54:49 | leorize[m] | can I have this example file? |
17:55:16 | nikki93 | yeah one sec |
17:56:18 | nikki93 | https://gist.github.com/nikki93/3571568c1abcaa7942936872b14c97b6#file-scratch-nim-L94 <-- i highlighted the line in question. literally learning nim from the basics right now haha and this is my file to mess around in. i think a minimal repro may just need that paragraph. |
17:57:15 | nikki93 | oh another thing (orthogonal to this ^ issue) is -- does nimsuggest only work after you `nim c` the file once or something? i think it's failed for me unless i've done that at least once but it may just be a nimlsp thing. |
17:58:03 | Prestige | nimlsp requires a file change and save iirc |
17:58:16 | Prestige | Maybe just a file write |
17:59:17 | nikki93 | Prestige: you mean just once at the beginning to have a file work from then on with in-mem changes too? or do you always have to save to pick up new decls in the file |
17:59:47 | Prestige | In only checks on file write |
18:00:18 | leorize[m] | seems to work here https://asciinema.org/a/H48YVd9M3LyYZJom8x8wExt4p |
18:00:19 | FromDiscord | <nikki> oh i'm talking about autocompletion. checks yeah i noticed it's file write only and i'm actually fine with that (otherwise gets spammy lol) |
18:01:23 | nikki93 | leorize: the goto => definitely works in both cases. i'm talking about then moving your cursor down to eg. `nnkLambda` or something in the implementation of => after the first jump, and jumping to the def of that |
18:02:09 | nikki93 | in that long description above i had two jumps. first one works fine. second one doesn't in devel, does in stable. |
18:03:02 | nikki93 | basically the usecase i care about is being able to navigate the stdlib code using lsp once i get there -- for discovery / learning |
18:03:16 | leorize[m] | you mean this? https://asciinema.org/a/58E1k2bTxbfnoU21rIBh39g63 |
18:03:59 | nikki93 | yep! cool. and that's on nimsuggest in devel? if that's the case then yeah i think it may be a nimlsp issue. |
18:04:22 | * | luis_ joined #nim |
18:04:22 | leorize[m] | yea it's probably nimlsp |
18:04:35 | nikki93 | thanks for trying and recording! |
18:05:16 | leorize[m] | np :) it's quick to record these |
18:05:55 | leorize[m] | some neovim shilling if you haven't seen it yet: https://asciinema.org/a/276278 |
18:06:46 | * | luis_ quit (Remote host closed the connection) |
18:07:22 | nikki93 | nice :o the main thing here being integrated debugger experience? |
18:07:25 | * | luis_ joined #nim |
18:07:46 | nikki93 | i've used vimspector for that most recently in c++-land with somewhat good but intermittently lacking success |
18:08:01 | leorize[m] | yea I made it when I found out about termdebug |
18:08:09 | leorize[m] | there are probably better plugins |
18:08:33 | FromDiscord | <nikki> nice |
18:08:37 | * | mipri left #nim (#nim) |
18:08:59 | leorize[m] | fun fact: termdebug was actually vim invention |
18:09:41 | leorize[m] | though iirc it only works well on gvim |
18:09:43 | leorize[m] | not sure how does that work nowadays |
18:11:22 | disruptek | clyybber: cannot reproduce on 1.4.0 release. |
18:11:46 | disruptek | hash cac0e017256175f79641a3473061aecc45d582d0 |
18:12:06 | disruptek | i guess i'll rerun ci. |
18:13:38 | nikki93 | leorize[m]: another thing i was wondering was (again not sure if this is a nimlsp or nimsuggest thing) is -- if i have a line eg `let s = "hello, world"` and then i cursor to the `s` and do the 'hover' action it doesn't tell me the type of `s` |
18:13:51 | * | Ven`` joined #nim |
18:13:51 | nikki93 | in lsps for other languages it usually does that, which is really helpful in langs with type inference |
18:14:13 | nikki93 | if i mention `s` after the initial declaration, it does actually tell me the type when i do the hover action on that later mention |
18:14:50 | voidpi | weird question, is the nim runtime somewhat like the jvm? |
18:15:11 | leorize | nikki93: it's a nimsuggest thing |
18:15:16 | leorize | voidpi: not even close |
18:15:36 | voidpi | leorize: because it only takes care of gc? |
18:15:59 | nikki93 | voidpi: there is no bytecode interpretation of your stuff happening at runtime. if you use some backend that does that, you are on a VM for that backend though (eg. if you do Nim -> JS then run on a JS VM) |
18:16:18 | nikki93 | i think that's a big difference |
18:16:29 | leorize | nikki93: nimsuggest process the symbol before it's fully finalized, so at the point where your cursor sits the compiler has not finalized the symbol yet |
18:16:33 | * | cyraxjoe quit (Write error: Connection reset by peer) |
18:16:34 | * | nisstyre quit (Write error: Connection reset by peer) |
18:16:36 | leorize | so you get no info |
18:16:39 | voidpi | nikki93: yeah, that's a big one |
18:16:52 | voidpi | thanks |
18:17:02 | leorize | if you reference this symbol later on, then the compiler can provide you some detailed information :P |
18:17:11 | leorize | it's a weird quirk |
18:17:19 | nikki93 | leorize: oh i see. would put in a small request for if we could get that to work for the first symbol :D |
18:17:33 | * | nisstyre joined #nim |
18:17:46 | leorize[m] | Araq knows how to do it |
18:17:52 | * | cyraxjoe joined #nim |
18:18:02 | nikki93 | there's a lot of cases where i write like `let result = someWeirdStuff.someWeirdFunc(...)` and it'd be nice to immediately find out what the type of result is. not a huge deal tho bc. i can do the hover action on `someWeirdFunc` and find out |
18:18:05 | leorize[m] | in fact there are like several hooking points used by nimfind and nimsuggest |
18:19:01 | nikki93 | in general this is stuff works really well though. good job folks :) |
18:19:24 | nikki93 | like it's impressive, given the amt of breakage and manual setup other 'more mature' langs have in tooling |
18:20:30 | leorize | hmm is matrix.org bridge go weird again... |
18:20:52 | leorize | yes, yes it does, my last few messages didn't reach here |
18:21:14 | nikki93 | o noes |
18:21:23 | leorize | nothing too important :P |
18:21:25 | nikki93 | i guess i should get on nim matrix too |
18:21:30 | leorize | ~matrix |
18:21:31 | disbot | matrix: 11Nim channels on Matrix can be found at +nim:asra.gr (https://matrix.to/#/+nim:asra.gr) -- leorize |
18:22:19 | leorize | nikki93: 4raq was ahead of the time, nimsuggest was a language server before that's even a thing :P |
18:22:39 | * | letto joined #nim |
18:22:55 | FromDiscord | <dom96> welllll |
18:23:04 | FromDiscord | <dom96> nimsuggest wasn't even a server for a long time |
18:23:21 | FromDiscord | <dom96> I might have had something to do with that approach 😄 |
18:23:46 | leorize | I still don't know who puts EPC into nimsuggest |
18:23:55 | * | nikki93[m] joined #nim |
18:24:01 | nikki93[m] | ohai |
18:25:06 | * | gmaggior joined #nim |
18:25:21 | leorize[m] | o/ |
18:25:23 | leorize[m] | looks like matrix is working again? |
18:25:23 | leorize[m] | oh wait or is this homeserver not federating with matrix.org... |
18:28:32 | FromGitter | <sealmove> how can I traverse a NimNode tree and prefix every identfier with something? |
18:28:39 | FromGitter | <sealmove> There are no mutable procs |
18:32:20 | leorize[m] | NimNodes are ref object |
18:32:21 | leorize[m] | why do you need mutable procs? |
18:33:10 | FromGitter | <sealmove> hmm, so I can modify them without having vars? |
18:33:25 | leorize[m] | yes |
18:34:05 | FromDiscord | <Teodor> sent a long message, see http://ix.io/2API |
18:35:38 | FromGitter | <sealmove> but what if for example I want to replace some nnkIdent with an nnkDotExpr? |
18:36:26 | leorize[m] | then you need to replace the reference itself |
18:36:44 | leorize[m] | note that NimNode's `sons` is a simple `seq[NimNode]` so you can use a mutating iterator on them |
18:36:54 | FromDiscord | <Recruit_main707> @Teodor might want to create a thread in the forum, this wil scroll up very quickly |
18:37:26 | FromGitter | <sealmove> got it, thx |
18:38:42 | FromDiscord | <Recruit_main707> what would be some good tests to benchmark different gcs performance? |
18:39:39 | leorize[m] | 4raq's favorite is `thavlak` (you can find it in Nim's source) |
18:41:01 | * | TomDotTom quit (Ping timeout: 264 seconds) |
18:43:24 | FromDiscord | <haxscramper> > @Teodor might want to create a thread in the forum, this wil scroll up very quickly↵Or maybe ping someone and post in announcements. Telegram chat has a lot of people too which don't usually read discord (from my understanding) so worth posting there too (I suppose) |
18:43:45 | FromGitter | <sealmove> leorize: my problem is that nim complains with "x can't be assigned to" because the parameter is not annotated with `var`. I have to dereference it or something? |
18:44:29 | leorize[m] | @sealmove code please? |
18:45:04 | FromDiscord | <Recruit_main707> can you do `sleep(1)` in nimscript? or something similar |
18:45:24 | FromGitter | <sealmove> https://play.nim-lang.org/#ix=2APO |
18:47:28 | FromDiscord | <Avatarfighter> Congrats to the future Nimgineer that'll be working with Status 😄 |
18:48:12 | leorize[m] | @sealmove can you add your mutable logic in? |
18:50:28 | * | luis_ quit (Quit: luis_) |
18:53:08 | * | luis_ joined #nim |
18:57:13 | disruptek | sealmove: if you mean you can't c = lookup...() it's because the loopvar is immutable. |
18:57:21 | FromDiscord | <Teodor> > Or maybe ping someone and post in announcements. Telegram chat has a lot of people too which don't usually read discord (from my understanding) so worth posting there too (I suppose)↵@haxscramper @Recruit_main707 - Cheers for the tip guys, will do both |
19:00:56 | FromDiscord | <Teodor> Hey @Yardanico - would you be OK with sharing our role in the announcements channel? Status.im and Nimbus team would kill to have someone from this community joining forces. |
19:01:26 | * | TomDotTom joined #nim |
19:01:33 | * | FromDiscord quit (Remote host closed the connection) |
19:01:47 | * | FromDiscord joined #nim |
19:04:52 | FromGitter | <sealmove> leorize: for example replacing `result` with `expr` obviously doesn't work https://play.nim-lang.org/#ix=2AQ4 |
19:05:30 | * | Ven`` quit (Quit: Textual IRC Client: www.textualapp.com) |
19:06:16 | * | Ven`` joined #nim |
19:07:52 | * | grorkster joined #nim |
19:08:01 | * | Ven`` quit (Client Quit) |
19:10:14 | FromDiscord | <brainproxy> sent a code paste, see https://play.nim-lang.org/#ix=2AQ8 |
19:14:16 | * | avass joined #nim |
19:14:49 | disruptek | clyybber: cannot repro locally with --useVersion:1.2 on 1.4.0, either. |
19:14:58 | disruptek | (the tests take awhile to run) |
19:15:18 | * | Ven`` joined #nim |
19:15:21 | * | FromDiscord quit (Remote host closed the connection) |
19:15:36 | * | FromDiscord joined #nim |
19:24:00 | FromDiscord | <Clyybber> disruptek: cannot repro as in it works? |
19:24:07 | disruptek | yeah, just not in ci. |
19:24:59 | disruptek | hmm, ci is getting a43202ea57f49a3b49927f114669335a7d40dbb2 |
19:25:00 | FromDiscord | <Clyybber> it doesn't work in the CI with --useVersion:1.2? |
19:25:31 | disruptek | oh i'm dumb. |
19:26:58 | disruptek | the ci is using head. |
19:34:56 | * | bung quit (Ping timeout: 256 seconds) |
19:40:06 | disruptek | and criterion isn't in important packages anyway. |
19:41:09 | * | bung joined #nim |
19:44:43 | avass | hey! just checking if this is the place to talk about choosenim issues. since I found out that there's no nice non-interactive way of installing choosenim with the curl|sh helper script, so I created a pull request to try to resolve that: https://github.com/dom96/choosenim/pull/230 |
19:44:44 | disbot | ➥ Allow non-interactive install with helper script |
19:45:36 | avass | I saw that someone else had already raised an issue about it :) |
19:45:59 | * | bung quit (Ping timeout: 260 seconds) |
19:49:51 | * | bung joined #nim |
19:51:18 | * | rockcavera quit (Ping timeout: 272 seconds) |
19:51:43 | FromDiscord | <Avatarfighter> @dom96 ^ |
19:52:37 | * | luis_ quit (Quit: luis_) |
19:54:31 | * | bung quit (Ping timeout: 260 seconds) |
19:57:49 | * | TomDotTom quit (Ping timeout: 264 seconds) |
19:57:57 | * | bung joined #nim |
20:02:27 | * | bung quit (Ping timeout: 260 seconds) |
20:03:26 | * | bung joined #nim |
20:11:23 | FromDiscord | <lqdev> `/home/daknus/Coding/Nim/rapid/src/rapid/physics/chipmunk.nim(734, 1) Error: cannot bind another '=copy' to: Arbiter; previous declaration was constructed here implicitly: /home/daknus/Coding/Nim/rapid/src/rapid/physics/chipmunk.nim(389, 25)` |
20:11:31 | FromDiscord | <lqdev> sent a code paste, see https://play.nim-lang.org/#ix=2AQn |
20:11:42 | FromDiscord | <lqdev> uh, how does that happen? |
20:11:46 | * | bung quit (Ping timeout: 258 seconds) |
20:11:51 | FromDiscord | <lqdev> i *have* overriden `=` to error out btw |
20:12:00 | FromDiscord | <lqdev> but i don't see the copy? |
20:12:04 | * | bung joined #nim |
20:13:52 | disruptek | i don't get it. |
20:14:17 | FromDiscord | <lqdev> i also don't get it. |
20:14:37 | disruptek | why do you set the callback value at all? |
20:14:37 | FromDiscord | <lqdev> i have the non-copyable type `Arbiter` |
20:14:46 | FromDiscord | <lqdev> C wrapper |
20:15:25 | FromDiscord | <treeform> Zevv, "typography together with sdl", I think there is an SDL example. https://github.com/treeform/typography/blob/master/tests/sdlexample.nim |
20:15:32 | FromDiscord | <treeform> there are like 4 different ways of doing it |
20:15:45 | disruptek | oh, i see. it's just to make it wrap. |
20:15:46 | FromDiscord | <lqdev> disruptek: this `wrap` template works in other places, just fails here for some reason |
20:16:14 | disruptek | it's not a ufcs problem? |
20:16:14 | * | Lord_Nightmare quit (Quit: ZNC - http://znc.in) |
20:16:19 | FromDiscord | <lqdev> nope |
20:16:32 | FromDiscord | <lqdev> tried with `wrap(rawArbiter)` and even `Arbiter(raw: rawArbiter)` |
20:16:44 | disruptek | looks totally fine to me. |
20:16:52 | FromDiscord | <lqdev> yeah same |
20:17:00 | FromDiscord | <lqdev> then why does it not work |
20:18:11 | * | Kiloneie_ joined #nim |
20:18:25 | FromDiscord | <lqdev> how is there a copy involved |
20:18:35 | FromDiscord | <lqdev> creating a temp variable and `move`ing it also doesn't work |
20:20:00 | disruptek | wrap works in other places? |
20:20:24 | disruptek | like, other code that precedes this? |
20:20:45 | FromDiscord | <lqdev> yeah totally |
20:20:52 | disruptek | hmm. |
20:20:54 | FromDiscord | <lqdev> the only thing i see different is the order of parameters in `iterate` |
20:21:04 | * | bung quit (Ping timeout: 272 seconds) |
20:21:12 | FromDiscord | <lqdev> trying to make a minimal example now |
20:21:34 | * | Kiloneie quit (Ping timeout: 260 seconds) |
20:22:37 | disruptek | what's the =copy message point to? |
20:22:45 | disruptek | the error message, that is. |
20:23:28 | disruptek | van morrison can kiss my ass. |
20:23:46 | * | Lord_Nightmare joined #nim |
20:24:54 | * | bung joined #nim |
20:24:57 | FromDiscord | <lqdev> the error itself points to my copy hook: proc `=`*(dest: var Arbiter, source: Arbiter) {.error.} |
20:25:05 | FromDiscord | <lqdev> the error message points to the line where i call the callback |
20:26:52 | Zevv | treeform yeah, I figured it out, I wanted to do without flippy if not needed |
20:27:07 | Zevv | but I must admit I fell back to sdl_ttf |
20:27:57 | * | madpata joined #nim |
20:28:38 | leorize[m]1 | I've played with vimagit a bit, this thing is insane |
20:28:39 | leorize[m]1 | I can stage changes within the same file in different parts \o/ awesome for commit history |
20:29:52 | FromDiscord | <lqdev> guess i could disable my error copy hook for the time being |
20:29:56 | * | bung quit (Ping timeout: 272 seconds) |
20:29:58 | * | Ven`` quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
20:30:06 | FromDiscord | <lqdev> but this copy is quite strange |
20:30:21 | FromDiscord | <lqdev> (it also happens on devel, i already checked) |
20:30:26 | * | narimiran joined #nim |
20:30:55 | * | bung joined #nim |
20:33:00 | FromDiscord | <lqdev> hm wait |
20:33:08 | FromDiscord | <lqdev> so somehow nim infers a `=` |
20:33:13 | FromDiscord | <lqdev> even though i override it |
20:33:19 | FromDiscord | <lqdev> guess i should move my declaration upward? |
20:33:44 | FromDiscord | <lqdev> oh shit i think this may be it |
20:33:53 | FromDiscord | <lqdev> because the other usages are below my copy hook |
20:35:16 | FromDiscord | <lqdev> yeah i moved it upward and it works now |
20:35:19 | FromDiscord | <lqdev> how confusing. |
20:36:01 | FromDiscord | <Elegant Beef> Hey i properly minified my const issue https://play.nim-lang.org/#ix=2AQy |
20:37:08 | FromDiscord | <Elegant Beef> And the the const placement changes it https://play.nim-lang.org/#ix=2AQA |
20:38:37 | avass | leorize[m]1: ooh that looks nice |
20:43:09 | * | bung quit (Ping timeout: 260 seconds) |
20:43:36 | FromDiscord | <Elegant Beef> the `static(scriptedTable)` causes the issue in the above example... |
20:45:12 | * | bung joined #nim |
20:56:37 | * | bung quit (Ping timeout: 264 seconds) |
20:57:43 | * | bung joined #nim |
21:07:25 | * | bung quit (Ping timeout: 240 seconds) |
21:09:45 | * | narimiran quit (Ping timeout: 240 seconds) |
21:11:29 | FromDiscord | <treeform> Zevv, yeah flippy is a hard dependency. |
21:12:15 | * | bung joined #nim |
21:20:29 | * | bung quit (Ping timeout: 260 seconds) |
21:22:02 | * | Vladar quit (Quit: Leaving) |
21:26:20 | * | bung joined #nim |
21:33:49 | * | solitudesf quit (Ping timeout: 264 seconds) |
21:39:09 | * | bung quit (Ping timeout: 260 seconds) |
21:39:25 | * | bung joined #nim |
21:39:43 | * | clyybber quit (Quit: WeeChat 2.9) |
21:41:39 | * | rockcavera joined #nim |
21:44:04 | * | ofelas quit (Ping timeout: 246 seconds) |
21:46:09 | * | bung quit (Ping timeout: 260 seconds) |
21:47:54 | * | madpata quit (Ping timeout: 260 seconds) |
21:49:49 | FromDiscord | <shashlick> @dom96 - working on posting choosenim builds on the main branch to github |
21:50:16 | FromDiscord | <dom96> awesome! |
21:51:00 | FromDiscord | <shashlick> https://github.com/genotrance/choosenim/compare/29639171faee...3173ba74daab |
21:51:13 | FromDiscord | <shashlick> it works - just tweaked it a bit more to get a cleaner result |
21:51:59 | FromDiscord | <shashlick> will work per usual when we tag, when we don't and merge a PR, it will create a tag with build date embedded |
21:53:00 | * | bung joined #nim |
21:57:49 | * | bung quit (Ping timeout: 260 seconds) |
21:58:10 | * | bung joined #nim |
22:03:04 | * | bung quit (Ping timeout: 260 seconds) |
22:04:24 | leorize[m] | @shashlick I'm getting a weird error when compiling nim-kmod tests |
22:05:10 | leorize[m] | Error: unhandled exception: getters.nim(136, 14) `name[0] != '_' and name[^1] != '_'` Identifier 'kmod_config_iter_next:_Bool' (nskType) contains leading/trailing underscores '_' which Nim does not allow. Use toast flag '--prefix or --suffix' or 'cPlugin()' to modify. [AssertionDefect] [AssertionDefect] |
22:05:40 | leorize[m] | This is the symbol in question: `bool kmod_config_iter_next(struct kmod_config_iter *iter);` |
22:05:44 | leorize[m] | there's no `_Bool` |
22:05:47 | * | bung joined #nim |
22:05:52 | leorize[m] | or do I have to update my nimterop? |
22:07:50 | FromDiscord | <shashlick> what version are you on |
22:08:25 | leorize[m] | 0.6.13 |
22:08:31 | leorize[m] | I'm using nimble in localdeps mode |
22:09:00 | FromDiscord | <shashlick> bool is defined as _Bool |
22:09:12 | FromDiscord | <shashlick> in stdbool.h |
22:09:38 | leorize | shouldn't nimterop understand that? |
22:10:07 | FromDiscord | <shashlick> it understands Bool, not _Bool |
22:10:22 | leorize | lol |
22:10:26 | FromDiscord | <shashlick> 😄 |
22:10:38 | * | bung quit (Ping timeout: 272 seconds) |
22:11:09 | leorize[m] | awaiting 0.6.14 so that I can continue my development :P |
22:11:16 | FromDiscord | <shashlick> just add `flags = "-E_"` for now |
22:12:07 | * | vicfred quit (Quit: Leaving) |
22:12:35 | * | landerlo quit (Ping timeout: 245 seconds) |
22:13:36 | disruptek | this poor OrdSet PR. |
22:13:40 | * | bung joined #nim |
22:14:01 | FromDiscord | <shashlick> ya, not a simple fix - nimterop does the Bool => bool mapping after the symbol checking |
22:14:32 | * | abm joined #nim |
22:18:14 | * | bung quit (Ping timeout: 260 seconds) |
22:20:51 | * | vicfred joined #nim |
22:23:52 | * | bung joined #nim |
22:25:03 | * | MightyJoe joined #nim |
22:27:35 | * | cyraxjoe quit (Ping timeout: 260 seconds) |
22:28:10 | * | bung quit (Ping timeout: 246 seconds) |
22:31:35 | FromDiscord | <dom96> @shashlick ping me when we've got a macOS binary I can test |
22:34:34 | * | bung joined #nim |
22:35:15 | FromDiscord | <tinygiant> sent a code paste, see https://play.nim-lang.org/#ix=2ARc |
22:36:15 | FromDiscord | <Elegant Beef> Put foo at the end of try, and bar outside the `try except`? |
22:37:00 | FromDiscord | <tinygiant> I don't foo to run unless the code in try doesn't raise an exception. |
22:37:32 | FromDiscord | <Elegant Beef> If it's at the end of try it wouldnt be ran afaik |
22:37:47 | FromDiscord | <Elegant Beef> you can put bar inside a `finally` block |
22:38:03 | FromDiscord | <Elegant Beef> https://play.nim-lang.org/#ix=2ARe |
22:38:30 | FromDiscord | <tinygiant> So if the exception happens at the beginning of try, it immediately goes to except, otherwise all runs foo. Ok, I think I understand that. Thanks. |
22:38:39 | * | FromGitter quit (Ping timeout: 260 seconds) |
22:38:59 | FromDiscord | <tinygiant> (edit) 'all' => 'it' |
22:39:01 | * | oprypin quit (Ping timeout: 246 seconds) |
22:39:32 | FromDiscord | <tinygiant> And thanks for the example. |
22:40:07 | * | oprypin joined #nim |
22:40:28 | FromDiscord | <Elegant Beef> No clue if you're around pmunch, but it's progressing(following your idea of using json for transfering objects for now)! https://media.discordapp.net/attachments/371759389889003532/766430315676827679/unknown.png |
22:41:28 | * | FromGitter joined #nim |
22:46:03 | * | Kiloneie_ quit (Read error: Connection reset by peer) |
22:46:25 | * | bung quit (Ping timeout: 264 seconds) |
22:47:51 | * | bung joined #nim |
22:53:48 | FromDiscord | <nikki> do you guys have any guidelines / heuristics on when you tend to do `foo arg` vs. `foo(arg)` |
22:54:02 | FromDiscord | <nikki> or does it just boil down to gut / do you stick with only one of them everywhere |
22:54:15 | FromDiscord | <nikki> (edit) 'guys' => 'folks' |
22:55:52 | disruptek | i use `foo arg` if i'm passing one argument or it's unambiguous and if i want to emphasize the nature of the operation, like `inc foo`. |
22:56:45 | * | bung quit (Ping timeout: 240 seconds) |
22:58:03 | disruptek | arg.foo for property-like queries which are scoped to the arg. but i prefer `getOrDefault(tab, key, val)` when i'm trying to communicate the operation first and the arguments are secondary. |
22:59:49 | * | bung joined #nim |
23:00:01 | disruptek | i'm fairly sure i'm overthinking it, but i don't really see the problem with people having their own style. |
23:04:36 | * | bung quit (Ping timeout: 256 seconds) |
23:06:59 | * | Guest94576 joined #nim |
23:08:09 | * | Guest94576 quit (Client Quit) |
23:08:10 | * | bung joined #nim |
23:14:37 | * | bung quit (Ping timeout: 258 seconds) |
23:17:41 | * | nature quit (Ping timeout: 258 seconds) |
23:18:31 | * | disruptek is now known as op |
23:18:41 | * | op is now known as disruptek |
23:18:45 | * | disruptek is now known as asd |
23:19:20 | FromDiscord | <Yardanico> Guess you learn something new every day:↵proc tata(a, b: int) = echo a + b↵tata(5): 3 |
23:19:34 | FromDiscord | <Yardanico> https://www.reddit.com/r/nim/comments/iubgaz/basic_function_calling_syntax_question/ |
23:19:50 | FromDiscord | <Yardanico> i mean I understand why it works, but it's still surprising |
23:20:03 | asd | what's cool is that you can chain a series of statements. |
23:20:07 | * | asd is now known as disruptek |
23:20:33 | disruptek | echo tata 5: let x = 3 * 2; x + 4 |
23:21:26 | FromDiscord | <Yardanico> proc tata(a, b: int) = echo a + b↵tata(): 3↵do: 5 |
23:22:30 | FromDiscord | <Yardanico> @disruptek parens needed |
23:22:56 | FromDiscord | <Yardanico> Ah actually no |
23:22:59 | FromDiscord | <Yardanico> It still wouldn't work |
23:23:38 | disruptek | we use it in cps for, like, return (continuation.fn = x; continuation) |
23:24:08 | disruptek | actually i don't even know if cps generates this form anymore. |
23:24:44 | FromDiscord | <Yardanico> time to update my wiki page about obscure Nim features or just interesting code |
23:24:54 | FromDiscord | <exelotl> how's cps been going anyways? |
23:25:15 | disruptek | it's not really obscure. it's in the docs and it follows from the most basic assumptions about statements and expressions. |
23:26:13 | disruptek | cps is pending a bugfix that is going into 1.4 (and not before) because it breaks existing code elsewhere. proc args are sym'd for typed macros. |
23:26:39 | disruptek | it has a couple other blockers after that (which might just be one bug) involving symbol substitution. |
23:27:30 | disruptek | then i'm hoping we can release a version that uses typed input. it will clear up the major obstacles to natural use of cps and it will probably be the first release worth using in production code. |
23:28:17 | disruptek | we'll have one or two event queue implementations and some examples that show how to make iterators, exceptions, gotos, and so on. |
23:28:27 | disruptek | also need a demonstration of threading. |
23:28:54 | FromDiscord | <exelotl> Ahh, sounds really promising |
23:29:16 | disruptek | yeah, i think it'll be a pretty nice extension. |
23:29:34 | disruptek | fast, lightweight, and sympathetic to arc. |
23:29:59 | disruptek | and extremely flexible in ways that existing async or threading options just aren't. |
23:31:04 | disruptek | i fully expect that people make some really awesome libs with it. |
23:31:44 | disruptek | what i mean is, i'll be disappointed if people don't use it. |
23:31:59 | disruptek | more disappointed than i am with the lack of use of my other crap. 😁 |
23:49:34 | * | a_chou joined #nim |
23:51:25 | * | TomDotTom joined #nim |
23:58:56 | * | rockcavera quit (Ping timeout: 272 seconds) |