| 00:11:31 | disruptek | but nimdeps makes my elbows itch. | 
| 00:18:55 | * | macsek1911[m] quit (*.net *.split) | 
| 00:18:55 | * | Asbrn[m] quit (*.net *.split) | 
| 00:18:55 | * | nc-x[m] quit (*.net *.split) | 
| 00:18:56 | * | Manny8888 quit (*.net *.split) | 
| 00:18:56 | * | leorize[m] quit (*.net *.split) | 
| 00:18:56 | * | LyndsySimon quit (*.net *.split) | 
| 00:18:56 | * | surma quit (*.net *.split) | 
| 00:19:40 | * | leorize[m] joined #nim | 
| 00:19:41 | * | Manny8888 joined #nim | 
| 00:20:23 | * | macsek1911[m] joined #nim | 
| 00:20:25 | * | Asbrn[m] joined #nim | 
| 00:20:25 | * | nc-x[m] joined #nim | 
| 00:22:02 | * | GordonBGood quit (Ping timeout: 240 seconds) | 
| 00:23:12 | * | GordonBGood joined #nim | 
| 00:24:41 | * | LyndsySimon joined #nim | 
| 00:24:41 | * | surma joined #nim | 
| 00:47:48 | * | krux02_ joined #nim | 
| 00:50:28 | * | krux02 quit (Ping timeout: 264 seconds) | 
| 00:55:48 | * | nextloop joined #nim | 
| 01:24:06 | skrylar[m] | alright. there's a couple headers left out because of tweaks, but https://git.sr.ht/~skrylar/sknGLIB is almost a thing. gonna boop off for the night tho | 
| 01:52:33 | FromDiscord | <treeform> dom96, I had code to load resource files. | 
| 01:52:44 | FromDiscord | <treeform> dom96, I am glad you like my iOS docs. | 
| 01:53:09 | FromDiscord | <treeform> I found that `macosx` makes `ios` build not work. | 
| 01:55:15 | FromDiscord | <treeform> dom96, you can get the root of your iOS bundle with this code: `NSString* filePath = [NSBundle mainBundle].resourcePath;` | 
| 01:55:20 | FromDiscord | <treeform> See more here: https://github.com/treeform/glfm/search?q=glfmBundleDir&unscoped_q=glfmBundleDir | 
| 01:57:04 | FromDiscord | <treeform> This repo has more instructions: https://github.com/treeform/glfm | 
| 01:57:46 | FromDiscord | <treeform> SSL on iOS has to be statically linked ... i have not tried ... but I feel it will be a major pain. | 
| 02:12:27 | * | Guest89904 joined #nim | 
| 02:14:57 | * | krux02_ quit (Remote host closed the connection) | 
| 02:25:14 | * | Romanson joined #nim | 
| 02:55:26 | * | rockcavera quit (Remote host closed the connection) | 
| 03:50:59 | * | Hideki_ joined #nim | 
| 03:54:47 | stefantalpalaru | HN is for filthy casuals fishing for VC money. The real tech talk is on Reddit: https://old.reddit.com/r/nim/comments/dpdsh7/nim_is_the_friendliest_language_to_start/ ;-) | 
| 03:55:31 | * | Hideki_ quit (Ping timeout: 268 seconds) | 
| 04:04:45 | * | ponyrider joined #nim | 
| 04:20:02 | * | Guest89904 quit (Ping timeout: 240 seconds) | 
| 04:47:59 | * | nsf joined #nim | 
| 04:51:57 | * | cyraxjoe joined #nim | 
| 04:59:39 | * | chemist69_ quit (Ping timeout: 250 seconds) | 
| 05:01:19 | * | cyraxjoe quit (Quit: I'm out!) | 
| 05:01:30 | * | cyraxjoe joined #nim | 
| 05:01:45 | * | chemist69 joined #nim | 
| 05:18:05 | * | ponyrider quit (Quit: WeeChat 2.6) | 
| 05:18:37 | * | ponyrider joined #nim | 
| 05:19:21 | FromDiscord | <Winton> HI | 
| 05:39:25 | * | narimiran joined #nim | 
| 05:46:13 | FromDiscord | <Rika> hello | 
| 05:52:03 | * | cyraxjoe quit (Ping timeout: 240 seconds) | 
| 05:53:15 | * | ponyrider quit (Quit: WeeChat 2.6) | 
| 05:53:40 | * | ponyrider joined #nim | 
| 05:58:31 | FromDiscord | <Winton> how are you | 
| 05:58:48 | FromDiscord | <Winton> I am new to this programming language and I think it's great | 
| 05:59:16 | * | cyraxjoe joined #nim | 
| 05:59:33 | FromDiscord | <Rika> well im just here trying to figure out how the master branch is supposed to work | 
| 06:00:32 | FromDiscord | <Rika> also i think no one is here because its night time for those in americas or evening in europe | 
| 06:01:12 | narimiran | @Rika what master branch? | 
| 06:01:36 | FromDiscord | <Winton> Exactly I am from the Dominican Republic, I really knew this language today and the only thing that is theory is that since I read quite according to the opinions it is a good language to program almost everything | 
| 06:03:10 | FromDiscord | <Rika> narimiran, master branches in general | 
| 06:03:34 | FromDiscord | <Rika> do i commit directly to it? is it always supposed to be by PR? etc etc | 
| 06:03:43 | FromDiscord | <Rika> still figuring out git in general basically | 
| 06:04:12 | narimiran | ah, ok. i thought you were talking about nim-lang/Nim's master branch, which is deprecated and not used. nim's "main branch" is called `devel` | 
| 06:04:26 | FromDiscord | <Rika> oh really? why? | 
| 06:04:51 | narimiran | why is deprecated or why is devel our main thing? | 
| 06:05:27 | FromDiscord | <Rika> both, i guess? i thought they'd have similar reasons | 
| 06:05:51 | narimiran | in short: our `master` is a relict of past where we released stable versions differently. `devel` is where the action was and is happening, and you should send PRs against it | 
| 06:06:32 | narimiran | when you go to https://github.com/nim-lang/Nim you will by default see `devel`, and PRs will be based on that | 
| 06:06:43 | * | cyraxjoe quit (Quit: I'm out!) | 
| 06:09:28 | * | cyraxjoe joined #nim | 
| 06:11:39 | * | cyraxjoe quit (Client Quit) | 
| 06:14:26 | * | cyraxjoe joined #nim | 
| 06:15:10 | * | LargeEpsilon joined #nim | 
| 06:16:55 | * | theelous3 joined #nim | 
| 06:20:24 | * | kevin joined #nim | 
| 06:20:48 | * | kevin is now known as Guest82626 | 
| 06:21:18 | * | cyraxjoe quit (Quit: I'm out!) | 
| 06:24:09 | * | Guest82626 👑 | 
| 06:25:58 | * | dddddd quit (Read error: Connection reset by peer) | 
| 06:27:41 | Araq | God mode on. | 
| 06:29:41 | * | cyraxjoe joined #nim | 
| 06:29:59 | FromDiscord | <Rika> ._. time to take cover then | 
| 06:35:40 | * | LargeEpsilon quit (Ping timeout: 265 seconds) | 
| 06:36:39 | * | solitudesf joined #nim | 
| 06:38:15 | Araq | Guest82626 enabled the cheat. | 
| 06:47:33 | * | cyraxjoe quit (Quit: I'm out!) | 
| 06:51:16 | * | cyraxjoe joined #nim | 
| 07:00:00 | * | gmpreussner_ quit (Quit: kthxbye) | 
| 07:05:02 | * | gmpreussner joined #nim | 
| 07:09:25 | * | Romanson quit (Quit: Connection closed for inactivity) | 
| 07:13:16 | * | cyraxjoe quit (Quit: I'm out!) | 
| 07:16:01 | * | cyraxjoe joined #nim | 
| 07:21:31 | * | PMunch joined #nim | 
| 07:27:46 | * | nif quit (Quit: ...) | 
| 07:27:56 | * | nif joined #nim | 
| 07:29:19 | * | cyraxjoe quit (Quit: I'm out!) | 
| 07:29:27 | * | LargeEpsilon joined #nim | 
| 07:32:11 | * | cyraxjoe joined #nim | 
| 07:36:19 | Zevv | can someone just delete master than? I find myself checking it out and failing to build it twice a month at least | 
| 07:42:50 | * | tklohna joined #nim | 
| 07:47:23 | narimiran | Zevv: i've put a large warning to master's readme. (but who reads that, right?) i'm afraid to delete it if there is somebody using some pre-0.19 stuff which might depend on master branch | 
| 07:49:52 | Zevv | fair enough | 
| 07:49:56 | Araq | pre-0.19 should die though, I'm for deleting the master branch | 
| 07:50:14 | Araq | or maybe we can rename it | 
| 07:50:37 | Araq | to "legacy" | 
| 07:51:03 | * | filcuc joined #nim | 
| 07:52:49 | * | Hideki_ joined #nim | 
| 07:53:17 | narimiran | more people stumble on `Tables.add` ;) | 
| 07:54:34 | narimiran | i'd much rather remove that one or put it behind some `-d:iKnowWhatImDoing` flag | 
| 07:56:15 | Araq | in what world should 'add' not 'add' though? | 
| 07:56:55 | Araq | we can deprecate 'add' and introduce 'addAnother' | 
| 07:57:20 | narimiran | i am not confused by it, i'm ok with having it, i don't touch it. but i've seen numerous times people using it, thinking they're doing what `[]=` does | 
| 07:57:21 | Araq | if you want to 'add' a key, value pair that's what 'add' does, not sure why people stumble upon it | 
| 07:57:32 | * | Hideki_ quit (Ping timeout: 276 seconds) | 
| 07:57:53 | narimiran | it is like caSe_inSeNSitiviTy. | 
| 07:58:05 | Araq | no, it's different | 
| 07:58:39 | Araq | case_insensitivity is what you bring up when you have no clue about programming (hint: to obfuscate your code every PL offers plenty of opportunity already) | 
| 07:58:40 | narimiran | i meant in the sense that it just produces meaningless discussion about it | 
| 07:59:10 | Araq | whereas 'add' seems to be really bug-prone | 
| 07:59:17 | Araq | totally different things | 
| 07:59:54 | narimiran | "we can deprecate 'add' and introduce 'addAnother'" -- this might do the trick | 
| 08:00:32 | Araq | void caSe_inSeNSitiviTy() {  caSe_inSeNSitiviTy(); } // I can do the same in C++ btw | 
| 08:01:05 | Araq | and then in C++ I can introduce | 
| 08:01:18 | Araq | caSe_inSeNsitiviTy and it's something different, the horror | 
| 08:01:47 | Araq | Python: AttributeError: 'dict' object has no attribute 'add' | 
| 08:02:23 | Araq | same for 'append' | 
| 08:02:38 | Araq | so why does it come up? Python uses []=, Nim uses []= | 
| 08:02:52 | narimiran | people coming from some other language, i guess? | 
| 08:03:23 | * | gmpreussner_ joined #nim | 
| 08:04:41 | * | gmpreussner quit (Ping timeout: 276 seconds) | 
| 08:05:05 | * | krux02 joined #nim | 
| 08:05:55 | Araq | / The Add method throws an exception if the new key is | 
| 08:05:55 | Araq | / already in the dictionary. | 
| 08:06:09 | Araq | C# | 
| 08:06:14 | Araq | so that's why... | 
| 08:07:10 | PMunch | I just always assumed they were the same, so I probably have some macro out there that creates an add call instead of `[]=` simply because it's easier to do.. | 
| 08:10:58 | PMunch | And I guess that's the issue, `add` simply isn't descriptive enough because it's been mis-used in other languages | 
| 08:11:41 | PMunch | `assign` would probably be a better word to use for what `[]=` does, but I think it's easier to change Nim than to change every other language. | 
| 08:11:59 | PMunch | Do we know how many bugs this have caused? Never really ran into it myself. | 
| 08:40:55 | * | floppydh joined #nim | 
| 08:44:17 | * | Vladar joined #nim | 
| 08:47:36 | FromDiscord | <Lantos> hey guys, new to nim! | 
| 08:47:36 | FromDiscord | <Lantos> any thoughts on optimizing this code? | 
| 08:47:36 | FromDiscord | <Lantos> https://github.com/LantosTG/write_file_test/blob/master/src/main_nim.nim | 
| 08:48:20 | FromDiscord | <Rika> ~~use a rope maybe~~ but araq said ropes should die so i dont know tbh | 
| 08:50:03 | FromDiscord | <Rika> @Lantos ^ (link here https://nim-lang.org/docs/ropes.html) | 
| 08:51:15 | FromDiscord | <Rika> (or if you dont want to import, make a seq[string] then add to that, then at the end call `{the seq}.join('')` | 
| 08:51:29 | * | solitudesf quit (Ping timeout: 265 seconds) | 
| 08:52:55 | * | ng0 joined #nim | 
| 08:53:12 | narimiran | @Rika nim is not python. no need to have seq and then convert back to string. strings are mutable in nim | 
| 08:53:26 | FromDiscord | <Rika> oops, char cant be empty | 
| 08:53:46 | FromDiscord | <Rika> narimiran, but from my experience concat'ing a string that long took ages | 
| 08:54:44 | FromDiscord | <Rika> hmm took longer on the seq anyway | 
| 08:54:54 | FromDiscord | <Rika> guess it needs a longer string to show slowdowns | 
| 08:58:26 | PMunch | Lantos, since you're completely new to Nim I'll mention this: turn on -d:release | 
| 08:58:43 | PMunch | On my machine that made it drop from taking 395ms to 48ms | 
| 09:09:45 | GordonBGood | Araq, I see your latest devel commit merging refcounting in --gc:destructorss... | 
| 09:10:36 | GordonBGood | Glad to see you are working on repr.nim as it wasn't disabled with --gc:destructors before and didn't work for seqsv2, I was going to report it | 
| 09:11:06 | GordonBGood | But I still can't seem to get refcounting working with my test program:  https://wandbox.org/permlink/vZIUDOyygNxh7FOb | 
| 09:11:28 | PMunch | @Lantos, some minor tweaks, got it down to 60ms on my machine now: http://ix.io/20oz/nim | 
| 09:11:44 | GordonBGood | As noted, it's functional with lots of small allocations/deallocations so pushes the MM system | 
| 09:12:14 | GordonBGood | As you can see, it works pretty good with Boehm, even with threading turned on (which it doesn't need) | 
| 09:12:49 | GordonBGood | But it won't work with --gc:destructors on my machine after getting the latest devel branch | 
| 09:13:57 | GordonBGood | I'm curious to see how straight refcounting compares to using Boehm and others | 
| 09:14:24 | GordonBGood | It won't work with newruntime because of not being able to share ownership | 
| 09:15:36 | GordonBGood | Also, unrelated, I'm trying to test my seqsv2 project across all GC'd but can't run --gc:go due to lack of the library file on both Linux and Windows? | 
| 09:15:40 | * | theelous3 quit (Ping timeout: 264 seconds) | 
| 09:16:12 | GordonBGood | ^all GC's | 
| 09:17:52 | GordonBGood | The go GC library file isn't in the windeps download either | 
| 09:18:53 | GordonBGood | One could likely produce it using the GCC/go repo, but thats a pain :( | 
| 09:20:30 | * | floppydh quit (Quit: WeeChat 2.6) | 
| 09:22:56 | * | Ven`` joined #nim | 
| 09:23:56 | PMunch | @Lantos, down to 54ms now: http://ix.io/20oC/nim | 
| 09:27:11 | * | floppydh joined #nim | 
| 09:34:27 | Araq | GordonBGood, it's fine to ignore the Go GC for now | 
| 09:35:05 | * | luis__ joined #nim | 
| 09:35:22 | * | tamago324 joined #nim | 
| 09:35:39 | * | Ven`` quit (Quit: My MacBook has gone to sleep. ZZZzzz…) | 
| 09:35:50 | Araq | I don't know why your program doesn't work with --gc:destructors but --gc:destructors is in development | 
| 09:36:22 | Araq | it worked for me for the couple of tests I did manage to do yesterday | 
| 09:37:22 | GordonBGood | Araq: yes, I've set --gc:go tests aside for now | 
| 09:39:14 | GordonBGood | Araq: yes, I recognize that refcounting is a WIP; just submitting this little hamming numbers test to that can maybe serve as a "macro" benchmark; when it works then it must be getting close | 
| 09:40:27 | GordonBGood | There are faster ways to find an iteration of Hamming numbers, but this serves as a good test due to all the allocations and deallocations | 
| 09:41:37 | GordonBGood | It tests on a lot of levels, including using closures in the LazyList's | 
| 09:42:01 | Araq | looks like a decent test, yes | 
| 09:42:44 | GordonBGood | and it should work the same whether threading is turned on or not even though it doesn't use threading, and thus shows the slow down due to shared alloc/dealloc | 
| 09:42:45 | * | Ven`` joined #nim | 
| 09:43:02 | GordonBGood | and will show the slow-down due to atomic refcounting | 
| 09:43:45 | Araq | well I haven't ported the threading subsystem and I don't want to | 
| 09:44:04 | Araq | prefer to write a new one | 
| 09:44:46 | GordonBGood | No, I understand no porting threading as it's a mess, but I assume that your allocs/deallocs are shared when threading is on and... | 
| 09:45:05 | GordonBGood | that you use atomic ref counts when threading is on? | 
| 09:45:06 | Araq | you need -d:useMalloc with --threads:on | 
| 09:45:38 | * | Hideki_ joined #nim | 
| 09:45:46 | Araq | likewise I don't want to have the old RTTI, 'repr' should be in a library | 
| 09:45:57 | Araq | and not depend on RTTI | 
| 09:46:36 | GordonBGood | I've been having problems with -d:useMalloc; you can turn it on for the wandbox link, but that's running the Oct 15 head currently, not the latest | 
| 09:46:46 | Araq | ideally we only have --gc:boehm and --gc:destructors, both supporting =destroy in the core data structures (seqs, tables, etc) | 
| 09:46:56 | Araq | both supporting shared memory | 
| 09:47:29 | Araq | one is for throughput and one is for latency and interop with webassembly, Python etc | 
| 09:47:56 | * | luis__ quit (Quit: luis__) | 
| 09:48:25 | * | luis__ joined #nim | 
| 09:48:45 | FromDiscord | <mratsim> what about araqsgc and newruntime? | 
| 09:48:48 | GordonBGood | Araq: yes, that's my thinking, and after you telling us on the forum how well Boehm works, I've been testing with it - it's quite good | 
| 09:49:22 | Araq | mratsim: newruntime evolved into --gc:destructors as far as I'm concerned | 
| 09:49:34 | FromDiscord | <mratsim> ah I thought that was the other way around but OK | 
| 09:49:52 | Araq | ask me again next Monday :P | 
| 09:49:52 | GordonBGood | Araq: your're dropping devel on B/D? | 
| 09:49:55 | FromDiscord | <mratsim> so the idea is that for builtin types, both uses the destructors, and they differ only for ref types right? | 
| 09:51:00 | Araq | mratsim: yes but we have some implementation freedom, we don't have to have =destroy for seqs we know only contain "Collectable data" | 
| 09:51:49 | Araq | GordonBGood, B/D is for version 2.0, cleaning up the GC solutions is for 1.2 | 
| 09:52:07 | GordonBGood | Araq: Ah, okay | 
| 09:52:09 | FromDiscord | <mratsim> As long as whatever the --gc:MyGC used supports the following (move-only types) I think I can progress on a nicely done threading library: https://github.com/mratsim/weave/blob/master/picasso/memory/object_pools.nim#L72-L78 | 
| 09:53:39 | * | tamago324 quit (Remote host closed the connection) | 
| 09:54:18 | Araq | move-only types are totally fine | 
| 09:55:22 | Araq | GordonBGood, but we also need to teach people how to write code with =destroy ;-) as the 'ref' types don't get faster... | 
| 09:55:42 | FromDiscord | <mratsim> so `result = move pool.stack[pool.remaining]` is still the proper syntax to enforce moving? | 
| 09:55:58 | Araq | yes | 
| 09:58:21 | GordonBGood | Araq: yes, we need to get people always thinking about using =destroy and what sink and lent do but what do you mean 'the "ref" types don't get faster'? | 
| 09:58:21 | Araq | and if we remove the RTTI we need a new marshal.nim, we could embrace Status's serialization library but we don't have a process for moving things into the stdlib nor do we have the "distribution"... | 
| 09:59:11 | Araq | well they produce atomic RC ops, that's slow | 
| 09:59:29 | GordonBGood | I recognize that ref counted ref's even backed by destructors aren't going to be that fast | 
| 09:59:53 | GordonBGood | when threading is turned on, the reference counts will be atomic operations | 
| 09:59:59 | FromDiscord | <mratsim> that's why I said before 1.0 that it would be nice to document a way for improving the stdlib :/ | 
| 10:00:34 | Araq | mratsim: I wrote the document afterwards, so what | 
| 10:00:45 | * | jjido joined #nim | 
| 10:01:08 | FromDiscord | <mratsim> to manage expectations of stability guarantees | 
| 10:01:52 | FromDiscord | <mratsim> anyway, not really important, just my "I told you so" moment 😉 | 
| 10:02:45 | Araq | queue up. | 
| 10:03:26 | * | Ven`` quit (Quit: My MacBook has gone to sleep. ZZZzzz…) | 
| 10:04:22 | Araq | GordonBGood, in a nutshell: We need to teach that 'Node' is the wrong granularity, it should be Tree or Graph | 
| 10:05:23 | GordonBGood | Araq: Ah, you are talking runtime metadata or AST manipulations? | 
| 10:05:50 | * | EvilKhaosKat joined #nim | 
| 10:06:04 | Araq | neither, I am talking about we need examples how to design parse trees and the like | 
| 10:06:33 | GordonBGood | Are Tree and/or Graph already exist that we can build examples against? | 
| 10:06:47 | Araq | nah | 
| 10:07:26 | FromGitter | <alehander42> but whats the difference with node and tree | 
| 10:07:29 | FromGitter | <alehander42> parent links? | 
| 10:08:18 | GordonBGood | Araq: I'd like to help, but it sounds like it's at a level of abstraction beyond my level of expertise; I'm a specialist in low level things | 
| 10:08:41 | Araq | don't worry, it means I can sell more books... :P | 
| 10:09:20 | GordonBGood | But if I see a different better way suggested by you "high-level" guys, I can grab onto it and run with it if it's better | 
| 10:10:51 | GordonBGood | Araq: With the amount of the time you spend here on IRC, following up on the forum, writing actual code, and managing the repo, I don't know when you are going to find time to write books :) | 
| 10:11:13 | Araq | btw if you 'move' refs around, you only have the atomic read operation which is free on x86 | 
| 10:11:14 | * | Guest82626 quit (Ping timeout: 265 seconds) | 
| 10:11:35 | leorize | if I know that I'll throw an error frequently, then should I use a Result type or exceptions are performant enough? | 
| 10:11:36 | Araq | check the code :P | 
| 10:12:10 | Araq | leorize, you are probably better off with the Result type | 
| 10:13:47 | FromGitter | <alehander42> PMunch https://github.com/NimParsers/parsetoml | 
| 10:14:01 | FromGitter | <alehander42> seems nice, but it needs to show in the readme that it can actually generate toml back | 
| 10:14:06 | PMunch | alehander42, huh? | 
| 10:14:25 | FromGitter | <alehander42> well, from the readme i thought it can only parse toml | 
| 10:14:36 | FromGitter | <alehander42> i found some random example of toTomlString in a issue :P | 
| 10:14:40 | PMunch | Ah yeah.. The create TOML is a bit experimental.. | 
| 10:14:43 | PMunch | IIRc | 
| 10:15:04 | FromGitter | <alehander42> so i'll probably create very simple seq with objects | 
| 10:15:08 | FromGitter | <alehander42> i guess it should work for that | 
| 10:15:30 | PMunch | Maybe, try it :) | 
| 10:18:29 | Zevv | how widespread is this toml? | 
| 10:19:31 | PMunch | Used quite a bit in Ruby land I think | 
| 10:19:41 | PMunch | I just like it because it's so readable | 
| 10:20:02 | Zevv | I made the mistake to consider yaml again the other day | 
| 10:20:18 | Zevv | I should make this post it note saying "DONT DO YAML" and staple it to my forehead, maybe that helps | 
| 10:20:18 | FromGitter | <Vindaar> and toml is simple, which is nice for a change. not like yaml.. | 
| 10:22:50 | * | kevin_ joined #nim | 
| 10:26:37 | Zevv | I think I like the dotted-keys thingy, but I also might not | 
| 10:27:51 | PMunch | I mean it certainly has its limitations, but that means it is easier to reason about | 
| 10:27:57 | PMunch | Both for humans, and for parsers | 
| 10:28:05 | Zevv | and it has comments :) | 
| 10:28:36 | * | Ven`` joined #nim | 
| 10:29:18 | * | EvilKhaosKat quit (Quit: Leaving) | 
| 10:29:41 | FromGitter | <alehander42> i use submodules | 
| 10:29:46 | FromGitter | <alehander42> for my nim packages currently | 
| 10:29:49 | FromGitter | <alehander42> so AMA | 
| 10:30:01 | FromGitter | <alehander42> clyybber | 
| 10:30:11 | FromGitter | <alehander42> yaml is nice | 
| 10:30:21 | FromGitter | <alehander42> if you use a subset but i decided to try toml this | 
| 10:30:57 | * | LargeEpsilon quit (Ping timeout: 276 seconds) | 
| 10:31:51 | FromGitter | <alehander42> oh man it doesnt accept a random structure PMunch | 
| 10:32:23 | Araq | GordonBGood, one thing that I'm thinking about it shared memory + non-atomic RC ops | 
| 10:32:43 | Araq | to pass stuff to a different thread a 'move' is good enough | 
| 10:32:54 | FromGitter | <alehander42> PMunch one idea is to just reuse the https://github.com/status-im/nim-serialization lib | 
| 10:32:55 | PMunch | alehander42, what do you mean? | 
| 10:33:10 | FromGitter | <alehander42> and to just add a reader (parser) / writer similar to https://github.com/status-im/nim-json-serialization | 
| 10:33:21 | FromGitter | <alehander42> so we can get all the type stuff automatically | 
| 10:33:33 | FromGitter | <alehander42> and do Toml.decode(stuff, mytype) | 
| 10:33:50 | FromGitter | <alehander42> PMunch well i wanted to directly encode my own type | 
| 10:34:14 | FromGitter | <alehander42> working with low level toml values overally feels unnecesary for me in language like nim where usually its easier to type your schema | 
| 10:34:23 | FromGitter | <alehander42> but its best to have both options | 
| 10:34:31 | PMunch | Did you try `?` | 
| 10:34:54 | PMunch | Decoding would be nice though.. | 
| 10:35:10 | PMunch | Feel free to PR :) | 
| 10:35:25 | FromGitter | <alehander42> PMunch but my point is: it doesnt make sense to reinvent it | 
| 10:35:50 | FromGitter | <alehander42> so a lib like nim-serialization where all the from/to type stuff is already written and one have to mostly implement the low level reading/writing procs | 
| 10:35:54 | FromGitter | <alehander42> seems easier to me | 
| 10:36:37 | FromGitter | <alehander42> hm, `?` is cool, but i dont want to work with toml values at all: i want to work with normal nim types | 
| 10:37:10 | PMunch | You should be able to write the serialisers for nim-serialization | 
| 10:38:08 | * | Ven`` quit (Quit: My MacBook has gone to sleep. ZZZzzz…) | 
| 10:38:25 | * | jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…) | 
| 10:42:50 | FromGitter | <alehander42> well, its not a trivial amount of work i admit | 
| 10:43:25 | FromGitter | <alehander42> but if i really find the need of toml more i can try to map some of your code to such a deserializer | 
| 10:43:51 | FromGitter | <alehander42> i'd put it in the nimparsers org tho | 
| 10:44:01 | * | Ven`` joined #nim | 
| 10:45:18 | PMunch | That would be great! | 
| 10:45:34 | PMunch | I'd probably do it myself if I actually used parsetoml for any larger project | 
| 10:45:41 | PMunch | The interface is a bit clunky | 
| 10:46:13 | * | Ven`` quit (Read error: Connection reset by peer) | 
| 10:47:00 | GordonBGood | Araq: sorry, was away looking at the why my test porgram doesn't work with your ref counting - it's to do with generating a closure in a nested closure - line 71 on the test program | 
| 10:48:01 | * | luis__ quit (Quit: luis__) | 
| 10:48:03 | GordonBGood | and there are comments in the lambdalifting file at line 696 that it will find it and doesn't like nested closures much! | 
| 10:48:23 | GordonBGood | The "up" field is nil... | 
| 10:48:31 | * | luis__ joined #nim | 
| 10:48:56 | * | Hideki_ quit (Ping timeout: 240 seconds) | 
| 10:49:04 | FromGitter | <alehander42> PMunch awesome: i'll thik about it, but not having a lot of time and prefer to try one other idea | 
| 10:50:03 | GordonBGood | Araq: re: "shared memory + non-atomic RC ops" and "to pass stuff to a different thread a 'move' is good enough"... | 
| 10:51:12 | GordonBGood | I've been thinking about it, too - a move is good enough when ownership doesn't have to be retained in the calling thread... | 
| 10:51:55 | GordonBGood | and we can maybe eliminate atomic ref counting or any ref counting when within the same scope by DFA... | 
| 10:52:42 | GordonBGood | Leaving atomic ref counting maybe only necessary when there are multiple owners across threads... | 
| 10:53:18 | * | clyybber joined #nim | 
| 10:53:32 | GordonBGood | And speed isn't really a concern much then as the overheads of context switching even from a thread pool will be much greater than the cost of atomic ref counting | 
| 10:54:04 | clyybber | alehander42: Ha, how comes? | 
| 10:56:10 | FromGitter | <alehander42> well i do it for a long time | 
| 10:56:29 | FromGitter | <alehander42> just our project uses several patches of the compiler | 
| 10:56:35 | FromGitter | <alehander42> or other projects | 
| 10:56:41 | FromGitter | <alehander42> 1) some lib forks | 
| 10:56:48 | FromGitter | <alehander42> so i guess it just made sense | 
| 10:57:09 | FromGitter | <alehander42> 1) some closed source deps | 
| 10:57:21 | GordonBGood | brb | 
| 10:57:33 | FromGitter | <alehander42> i think it was more because of the reproducability, i didnt take decision | 
| 10:58:09 | FromGitter | <alehander42> but i still use nimble with almost all my other nim projects | 
| 11:05:07 | * | jjido joined #nim | 
| 11:15:59 | Araq | GordonBGood, if you actually *share* the ownership on mutable data it's unlikely you will have it correct just because Nim used atomic ops for you | 
| 11:16:30 | Araq | but if you don't mutate it concurrently it will work out, so *shrug* | 
| 11:17:21 | Araq | still the design doesn't strike me as particularly elegant, paying the costs for what is done in some half-assed way | 
| 11:17:45 | * | letto quit (Quit: Konversation terminated!) | 
| 11:19:17 | * | letto joined #nim | 
| 11:25:56 | * | letto quit (Quit: Konversation terminated!) | 
| 11:26:35 | GordonBGood | Araq: shrug, most of it has been done before by somebody for some PL; I had hopes the by somehow using the ideas from B/D we would end up with something different... | 
| 11:27:52 | GordonBGood | A lot of algorithms can get away with just moving ownership to the other thread and getting ownership back with the result if necessary, so moving would work... | 
| 11:28:49 | GordonBGood | And a lot of the rest only mutate the data in one thread, so shared ownership would work | 
| 11:30:12 | GordonBGood | Unless in continually going back to stir the pot someone comes up with some brilliant break-through idea | 
| 11:30:45 | * | abm joined #nim | 
| 11:39:37 | * | kevin_ quit (Quit: leaving) | 
| 11:44:51 | Araq | > And a lot of the rest only mutate the data in one thread, so shared ownership would work | 
| 11:45:04 | Araq | exactly but then it uses atomics and it doesn't have to | 
| 11:46:36 | Araq | here is what you can do: you use bit 0 or the RC to mean "shared between threads" | 
| 11:46:44 | Araq | *of the RC | 
| 11:46:45 | GordonBGood | Araq: Yes, unless DFA can eliminate some of the ref counts as it was said to do in the | 
| 11:47:02 | GordonBGood | ""Biased ref counting" article about Swift | 
| 11:47:18 | Araq | and then when we move x to a different thread and if RC == 1 the bit remains unaffected | 
| 11:47:34 | Araq | but if we have RC > 1 we set the bit to enable atomics | 
| 11:47:39 | GordonBGood | Yes, something like that | 
| 11:47:50 | Araq | biased refcounting is different | 
| 11:47:58 | Araq | than that. very different. | 
| 11:49:38 | Araq | here is the problem with my idea: only the outer 'ref' is moved to a different thread, it can contain other refs and they could be shared wildly | 
| 11:50:07 | Araq | we would need a deepMove() operation :P | 
| 11:50:27 | Araq | however, here is where B/D could help us, it enforces deep uniqueness | 
| 11:52:25 | * | clyybber quit (Read error: Connection reset by peer) | 
| 11:53:02 | * | LargeEpsilon joined #nim | 
| 11:53:40 | * | clyybber joined #nim | 
| 11:55:41 | GordonBGood | Yes, I understand that bias ref counting is different, I was just talking about that they stated that Swift already elides many ref counts away... | 
| 11:55:45 | * | Vladar quit (Quit: Leaving) | 
| 11:55:59 | * | lritter joined #nim | 
| 11:57:02 | GordonBGood | The only problem with shared ownership of some sort of shared data with inner ref's is mutation (may) need to have locks, but not always | 
| 11:57:24 | GordonBGood | I've looks into deepMove and don'e like it - it stinks of deepCopy | 
| 11:57:27 | * | rockcavera joined #nim | 
| 11:58:35 | GordonBGood | Oh, I suppose you mean inc all internal ref counts and then deepDestroy dec's them when the outer ref is destroyed, I don't think that's actually necessary | 
| 11:58:45 | FromDiscord | <mratsim> we should defer shared data structures to library | 
| 11:59:33 | GordonBGood | mratsim, in my current thinking, I agree that everything other than ref handling should be somewhere else | 
| 11:59:34 | FromDiscord | <mratsim> that's what C++ did for a very ong-time, it's only very recently that they have parallel STL | 
| 12:00:49 | GordonBGood | Araq: yes, I still like B/D in the long term if we can figure oot some sort of shared ownership angle on top of it | 
| 12:02:16 | * | tklohna quit (Ping timeout: 240 seconds) | 
| 12:02:25 | * | letto joined #nim | 
| 12:02:53 | PMunch | Sorry, I was trying to clean up the playground and unfortunately managed to delete all the images.. I'm rebuilding them now, but it takes a while.. | 
| 12:04:00 | Araq | mratsim: the default allocation for C++ always was 'shared memory' though | 
| 12:04:22 | Araq | so you could get away with locks on top of std::vector | 
| 12:04:49 | Araq | and you don't get away with this in Nim v1 | 
| 12:05:27 | FromDiscord | <mratsim> I don't know, Arraymancer and neo gets away with using seqs as a backend and multithreading on top 😛 | 
| 12:09:11 | * | jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…) | 
| 12:21:50 | * | tklohna joined #nim | 
| 12:28:30 | * | clyybber quit (Quit: Quit) | 
| 12:28:41 | * | clyybber joined #nim | 
| 12:28:41 | * | clyybber quit (Client Quit) | 
| 12:30:09 | * | tiorock joined #nim | 
| 12:30:09 | * | tiorock quit (Changing host) | 
| 12:30:09 | * | tiorock joined #nim | 
| 12:30:09 | * | rockcavera is now known as Guest28913 | 
| 12:30:09 | * | Guest28913 quit (Killed (cherryh.freenode.net (Nickname regained by services))) | 
| 12:30:09 | * | tiorock is now known as rockcavera | 
| 12:38:28 | * | luis__ quit (Ping timeout: 264 seconds) | 
| 12:38:38 | * | clyybber joined #nim | 
| 12:41:22 | FromDiscord | <Lantos> I was running with nim c --opt:speed --d:release | 
| 12:41:22 | FromDiscord | <Lantos> I couldn't seem to get the one PMunch going any faster | 
| 12:42:57 | clyybber | GordonBGood: Whats B/D standing for? | 
| 12:43:40 | PMunch | Lantos, --opt:speed is implied with -d:release :) | 
| 12:44:02 | PMunch | Did you try --gc:markandsweep? | 
| 12:44:07 | PMunch | That gave me a nice speedup | 
| 12:44:14 | * | ertp07 joined #nim | 
| 12:45:02 | * | nsf quit (Quit: WeeChat 2.6) | 
| 12:45:35 | clyybber | boehm/destructor?? | 
| 12:45:56 | FromDiscord | <Lantos> oh ahah sure not keeping --opt:speed and -d:release makes it 2x fast 😉 | 
| 12:46:19 | FromDiscord | <Lantos> I'll try nim c --d:release --gc:markandsweep | 
| 12:47:30 | PMunch | Did you see the paste I made? That was the fastest I got it | 
| 12:47:39 | PMunch | In includes the flags I used to compile with | 
| 12:48:05 | FromDiscord | <Lantos> mark sweep gives a nice bump | 
| 12:52:35 | FromDiscord | <Lantos> ``` | 
| 12:52:35 | FromDiscord | <Lantos> dell:~/Documents/nim/write_bench/src$ cat main_nim.nim | 
| 12:52:35 | FromDiscord | <Lantos> import times | 
| 12:52:35 | FromDiscord | <Lantos> | 
| 12:52:35 | FromDiscord | <Lantos> let time = cpuTime() | 
| 12:52:35 | FromDiscord | <Lantos> let f = open("test_nim.txt", fmWrite) | 
| 12:52:35 | FromDiscord | <Lantos> | 
| 12:52:37 | FromDiscord | <Lantos> var data: string | 
| 12:52:39 | FromDiscord | <Lantos> for i in 0..1000_000: | 
| 12:52:40 | FromDiscord | <Lantos>   data.add("line ") | 
| 12:52:41 | FromDiscord | <Lantos>   data.add($i) | 
| 12:52:43 | FromDiscord | <Lantos>   data.add("\n") | 
| 12:52:44 | FromDiscord | <Lantos> | 
| 12:52:45 | FromDiscord | <Lantos> f.write(data) | 
| 12:52:47 | FromDiscord | <Lantos> f.close() | 
| 12:52:48 | FromDiscord | <Lantos> echo "Time taken: " & $((cpuTime() - time)*1000.0'f32) & "ms" | 
| 12:52:51 | FromDiscord | <Lantos> dell:~/Documents/nim/write_bench/src$ nim c -d:release --gc:markandsweep -r ../src/main_nim.nim | 
| 12:52:52 | PMunch | Please don't post long things directly to Discord.. | 
| 12:52:53 | FromDiscord | <Lantos> Hint: used config file '~/.choosenim/toolchains/nim-1.0.0/config/nim.cfg' [Conf] | 
| 12:52:55 | FromDiscord | <Lantos> Hint: operation successful (300 lines compiled; 0.046 sec total; 6.004MiB peakmem; Release Build) [SuccessX] | 
| 12:52:57 | FromDiscord | <Lantos> Hint: ~/Documents/nim/write_bench/src/main_nim  [Exec] | 
| 12:52:58 | PMunch | Use a paste service.. | 
| 12:52:58 | FromDiscord | <Lantos> Time taken: 142.021312ms | 
| 12:53:00 | FromDiscord | <Lantos> dell:~/Documents/nim/write_bench/src$ | 
| 12:53:00 | narimiran | yay, code paste from discord | 
| 12:53:02 | FromDiscord | <Lantos> dell:~/Documents/nim/write_bench/src$ cat main_nim.nim | 
| 12:53:03 | FromDiscord | <Lantos> import times | 
| 12:53:04 | FromDiscord | <Lantos> | 
| 12:53:06 | FromDiscord | <Lantos> proc main() = | 
| 12:53:07 | FromDiscord | <Lantos>   let time = cpuTime() | 
| 12:53:09 | FromDiscord | <Lantos>   let f = open("test_nim.txt", fmWrite, high(cint)) | 
| 12:53:10 | FromDiscord | <Lantos> | 
| 12:53:11 | FromDiscord | <Lantos>   const l = "line " | 
| 12:53:13 | FromDiscord | <Lantos>   for i in 0..1_000_000: <message clipped> | 
| 12:53:15 | FromDiscord | <mratsim> @Clyybber: Bacon and Dingle paper | 
| 12:53:16 | FromDiscord | <Lantos> oh | 
| 12:53:17 | FromDiscord | <Lantos> sure | 
| 12:53:19 | FromDiscord | <Lantos> does it kill irc? | 
| 12:53:24 | PMunch | Can someone please fix the Discord bot.. | 
| 12:53:32 | PMunch | It doesn't kill it, it's just massively spammy | 
| 12:53:36 | FromGitter | <Vindaar> nah, it just fills up my whole main screen with blue messages :) | 
| 12:53:50 | FromDiscord | <Lantos> https://pastebin.com/Vqet46Tu | 
| 12:53:54 | FromDiscord | <Lantos> 🙂 | 
| 12:54:01 | FromDiscord | <mratsim> Maybe we should bridge Discord to Gitter, instead of brdigning to IRC | 
| 12:54:21 | FromDiscord | <mratsim> discord <-> Gitter supports properly Discord code paste | 
| 12:54:27 | PMunch | Wouldn't that give us double nick wrapping? | 
| 12:55:24 | FromDiscord | <mratsim> you can adjust that in the from gitter bot I think | 
| 12:57:05 | FromDiscord | <mratsim> the discord <-> IRC bot is also awful on the Discord side because there is no proper text separation | 
| 12:57:05 | FromDiscord | <Lantos> I'm off lunch but I will try this rope method when. I get home. | 
| 12:57:43 | PMunch | Text separation? | 
| 12:58:10 | FromDiscord | <mratsim> yeah, if you then another irc people talks, it all seems like new lines | 
| 12:58:26 | FromDiscord | <mratsim> you don't have the same separation as one someone on discord talks | 
| 12:59:18 | FromDiscord | <mratsim> | 
| 12:59:18 | FromDiscord | <mratsim> https://cdn.discordapp.com/attachments/371759389889003532/639448312423907334/DeepinScreenshot_select-area_20191031135847.png | 
| 12:59:42 | PMunch | Oh right | 
| 12:59:52 | PMunch | Because they are all messages by the same "person" | 
| 13:00:03 | FromDiscord | <Lantos> It's kind of confusing at first didn't realize what was going on for a minute | 
| 13:00:34 | FromDiscord | <mratsim> actually the Gitter-Discord bridge that we used for Status channels properly separates | 
| 13:01:07 | narimiran | quick question (i haven't tried it yet): is it possible to have recursive iterators? | 
| 13:01:45 | FromDiscord | <mratsim> apparently it shouldn't be possible but I have one specific case where it works | 
| 13:02:07 | FromDiscord | <mratsim> not sure if the discussion was on github or IRC though | 
| 13:02:28 | Araq | narimiran: no. | 
| 13:02:53 | FromDiscord | <mratsim> ah yes mine were recursive at compile time | 
| 13:05:52 | narimiran | ah, ok. i'll try to think of some workaround (which hopefully won't be too slow and inefficient) | 
| 13:07:08 | * | jjido joined #nim | 
| 13:08:17 | Araq | for some reason my first gist ever is 'proc parseBool(s: string): bool = ...' | 
| 13:08:35 | FromDiscord | <Rika> is there an issue with that being your first gist | 
| 13:09:23 | Araq | I think it's a gist because I switched between computers and needed this piece of code | 
| 13:09:56 | FromDiscord | <mratsim> My first fist is upgrade-python-3 😛 - https://gist.github.com/mratsim/8135b4f6824b61955122fdf828652298 | 
| 13:10:36 | FromDiscord | <mratsim> omg the things that python package management forces you to do | 
| 13:11:45 | Araq | but but but ... it's better than having useful stuff in Python's stdlib | 
| 13:12:16 | * | ertp07 quit (Ping timeout: 240 seconds) | 
| 13:12:23 | Araq | we all know package management is easy to do perfectly and the internet connections never fail. | 
| 13:13:18 | clyybber | mratsim: Thanks | 
| 13:13:56 | * | LargeEpsilon quit (Ping timeout: 265 seconds) | 
| 13:15:16 | clyybber | mratsim: Didn't you succees in doing a recursive iterator? | 
| 13:15:23 | clyybber | With : auto ? | 
| 13:15:47 | FromDiscord | <mratsim> that was a recursive with fixed depth known at compile time | 
| 13:16:01 | clyybber | Ah. | 
| 13:16:08 | FromDiscord | <mratsim> https://github.com/mratsim/Arraymancer/blob/master/src/private/nested_containers.nim#L22-L30 | 
| 13:16:54 | FromDiscord | <mratsim> that was because the iteration depth depended on the types | 
| 13:17:14 | clyybber | Pretty cool | 
| 13:17:43 | FromDiscord | <mratsim> there was a thread were people tried several stuff and had a iterator cannot be recursive error or something like that otherwise | 
| 13:20:24 | * | Vladar joined #nim | 
| 13:20:54 | shashlick | @dom96 the choosenim PR is done, hope you can merge it | 
| 13:21:31 | shashlick | Native 7z and xz support so we can stop the gz duplicate archives going forward | 
| 13:21:41 | shashlick | Install Linux binaries | 
| 13:21:54 | * | ertp07 joined #nim | 
| 13:22:06 | shashlick | Windows CI | 
| 13:23:07 | * | ertp07 quit (Read error: Connection reset by peer) | 
| 13:25:18 | * | ertp07 joined #nim | 
| 13:25:29 | * | Hideki_ joined #nim | 
| 13:26:07 | FromDiscord | <mratsim> .xz is super slow to compress though :/ | 
| 13:26:13 | FromDiscord | <mratsim> (benches: https://community.centminmod.com/threads/round-3-compression-comparison-benchmarks-zstd-vs-brotli-vs-pigz-vs-bzip2-vs-xz-etc.17259/#post-73060) | 
| 13:26:23 | * | Hideki_ quit (Remote host closed the connection) | 
| 13:27:01 | * | Hideki_ joined #nim | 
| 13:27:48 | * | sagax joined #nim | 
| 13:27:56 | * | Hideki_ quit (Remote host closed the connection) | 
| 13:28:14 | shashlick | Yep but that's what we post today for all posix archives | 
| 13:28:40 | shashlick | Nightlies pay the price but they extract quite fast | 
| 13:29:37 | federico3 | fast? not really | 
| 13:30:49 | shashlick | Well that's cause a 12mb archive expands to 500+ mb of source in csources | 
| 13:32:51 | federico3 | I suspect the download time / decompress time is not the best tradeoff | 
| 13:40:09 | * | nixfreak65 joined #nim | 
| 13:40:21 | * | nixfreak65 is now known as nixfreak_work | 
| 13:42:09 | nixfreak_work | Does anyone have an example of using compiler options to link a static lib (nim c -d:mingw --cpu:amd64 --passC="<static lib>"  --threads:on window.nim ) I kind of confused on how to do this | 
| 13:44:25 | * | dddddd joined #nim | 
| 13:45:00 | * | LargeEpsilon joined #nim | 
| 13:48:08 | shashlick | You need to copy the static lib from windows and link that in | 
| 13:48:44 | nixfreak_work | ok thank you | 
| 13:48:46 | shashlick | And you need the .a file, not the dll | 
| 13:49:14 | shashlick | Static = a, dynamic = dll, so or dylib | 
| 13:59:48 | * | jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…) | 
| 14:00:04 | * | ertp07 quit (Read error: Connection reset by peer) | 
| 14:00:23 | * | ertp07 joined #nim | 
| 14:00:54 | FromGitter | <alehander42> Araq the fact that python's package management has issues | 
| 14:00:56 | FromGitter | <alehander42> is not an argument | 
| 14:01:15 | FromGitter | <alehander42> most ppl in python-land are like "if we just had rubygems or npm" | 
| 14:01:17 | FromGitter | <alehander42> (yes, npm) | 
| 14:02:25 | FromGitter | <alehander42> from what i've seen from most lang communities/forum/subreddits third party libs are absolutely the normal thing, nobody is really wondering why he doesnt have a web framework or specific data lib in stdlib | 
| 14:03:13 | FromGitter | <alehander42> usually people are annoyed by more specific things like the too-many-small dependencies thing or build/deploy/reproduce specifics | 
| 14:03:39 | FromGitter | <alehander42> i just want to point out that i think the "people dont like deps" thing is a fallacy | 
| 14:04:02 | * | tklohna quit (Ping timeout: 240 seconds) | 
| 14:04:19 | FromGitter | <alehander42> not that i dont think having a distribution might be nice, but just not to base it on such a thesis imho | 
| 14:05:38 | FromGitter | <alehander42> if you think about it, even with the novelty of ownership i've seen *a lot* of people actually think cargo is one of the main pro-s of rust compared to c++ | 
| 14:08:22 | disruptek | you think python people want npm? | 
| 14:08:36 | disruptek | have you used npm for anything of significant size? | 
| 14:09:32 | * | jjido joined #nim | 
| 14:11:08 | FromGitter | <alehander42> have you used python package management | 
| 14:11:23 | disruptek | not recently.  😁 | 
| 14:11:31 | FromGitter | <alehander42> the point is that it has its own problems, people design several competing package managers for it and there isnt just one good solution | 
| 14:11:44 | FromGitter | <alehander42> npm is still better than that imo | 
| 14:12:32 | FromGitter | <alehander42> but the point isnt that npm is good or not good, but that people want deps, and most modern languages focus on having very good package managers/3rd party lib tooling | 
| 14:13:14 | * | GordonBGood quit (Ping timeout: 276 seconds) | 
| 14:13:42 | disruptek | it's an outgrowth of the language features, though.  and npm is just the largest example.  there are other package managers in the js ecosystem, but they largely share the same issues. | 
| 14:13:45 | FromGitter | <alehander42> so while the discussions these days about how exactly nim managers should work are great, i just wanted to disagree with the "people dont want dependencies" sentiment | 
| 14:13:45 | FromDiscord | <Rika> is a sort proc supposed to be inplace | 
| 14:14:11 | FromGitter | <alehander42> maybe, in some particular situations with some caveats thats true, but in 80% its not imo | 
| 14:14:36 | FromGitter | <alehander42> disruptek but i almost never heard anybody in ruby world complaining about gems | 
| 14:14:40 | FromGitter | <alehander42> or in rust about cargo | 
| 14:14:42 | disruptek | python's package management is really pretty tame compared to npm.  like, by an two orders of magnitude. | 
| 14:14:51 | FromGitter | <alehander42> people loved their package ecosystems | 
| 14:15:04 | FromGitter | <alehander42> they were like "look just add one like to this, import and great stuff happens" | 
| 14:15:32 | disruptek | some people complain that the only way to do anything in rust is via cargo. | 
| 14:15:35 | FromGitter | <alehander42> i think python's and npm might just have different issues | 
| 14:15:47 | FromGitter | <alehander42> disruptek well i am sure you can still use makefiles if you want | 
| 14:16:15 | FromGitter | <alehander42> but making 90% of the projects at least able to work with the main package manager is good | 
| 14:16:31 | FromGitter | <alehander42> look at c++: they're scraping for something like that with conan and all other efforts | 
| 14:17:01 | FromGitter | <alehander42> and it's probably very hard when 90% of the stuff there just isnt developed with that in mind | 
| 14:17:22 | disruptek | this.  you're comparing newer ecosystems with older ones. | 
| 14:17:36 | FromGitter | <alehander42> look at even go: they had the simple-ish vendor thing, but still people wanted a normal package manager | 
| 14:17:39 | disruptek | cargo doesn't have competition. | 
| 14:18:07 | FromGitter | <alehander42> yes, but the c/c++ ecosystem started in 70/80s | 
| 14:18:15 | FromGitter | <alehander42> thats not an excuse for any newer lang | 
| 14:18:16 | disruptek | that's my point. | 
| 14:18:23 | * | tklohna joined #nim | 
| 14:18:44 | FromGitter | <alehander42> but my point is that this is also what happens if a language doesnt have a good standartized solution or at least convention | 
| 14:18:45 | disruptek | so are you in favor of opinionated package management or...? | 
| 14:18:49 | FromDiscord | <Rika> older ecosystems have more projects/managers which means more competition | 
| 14:19:08 | FromGitter | <alehander42> how do you define it | 
| 14:19:08 | disruptek | it means more code written that might not work in a different view of packaging. | 
| 14:19:23 | FromGitter | <alehander42> well, this different view of packaging should be somehow compatible | 
| 14:19:33 | disruptek | go is pretty opinionated. | 
| 14:19:39 | clyybber | Araq: Re: Default fields, it's actually really easy to do the checks(very lightweight) in sem and the transformation still in transf.nim. | 
| 14:19:41 | FromGitter | <alehander42> otherwise we get 3-4 interesting package managers, some projects that work with one, some with other | 
| 14:19:49 | FromGitter | <alehander42> and this sucks for the user | 
| 14:19:53 | FromGitter | <alehander42> who just wants to use a and b | 
| 14:20:23 | disruptek | the compiler defines certain requirements.  if the manager can produce them to spec, it shouldn't matter which they use. | 
| 14:20:34 | FromGitter | <alehander42> but go now has https://github.com/golang/dep | 
| 14:20:36 | FromGitter | <alehander42> do you mean dep | 
| 14:20:45 | disruptek | this is why the compiler needs to be patched.  😉 | 
| 14:20:46 | FromGitter | <alehander42> disruptek i also agree with that | 
| 14:21:03 | FromGitter | <alehander42> having some kind of api/format that is universal | 
| 14:21:31 | FromGitter | <alehander42> but the important thing is it works for most packages and that people can easily do whatever they need with at least one of those managers | 
| 14:21:44 | disruptek | it already has command-line options, nim.cfg, and config.nims.  the problem is, it's not narrow enough. | 
| 14:22:18 | disruptek | just make it more naive and then package management can innovate as needs be. | 
| 14:22:29 | Araq | clyybber: oh? | 
| 14:22:44 | Araq | alehander42: your argument is convincing. | 
| 14:23:15 | Araq | problem remains about how to ship e.g. comprehensions with Nim | 
| 14:23:37 | clyybber | Araq: So I could make it transparent to macros which is IMO more consistent with the way other variables will be initialized. | 
| 14:23:47 | Araq | or cligen or other small libs widely regarded as an improvement over what the stdlib overs. | 
| 14:23:55 | clyybber | Like result, or `var s: SomeObj` | 
| 14:24:08 | disruptek | i think the real issue is that we have to be able to control the venn diagram of what the compiler sees. | 
| 14:24:31 | disruptek | if you can constrain the compiler to look in a single place, we can put whatever we want there.  no problem. | 
| 14:25:21 | disruptek | go uses an env var, iirc.  not sure that's still the case. | 
| 14:26:08 | disruptek | i'm talking about that level of simplicity.  like nimblepath.  because our packages are flat. | 
| 14:26:14 | FromGitter | <alehander42> Araq well, i think one can have a "distribution" with such libs, but as i said even this looked harder to define to me | 
| 14:26:22 | * | tklohna quit (Ping timeout: 268 seconds) | 
| 14:26:39 | disruptek | did you look at my nimph readme? | 
| 14:27:00 | FromGitter | <alehander42> e.g. why cligen and not https://github.com/iffy/nim-argparse or confutils | 
| 14:27:14 | FromGitter | <alehander42> i guess stars can be a metric for inclusion | 
| 14:27:54 | disruptek | the real question is, which packages best-serve the users. | 
| 14:27:55 | FromGitter | <alehander42> but other option is to just have a single metapackage which one can install or even the compiler recommends | 
| 14:28:16 | disruptek | cligen and npeg best-serve the users because their developers are so active in the community. | 
| 14:28:27 | disruptek | they provide the best possible experience. | 
| 14:28:30 | FromGitter | <alehander42> but this can change tomorrow | 
| 14:28:40 | FromGitter | <alehander42> tomorrow somebody can come and write an amazing altetrnative parser lib | 
| 14:28:44 | FromGitter | <alehander42> and people start  using that | 
| 14:29:11 | FromGitter | <alehander42> thats the point with 3rd party libs imo | 
| 14:29:13 | disruptek | yes, and if it serves the users better, it will doubtless get stars and get distributed. | 
| 14:29:20 | FromGitter | <alehander42> but thats already how it works | 
| 14:29:24 | disruptek | yes. | 
| 14:29:25 | Araq | disruptek: I did but it's beyond me | 
| 14:29:25 | FromGitter | <alehander42> anybody that needs npeg | 
| 14:29:30 | FromGitter | <alehander42> can go and `install npeg` | 
| 14:29:37 | disruptek | hey, i'm the one that said araq's post was pointless, remember?  😁 | 
| 14:29:42 | FromGitter | <alehander42> thats exactly the point of having a package manager | 
| 14:30:32 | FromGitter | <alehander42> still, one can have a set of distributions, but i think that things get a bit political there | 
| 14:30:38 | disruptek | nimph is just a way to nest distributions in a single file, ad infinitum. | 
| 14:30:57 | clyybber | do we actually have an pkg issue aside from that noboy "loves" nimble? | 
| 14:31:09 | FromGitter | <alehander42> but anyway both seem useful but imo 1.) great package manager 2.) good distribution mechanism | 
| 14:31:17 | disruptek | package local deps is the open packaging issue that's problematic. | 
| 14:31:21 | Araq | disruptek: what I do understand is that you want to keep --nimblePath or have something like --path:subdir/** | 
| 14:31:46 | disruptek | Araq: that, or ffs don't look anywhere but where i tell you. | 
| 14:32:04 | FromDiscord | <Chiqqum_Ngbata> Put me in the small-core camp. Competition amongst third parties is good / encourages engagement. Local nimble installs plz | 
| 14:32:37 | clyybber | Why can't nimble put in a config that includes --path:nimblePath ? | 
| 14:32:44 | FromGitter | <alehander42> disruptek nimph looks interesting but i have to read more later | 
| 14:33:04 | disruptek | there's nothing to it. | 
| 14:33:24 | disruptek | it trades disk space for correctness. | 
| 14:33:55 | Araq | look, the distribution is about how to grow/evolve the stdlib, you tell me "omg, no distribution please" but then I don't know how to evolve the stdlib. | 
| 14:34:14 | disruptek | yes you do. | 
| 14:34:25 | Araq | ok. how? | 
| 14:34:28 | disruptek | it's just my opinion, but i agree with everything you wrote about stdlib. | 
| 14:34:50 | disruptek | but you know that.  you and i already had that discussion. | 
| 14:35:00 | * | solitudesf joined #nim | 
| 14:35:04 | Araq | so please help my memory | 
| 14:35:14 | disruptek | well, i feel that stdlib is about the compiler. | 
| 14:35:18 | * | ertp07 quit (Ping timeout: 245 seconds) | 
| 14:35:41 | federico3 | Araq: did you summarize the idea somewhere? | 
| 14:35:50 | FromDiscord | <mratsim> It's not about package managers it's about API. As long as core API and data format (.nimble file) is the same, competing managers will be interoperable | 
| 14:35:57 | disruptek | yes. | 
| 14:36:06 | disruptek | but that api is too poorly defined right now. | 
| 14:36:11 | FromDiscord | <mratsim> there will be period where innovations to the API (say lock files) will only be supported in one implementation | 
| 14:36:16 | Araq | federico3: haven't you seen https://github.com/nim-lang/RFCs/issues/173 ? | 
| 14:36:38 | FromDiscord | <mratsim> but hopefully either they converge, or one disappears | 
| 14:36:45 | * | ertp07 joined #nim | 
| 14:37:00 | federico3 | no | 
| 14:37:06 | clyybber | mratsim: What core API/data format does a pkg really need? version, name and dependencies. I guess | 
| 14:37:23 | FromDiscord | <Chiqqum_Ngbata> Personal opinion, small stdlib with great documentation. Things like cligen /might/ be a good idea to ship with nim. At a certain point the standard library probably doesn't need to grow, right? | 
| 14:37:32 | FromDiscord | <Chiqqum_Ngbata> Is it a common complaint that the standard library isn't featureful enough? | 
| 14:38:00 | disruptek | i'd prefer that the stdlib shrank, honestly.  the larger nim grows, the less constrained it should be by its stdlib. | 
| 14:38:04 | FromDiscord | <arnetheduck> I generally find it pretty confusing that `nim` looks for libraries all over the place in magic folders - that's the kind of stuff I'd want my package manager to take care of - specifically, if the package manager is managing paths, `nim` itself should definately not add magic lookup paths to the mix, so that I don't accidentally include some "rogue" code | 
| 14:38:19 | disruptek | yes, it drives me nuts. | 
| 14:38:25 | clyybber | concur | 
| 14:38:28 | FromDiscord | <arnetheduck> lots of us think the std lib is way too big | 
| 14:38:44 | * | ertp07 quit (Read error: Connection reset by peer) | 
| 14:38:53 | FromGitter | <alehander42> Araq i dont say distribution is bad, just that a people dont want deps thing is not true imo | 
| 14:38:56 | disruptek | if it's hard to find good 3rd-party nim code, that's a separate issue. | 
| 14:38:56 | FromDiscord | <Chiqqum_Ngbata> (Being relatively new to nim I sympathize with that idea) | 
| 14:39:04 | clyybber | I think the stdlib tries to do too much, but then doesn't fully go with it. I think we should cut off modules that are better implemented elsewhere. | 
| 14:39:13 | FromDiscord | <arnetheduck> also, it's certainly too big for the current community to maintain leading to low quality overall | 
| 14:39:14 | disruptek | yes. | 
| 14:39:41 | disruptek | the fact that an implementation exists is not a high enough barrier to entry into the stdlib. | 
| 14:39:52 | FromDiscord | <mratsim> I think that's the main issue. there are stuff that should be in the std lib but are not (big ints, not like a big int API is controversial) | 
| 14:40:02 | disruptek | and the reliance upon the stdlib means you are forever relying upon those low-barrier-to-entry implementations. | 
| 14:40:02 | FromDiscord | <arnetheduck> but more importantly, it's a slow and inefficient development model and holds nim itself back | 
| 14:40:15 | disruptek | yep. | 
| 14:40:17 | FromGitter | <alehander42> evolvng stdlib can be done with a distro, but also with just having wannabe modules under experimental/ | 
| 14:40:21 | FromDiscord | <mratsim> and some stuff that may benefit from agility in the design space (streams) | 
| 14:40:21 | FromGitter | <alehander42> or just with rfc-s | 
| 14:40:45 | disruptek | a distribution really has nothing to do with nim/compiler. | 
| 14:40:54 | disruptek | just let the community build that. | 
| 14:41:00 | disruptek | as needed. | 
| 14:41:03 | disruptek | as desired. | 
| 14:41:34 | FromDiscord | <mratsim> but the thing we need it's just that everyone knows there is a way to improve and potentially replace a standard library and we will not stay with those for 1à years (aka Python 2) | 
| 14:41:34 | Araq | that's a bit like saying "let the community fix nimble, it's open source" | 
| 14:41:39 | disruptek | to me, the important thing is to put up signs that say, "don't use ropes; they're slow", or "don't use coro; it's getting pulled out soon" | 
| 14:41:53 | FromDiscord | <mratsim> yes exactly disruptek: managing expectations | 
| 14:41:58 | disruptek | my opinion on nimble is well-documented. | 
| 14:42:07 | disruptek | nimble, n: somehow, the opposite of agile. | 
| 14:43:22 | clyybber | Araq: I would say that ;p | 
| 14:43:45 | clyybber | And the community does, apparently. | 
| 14:44:04 | Araq | if anything shashlick does. | 
| 14:44:09 | * | ertp07 joined #nim | 
| 14:44:10 | Araq | :-) | 
| 14:44:22 | clyybber | praise shashlick | 
| 14:44:27 | disruptek | PRAISE | 
| 14:44:30 | clyybber | tasty | 
| 14:44:47 | disruptek | where is ol' shashlick? | 
| 14:46:00 | clyybber | Araq: Is it intended that we don't infere the discriminator? And instead error with: | 
| 14:46:14 | clyybber | cannot prove that its safe to initalize with the runtime value for the discriminator | 
| 14:46:38 | clyybber | s/intended/intentional | 
| 14:46:39 | FromDiscord | <mratsim> use Foo(kind: myKind, value: value, ...) | 
| 14:46:45 | FromDiscord | <mratsim> that was changed in 1.0 | 
| 14:46:53 | Araq | a custom error message for this case? yes, that means it's intentional. | 
| 14:47:01 | disruptek | changed in 0.20.  grrr. | 
| 14:47:21 | clyybber | Araq: But the error message is a bit off, it says runtime value for discriminator | 
| 14:47:21 | disruptek | but hardly worth complaining about in the grand scheme of things. | 
| 14:47:29 | clyybber | But I don't provide the value at all. | 
| 14:47:49 | FromDiscord | <mratsim> it's the same thing as uninitialized objects | 
| 14:47:55 | FromDiscord | <mratsim> it might contain garbage | 
| 14:48:14 | clyybber | mratsim: I'm talking about `Foo(value: value)` | 
| 14:48:14 | Zevv | doesn't nim zeromem *everything* always? | 
| 14:48:17 | FromDiscord | <mratsim> though it's a bit annoying when you want to use case object with lazy initialization | 
| 14:48:26 | clyybber | Where the presence of value could be used to infer the kind. | 
| 14:48:33 | disruptek | yes, that's what he's working on in the compiler right now. | 
| 14:48:35 | clyybber | Zevv: bout to change that :D | 
| 14:48:46 | Zevv | wow for performance reasons, right? | 
| 14:49:00 | clyybber | for default values rather | 
| 14:49:25 | clyybber | there is actually code in the compiler to remove unneccessary inits with the help of the dfa but its disabled | 
| 14:49:26 | FromDiscord | <mratsim> zero init is good, it prevents a lot of bug and exploits | 
| 14:49:33 | Zevv | ah ok. So my profiler #1 memsets() will now be replaced by memcpys() :) | 
| 14:49:52 | FromDiscord | <mratsim> There is probably a way to divide the memset by 2 😛 | 
| 14:50:11 | FromDiscord | <mratsim> I don't remember the trigger but for some datastructures memset is done twice | 
| 14:50:34 | disruptek | what i'd really like is to hoist my lets to definitions at the top of the block and then let me assign them values once in one of N spots in the block. | 
| 14:50:42 | clyybber | Araq: It's rather easy to make it infer the discriminator and is a safe feature. | 
| 14:50:57 | disruptek | rather than making me use a var. | 
| 14:51:30 | clyybber | disruptek: Yeah I thought about something like that in general, like immutability after the first use | 
| 14:51:41 | clyybber | Or in a more general sense after n uses | 
| 14:52:06 | disruptek | after 7 uses i just want it to call the destructor. | 
| 14:52:23 | disruptek | also, make sure there's no way for me to measure uses. | 
| 14:52:28 | FromDiscord | <mratsim> let foo = block: ...long code block... | 
| 14:52:47 | clyybber | what do you ppl think: Should the compiler infer the discriminator kind where its inferrable? | 
| 14:53:02 | clyybber | Pro: It's convinient | 
| 14:53:11 | clyybber | Con: It could be a bit confusing with default fields | 
| 14:53:17 | FromDiscord | <mratsim> ideally, I would prefer if we do not have to spell the name of the field for constructor | 
| 14:53:46 | FromDiscord | <mratsim> Foo(kind: mykind, value: myvalue) is very noisy compared to Foo(mykind, myvalue) | 
| 14:54:04 | disruptek | maybe it infers it but you have to add a pragma if defaults are enabled, to say "i know what i'm doing". | 
| 14:54:04 | clyybber | Thats a seperate issue | 
| 14:54:05 | FromDiscord | <mratsim> that would save much more typings and noise than inferring the discriminator kind | 
| 14:54:26 | FromDiscord | <mratsim> and that would also avoid issues if we want to change the syntax of case objects to allow some common fileds I think | 
| 14:54:34 | FromDiscord | <mratsim> fields* | 
| 14:54:45 | clyybber | Yeah, also a seperate issue tho :p | 
| 14:54:56 | disruptek | that noise is just noise, though.  doesn't affect the boilerplate we're currently saddled with. | 
| 14:55:01 | * | jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…) | 
| 14:55:01 | disruptek | no semantics to it. | 
| 14:57:49 | clyybber | disruptek: The issue of the idea in conjucntion with default fields is that, when I write `Foo(valuethatonlyexistswhenkindis1: 3)` and the default value of kind is 0, should I error then, because we are in the wrong branch or should I overwrite the default kind with the value I can infer. | 
| 14:58:10 | leorize | error please | 
| 14:58:21 | disruptek | error. | 
| 14:58:36 | clyybber | Ok, so I'll just improve the current error msg. | 
| 14:59:05 | clyybber | I take that as you don't want to infer the kind even if it doesn't have a default value? | 
| 14:59:15 | disruptek | i have an issue somewhere for a problem where it actually errors and shouldn't, but maybe jasper fixed that. | 
| 14:59:20 | shashlick | Am on work calls, will have to catch up later | 
| 15:00:41 | disruptek | if it doesn't have a default value, we need to error or at least warn because discriminator objects may eventually support fields shared between variants. | 
| 15:00:58 | disruptek | although i guess you could error when that happens instead. | 
| 15:01:23 | clyybber | disruptek: Yeah, I'm only talking about cases where its not ambiguous | 
| 15:01:31 | * | solitudesf quit (Ping timeout: 268 seconds) | 
| 15:02:25 | clyybber | disruptek, leorize: So do you agree that I should infer when its not ambiguous and error when the inferred value is at odds with the default value? | 
| 15:02:41 | disruptek | https://github.com/nim-lang/Nim/issues/11428 | 
| 15:02:44 | clyybber | Or should I just not infer at all? | 
| 15:03:30 | * | solitudesf joined #nim | 
| 15:03:46 | disruptek | it seems pretty convenient in the code that i'm writing these days. | 
| 15:04:48 | Araq | clyybber: there is already inference in a 'case' statement context | 
| 15:05:00 | Araq | iirc, never tried it myself | 
| 15:05:06 | * | floppydh quit (Quit: WeeChat 2.6) | 
| 15:05:29 | Araq | disruptek: I'm still waiting for your reply | 
| 15:05:30 | disruptek | can't seem to find the issue i had in mind, but the behavior changed in a subtle way. | 
| 15:05:43 | disruptek | Araq: wrt what? | 
| 15:06:20 | Araq | "you do know how to manage the stdlib already" | 
| 15:06:31 | disruptek | i feel a little dirty saying it, but yes, i want a smaller, stricter, more naive api from the compiler wrt module search space. | 
| 15:06:32 | clyybber | Araq: https://play.nim-lang.org/#ix=20pI doesn't work | 
| 15:07:00 | disruptek | i agree with everything you said about the stdlib. | 
| 15:07:01 | PMunch | clyybber, the images are being rebuilt, so the latest version in the playground is 0.17.0 | 
| 15:07:11 | PMunch | Just FYI | 
| 15:07:14 | clyybber | Oh | 
| 15:07:26 | clyybber | Well the issue is reproducable in 1.0.99 too | 
| 15:07:31 | clyybber | or whatever devel is rn | 
| 15:07:41 | Araq | disruptek: ok, so no replacement for sugar.lc in the stdlib | 
| 15:07:52 | Araq | we deprecate lc, then we remove it | 
| 15:08:30 | disruptek | if you're going to remove it, the least you should do is move it to nimble.  but, yeah. | 
| 15:08:47 | disruptek | think about it. | 
| 15:08:56 | disruptek | you're talking about not wanting to carry code that you don't use. | 
| 15:09:02 | disruptek | why would you? | 
| 15:09:03 | * | nixfreak_work quit (Ping timeout: 260 seconds) | 
| 15:09:10 | Araq | I want my for loop expressions. alehander42 wrote the code | 
| 15:09:21 | disruptek | so put them in. | 
| 15:09:29 | clyybber | Araq: Is that snippet supposed to work or not? | 
| 15:09:43 | Araq | clyybber: no. | 
| 15:09:50 | disruptek | it would be crazy to create a whole programming language and then not use any of the code people write in it to make it even better. | 
| 15:09:52 | Araq | that's not the inference I was talking about. | 
| 15:10:27 | clyybber | Araq: Not sure I understand how in case statements one can infer | 
| 15:10:46 | clyybber | Ah | 
| 15:11:00 | clyybber | You mean infer properties for the code inside the branches? | 
| 15:11:04 | disruptek | because the clauses are known. | 
| 15:11:31 | clyybber | I'm talking about the opposite thing, in object constructors. Infer the discriminator from the branches' fields | 
| 15:11:33 | shashlick | some quick comments - package local deps has a solution - I will document later today and share for any feedback | 
| 15:11:43 | shashlick | implementation isn't too hard from initial review, will need to run some tests | 
| 15:11:57 | shashlick | the main thing is ensuring backwards compatibility | 
| 15:12:26 | shashlick | re: simplifying Nim's awareness of paths, a nim.cfg solution seems viable but the question is how to ensure it is backwards compatible again | 
| 15:12:34 | Araq | clyybber: https://play.nim-lang.org/#ix=20pJ unfortunately this doesn't compile | 
| 15:12:41 | shashlick | that will get figured out as well, it isn't too complicated | 
| 15:12:48 | Araq | I thought it would, bummer :-( | 
| 15:13:01 | disruptek | that is exactly the issue, Araq. | 
| 15:13:47 | disruptek | shashlick: all we need is a --pleaseReallyDontLookAnywhereElse | 
| 15:13:51 | * | kungtotte joined #nim | 
| 15:14:00 | shashlick | the main thing I'd like everyone to focus on is that nimble can be fixed and improved and what we really need is a clear path forward on how to improve it while providing stability for the community | 
| 15:14:37 | shashlick | @disruptek, noted and it isn't really a hard problem - there's a variety of ways to improve the status quo | 
| 15:15:08 | * | PMunch quit (Quit: Leaving) | 
| 15:15:12 | disruptek | yes, when you have a shashlick in your back pocket, anything is possible. 😍 | 
| 15:15:20 | clyybber | One consistency problem I see with infering the kind is that one could argue that the default for every kind is 0 and thus should be treated like a default value (which it isn't currently) | 
| 15:15:39 | shashlick | re: the Nim distro topic, I feel that's not really a big issue in my mind | 
| 15:15:55 | shashlick | stdlib needs to be lean and maintainable and I like the important packages idea | 
| 15:16:05 | clyybber | Araq: Wdyt discriminator inference yay or nay or later maybe? | 
| 15:16:07 | shashlick | we can simply add a meta package that install all important packages | 
| 15:16:18 | Araq | clyybber: if in doubt, leave it out. | 
| 15:16:23 | shashlick | why do we need to take it on as a core effort, I'm not sure | 
| 15:16:27 | clyybber | fine | 
| 15:16:59 | shashlick | we can vote and add good packages to the stdlib if there's interest but if we want to keep things lean, I'm fine with that | 
| 15:17:18 | shashlick | package management can be the goto way to pull in what you need | 
| 15:17:26 | disruptek | you can do meta-packages today, so that's a done deal, afaiac. | 
| 15:17:29 | shashlick | and we can innovate in terms of enabling binary packages | 
| 15:18:07 | shashlick | like pip allows downloading pre-built binaries | 
| 15:18:32 | shashlick | I know there's a bunch of issues but with some focus on nimble, we can take it places | 
| 15:18:59 | clyybber | what does one need binary packages for? | 
| 15:19:00 | shashlick | I just want to have the ability to move faster somehow | 
| 15:19:16 | * | drewr joined #nim | 
| 15:19:43 | shashlick | you don't need any deps for that package installed | 
| 15:20:06 | clyybber | But thats only useful for executables right? | 
| 15:20:24 | shashlick | we can just as well pull in static libs and dlls | 
| 15:20:38 | clyybber | And embed them into the binary? | 
| 15:20:42 | shashlick | right now, Nim only relies on source distribution, we should look into prebuilt | 
| 15:21:01 | clyybber | Seems unneccessary IMO | 
| 15:21:27 | disruptek | start with the nail, not the hammer. | 
| 15:21:34 | shashlick | that's how C/C++ works - sure you can build your own copy | 
| 15:21:44 | shashlick | but there's pre-built stuff in the OS ready to use | 
| 15:21:53 | clyybber | Why would I install the dll dependency with my pkg manager when the user thats going to run my executable has to have it anyways? | 
| 15:21:57 | disruptek | we're talking about people who have C and Nim compilers.  do they need binaries? | 
| 15:22:16 | shashlick | and you don't care what torture that maintainer had to go thru to get it built, you don't inherit that problem | 
| 15:22:49 | clyybber | Umm, but build configurations can be shared | 
| 15:23:00 | clyybber | And that seems more sane than sharing random binaries | 
| 15:23:07 | shashlick | dependencies don't end at the package you nimble install - it can also install a variety of things | 
| 15:23:10 | clyybber | then embedding them into the binary (because thats the only use) | 
| 15:23:16 | shashlick | and every end user has to deal with that | 
| 15:23:17 | disruptek | but if you care so much about that tortue, why don't you contribute your binary distributions to libarchive and reach a much larger audience? | 
| 15:23:39 | disruptek | don't hide your light under a bushel, shashlick. | 
| 15:23:47 | disruptek | nim can afford to share you with the rest of the world. | 
| 15:23:47 | clyybber | I don't get why nimble cares about binaries/executables at all, | 
| 15:24:19 | disruptek | clyybber: because if it didn't, `nimble develop` would work correctly for most of cli tools.  and we can't have that. | 
| 15:24:27 | Araq | clyybber: mostly because some packages come with helper binaries, eg. 'karun' from Karax | 
| 15:24:30 | shashlick | today, if anyone wants to use nimarchive, they have to build the whole thing and deal with the nuances of CI | 
| 15:24:47 | clyybber | ah | 
| 15:24:49 | shashlick | I added it to choosenim and all the learnings had to be applied to the choosenim CI | 
| 15:25:16 | shashlick | nimble does not support installing binaries unless they are checked into source control | 
| 15:25:26 | shashlick | this is not how it is with pypi for example | 
| 15:25:42 | shashlick | and the entire world lives with shared and static libs, it doesn't need some new justification | 
| 15:27:27 | FromGitter | <zacharycarter> sokol_gfx and sokol_app bindings are working \o/ | 
| 15:27:30 | disruptek | it's open to debate, but most importantly, it doesn't seem like the thing that's holding back nim adoption. | 
| 15:27:32 | FromGitter | <zacharycarter>  (https://files.gitter.im/nim-lang/Nim/Rkbk/image.png) | 
| 15:28:23 | disruptek | i want one of those gold nims you got there. | 
| 15:29:15 | shashlick | If Nim made it easier to create Dynamic libraries that can be used by other communities, it would make it even more popular than it is today | 
| 15:30:22 | FromGitter | <zacharycarter> is this ever coming: `import lib/[sokol_app as sapp, sokol_gfx as sgfx]` | 
| 15:30:45 | federico3 | shashlick: *yes* | 
| 15:30:50 | disruptek | you can't say that you want us to improve deficiencies in nimble and then list a bunch of greenfield features that you want to work on. | 
| 15:32:56 | shashlick | Step by step | 
| 15:33:00 | jxy | pypi supports very limited amount of arch/os and goes crazy with non-standard compiler/library locations | 
| 15:33:32 | shashlick | But all related  to the deps | 
| 15:33:35 | * | solitudesf quit (Ping timeout: 268 seconds) | 
| 15:34:18 | * | solitudesf joined #nim | 
| 15:34:54 | jxy | leaving deps to system/package manager would be better | 
| 15:34:59 | Araq | zacharycarter: can't see why not | 
| 15:36:13 | FromGitter | <zacharycarter> sweet :D | 
| 15:36:35 | clyybber | Btw, why array syntax instead of tuple? | 
| 15:37:05 | clyybber | `import lib/(sokol_app as sapp, sokol_gfx as sgfx)` ? | 
| 15:37:21 | clyybber | Hmm, nevermind | 
| 15:37:44 | FromGitter | <zacharycarter> man supercell' | 
| 15:37:45 | clyybber | The current one looks cooler | 
| 15:38:18 | clyybber | no entry for supercell in the manual | 
| 15:38:33 | FromGitter | <zacharycarter> extending it in any way takes a lot of work - it's pretty refreshing to come home and work on my Nim project | 
| 15:38:51 | FromGitter | <zacharycarter> heh - I wish there was a manual for it, it'd make my job easier | 
| 15:39:51 | FromGitter | <zacharycarter> oh - I realize now, because I typed in man supercell at first haha | 
| 15:39:57 | shashlick | @jxy good luck getting every distro to pick up Nim let alone packages | 
| 15:41:39 | clyybber | zacharycarter: What were you intending to write? | 
| 15:41:47 | clyybber | The edits don't appear here I think | 
| 15:42:11 | FromGitter | <Clyybber> ah | 
| 15:42:28 | FromGitter | <Clyybber> @zacharycarter are you working at supercell now? | 
| 15:43:34 | FromGitter | <zacharycarter> no - Frogmind but we use supercell's backend from clash of clans / royale | 
| 15:44:01 | clyybber | Oh cool, thats the badland devs right? | 
| 15:44:05 | FromGitter | <zacharycarter> yup | 
| 15:44:23 | clyybber | I remember playing that game with 15 fps or so on my 480p galaxy y phone :D | 
| 15:44:44 | FromGitter | <zacharycarter> haha :P that's more playing of it than I've done | 
| 15:45:16 | FromGitter | <zacharycarter> I've only played the games that we're working on now, but I've positive things about badlands | 
| 15:46:17 | clyybber | what games are you working on rn? | 
| 15:46:35 | FromGitter | <zacharycarter> Badland Brawl and Rumble Stars | 
| 15:46:52 | FromGitter | <zacharycarter> they've already globally launched, and then we have one in soft launch called Feast Island | 
| 15:47:01 | jxy | shashlick: maybe leave the external deps to system package manager | 
| 15:47:25 | clyybber | zacharycarter: Mulitplayer games | 
| 15:47:28 | jxy | nimble needs a robust way to check the existing shared libraries | 
| 15:47:41 | clyybber | also I have to confess, I never bought badlands, used luckypatcher :p | 
| 15:48:01 | * | jxy quit (Quit: leaving) | 
| 15:48:07 | FromGitter | <zacharycarter> clyybber: yup! the backend scales well but it's a complex beast, especially with the physics simulations | 
| 15:48:30 | clyybber | I can imagine. | 
| 15:48:48 | clyybber | do you use your vector graphics? | 
| 15:48:55 | FromGitter | <zacharycarter> I think I'm also rusty working on large object-oriented codebases | 
| 15:49:49 | FromGitter | <zacharycarter> hmm - I haven't looked at the art assets too closely yet, I'm not sure what format they're in and how they're being rendered | 
| 15:50:19 | FromGitter | <zacharycarter> about all I've done with the game client is get it to run, right now I'm working on loading game settings from a database rather than files | 
| 15:50:42 | clyybber | Ah cool. I was always wondering | 
| 15:50:52 | clyybber | mobile games have to be fairly efficient | 
| 15:51:00 | clyybber | and still most of them use vector graphics | 
| 15:51:01 | FromGitter | <zacharycarter> which I thought I had solved today, but the past two days have been digging through code all day, thinking I've found a solution, only to realize later that my solution won't work and then starting over | 
| 15:51:14 | FromGitter | <zacharycarter> yeah - I wouldn't be surprised if that was the case | 
| 15:52:08 | clyybber | poor config files have to die. | 
| 15:52:14 | FromDiscord | <Rika> dont know where to ask, but i'd appreciate a review of this code if no one minds https://github.com/de-odex/circa/blob/feature/ordered-mods/src/circa/mods.nim | 
| 15:52:30 | clyybber | but I guess its fair in a multiplayer focused mobile game, dont want people to mess around too much | 
| 15:53:00 | FromGitter | <zacharycarter> well - it's not great when adjusting liveops requires a whole new client and server build | 
| 15:53:19 | FromGitter | <zacharycarter> like scheduling a new event or something | 
| 15:54:31 | clyybber | Rika: Looks fine, but use const instead of a global let if possible. | 
| 15:54:43 | clyybber | Rika: Are you building an osu! client? | 
| 15:56:17 | FromGitter | <zacharycarter> what is osu? | 
| 15:56:48 | clyybber | a rythm game | 
| 15:56:54 | FromDiscord | <Winton> Hi | 
| 15:56:54 | FromGitter | <zacharycarter> ah | 
| 15:57:08 | clyybber | where you move the cursor a lot | 
| 15:57:30 | FromDiscord | <Winton> Some library to create interface | 
| 16:00:11 | * | jxy joined #nim | 
| 16:01:41 | FromDiscord | <Rika> clyybber, shit ive been found out | 
| 16:02:17 | FromDiscord | <Rika> its just a utility library, not for recreating osu but for calculating things like pp or replay stuff | 
| 16:02:52 | FromDiscord | <Rika> its actually further in development than what's shown in the repo, i just haven't sorted out all of the commits because its really taxing to keep an organized history | 
| 16:10:47 | FromDiscord | <Rika> clyybber, is there no issue with the way i create a table for the mod to string mapping? | 
| 16:12:42 | FromDiscord | <Winton> clyybber | 
| 16:12:43 | FromDiscord | <Winton> ? | 
| 16:13:40 | clyybber | Winton ? | 
| 16:13:59 | * | NimBot joined #nim | 
| 16:14:35 | clyybber | Rika: No issue | 
| 16:15:28 | clyybber | But when you know the mappings at compiletime anyways you can just use string enums | 
| 16:15:38 | disruptek | so is there a plan for this? https://github.com/nim-lang/Nim/issues/11428 | 
| 16:15:52 | disruptek | just curious. | 
| 16:16:21 | * | LargeEpsilon_ joined #nim | 
| 16:16:51 | * | solitudesf quit (Quit: Leaving) | 
| 16:17:06 | clyybber | disruptek: Default fields are one step | 
| 16:17:09 | * | solitudesf joined #nim | 
| 16:17:15 | clyybber | the next steps should follow | 
| 16:18:08 | disruptek | cool. | 
| 16:19:30 | FromDiscord | <Rika> clyybber, i need both long names and short names ("HalfTime", "ht") | 
| 16:20:02 | * | LargeEpsilon quit (Ping timeout: 240 seconds) | 
| 16:20:43 | * | ertp07 quit (Ping timeout: 245 seconds) | 
| 16:21:04 | * | LargeEpsilon_ quit (Ping timeout: 268 seconds) | 
| 16:25:00 | clyybber | Rika: Ah, yeah seems appropriate then. | 
| 16:25:44 | clyybber | Rika: I think you shoul use `let` for the table instead of `const` though, but I am not sure why. Araq may chime in and explain | 
| 16:26:21 | FromDiscord | <Rika> the table needs let afaik | 
| 16:26:52 | clyybber | Ah, ok. Then its all fine. | 
| 16:27:25 | clyybber | Rika: its gone | 
| 16:27:27 | clyybber | the link is dead | 
| 16:28:17 | clyybber | ah, I see. YOu just cleaned up the repo structure a bit | 
| 16:28:19 | * | jjido joined #nim | 
| 16:28:20 | FromDiscord | <Rika> ah, i deleted the branch | 
| 16:28:30 | FromDiscord | <Rika> i merged it already into devel | 
| 16:28:53 | clyybber | I see | 
| 16:29:05 | FromDiscord | <Rika> since you and i am the only ones reviewing the code, there isnt much to do with PRs yet | 
| 16:30:12 | * | ertp07 joined #nim | 
| 16:34:35 | * | sagax quit (Quit: Konversation terminated!) | 
| 16:34:56 | * | sagax joined #nim | 
| 16:36:57 | shashlick | @jxy - getHeader in nimterop does that for you | 
| 16:37:36 | shashlick | It can search the standard shared and static libs | 
| 16:38:16 | * | jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…) | 
| 17:03:09 | * | Ekho quit (Quit: An alternate universe was just created where I didn't leave. But here, I left you. I'm sorry.) | 
| 17:03:59 | * | jjido joined #nim | 
| 17:04:03 | * | Ekho joined #nim | 
| 17:08:46 | * | Ekho quit (Max SendQ exceeded) | 
| 17:12:49 | * | jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…) | 
| 17:15:01 | FromDiscord | <Lantos> so guys what irc do you use? | 
| 17:17:20 | lqdev[m] | freenode#nim | 
| 17:19:03 | clyybber | I think he meant irc client :) | 
| 17:19:08 | clyybber | I use weechat | 
| 17:20:25 | lqdev[m] | clyybber: I know he probably meant that, but IRC is IRC and an IRC client is an IRC client ;) | 
| 17:21:04 | FromGitter | <alehander42> hm why does | 
| 17:21:04 | FromGitter | <alehander42> withPackageName | 
| 17:21:12 | FromGitter | <alehander42> not return the nimcahe path + .c file to me | 
| 17:21:27 | * | Ekho joined #nim | 
| 17:21:32 | * | Ekho quit (Max SendQ exceeded) | 
| 17:21:42 | FromGitter | <alehander42> maybe i should pass .cfilename | 
| 17:21:43 | FromGitter | <alehander42> sorry | 
| 17:22:26 | FromGitter | <alehander42> hm withPackageName(p.config, p.module.cfilename) still returns /home/al/codetracer/examples/@mfind.nim | 
| 17:22:43 | FromGitter | <alehander42> i expect something like <path to nimcache>/mfind.c | 
| 17:27:57 | FromDiscord | <Lantos> how do I connect to the nim in weechat | 
| 17:27:58 | FromDiscord | <Lantos> /server add gitter irc.gitter.im -username=user -password=***** -autoconnect | 
| 17:28:10 | FromDiscord | <Lantos> how do I connect to the nim in weechat | 
| 17:28:10 | FromDiscord | <Lantos> ```/server add gitter irc.gitter.im -username=user -password=***** -autoconnect``` | 
| 17:28:54 | * | clyybber quit (Ping timeout: 268 seconds) | 
| 17:29:27 | * | Ekho joined #nim | 
| 17:29:31 | * | filcuc quit (Quit: KVIrc 5.0.0 Aria http://www.kvirc.net/) | 
| 17:30:34 | * | clyybber joined #nim | 
| 17:31:18 | FromGitter | <LantosTG> Oh | 
| 17:32:15 | narimiran | connect to freenode | 
| 17:35:05 | disruptek | gah today's code is creepier than usual. | 
| 17:35:11 | FromDiscord | <Lantos> whats the nickserve for nim? | 
| 17:35:41 | * | clyybber quit (Ping timeout: 268 seconds) | 
| 17:35:46 | leorize | is there proc in Nim for removing diacritics from utf-8 strings? | 
| 17:38:32 | disruptek | you could do it with unidecode i guess. | 
| 17:39:49 | Zevv | I doubt Nim has the tables onboard for that | 
| 17:40:03 | disruptek | nope. | 
| 17:40:10 | * | anon joined #nim | 
| 17:40:21 | anon | hello | 
| 17:40:31 | * | anon is now known as LantosTG | 
| 17:40:37 | LantosTG | :) | 
| 17:40:46 | narimiran | LantosTG: welcome :) | 
| 17:41:00 | * | LargeEpsilon_ joined #nim | 
| 17:41:02 | disruptek | you made it, huh? | 
| 17:41:07 | LantosTG | made it | 
| 17:41:16 | disruptek | what's good about weechat? | 
| 17:41:30 | LantosTG | took the words out of my mouth | 
| 17:42:00 | Zevv | leorize: just map 'àáâãäçèéêëìíîïñòóôõöùúûüýÿÀÁÂÇÈÉÊËÌÍÎÏÑÒÓÔÕÖÙÚÛÜÝ' to 'aaaaaceeeeiiiinooooouuuuyyAAAAACEEEEIIIINOOOOOUUUUY' :) | 
| 17:42:25 | disruptek | probably the best solution. | 
| 17:42:25 | leorize | nim has an unidecode table :P | 
| 17:42:30 | leorize | looks like I can use that | 
| 17:42:35 | LantosTG | can you @disruptek | 
| 17:42:40 | Zevv | "an usnicode table" | 
| 17:42:46 | Zevv | there's *tons* of unicode tables, but nim only has a few | 
| 17:43:00 | disruptek | you need my new renderer, `disruptex`. | 
| 17:43:17 | leorize | Zevv: that mapping won't work for my language :P | 
| 17:45:29 | * | LargeEpsilon_ quit (Read error: Connection reset by peer) | 
| 17:45:47 | narimiran | leorize: what weird language is that? | 
| 17:46:01 | narimiran | oh, it won't work for mine too :D | 
| 17:46:14 | Zevv | pfff last time I helped any of you | 
| 17:47:14 | narimiran | Zevv: how could you missed čćšđž? | 
| 17:47:27 | Zevv | easy :) | 
| 17:47:35 | narimiran | :Đ | 
| 17:49:02 | leorize | spot the differences: Đ Ð | 
| 17:49:14 | * | Trustable joined #nim | 
| 17:49:19 | narimiran | i can't | 
| 17:49:44 | narimiran | is one icelandic and the other one ex-yugoslavian? | 
| 17:51:01 | narimiran | i know that iceland has ð, whose capital is Ð. and ex-yu has đ whoce capital is Đ | 
| 17:51:06 | leorize | yea | 
| 17:51:17 | narimiran | how many internet points did i win? | 
| 17:51:57 | narimiran | and what is your language, leorize? ;) | 
| 17:52:43 | leorize | try to guess :) it should appear in one or two of my repos somewhere on the internet :P | 
| 17:52:50 | leorize | mine* | 
| 17:53:21 | FromGitter | <Willyboar> This αεδφθψωξ | 
| 17:53:30 | FromGitter | <Willyboar> ??? | 
| 17:54:00 | narimiran | is that.... aedftfox? | 
| 17:54:02 | disruptek | that's my dad's name. | 
| 17:54:50 | narimiran | *aedftpox | 
| 17:56:01 | narimiran | leorize: descriptions for all your repos are written in english. thanks for the hint, it really helped :P | 
| 17:56:33 | * | ertp07 quit (Ping timeout: 245 seconds) | 
| 17:57:37 | Zevv | Why the hell did I get some CDN page checking my browser when going to nim playground? | 
| 17:57:57 | narimiran | maybe somebody is trying to DDOS the playground? | 
| 17:58:12 | Zevv | yeah but is it behind cloudflare or something?! | 
| 17:58:13 | narimiran | because exactly that happened yesterday with that N++ stuff | 
| 17:58:23 | Zevv | anyway, here is the thingy remover: https://play.nim-lang.org/#ix=20qu | 
| 17:58:30 | Zevv | scroll right to find the 'submit' button :) | 
| 17:59:07 | leorize | I got 502 :P | 
| 17:59:41 | LantosTG | exit | 
| 17:59:45 | * | LantosTG quit (Quit: WeeChat 1.9.1) | 
| 18:00:03 | leorize | weechat 1.9.1? how old is that? | 
| 18:02:21 | disruptek | remember, PMunch is rebuilding it.  he said it'd be running an old version of the container. | 
| 18:02:44 | Zevv | ah right | 
| 18:03:19 | federico3 | leorize: only 2 years actually | 
| 18:03:38 | * | jfoutaise quit (Ping timeout: 240 seconds) | 
| 18:05:47 | * | jfoutaise joined #nim | 
| 18:10:16 | * | kungtotte quit (Read error: Connection reset by peer) | 
| 18:11:05 | * | ertp07 joined #nim | 
| 18:11:41 | * | nsf joined #nim | 
| 18:12:26 | * | ertp07 quit (Read error: Connection reset by peer) | 
| 18:14:19 | * | rockcavera quit (Remote host closed the connection) | 
| 18:15:03 | leorize | narimiran: well I do have more than just github :P | 
| 18:15:29 | leorize | but probably I've taken down things with my name on it :P | 
| 18:15:53 | disruptek | easy: vimscript is your native tongue. | 
| 18:16:08 | * | fredrik92 joined #nim | 
| 18:18:43 | * | couven92 quit (Disconnected by services) | 
| 18:18:51 | * | fredrik92 is now known as couven92 | 
| 18:19:08 | * | fredrik92 joined #nim | 
| 18:22:59 | * | clyybber joined #nim | 
| 18:23:10 | * | ertp07 joined #nim | 
| 18:24:24 | narimiran | leorize: nothing useful on gitlab either. i give up. | 
| 18:25:52 | clyybber | I believe its what disruptek said | 
| 18:25:57 | clyybber |  | 
| 18:26:16 | disruptek | i think he just took his name down.  i saw it the other day. | 
| 18:26:49 | * | ertp07 quit (Client Quit) | 
| 18:32:56 | * | jken left #nim ("Leaving") | 
| 18:33:02 | * | jken joined #nim | 
| 18:39:00 | * | theelous3 joined #nim | 
| 18:42:34 | FromGitter | <Willyboar> @narimiran θ = theta , ψ = psi | 
| 18:42:42 | * | jjido joined #nim | 
| 18:43:29 | * | GordonBGood joined #nim | 
| 18:49:57 | GordonBGood | clyyber: sorry, grabbed some zz's: re: B/D, that's the Bacon/Dingle paper upon which Araq based the owned ref's of newruntime | 
| 18:50:16 | GordonBGood | NSorry, clyybber | 
| 18:50:28 | FromGitter | <awr1> i now have some free time again! | 
| 18:50:37 | FromGitter | <awr1> i'm updating choosenim to head and i'm getting this error | 
| 18:50:41 | FromGitter | <awr1> ... /usr/bin/ld: /home/awr/.cache/nim/nimsuggest_r/@m..@[email protected]: file not recognized: file truncated | 
| 18:50:50 | FromGitter | <awr1> should i just delete the nim cache folder | 
| 18:50:58 | disruptek | ctrl-alt-del | 
| 18:53:01 | clyybber | GordonBGood: Ah yeah, I remember | 
| 19:00:33 | Araq | GordonBGood, were you saying that 'up' needs to stay a 'ref' for your code to work? | 
| 19:02:29 | * | jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…) | 
| 19:04:42 | FromDiscord | <Lantos> anyone used https://github.com/genotrance/nimgraphql? | 
| 19:04:42 | FromDiscord | <Lantos> or some sort of graphql in nim ? | 
| 19:05:38 | * | sentreen_ joined #nim | 
| 19:08:11 | disruptek | Lantos: https://github.com/jdhorwitz/NimQL | 
| 19:08:16 | disruptek | haven't used it. | 
| 19:08:42 | disruptek | seems to be all of 3 lines long, of which all are comments. | 
| 19:09:03 | disruptek | tests pass though, so... | 
| 19:09:15 | disruptek | `doAssert(1 + 1 == 2)` | 
| 19:10:02 | * | sentreen quit (Ping timeout: 268 seconds) | 
| 19:10:08 | clyybber | the best code is that which isn't needed | 
| 19:10:17 | disruptek | no code is fast code. | 
| 19:10:29 | FromGitter | <awr1> deleting the folder worked | 
| 19:11:08 | clyybber | I detached all io from my PC, and now its freaking fast | 
| 19:11:17 | * | jjido joined #nim | 
| 19:11:25 | clyybber | also I might have solved NP P | 
| 19:11:50 | clyybber | (im writing this from inside) | 
| 19:12:42 | disruptek | i thought i smelled something burning. | 
| 19:12:42 | Araq | let N = 1 ==> NP == P. Simple. | 
| 19:13:04 | disruptek | awr1: welcome to the docker era of sysadmin. | 
| 19:14:55 | FromDiscord | <Lantos> lol disruptek you got me excited | 
| 19:15:22 | disruptek | me too.  i forked that package ages ago. | 
| 19:15:23 | shashlick | @Lantos - i wasn't able to recreate your nimgraphql issue | 
| 19:15:50 | shashlick | what version of gcc are you using? | 
| 19:16:06 | FromDiscord | <Lantos> are you the maintainer ? | 
| 19:16:40 | FromDiscord | <Lantos> ``` | 
| 19:16:41 | FromDiscord | <Lantos> Thread model: posix | 
| 19:16:41 | FromDiscord | <Lantos> gcc version 7.4.0 (Ubuntu 7.4.0-1ubuntu1~18.04.1) | 
| 19:16:41 | FromDiscord | <Lantos> ``` | 
| 19:17:15 | disruptek | nah, i usually sprinkle code among my comments, but it's about the same result -- trivial and similarly useless. | 
| 19:18:45 | GordonBGood | Araq: I got the test program to compile and run by manual lifting the smults proc out of the hamming iterator and the inner LazyList generator out so it wasn't nested... | 
| 19:19:48 | GordonBGood | So it now is able to find the upfield with less nesting, but while the program runs, the answers are wrong... | 
| 19:20:09 | Araq | :O | 
| 19:20:19 | disruptek | wrong answers fast.  some people pay a lot for that. | 
| 19:20:36 | Araq | GordonBGood, need to run it via valgrind | 
| 19:21:44 | shashlick | @Lantos - yep | 
| 19:22:43 | GordonBGood | There is something incomplete in the region of line 696 of lambdalifting.nim; even when upfield is found, I can't see where it returns a closure - makeClosure is never called out the bottom | 
| 19:22:53 | FromDiscord | <Lantos> do you need to run it with nim cpp  rather then nim c? | 
| 19:22:54 | shashlick | looks like your gcc is quite up to date, not sure what to do cause i have tested this on ubuntu | 
| 19:23:38 | shashlick | yep - https://github.com/genotrance/nimgraphql/blob/master/nimgraphql.nimble#L30 | 
| 19:23:38 | GordonBGood | Araq: valgrind?  I've never used it.  How do you set it up, any docs? | 
| 19:24:05 | FromDiscord | <Lantos> I'll give it a shot with cpp | 
| 19:24:12 | Araq | it's not for Windows | 
| 19:27:01 | disruptek | shashlick: your nimgraphql builds for me but it looks like some test data is missing. | 
| 19:28:07 | GordonBGood | Araq: valgrind's not for Windows?  Can't be compiled under MSYS2? | 
| 19:29:02 | Araq | forget MSYS2 | 
| 19:29:24 | Araq | I'll have a look at it soon. what's the status of --seqsv2? | 
| 19:29:28 | GordonBGood | Araq: anyway, if the bottom of the symToClosure proc in lambdalifting.nim isn't complete, it can't work, can it? | 
| 19:31:16 | shashlick | @disruptek - it is barebones | 
| 19:31:21 | FromDiscord | <Lantos> no longer getting the ast error. It build but getting data missing | 
| 19:31:38 | FromDiscord | <Lantos> Unhandled exception: cannot open: nimgraphql/test/kitchen-sink.graphql [IOError] | 
| 19:31:39 | FromDiscord | <Lantos>   [FAILED] parsing without schema support | 
| 19:31:39 | FromDiscord | <Lantos> /home/anon/Documents/nim/nimgraphql/tests/tnimgraphql.nim(26) tnimgraphql | 
| 19:31:39 | FromDiscord | <Lantos> /home/anon/.choosenim/toolchains/nim-1.0.0/lib/system/io.nim(667) readFile | 
| 19:31:39 | FromDiscord | <Lantos> | 
| 19:31:41 | FromDiscord | <Lantos>     Unhandled exception: cannot open: nimgraphql/test/schema-kitchen-sink.graphql [IOError] | 
| 19:31:41 | FromDiscord | <Lantos>   [FAILED] parsing with schema support | 
| 19:31:44 | FromDiscord | <Lantos> Error: execution of an external program failed: '/home/anon/Documents/nim/nimgraphql/tests/tnimgraphql ' | 
| 19:31:50 | FromDiscord | <Lantos> but I think I kknow where they are | 
| 19:31:57 | GordonBGood | Araq, seqv2 is coming along but I keep running into snags dealing with the difference of being object based rather than ptr (or ref?) based, requiring more "when" cases | 
| 19:31:58 | FromDiscord | <Lantos> its generated after nimble install isnt it? | 
| 19:33:07 | GordonBGood | I spent most of today your time investigating this ref counting, which actually helped as in digging into some of your patches I think I understand better what needs to be done | 
| 19:33:09 | Araq | GordonBGood, how is symToClosure incomplete? | 
| 19:33:31 | FromDiscord | <Lantos> [Suite] GraphQL Parsing Tests | 
| 19:33:31 | FromDiscord | <Lantos>   [OK] parsing without schema support | 
| 19:33:31 | FromDiscord | <Lantos>   [OK] parsing with schema support | 
| 19:34:53 | disruptek | oh, yeah.  works fine after i install it. | 
| 19:35:14 | disruptek | another gold star for shashlick. | 
| 19:35:16 | disruptek | PRAISE | 
| 19:36:06 | FromDiscord | <Lantos> (::) cookie | 
| 19:36:13 | disruptek | sadly, another case where the tests for a nimble package failed for no explicable reason. | 
| 19:37:15 | GordonBGood | Araq: on symToClosure, it seems we are dealing with the bottom "else" case, and which every other successful case ends with a call to makeClosure (or closureCreationForIter)... | 
| 19:37:38 | GordonBGood | the code seems to be able to fall out the bottom without assigning anything to result | 
| 19:37:51 | dom96 | ooh treeform, thanks for the links | 
| 19:37:55 | GordonBGood | At least, if I understand the code correctly | 
| 19:39:18 | Araq | well no, it's a 'while true' loop that must exit via some 'return' | 
| 19:39:19 | * | rockcavera joined #nim | 
| 19:39:36 | Araq | there is no "fall out to the bottom" | 
| 19:39:42 | GordonBGood | By lifting the closure creation code so it wasn't as deeply nested, I managed to get past the check for upfield being nil, but now it runs, but incorrectly | 
| 19:40:02 | FromDiscord | <Lantos> Now just got to work out how to use it ;p | 
| 19:40:20 | Araq | must be something else, in theory lambdalifting requires no further patches | 
| 19:40:22 | shashlick | seems like i didn't check in the test file 🙂 | 
| 19:40:31 | shashlick | @dom96 - choosenim PR 😄 | 
| 19:40:36 | Araq | bbl | 
| 19:41:00 | Araq | GordonBGood, anyway, keep up the good work and no rush | 
| 19:41:07 | dom96 | Happy halloween/no-brexit day :D | 
| 19:41:41 | shashlick | @disruptek / @Lantos - it should be in the the code that's checked out | 
| 19:41:48 | GordonBGood | Araq, well something gets assigned to access, and then the proc ends, which would mean that result just contains whatever is default for PNode, which would be nil, right? | 
| 19:41:49 | shashlick | need to run the test in the root dir, not in tests | 
| 19:41:54 | shashlick | since file is relative to project root | 
| 19:42:23 | disruptek | okay, but it seems that it's only pulled it when you install the package. | 
| 19:42:37 | shashlick | you need to run `nimble setup` | 
| 19:42:40 | FromDiscord | <Lantos> thanks shashlick will check it out after dinner. Have you pushed this to the nimble package manager? | 
| 19:42:40 | FromDiscord | <Lantos> https://nimble.directory/search?query=graphql | 
| 19:42:52 | shashlick | no i hadn't yet | 
| 19:43:12 | GordonBGood | And the generated code errors kind of reflect this as if the generated closures are just placeholders | 
| 19:43:14 | FromDiscord | <Lantos> I think it has building pass/fails to help | 
| 19:43:57 | disruptek | shashlick: maybe `before test: setupTask()`? | 
| 19:43:58 | GordonBGood | The code runs and gives answers, but the answers are just 2 and 3 as if the LazyList's were never advanced | 
| 19:44:00 | shashlick | main problem is that nimble doesn't like nimgen wrappers too much cause i need to do stuff in `before install` which is problematic | 
| 19:44:11 | GordonBGood | And the test program exits with an error | 
| 19:44:23 | disruptek | damn lazy lists. | 
| 19:44:28 | disruptek | don't do a lick of work. | 
| 19:45:38 | clyybber | GordonBGood: Might be handy to push your changes so we can check them out | 
| 19:47:46 | GordonBGood | The good news is that the test program runs quite fast compared to Boehm, but I don't know how valid that is because of the errrors... | 
| 19:48:53 | GordonBGood | also, the current --gc:destructors, if I turn on --threads:on, the test program doesn't get very far before crashing | 
| 19:49:15 | * | cyraxjoe quit (Quit: I'm out!) | 
| 19:49:34 | shashlick | @Lantos - https://github.com/nim-lang/packages/pull/1231 | 
| 19:50:54 | GordonBGood | clyybber: the above problems aren't related to seqsv2, they are related to me writing a test program that more thouroughly tests GC/ref counting, including closures | 
| 19:52:03 | * | cyraxjoe joined #nim | 
| 19:52:20 | GordonBGood | clyybber: When I get back to seqsv2 today, and if I run into further time delaying problems, I'll push my changes to see if you guys can help | 
| 19:52:59 | GordonBGood | I'm new at this, so you might jump right to what my problems are | 
| 19:53:36 | * | cgfuh joined #nim | 
| 19:54:15 | GordonBGood | I regard both seqsv2 and araq's ref counting project as top priorities that need to get finished in order to get closure to Nim version 1.2 | 
| 19:55:24 | GordonBGood | But I didn't think the testing of GC was thorough enough, especially including closures and speed benchmarks, so wanted to contribute the LazyList Hammings benchmark | 
| 19:57:39 | GordonBGood | clyybber: GC/ref counting benchmark running under Boehm - https://wandbox.org/permlink/vZIUDOyygNxh7FOb | 
| 19:58:28 | GordonBGood | The Wandbox head hasn't been updated to the latest ref counting branch yet, so won't run with --gc:destructors... | 
| 19:58:46 | * | wo joined #nim | 
| 19:59:03 | GordonBGood | And even with the latest devel on my machine, there are the above described problems | 
| 20:01:26 | * | wo quit (Remote host closed the connection) | 
| 20:01:33 | * | shadowbane joined #nim | 
| 20:02:49 | GordonBGood | disruptek: lazy lists only work when you force them (to work) ;) | 
| 20:03:08 | * | shadowbane quit (Client Quit) | 
| 20:03:23 | disruptek | get out the whip. | 
| 20:04:09 | * | disruptek cracks the whip at the lazy lists. | 
| 20:04:20 | disruptek | y'know the real problem with these lists? | 
| 20:04:40 | disruptek | they're async.  it looks like they're all working, from a distance, but when you get closer...  only one is. | 
| 20:04:48 | GordonBGood | Araq: re: keep up the good work - we won't know how good it is until I get something working :/ | 
| 20:04:52 | * | disruptek cracks the whip at the lazy lists. | 
| 20:06:23 | GordonBGood | disruptek: yeah, lazy lists have their limitations, but they seem to be a good way to "stress test" araq's implentations of MM | 
| 20:06:42 | FromDiscord | <Lantos> great stuff shashlick! | 
| 20:07:01 | disruptek | that's why i'm glad i'm not a cow. | 
| 20:08:36 | GordonBGood | disruptek: although cow's never worry about being async - they never worry about anything much other than the next bite of feed | 
| 20:08:48 | disruptek | are you kidding? | 
| 20:09:06 | disruptek | cows live in a veritable crucible of stress over how they'll provide us enough milk. | 
| 20:09:20 | GordonBGood | I am personally acquainted with quite a few cows | 
| 20:09:21 | disruptek | talk to a cow sometime. | 
| 20:09:26 | disruptek | well, then you know. | 
| 20:09:37 | shashlick | cows are async, they swallow food for later chewing | 
| 20:09:39 | FromDiscord | <Lantos> it'd be nice to be a swiss cow. nice fields | 
| 20:09:45 | shashlick | never know what algorithm it uses behind the scenes | 
| 20:09:57 | disruptek | they are multi-core when it comes to digestion. | 
| 20:10:04 | disruptek | some work-stealing going on, to boot. | 
| 20:10:12 | shashlick | a really good balance of async and multi-threading | 
| 20:10:29 | disruptek | well, we know async excels at i/o. | 
| 20:10:46 | GordonBGood | In my personal experience with cows, they never even think that they produce milk, they just feel relief when someone relieves them of it | 
| 20:11:59 | FromDiscord | <Lantos> did you say you uploaded an example shashlick | 
| 20:12:00 | GordonBGood | shashlick: I think they just produce futures - not necessary to multi-thread | 
| 20:12:22 | disruptek | yep, beef futures. | 
| 20:13:04 | GordonBGood | cows excel at io; food and air in, milk and s..t out | 
| 20:13:52 | GordonBGood | yep, milk and beef futers, but quite a few "andThen's" inbetween | 
| 20:14:17 | clyybber | I have to implement a lazy-scheduler, based on the principle that is the opposite of work-stealing | 
| 20:14:44 | clyybber | and then watch those lazy fucks do no work | 
| 20:15:18 | * | shadowbane joined #nim | 
| 20:15:52 | * | shadowbane quit (Client Quit) | 
| 20:17:07 | shashlick | @Lantos no just published to nimble directory | 
| 20:17:58 | GordonBGood | clyybber: yeah, lazy/deferred has it's uses, but we need a really good closure implementation to make it work... | 
| 20:18:37 | * | shadowbane joined #nim | 
| 20:18:38 | GordonBGood | It's actually incredible how well the legacy closures work, considering C didn't have them | 
| 20:19:06 | GordonBGood | ^legacy closures in Nim. | 
| 20:25:17 | GordonBGood | excuse me for a few hours, middle of the night here | 
| 20:27:40 | clyybber | GordonBGood: Oh I wasn't referring to anything, just talking out of my ass | 
| 20:28:10 | clyybber | GordonBGood: Good night. I assume you are in asia? | 
| 20:28:32 | GordonBGood | clyybber: yeah, Thailand | 
| 20:29:03 | clyybber | Ha, nice. | 
| 20:29:45 | GordonBGood | clyybber: can be nice; it can be whatever you make it... | 
| 20:30:41 | GordonBGood | clyybber: pretty good place for entering geezerhood, as I am | 
| 20:31:12 | clyybber | A friend of mine used to live in thailand for soem years | 
| 20:31:36 | clyybber | the best thing must be eating coconuts as a whole | 
| 20:31:41 | * | nsf quit (Quit: WeeChat 2.6) | 
| 20:31:47 | GordonBGood | I've been here for over 27 years | 
| 20:32:15 | clyybber | GordonBGood: rural or urban? | 
| 20:33:13 | GordonBGood | clyybber: I've been both, was on a place on the beach about 12 km out of town, now in a smallish city, about 100,000 pop | 
| 20:34:08 | GordonBGood | Both have their advantages, outside was more laid back; now everything is convenient, walking distance away | 
| 20:35:29 | clyybber | hmm, hows the temperature? | 
| 20:35:36 | GordonBGood | still just 500 m away from the beach | 
| 20:35:44 | clyybber | thats awesome | 
| 20:36:42 | GordonBGood | Not as hot as some places in Asia because of being on the sea - 24 C at night, usually about 33 in the day unless it's raining, when it might be not much above the night | 
| 20:37:23 | clyybber | I assume its like that the whole year? | 
| 20:37:37 | clyybber | It's 2 C at night here | 
| 20:38:07 | GordonBGood | Yeah, some place in northern Thailand have more definitive seasons, but here we hardly do: | 
| 20:38:44 | GordonBGood | raing season it rains more, but often doesn't - hot season it's mostly clear but might rain | 
| 20:39:41 | GordonBGood | I'm originally from Canada, don't tell me about cold, I'm trying to forget | 
| 20:40:08 | GordonBGood | clyybber: here is EU? | 
| 20:40:15 | clyybber | yeah bavaria | 
| 20:40:54 | GordonBGood | Ah, nice, never been there but have met lots of ppl from there; I hear it's beautiful | 
| 20:42:36 | clyybber | yeah, it's very nice here | 
| 20:42:59 | clyybber | though I feel a kind of sadness whenever the urban industrial areas expand | 
| 20:43:57 | GordonBGood | clyybber: that happens everywhere, including here - 20 years ago one could find lats of undeveloped islands, now almost none | 
| 20:45:31 | GordonBGood | and everytime they improve a road, factories, housing evelopements, businesses rapidly fill in along it... | 
| 20:46:34 | GordonBGood | When I first came here, few ordinary people such as teachers had cars, only 100 cc motorcycles, now almost everyone except poor people do | 
| 20:48:13 | GordonBGood | Anyway, my bed is still calling me; chat tomorrow if you like | 
| 20:48:17 | GordonBGood | gn8 | 
| 20:48:20 | clyybber | gn8 | 
| 20:49:50 | clyybber | Araq: What to do about cases like `proc newXmlNode(kind: XmlNodeKind): XmlNode = | 
| 20:49:52 | clyybber | ## Creates a new ``XmlNode``. | 
| 20:49:54 | clyybber | result = XmlNode(k: kind) | 
| 20:49:56 | clyybber | y | 
| 20:50:45 | * | GordonBGood quit (Read error: Connection reset by peer) | 
| 20:50:57 | clyybber | I can't create any defaults this way. I'm not sure how or why this is supported. | 
| 20:54:42 | disruptek | what do you mean? | 
| 20:55:21 | disruptek | it's been that way for months.  you can only ever pass it a const. | 
| 20:57:56 | * | narimiran quit (Ping timeout: 265 seconds) | 
| 20:58:30 | clyybber | but thats not a const | 
| 20:59:10 | disruptek | yes, doesn't it blow up otherwise? | 
| 20:59:58 | disruptek | or maybe i'm just confusing this with the case thing. | 
| 21:00:11 | clyybber | assignments to fields afterwards would just use nkCheckedField tihnk | 
| 21:00:20 | clyybber | so it would error at runtime if its wrong | 
| 21:00:42 | clyybber | disruptek: This is just a case I haven't thought of. | 
| 21:01:09 | clyybber | And I'm not sure I shoould/can support it without it getting a bit ugly. | 
| 21:01:39 | disruptek | yeah it's only clauses that taint and shouldn't. | 
| 21:01:43 | clyybber | I mean its no problem with my previous approach that doesn't rely on the discrimininator being constant | 
| 21:03:02 | FromGitter | <alehander42> clyybber shouldn't this be a template | 
| 21:03:10 | disruptek | ignore me.  i've been eating blue berry flavored dog treats and thinking they were halloween candy. | 
| 21:03:21 | clyybber | alehander42: looks like it to me | 
| 21:03:24 | FromGitter | <alehander42> the other option is to autogenerate a `case` which creates | 
| 21:03:28 | disruptek | on the plus side, my coat is more luxurious than ever. | 
| 21:03:29 | FromGitter | <alehander42> a XmlNode dynamically | 
| 21:03:33 | FromGitter | <alehander42> i've done it once i think | 
| 21:03:36 | FromGitter | <alehander42> with a genCase macro | 
| 21:03:42 | clyybber | alehander42: THat was my previous apprach | 
| 21:04:08 | clyybber | But it creates a runtime impact | 
| 21:04:28 | clyybber | But I find it weird that this is still supported despite the spec saying its not | 
| 21:04:35 | FromGitter | <alehander42> https://github.com/alehander42/lang/blob/master/src/tools.nim | 
| 21:04:50 | clyybber | thanks | 
| 21:05:02 | FromGitter | <alehander42> well, i thought we're left with `const` kind: kind | 
| 21:05:31 | clyybber | I thought so too | 
| 21:06:01 | disruptek | it's only when you taint it with variant fields that things go haywire. | 
| 21:06:18 | clyybber | what disruptek says | 
| 21:06:20 | FromGitter | <alehander42> from what i see | 
| 21:06:24 | clyybber | the compiler chooses a different path then | 
| 21:06:27 | FromGitter | <alehander42> all newXmlNode usages use a const value | 
| 21:06:30 | FromGitter | <alehander42> so it should be fine | 
| 21:06:33 | FromGitter | <alehander42> with template | 
| 21:07:57 | disruptek | https://play.nim-lang.org/#ix=20rr | 
| 21:08:16 | clyybber | alehander42: You see `Foo(kind: runtime, valuethatdependsonkind: 1)` wont work but `Foo(kind: runtime)` will | 
| 21:08:20 | disruptek | i retab'ed it to 8 spaces for ya. | 
| 21:09:17 | disruptek | but the issue is actually that the error occurs on line 15 which doesn't have any fields other than the discriminator. | 
| 21:09:57 | disruptek | if you change d to a const, it works. | 
| 21:10:23 | clyybber | disruptek: wtf | 
| 21:10:32 | disruptek | yes.  that's why it's a bug. | 
| 21:10:42 | FromGitter | <alehander42> clyybber well, i gotta admit i dont remember the rationale for the whole thing | 
| 21:10:57 | FromGitter | <alehander42> but yeah sounds like a bug | 
| 21:11:23 | disruptek | i guess it existed in 19.6 too.  i can never find this report when i'm looking for it because i only got bit by it; dumjyl is the one that wrote it up for me. | 
| 21:12:03 | clyybber | Araq help us ^\o/^ | 
| 21:13:13 | disruptek | as i said earlier, i'm okay with variants being tighter, but this is pretty surprising. | 
| 21:16:03 | clyybber | krux02: Hey, does https://github.com/nim-lang/Nim/pull/12555 fix https://github.com/nim-lang/Nim/issues/12282 too ? | 
| 21:17:33 | krux02 | I don't know yet, since I didn't test it. | 
| 21:18:08 | clyybber | Ok, might be worthwile to test https://github.com/nim-lang/Nim/issues/12551 too | 
| 21:18:13 | clyybber | Not sure if related | 
| 21:18:55 | * | eterps joined #nim | 
| 21:20:23 | eterps | What is the name of this language construct? -> []= | 
| 21:23:34 | Araq | 'put' operator | 
| 21:23:34 | disruptek | boris. | 
| 21:23:45 | Araq | clyybber: help with what? | 
| 21:23:51 | eterps | thanks | 
| 21:27:41 | clyybber | Araq: Why xmltree.nim:71 is allowed | 
| 21:27:52 | clyybber | proc newXmlNode(kind: XmlNodeKind): XmlNode = | 
| 21:27:55 | clyybber | ## Creates a new ``XmlNode``. | 
| 21:27:57 | clyybber | result = XmlNode(k: kind) | 
| 21:27:59 | clyybber | y | 
| 21:28:03 | clyybber | This ^ | 
| 21:28:15 | clyybber | Because clearly k is a runtime value here | 
| 21:28:54 | clyybber | And as disruptek has shown in his snippet the compiler normally prevents this. | 
| 21:29:13 | Araq | that's still allowed because no other field is set | 
| 21:29:39 | clyybber | Yeah that makes sense | 
| 21:29:47 | clyybber | It's unfortunate for defaultfields though | 
| 21:30:09 | Araq | yeah I can see why | 
| 21:30:13 | FromGitter | <alehander42> but why does it make sense | 
| 21:30:21 | clyybber | And the compiler prevents it sometimes: play.nim-lang.org/#ix=20rr | 
| 21:30:58 | clyybber | oh well, playground doesn't work rn | 
| 21:31:27 | clyybber | alehander42: Because its safe. | 
| 21:31:44 | disruptek | https://github.com/nim-lang/Nim/issues/11428 | 
| 21:31:48 | Araq | clyybber: because DateTime has a requiresInit constraint? | 
| 21:31:57 | Araq | I dunno. | 
| 21:32:32 | FromGitter | <alehander42> but why is then k: kind, fielddepending: b not safe | 
| 21:32:42 | FromGitter | <alehander42> ah nvm | 
| 21:33:00 | FromGitter | <alehander42> so then is k: kind, fieldwhichallhave: 2 | 
| 21:33:02 | FromGitter | <alehander42> ok | 
| 21:33:04 | clyybber | Araq: It doesn't | 
| 21:33:09 | Araq | it does | 
| 21:33:18 | Araq | DateTime contains    MonthdayRange* = range[1..31] | 
| 21:33:24 | clyybber | Aha | 
| 21:33:42 | Araq | so effectively the compiler already checks for what you seek to do | 
| 21:33:43 | disruptek | jasper explains it a bit in the issue. | 
| 21:34:20 | clyybber | Araq: Ok, so I'll disallow that like the compiler already does for defaults | 
| 21:34:28 | Araq | yup | 
| 21:35:50 | clyybber | Araq: Or should I describe it in the spec that default values of the corresponding branches will just be ingored then? | 
| 21:36:09 | clyybber | Because arguably a default value isn't a constraint like a range | 
| 21:36:19 | clyybber | I could make it spit out a warning | 
| 21:36:31 | disruptek | but you could fix this. | 
| 21:36:37 | clyybber | disruptek: How? | 
| 21:36:38 | disruptek | brb | 
| 21:40:41 | disruptek | so, maybe you've already fixed this, but it was possible to have an invalid value in a range field. | 
| 21:41:20 | clyybber | I can indeed fix it, but with a runtime impact. | 
| 21:41:31 | disruptek | or enums, when enums don't start at 0. | 
| 21:41:52 | * | Trustable quit (Remote host closed the connection) | 
| 21:42:54 | clyybber | disruptek: Hmm, do you have a link to reproduce? | 
| 21:43:00 | disruptek | i guess it could be a check that produces a warning and/or could be disabled. | 
| 21:43:53 | clyybber | Theres a certain difference between default values and ranges | 
| 21:44:01 | disruptek | i could probably reproduce it locally. | 
| 21:44:23 | clyybber | Ranges should enforce a value to be initialized to a certain value since the object is invalid otherwise | 
| 21:44:32 | clyybber | But the same is not really true for default values | 
| 21:44:36 | clyybber | Not in the same sense | 
| 21:44:46 | clyybber | So I guess spitting out a warning is fine | 
| 21:44:52 | clyybber | For now | 
| 21:45:13 | disruptek | i think almost anything is better than having a field that actually holds a value that is invalid for the type. | 
| 21:46:21 | disruptek | https://gist.github.com/6d75ab0d5a66f3f6c18e99d276499fa4 | 
| 21:46:59 | * | abm quit (Quit: Leaving) | 
| 21:47:17 | clyybber | Hmm, this seems easy to fix. | 
| 21:47:31 | clyybber | Just do the same thing we already do for ranges, I think | 
| 21:47:42 | disruptek | oh, it's fixed for ranges? | 
| 21:48:33 | disruptek | well, you'll break the world if you force init on a non-zero enum. | 
| 21:48:58 | disruptek | it's a hard error on ranges right now, looks like. | 
| 21:49:01 | clyybber | disruptek: I didn't check yet, but its the ting that prevented your previous snippet from compiling | 
| 21:49:10 | clyybber | disruptek: Should be the same for enums IMO | 
| 21:51:19 | disruptek | yes, but breakage... | 
| 21:51:33 | clyybber | warning first error later? | 
| 21:51:56 | disruptek | i don't think there's any other way to do it. | 
| 21:52:57 | clyybber | Should it also error for holed enums then? | 
| 21:53:10 | clyybber | Because holed enums can end up in invalid state anyways. | 
| 21:53:31 | disruptek | it's only initialization, and only when 0 is an invalid value. | 
| 21:56:01 | FromGitter | <alehander42> btw is `default(T)` working with the default values | 
| 21:56:36 | clyybber | alehander42: I'm patching default(T) for the whole object | 
| 21:57:07 | clyybber | But not for the fields themselves, because the fields still retain their types, and the object they are in shouldn't affect that | 
| 21:59:37 | * | MightyJoe joined #nim | 
| 21:59:37 | * | cyraxjoe quit (Ping timeout: 268 seconds) | 
| 22:10:31 | * | Vladar quit (Quit: Leaving) | 
| 22:16:12 | * | cgfuh quit (Quit: WeeChat 2.5) | 
| 22:20:35 | * | solitudesf quit (Ping timeout: 265 seconds) | 
| 22:24:55 | * | abm joined #nim | 
| 22:37:32 | * | clyybber quit (Quit: WeeChat 2.6) | 
| 22:40:25 | * | cyraxjoe joined #nim | 
| 22:42:11 | * | MightyJoe quit (Ping timeout: 276 seconds) | 
| 22:46:40 | * | cyraxjoe quit (Quit: I'm out!) | 
| 22:47:55 | stefantalpalaru | Hear me out, guys: Nimbian - a new Linux distribution where you can "aptitude update; aptitude install jester". Source packages, binary packages, dependency resolution using 3-SAT solvers, stable/testing/unstable distro variants, distro images to run inside emulators on lesser platforms, containers to combine and deploy Nim packages in production through state-of-the-art DevOps practices, custom patchsets to rename Glibc's "atexit" | 
| 22:47:55 | stefantalpalaru | to "addQuitProc", the works! Who's in? I already have the logo, you guys: https://i.imgur.com/niFyg7t.png | 
| 22:48:31 | stefantalpalaru | Can you feel the hype building up? This is it! | 
| 22:49:18 | * | cyraxjoe joined #nim | 
| 22:49:23 | disruptek | finally. | 
| 22:54:07 | * | MightyJoe joined #nim | 
| 22:55:44 | * | cyraxjoe quit (Ping timeout: 268 seconds) | 
| 22:57:26 | * | cyraxjoe joined #nim | 
| 22:57:30 | FromGitter | <alehander42> man you're way behind | 
| 22:57:42 | FromGitter | <alehander42> i expect a nim custom kernel | 
| 22:58:19 | FromGitter | <alehander42> with all programs running as async functions and event loop == os scheduler | 
| 22:59:14 | * | MightyJoe quit (Ping timeout: 240 seconds) | 
| 23:02:15 | stefantalpalaru | Pfffft! That's nothing. I'm working on a custom Nim CPU in FPGA with micro-ops that will speed up the Nim VM. I call it "ARniM". No logo yet. | 
| 23:03:13 | disruptek | boy, ya give a dog a Hershey's bar and they lose their freakin' mind. | 
| 23:04:14 | * | MightyJoe joined #nim | 
| 23:04:22 | * | cyraxjoe quit (Ping timeout: 268 seconds) | 
| 23:08:05 | FromDiscord | <kodkuce> https://github.com/dom96/nimkernel | 
| 23:10:20 | * | ng0 quit (Ping timeout: 260 seconds) | 
| 23:12:05 | * | oprypin quit (Quit: Bye) | 
| 23:12:13 | * | oprypin joined #nim | 
| 23:12:26 | * | abm quit (Ping timeout: 240 seconds) | 
| 23:12:29 | dom96 | stefantalpalaru, be careful, sometimes you make a joke and 2 years later you somehow end up maintaining a Linux distro | 
| 23:15:36 | stefantalpalaru | Too late. I already maintain a Gentoo overlay with 172 packages: https://github.com/stefantalpalaru/gentoo-overlay | 
| 23:16:52 | disruptek | chaoslab has a newer ungoogled-chromium. | 
| 23:17:12 | disruptek | for whatever that's worth. | 
| 23:17:56 | dom96 | this is pretty nice, can we have this? https://twitter.com/andy_kelley/status/1190016044569636864 | 
| 23:17:59 | FromGitter | <alehander42> i seriously planned doing the nim-program-with-gc-as kernel idea | 
| 23:18:07 | dom96 | Maybe instead of the distributions which we've already spent far too much energy arguing over? | 
| 23:20:00 | FromGitter | <alehander42> hm, how do they do it | 
| 23:20:40 | disruptek | i don't think UB in C is all that rare. | 
| 23:20:56 | FromGitter | <alehander42> dom96 well be careful with desiring for lang features instead, there is a whole z3 mechanism waiting on | 
| 23:21:03 | disruptek | it'll be fun to sort out all the false positives. | 
| 23:21:41 | dom96 | alehander42: another feature that I don't see myself using I'm afraid to say. :/ | 
| 23:22:31 | disruptek | it will help performance, convenience, and testing. | 
| 23:22:38 | * | jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…) | 
| 23:23:11 | * | abm joined #nim | 
| 23:24:05 | FromGitter | <alehander42> well, it would be mostly a separate tool to be honest probably | 
| 23:24:05 | * | ng0 joined #nim | 
| 23:24:28 | FromGitter | <alehander42> but it has its own very cool usages | 
| 23:25:23 | dom96 | to be far, it's something someone from our community wants to work on | 
| 23:25:28 | dom96 | so fair enough | 
| 23:28:05 | FromGitter | <alehander42> i worked on some stuff which lets you | 
| 23:28:17 | FromGitter | <alehander42> see a "callstack" of the current macro/template expansions btw | 
| 23:28:37 | FromGitter | <alehander42> on runtime | 
| 23:28:50 | FromGitter | <alehander42> but have to see how hard would it be to upstream something like that | 
| 23:29:06 | * | cyraxjoe joined #nim | 
| 23:29:16 | FromGitter | <alehander42> mostly useful for stacktraces/debugging | 
| 23:30:56 | * | MightyJoe quit (Ping timeout: 276 seconds) | 
| 23:30:56 | disruptek | on runtime? | 
| 23:33:28 | FromGitter | <alehander42> on runtime | 
| 23:34:11 | FromGitter | <alehander42> e.g. you have test "a": check(call() == b) and you can get that call() is in `test` > `check` expansions | 
| 23:34:31 | disruptek | is it only calls? | 
| 23:34:44 | FromGitter | <alehander42> well, its whatever | 
| 23:34:50 | FromGitter | <alehander42> line it is | 
| 23:34:59 | disruptek | where's the code? | 
| 23:35:02 | FromGitter | <alehander42> basically you can also see the expanded actual code | 
| 23:35:16 | FromGitter | <alehander42> and compare with differetn expansions until the original | 
| 23:35:19 | FromGitter | <alehander42> well | 
| 23:35:23 | FromGitter | <alehander42> its not open yet | 
| 23:35:35 | disruptek | i'm having trouble imagining how it could be generalized.  sounds pretty interesting. | 
| 23:35:38 | FromGitter | <alehander42> but i can try to PR when it's readier | 
| 23:36:12 | FromGitter | <alehander42> basically we're creating a macro expansion source map and serializing it in the compiler | 
| 23:36:25 | disruptek | oh, i guess you could embed a beacon at compile-time and then trigger it at runtime, right? | 
| 23:36:27 | FromGitter | <alehander42> not the most genius possible solution but i guess maybe fine for debugging mode | 
| 23:36:38 | disruptek | yeah, that's a cool idea. | 
| 23:36:44 | FromGitter | <alehander42> thats also an option, probably embedding this source map in the binary would be best | 
| 23:36:49 | shashlick | @dom96 - any luck on that PR? | 
| 23:37:26 | FromGitter | <alehander42> but we're not really triggering anything: its just a mapping of nim lines to macro/expansion/definition lines | 
| 23:37:47 | FromGitter | <alehander42> so one can always just construct a "expand stack" for a given line | 
| 23:38:04 | FromGitter | <alehander42> e.g. in gdb as a python command or in a stacktrace | 
| 23:38:44 | disruptek | but you call your macro on the block of code you wanna instrument, right? | 
| 23:38:55 | FromGitter | <alehander42> you dont instrument anything | 
| 23:39:38 | FromGitter | <alehander42> it should work for existing code with no changes | 
| 23:39:55 | FromGitter | <alehander42> the point is you can e.g. step in gdb to a random nim line which is in a macro expansion | 
| 23:40:53 | FromGitter | <alehander42> and two things will be different: you'll be seeing the "expanded" code e.g. `echo ``b``` would be `echo 0` | 
| 23:41:14 | FromGitter | <alehander42> and you can run a command which would calculate which template expansions you're inside right now | 
| 23:41:48 | disruptek | sounds useful. | 
| 23:42:33 | FromGitter | <alehander42> probably: when we open the PR, we'll see where the discussion goes | 
| 23:44:45 | * | MightyJoe joined #nim | 
| 23:46:55 | * | cyraxjoe quit (Ping timeout: 268 seconds) | 
| 23:52:06 | FromDiscord | <Nat> hopefully a quick question, is there any way to use a multiline anonymous function with the `=>` sugar like https://gist.github.com/natdempk/8010443b8cd82bf44ac5f3af0d313904 | 
| 23:53:19 | FromDiscord | <Nat> didn't see too much googling briefly | 
| 23:54:52 | FromDiscord | <mratsim> do notation | 
| 23:55:38 | FromDiscord | <mratsim> see: https://forum.nim-lang.org/t/5431 @Nat | 
| 23:56:12 | FromGitter | <alehander42> i'd guess that multiReplace | 
| 23:56:18 | FromGitter | <alehander42> from strutils might be easier for your usecase | 
| 23:57:04 | FromGitter | <alehander42> with fewer allocations | 
| 23:57:30 | FromDiscord | <Nat> I think it's required that I throw for invalid chars | 
| 23:57:37 | FromDiscord | <Nat> but cool to know that exists 🙂 | 
| 23:57:40 | FromGitter | <alehander42> even with additional check for invalid chars | 
| 23:57:44 | FromGitter | <alehander42> it should be faster | 
| 23:58:28 | FromGitter | <alehander42> as you're copying just one string and then doing a replace + maybe one loop, not constructing a sequence and then a new string with join | 
| 23:58:40 | FromGitter | <alehander42> but i might be wrong, best to benchmark | 
| 23:59:27 | FromDiscord | <Nat> yeah that's interesting to know, I'm also just doing toy problems to learn the language a bit so not super interesting in the most performant stuff atm | 
| 23:59:36 | FromDiscord | <Nat> still trying to wrap my head around the basics |