| 00:12:45 | FromDiscord | <arathanis> `strictDefs` does not like try-except blocks | 
| 00:12:52 | FromDiscord | <arathanis> I guess that is why it is experimental | 
| 00:18:28 | FromDiscord | <Elegantbeef> @arathanis what's the code? | 
| 00:19:30 | * | Batzy joined #nim | 
| 00:20:34 | FromDiscord | <arathanis> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 00:23:39 | FromDiscord | <arathanis> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 00:24:13 | FromDiscord | <arathanis> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 00:24:22 | FromDiscord | <arathanis> (edit)  | 
| 00:24:26 | FromDiscord | <arathanis> But that doesn't seem right | 
| 00:24:35 | FromDiscord | <arathanis> (edit) "But that doesn't seem right ... " added "that only that should work" | 
| 00:24:51 | * | cnx quit (Read error: Connection reset by peer) | 
| 00:25:45 | FromDiscord | <hugop707> hlsee: idk shit about arraymancer, but maybe using the same dummy_output for both causes that? | 
| 00:43:51 | FromDiscord | <girvo> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 00:44:10 | FromDiscord | <Elegantbeef> `newString` has `\0` | 
| 00:44:13 | FromDiscord | <Elegantbeef> `\0` is not empty | 
| 00:44:25 | FromDiscord | <arathanis> You allocated space for 32 characters but it is still an empty string | 
| 00:44:51 | FromDiscord | <girvo> Yeah that's counter-intuitive IMO | 
| 00:45:06 | FromDiscord | <arathanis> not really, you just need to adjust how you are thinking about it | 
| 00:45:08 | FromDiscord | <girvo> with respect to isEmptyOrWhitespace specifically anyway | 
| 00:45:11 | FromDiscord | <arathanis> you asked for a new box that holds 32 items | 
| 00:45:15 | FromDiscord | <arathanis> then asked if the new box is empty | 
| 00:45:18 | FromDiscord | <girvo> Yes I understand why lmao | 
| 00:45:56 | FromDiscord | <girvo> It's still counter-intuitive with respect to isEmptyOrWhitespace 🙂 | 
| 00:46:30 | FromDiscord | <arathanis> I guess we will just disagree there, nothing wrong with that 😄 | 
| 00:46:46 | FromDiscord | <girvo> Here's a question for you | 
| 00:46:54 | FromDiscord | <girvo> To make what I'm saying clearer | 
| 00:47:31 | FromDiscord | <girvo> A string that is _truly_ empty (as per an english language definition of empty haha). `""`. But because it's a string it's always `\0` trailing, follow? Would that be true or false for isEmptyOrWhitepace? | 
| 00:48:10 | FromDiscord | <arathanis> You mean a string that has space allocation for zero characters? | 
| 00:48:27 | FromDiscord | <Elegantbeef> An empty string has a length of 0, what the heap data contains is unimportant | 
| 00:49:02 | FromDiscord | <girvo> Right, but the proc itself is checking whether it's whitespace so it _is_ checking the heap data etc etc | 
| 00:49:11 | FromDiscord | <Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 00:49:12 | FromDiscord | <Elegantbeef> Consider this | 
| 00:49:35 | FromDiscord | <girvo> I absolutely 100% promise this will trip people up lol | 
| 00:49:35 | FromDiscord | <Elegantbeef> if `setLen` does not clear the data (it's an implementation detail afterall) it'll never be empty | 
| 00:49:52 | FromDiscord | <Elegantbeef> I mean I disagree cause `\0` is not empty | 
| 00:49:53 | FromDiscord | <girvo> Because of the naming/documentation of isEmptyOrWhitespace specifically, not the semantics | 
| 00:50:03 | FromDiscord | <arathanis> the proc asks the question:↵> Is this string devoid of characters or are all the characters whitespace characters? | 
| 00:50:06 | FromDiscord | <girvo> In reply to @Elegantbeef "I mean I disagree": Now _that_ is unintutive | 
| 00:50:16 | FromDiscord | <girvo> (and I understand why! others won't) | 
| 00:50:17 | FromDiscord | <Elegantbeef> It's a Nim string not a Cstring | 
| 00:50:40 | FromDiscord | <Elegantbeef> I mean document it 😛 | 
| 00:50:42 | FromDiscord | <girvo> In reply to @arathanis "the proc asks the": "and \0 doesn't count!" | 
| 00:50:52 | FromDiscord | <Elegantbeef> `\0` does count | 
| 00:50:53 | FromDiscord | <arathanis> In reply to @girvo ""and \0 doesn't count!"": by definition it doesn't, correct | 
| 00:50:53 | FromDiscord | <girvo> In reply to @Elegantbeef "I mean document it": I already am 😛 | 
| 00:51:03 | FromDiscord | <girvo> In reply to @arathanis "by definition it doesn't,": Right, which is unintuitive haha | 
| 00:51:08 | FromDiscord | <Elegantbeef> `\0` is a character | 
| 00:51:30 | FromDiscord | <Elegantbeef> Well thanks for documenting it, but yea I think the implementation is fine | 
| 00:51:42 | FromDiscord | <girvo> The implementation is absolutley fine | 
| 00:51:45 | FromDiscord | <girvo> I never suggested otherwise | 
| 00:52:11 | FromDiscord | <girvo> Documentation needs to be clearer, because this will absolutely trip up those who do not understand as much as you guys do. | 
| 00:52:22 | FromDiscord | <Elegantbeef> hey `\0` is not special! 😛 | 
| 00:52:52 | FromDiscord | <arathanis> I'd assume `empty` is defined as having a length of 0 | 
| 00:52:55 | FromDiscord | <girvo> In reply to @Elegantbeef "hey `\0` is not": depends on the context ;P | 
| 00:53:05 | FromDiscord | <Elegantbeef> Nim does not treat `\0` special to be fair | 
| 00:53:07 | FromDiscord | <arathanis> so newString allocates space for 32 character but sets the length to zero? | 
| 00:53:17 | FromDiscord | <girvo> In reply to @Elegantbeef "Nim does not treat": yeah thats totally fiar | 
| 00:53:34 | FromDiscord | <arathanis> or is it counting `\0` as a non-whitespace character? | 
| 00:54:11 | FromDiscord | <girvo> In reply to @arathanis "so newString allocates space": Its specifically the combination and interplay of: "is this string empty, or is it all whitespace which to a human also means empty?" and yet "all \0 bytes" which to a human would _also_ be an "empty" string (void of anything useful) fails that test | 
| 00:54:21 | FromDiscord | <girvo> In reply to @arathanis "or is it counting": it counts it as non-whitespace as far as I can tell | 
| 00:54:37 | FromDiscord | <girvo> Which, again, is totally fair. Just needs to be clearer in the docs for this I think 🙂 | 
| 00:54:53 | FromDiscord | <arathanis> In reply to @girvo "it counts it as": this is correct, the definition of `Whitespace` in `strutils` does not contain `\0` | 
| 00:55:01 | FromDiscord | <Elegantbeef> Girvo I think the only people this will trip up is you embedded folk/low level weirdos 😛 | 
| 00:55:18 | FromDiscord | <girvo> In reply to @Elegantbeef "Girvo I think the": Theres dozens of us! dozens! | 
| 00:56:07 | FromDiscord | <girvo> But nah, I can see web devs not understand what newString(1234) is really doing and then being surprised that isEmptyOrWhitepsace is false on a brand new "empty" (to them) string | 
| 00:56:34 | FromDiscord | <Elegantbeef> Perhaps, but I do not know | 
| 00:59:53 | FromDiscord | <girvo> Not that it matters (because this is _very_ just an embedded/low level weirdo thing) but it's amusing that newStringOfCap(anything).isEmptyOrWhitespace is `true` lol. I know why, just again, it's unintuitive.↵↵Does the stdlib/strutils have a proc that checks for "is all nul bytes"? | 
| 01:00:30 | * | cnx joined #nim | 
| 01:00:43 | FromDiscord | <Elegantbeef> `allCharsInSet({'\0'})` 😄 | 
| 01:01:24 | FromDiscord | <girvo> fine 😛 | 
| 01:03:41 | FromDiscord | <arathanis> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 01:04:08 | FromDiscord | <arathanis> 😄 | 
| 01:04:21 | FromDiscord | <Elegantbeef> Fuck do I hate `allCharsInSet` though | 
| 01:04:26 | FromDiscord | <Elegantbeef> It's the most specific code... | 
| 01:04:28 | FromDiscord | <arathanis> (edit)  | 
| 01:04:40 | FromDiscord | <arathanis> yeah lol | 
| 01:04:50 | FromDiscord | <arathanis> (edit)  | 
| 01:05:38 | FromDiscord | <Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 01:13:53 | FromDiscord | <huantian> Why do you use a concept for col but not to check | 
| 01:14:22 | FromDiscord | <Elegantbeef> Cause `Checkable[T]` is an awful thing to encode | 
| 01:46:04 | FromDiscord | <kreatoo> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 01:49:39 | FromDiscord | <Elegantbeef> Use `echo` instead of `stdout` | 
| 01:50:27 | FromDiscord | <MDuardo> We were talking about that early↵I had the exact opposite problem | 
| 01:50:37 | FromDiscord | <kreatoo> how does stdout.writeline have this issue but echo doesnt | 
| 01:50:45 | FromDiscord | <Elegantbeef> echo is threadsafe | 
| 01:51:09 | FromDiscord | <kreatoo> what if i want to use styledwriteline then? | 
| 01:51:24 | FromDiscord | <kreatoo> do i use echo and do the color manually? | 
| 01:51:27 | FromDiscord | <Elegantbeef> Use a lock to block | 
| 01:51:45 | FromDiscord | <Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 01:51:45 | FromDiscord | <kreatoo> what do yo u mean by a lock | 
| 01:51:47 | FromDiscord | <kreatoo> oh | 
| 01:51:52 | FromDiscord | <Elegantbeef> `std/locks` | 
| 01:52:25 | FromDiscord | <kreatoo> never heard of it before, ig ill check it out | 
| 01:52:26 | FromDiscord | <kreatoo> thanks | 
| 01:57:20 | FromDiscord | <hugop707> Consider making the jobs channel a Forum channel | 
| 01:57:31 | FromDiscord | <hugop707> (discord specific) | 
| 01:59:25 | * | rockcavera quit (Read error: Connection reset by peer) | 
| 02:00:10 | * | rockcavera joined #nim | 
| 02:00:10 | * | rockcavera quit (Changing host) | 
| 02:00:10 | * | rockcavera joined #nim | 
| 02:13:34 | * | iamzim joined #nim | 
| 02:14:33 | FromDiscord | <kreatoo> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 02:14:48 | FromDiscord | <kreatoo> it messes up the terminal completely | 
| 02:15:49 | FromDiscord | <odexine> Initialise probably shouldn’t be in the thread | 
| 02:16:20 | FromDiscord | <odexine> And I assume with lock already does the lock release when you exit the code block, so I assume it’s redundant? | 
| 02:16:42 | FromDiscord | <kreatoo> fair | 
| 02:17:07 | FromDiscord | <odexine> So yeah just move initialise lock outside the thread and remove the release I think is the fix | 
| 02:17:42 | FromDiscord | <kreatoo> well↵i put initLock right down the var threadLock↵and removed release↵but now its showing one bar at a time | 
| 02:18:25 | FromDiscord | <kreatoo> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 02:21:47 | FromDiscord | <odexine> well if youd like i made a progress bar library years ago with this functionality (maybe i'll get to fixing it because of you xd) | 
| 02:22:09 | FromDiscord | <odexine> https://github.com/de-odex/suru yeah maybe ill take a look at this again next week | 
| 02:23:19 | FromDiscord | <kreatoo> yeah ive seen that before but didnt use it because it wasnt thread safe :p | 
| 02:24:55 | FromDiscord | <odexine> :baqua: sorry its been a few years as ive said | 
| 02:25:12 | FromDiscord | <odexine> iirc i did make a threaded portion on it, though yeah im not sure how well it works anymore | 
| 02:25:21 | FromDiscord | <odexine> you could prolly just derive ideas from my code | 
| 02:26:37 | FromDiscord | <odexine> In reply to @kreatoo "Am I doing this": the problem is that you're still locked while sleeping, so no other bar can modify the stdout | 
| 02:27:43 | FromDiscord | <odexine> you cant naively do a cursorup 1 while also wanting other bars to modify, you have to thread-safely take note of the current cursor position and move it to the correct location in each of the threads | 
| 02:28:47 | * | iamzim left #nim (#nim) | 
| 02:28:47 | FromDiscord | <odexine> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 02:29:02 | FromDiscord | <odexine> the lock goes in each thread ofc | 
| 02:29:16 | FromDiscord | <odexine> set the location too after moving, sorry | 
| 02:29:32 | FromDiscord | <odexine> ill be going for now | 
| 02:30:05 | FromDiscord | <kreatoo> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 02:30:08 | FromDiscord | <kreatoo> modified it like this | 
| 03:18:17 | entikan | wow panda3d is working really well with nim | 
| 03:18:42 | entikan | I've translated some of my work into nim and omg | 
| 03:18:58 | entikan | freedom from the retardation that is current day python | 
| 03:20:46 | entikan | seriously python is slowly turning into a neo-feudilist-technocratic-capitalist nightmare  | 
| 03:21:38 | FromDiscord | <ringabout> Is there a Nim wrapper for panda3d? | 
| 03:21:51 | entikan | LOOKING AT YOU PEP-668 and 2FA pypi | 
| 03:23:08 | entikan | @ringabout yeah, though it's very much wip (I'm probably the first adopter but rdb is very helpful) https://github.com/rdb/nim-panda3d  | 
| 03:23:37 | FromDiscord | <ringabout> Thank yu! | 
| 03:23:37 | entikan | I've been translating my work to nim for the past few days and it's been liberating | 
| 03:23:42 | FromDiscord | <ringabout> (edit) "yu!" => "you!" | 
| 03:24:42 | entikan | please give rdb much love! They're a bonified genius and spending their free time on me nerdsniping nim ;) | 
| 03:26:52 | entikan | and it's working fwiw | 
| 03:27:07 | entikan | I haven't had to look back at python, it's glorios | 
| 03:27:10 | entikan | glorious* | 
| 03:27:27 | entikan | you just have to be a bit more verbose at parts | 
| 03:27:41 | entikan | as is nim | 
| 03:28:27 | entikan | imagine, doing all these nested loops! | 
| 03:30:49 | FromDiscord | <Elegantbeef> Just write an iterator instead of nested loops 😄 | 
| 03:32:11 | entikan | whatever the case, nim blows python out of the water in that space | 
| 03:32:54 | entikan | I mean, python would have forced me to use a lookup table or hashTable, and fair enough, but sometimes you just want to CRUCH NOM NOM NOM  | 
| 03:34:36 | entikan | nim would just go "muhaha is that all you got foolish mortal" and python just starts crying | 
| 03:34:55 | FromDiscord | <leorize> and then you also use lookup tables in nim and get 10x perf \:p | 
| 03:39:02 | entikan | yeh and pep-668 and 2FA pypi is a pythong trend I don't care about (exact opposite) | 
| 03:39:14 | entikan | lets ye forget | 
| 03:39:17 | entikan | lest | 
| 03:40:01 | entikan | I'm extremely pretentious in that I used to love python when it was an underdawg | 
| 03:40:09 | entikan | but now it's like starbucks | 
| 03:40:18 | FromDiscord | <leorize> 2FA is actually good so \:p | 
| 03:40:19 | FromDiscord | <leorize> luckily with nim you go through your github account which would have 2FA already anyways | 
| 03:41:01 | entikan | not a fan of github either, microsoft trash. I hope they take codeberg.org | 
| 03:41:25 | FromDiscord | <leorize> and pep-668 is pretty much just python catching up with the rest of the world | 
| 03:41:43 | * | rockcavera quit (Remote host closed the connection) | 
| 03:41:48 | entikan | 669 catching up in a way that doesn't make any sense imo | 
| 03:41:57 | entikan | euh 8 | 
| 03:42:19 | entikan | you notice immediately there's no dutch BDFL | 
| 03:43:09 | FromDiscord | <leorize> 668 looks sane to me | 
| 03:43:20 | FromDiscord | <leorize> it's not like nim's bundling approach is that much different from venv | 
| 03:43:31 | entikan | the problem 668 adresses is sane, the solution is retarted | 
| 03:44:19 | entikan | like "the sun is hot" yes ok sure "the solution is to put ice-cubes in your pants" euh....idk I euh... | 
| 03:45:02 | entikan | pipx? | 
| 03:45:21 | entikan | pipx is alias for "put icecubes in pants..." | 
| 03:46:27 | FromDiscord | <leorize> pipx is just python's version of "we can't compile our software into one executable" | 
| 03:46:40 | FromDiscord | <leorize> at least it works \:p | 
| 03:47:11 | FromDiscord | <leorize> but know that while you can host your code repo anywhere you do need a github account to publish packages to nimble directory | 
| 03:47:28 | entikan | so nimble is a microsoft bitch? | 
| 03:47:44 | NimEventer | New Nimble package! highlightjs - highlight.js bindings for Nim, see https://github.com/Ethosa/highlightjs | 
| 03:47:48 | entikan | concerning | 
| 03:48:43 | entikan | so nimble is "I'll trust you if you manange to scam microsoft" which sadly is an improvement to pipx but not by much | 
| 03:49:18 | entikan | good to know techno-feudalism is winning still in the nim space | 
| 03:49:44 | FromDiscord | <hugop707> gitlab doesnt work for nimble? | 
| 03:49:44 | FromDiscord | <leorize> which is just a name -\> url lookup table | 
| 03:49:44 | FromDiscord | <leorize> but the database is on github so you can't avoid that | 
| 03:50:01 | entikan | I'm on codeberg.org | 
| 03:50:45 | entikan | and irc as you can see | 
| 03:50:49 | FromDiscord | <.bobbbob> for anyone familiar with prolouge, how would I set the secure flag on a session cookie? | 
| 03:50:49 | entikan | omg computers | 
| 03:51:11 | entikan | I am -this- close to just give up on computers and give computers to microgoogle | 
| 03:52:07 | FromDiscord | <leorize> it does, i'm talking about the registry, which is hosted at\: https://github.com/nim-lang/packages↵(@hugop707) | 
| 03:52:50 | FromDiscord | <hugop707> ah ok | 
| 03:53:02 | entikan | who's dick do I have to suck to make nim less dependent on microcock? | 
| 03:53:35 | FromDiscord | <Elegantbeef> Nim is dependant on microsoft? | 
| 03:53:38 | entikan | nible is | 
| 03:53:42 | entikan | nimble | 
| 03:53:55 | entikan | I should have added the ble | 
| 03:53:56 | FromDiscord | <Elegantbeef> No it's not | 
| 03:54:14 | FromDiscord | <Elegantbeef> you can use a custom registry with any git repo anywhere | 
| 03:54:32 | entikan | pinky swear? | 
| 03:54:47 | FromDiscord | <Elegantbeef> Yes you can configure you're own registry | 
| 03:55:13 | entikan | if that is true I can cry from happiness  | 
| 03:55:30 | entikan | not even being facetious | 
| 03:55:54 | FromDiscord | <hugop707> as leorize said, its just the database | 
| 03:55:59 | entikan | the world is in a dark place and @Elegantbeef you make it sound like there's hope | 
| 03:56:03 | FromDiscord | <Elegantbeef> your own\ | 
| 03:56:27 | entikan | nim might just the hope | 
| 03:56:59 | FromDiscord | <.bobbbob> In reply to @.bobbbob "for anyone familiar with": oh and also if its possible to check for a file upload being too large in prologue instead of showing an error page at from nginx? | 
| 03:57:03 | FromDiscord | <hugop707> diehard capitalist world hater? Im the opposite but i can respect the determination of living by your beliefs | 
| 03:57:04 | entikan | nim is like the ironman movie with the hope and the I am ironman and the hoigenflaven | 
| 03:58:22 | entikan | @hugop707 I am actually in favor of low-level capitalism. I just don't like this weird neo-feudalism technocratism microsoft/meta/alphabet shit we got going on. | 
| 03:58:35 | entikan | and apple also, but who cares | 
| 03:58:55 | entikan | apple is sucking its own dick perpetually which is fine | 
| 03:59:13 | entikan | it will eat itself like the snake of oribolotalisiousness | 
| 03:59:26 | entikan | I am very drunk thank you | 
| 04:00:50 | entikan | imagine a world where every form of expression came with a 30 second unskippable add and all your private data  | 
| 04:01:06 | entikan | tthis is where we're at and it won't stop untill we go "waaaaait a minute" | 
| 04:01:12 | entikan | and nobody is going that | 
| 04:01:19 | entikan | #wakeUpSheepleOMG | 
| 04:01:35 | entikan | it'll only get worse | 
| 04:02:04 | entikan | you're right I was just on shrooms and had my third eye squeeky cleaned but that has only a marginally amount to do with it | 
| 04:02:35 | entikan | I truly believe nim is on the cusp here between good and evil | 
| 04:02:54 | entikan | keep your political opinions out of my programming languages, but we can make a difference here | 
| 04:03:05 | FromDiscord | <hugop707> is he tripping or the bridge isnt showing something he is seeing? | 
| 04:03:30 | entikan | most of the bridge I'm seeing is rainbow fountains coming out of my eyeballs | 
| 04:03:44 | FromDiscord | <leorize> this is the case where you tell them to move to #nim-offtopic | 
| 04:04:30 | entikan | et tu... I guess I'll shut up but remember this 5 years from now and then tell me I'm wrong. | 
| 04:04:50 | entikan | *zips lips* | 
| 04:08:52 | entikan | nim is great though, I translated most of my recent python code and it just works  | 
| 04:12:07 | * | azimut quit (Ping timeout: 240 seconds) | 
| 04:21:33 | entikan | https://yewtu.be/watch?v=VatYrw0uqjU | 
| 04:49:33 | entikan | hm... | 
| 05:03:32 | FromDiscord | <Phil (he/him)> Hmmmmm | 
| 05:03:40 | FromDiscord | <Phil (he/him)> It might make sense to change the threading tests to use testament | 
| 05:03:52 | FromDiscord | <Elegantbeef> https://www.youtube.com/watch?v=kvd5Mrjq3jc | 
| 05:04:03 | FromDiscord | <Elegantbeef> That's my response to all the hmmming | 
| 05:04:25 | FromDiscord | <Phil (he/him)> That way I could run all the sanitizers and so on that I could possibly want in one test-suite | 
| 05:04:30 | FromDiscord | <Phil (he/him)> Any thoughts on that? | 
| 05:05:34 | FromDiscord | <Phil (he/him)> I'm saying that does not belong in the nim-channel and in the Nim Offtopic channel.↵(<@709044657232936960_entikan=5b=49=52=43=5d>) | 
| 05:06:20 | FromDiscord | <Elegantbeef> A single test solution is always nicer | 
| 05:06:50 | FromDiscord | <Phil (he/him)> I'm saying that does not belong in the nim programming language channel and more in the Nim Offtopic channel. | 
| 05:08:00 | FromDiscord | <Phil (he/him)> That might give me the strategy on how to sneak in asan into the threading test-suite | 
| 05:08:37 | FromDiscord | <Phil (he/him)> But first things first, got to get my current changes that include tsan merged first | 
| 05:09:52 | * | adigitoleo quit (Ping timeout: 258 seconds) | 
| 05:10:00 | * | mhcat quit (Ping timeout: 256 seconds) | 
| 05:10:00 | * | mronetwo quit (Ping timeout: 256 seconds) | 
| 05:10:07 | * | casaca quit (Read error: Connection reset by peer) | 
| 05:11:01 | * | noeontheend quit (Ping timeout: 276 seconds) | 
| 05:12:06 | FromDiscord | <Phil (he/him)> btw. leorize, what are your use on using testament to be able to run multiple sanitizers? Do you guys prefer different tools for that kind of thing? | 
| 05:12:53 | NimEventer | New Nimble package! tailwindcss - Tailwind CSS bindings for Nim, see https://github.com/Ethosa/tailwindcss-nim | 
| 05:13:22 | FromDiscord | <Phil (he/him)> I'll repeat it over and over again, Ethosa is nuts | 
| 05:13:39 | FromDiscord | <Phil (he/him)> Hyper productive | 
| 05:14:02 | FromDiscord | <leorize> usually I just use balls, I consider testament too much of a pain to use anywhere but the compiler | 
| 05:14:30 | FromDiscord | <leorize> for your case testament matrix feature should work, as long as you provide a `nim.cfg` with various `-d:` flags like `-d:useAsan` or `-d:useTsan` | 
| 05:14:56 | FromDiscord | <Phil (he/him)> Hmmm how likely is it I'd get using balls past the powers that be? | 
| 05:15:40 | FromDiscord | <leorize> well, even balls doesn't do asan/tsan, only valgrind, helgrind and drd | 
| 05:16:18 | FromDiscord | <leorize> you can do a poor man's matrix by making `ttest_asan.nim` that is basically `include ttest` and a `ttest_asan.nim.cfg` containing `-d:useAsan` \:p | 
| 05:17:23 | FromDiscord | <leorize> given that you're working on a compiler adjacent project, I'd say to use testament because compiler people don't like disruptek and his creations | 
| 05:17:24 | FromDiscord | <Phil (he/him)> Ah, hmm.↵I mean I used testament before, I have it in my mapster lib where I run my test-suite with and without compile-time validation flags.↵Not sure if the complexity might be too much | 
| 05:18:13 | FromDiscord | <leorize> i'll just warn you\: once you use balls, you can't go back \:p | 
| 05:18:20 | FromDiscord | <Elegantbeef> Araq uses balls for Atlas | 
| 05:18:26 | FromDiscord | <Phil (he/him)> Balls it is | 
| 05:18:42 | FromDiscord | <Phil (he/him)> I was hesitant because typically you want to have unified tooling everywhere | 
| 05:18:53 | FromDiscord | <Phil (he/him)> But if we're at the point where core tooling by core members already uses balls | 
| 05:18:56 | FromDiscord | <leorize> make sure linux have valgrind installed if you want valgrind tests | 
| 05:19:01 | FromDiscord | <Phil (he/him)> Then the cat is already out of the bag and I'm not a wallbreaker | 
| 05:19:07 | FromDiscord | <Elegantbeef> Actually he might only use balls as an oddity test idk | 
| 05:19:08 | FromDiscord | <Phil (he/him)> or convention breaker more like it | 
| 05:20:02 | FromDiscord | <ringabout> In reply to @Elegantbeef "Araq uses balls for": That's interesting, though `balls` has been broken in testament tests for years. | 
| 05:20:15 | FromDiscord | <Elegantbeef> All I can say is it's in there https://github.com/nim-lang/atlas/tree/master/tests | 
| 05:20:18 | FromDiscord | <Phil (he/him)> I mean, for the most part I'll just emphasize balls more when I open the issue about introducing asan.↵I'm pretty sure it'll be a similar adventure to this one | 
| 05:20:19 | FromDiscord | <leorize> nah, atlas has its own test runner | 
| 05:22:05 | FromDiscord | <ringabout> The balls testing prevents me from adding `cps` to important packages. | 
| 05:22:45 | FromDiscord | <Phil (he/him)> So basically the timeline either way is\:↵● get my tsan PR merged↵● Open an issue about introducing asan as well, suggesting either balls or testament↵● Make a PR with balls in the meantime, potentially refactor to testament if the issue discussion concludes that threading will not use balls | 
| 05:22:59 | FromDiscord | <leorize> idk what is testament doing for balls not to work | 
| 05:23:22 | FromDiscord | <ringabout> >   /home/runner/work/Nim/Nim/pkgstemp/bump/tests/tbump.nim(6, 8) Error: cannot open file: balls | 
| 05:23:53 | FromDiscord | <Phil (he/him)> I think even with that limitation it should be fine, because threading itself does not need CPS inclusion I think↵(@ringabout) | 
| 05:24:02 | FromDiscord | <leorize> right, most disruptek projects doesn't specify balls as dependencies | 
| 05:24:15 | FromDiscord | <Phil (he/him)> ... requires block missing? | 
| 05:24:15 | FromDiscord | <leorize> it's expected to be installed by anyone who want to run tests | 
| 05:24:39 | FromDiscord | <leorize> it's intentional because balls uses cps so we don't want that cyclic dep or nimble go boom | 
| 05:24:40 | FromDiscord | <Phil (he/him)> I mean, that's just silly. You have a dev dependency, specify it | 
| 05:24:58 | FromDiscord | <leorize> and also, nim is very prone to breaking cps | 
| 05:24:59 | FromDiscord | <ringabout> Yeah, I remember it was a path issue or something. But I will try to install balls ebfore running the test | 
| 05:25:07 | FromDiscord | <ringabout> (edit) "ebfore" => "before" | 
| 05:25:07 | FromDiscord | <Phil (he/him)> Ah, cyclic dependency | 
| 05:25:08 | FromDiscord | <Phil (he/him)> Hm | 
| 05:25:44 | FromDiscord | <leorize> balls is pretty big, dependency count wise | 
| 05:25:58 | FromDiscord | <leorize> and uses cutting edge nim tech | 
| 05:26:07 | FromDiscord | <Phil (he/him)> In that case I'd still want a comment about it in the nimble file | 
| 05:26:12 | FromDiscord | <leorize> works 99% of the time, unless devel acts up | 
| 05:27:24 | FromDiscord | <leorize> https://github.com/nim-works/cps/blob/af6dac5c183677f3d8db9e9e0fbf88c7ff7390d0/cps.nimble#L6-L7 | 
| 05:27:30 | FromDiscord | <leorize> looks like these days it's in task requires | 
| 05:27:48 | FromDiscord | <Phil (he/him)> Ahhhh that I can get behind | 
| 05:28:04 | FromDiscord | <leorize> but cps doesn't have a test task xd | 
| 05:28:04 | FromDiscord | <Phil (he/him)> Wait, declared? | 
| 05:28:12 | FromDiscord | <Phil (he/him)> I only know defined, the heck is declared doing | 
| 05:28:33 | FromDiscord | <leorize> defined works with `-d:`, declared means it must be a symbol like a function | 
| 05:29:44 | FromDiscord | <Phil (he/him)> Hmmmmmmm | 
| 05:30:07 | FromDiscord | <Phil (he/him)> Thinking this through step by step, I'd still kinda need matrix for the san steps, though it definitely is nice to get the grinds for free | 
| 05:30:19 | FromDiscord | <Phil (he/him)> Ah, not matrix, I mean testament | 
| 05:30:34 | FromDiscord | <leorize> or you can open an issue in balls to get asan and co integrated | 
| 05:30:37 | FromDiscord | <Phil (he/him)> That or I write my own "runTest" proc that repeats test-runs with the sanitizer flags | 
| 05:31:16 | FromDiscord | <ringabout> A test task would be great. Then I don't need to copy the test command from CI | 
| 05:31:38 | FromDiscord | <leorize> lol there's already an enum for it in balls, just the runtime code is not written | 
| 05:32:59 | FromDiscord | <leorize> well looks like disruptek already added asan/tsan support | 
| 05:34:57 | FromDiscord | <ringabout> In reply to @ringabout "A test task would": https://github.com/nim-lang/Nim/pull/23196 if this passes, I would add cps later | 
| 05:35:34 | FromDiscord | <leorize> you're running the test wrong, it should be `balls --path:.` | 
| 05:36:29 | FromDiscord | <leorize> if balls doesn't work with devel, try `#v4` branch | 
| 05:39:16 | FromDiscord | <ringabout> Thanks, I will check the CI later | 
| 05:44:59 | FromDiscord | <Phil (he/him)> Still made a github issue about it, because it's useful to have a general statement about that somewhere out there in the project. Even if it's just the issue.↵If he confirms it is in there, I'd suggest adding a list to the README.md which tools are being used | 
| 06:08:04 | FromDiscord | <ringabout> In reply to @leorize "you're running the test": I think it's the issue of testament https://github.com/nim-lang/Nim/actions/runs/7484737856/job/20372040352?pr=23196↵>    balls --path=.↵>   /bin/sh: 1: balls: not found | 
| 06:08:09 | FromDiscord | <ringabout> (edit) "the" => "an" | 
| 06:08:55 | FromDiscord | <leorize> I think it's just that nimble binary folder is not in PATH | 
| 06:10:33 | FromDiscord | <zectbumo> In reply to @Elegantbeef "Speaking of <@157415492812800000> need": I'm playing with it now. recompiling differences and changing tests. I'm now believing that I'm not sure I fully understand what I asked for and what was done. | 
| 06:20:34 | FromDiscord | <zectbumo> I'm not entirely sure `t = a.sym.ast.typ` is correct since it's getting the type of the sym(bol?) and not the enum value type(?) | 
| 06:22:02 | FromDiscord | <Elegantbeef> Instantiated statics change their symbol's type | 
| 06:22:42 | FromDiscord | <Elegantbeef> I mean the code worked in the examples provided | 
| 06:23:35 | FromDiscord | <Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 06:24:42 | FromDiscord | <Elegantbeef> `T.ast` may also worl | 
| 06:24:44 | FromDiscord | <Elegantbeef> work\ | 
| 06:24:55 | FromDiscord | <zectbumo> okay so what I'm seeing is if I call `test[Stdout]()` then `echo T` says Stdout.↵but if I use the default method `proc test[T:Files = Stdout]()` and call it `test()` then `echo T` says `Files` | 
| 06:25:18 | FromDiscord | <zectbumo> (edit) "okay so what I'm seeing is if I call `test[Stdout]()` then `echo T` says Stdout.↵but if I use the default ... method" added "type" | 
| 06:25:27 | FromDiscord | <Elegantbeef> Can your provide the code example again? | 
| 06:27:03 | FromDiscord | <zectbumo> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 06:27:29 | FromDiscord | <Elegantbeef> You didnt write `static` | 
| 06:27:36 | FromDiscord | <zectbumo> which I thought, would ... oh | 
| 06:28:04 | FromDiscord | <zectbumo> `static Stdout`? still `Files` | 
| 06:28:20 | FromDiscord | <Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 06:28:26 | FromDiscord | <Elegantbeef> Works fine | 
| 06:28:35 | FromDiscord | <Elegantbeef> `= ...` was unimplemented to it appears one also needs to implement a check there | 
| 06:28:47 | FromDiscord | <zectbumo> okay. that works. I see | 
| 06:28:59 | FromDiscord | <zectbumo> static Files, what does that do? | 
| 06:29:13 | FromDiscord | <Elegantbeef> Forces files to be a static value | 
| 06:29:38 | FromDiscord | <Elegantbeef> Actually in hindsight that's a non issue Nim allows passing values where types would be | 
| 06:29:42 | FromDiscord | <Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 06:30:01 | FromDiscord | <Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 06:30:42 | FromDiscord | <Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 06:30:49 | FromDiscord | <zectbumo> that's what I thought, but I'm not sure I can make sense of it | 
| 06:31:22 | FromDiscord | <Elegantbeef> `T: Files` is just a generic parameter that expects a type | 
| 06:31:36 | FromDiscord | <Elegantbeef> `T: static Files` says "This is a generic parameter that expects static value" | 
| 06:34:16 | FromDiscord | <zectbumo> so how do you write:↵`proc testG[T: static Files | int = Stdout] =` | 
| 06:34:29 | FromDiscord | <Elegantbeef> `static[Files or int]` | 
| 06:34:34 | FromDiscord | <Elegantbeef> If that compiles | 
| 06:34:37 | FromDiscord | <arathanis> Beef, did you find anything about `strictDefs` from my code snippet earlier? | 
| 06:35:48 | FromDiscord | <Elegantbeef> Nope I only looked at the example | 
| 06:35:54 | FromDiscord | <zectbumo> testG() works but testG[int]() gets error `Error: cannot instantiate: 'testG[int]'` | 
| 06:35:55 | FromDiscord | <Elegantbeef> I expected it to work, did it work with `let`? | 
| 06:36:18 | FromDiscord | <Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 06:36:24 | FromDiscord | <arathanis> I didn't check with let, thought I would have to refactor it w/ let cause of scoping rules | 
| 06:36:35 | FromDiscord | <zectbumo> oh right, I didn't give it a static int | 
| 06:36:37 | FromDiscord | <Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 06:36:57 | FromDiscord | <arathanis> It mostly seems like it doesn't consider `try-except` blocks correctly in the analysis for determining if assignment is done | 
| 06:37:01 | FromDiscord | <Elegantbeef> These are all nice test cases I hope to see you colesce into a proper test | 
| 06:37:05 | FromDiscord | <arathanis> I even tried raw `except` to capture everything | 
| 06:37:32 | FromDiscord | <zectbumo> so earlier, I meant, how do I give it either a static Files or int type. oh, maybe that is mixing types | 
| 06:37:33 | FromDiscord | <Elegantbeef> You might need a `{.noReturn.}` inside the except, do not recall though if that can be used on code blocsk | 
| 06:37:54 | FromDiscord | <arathanis> I can experiment with that. What is the proper way to declare that? | 
| 06:38:11 | FromDiscord | <Elegantbeef> Ah sorry it only is for procs | 
| 06:38:55 | FromDiscord | <Elegantbeef> Actually yea I now remember using `strictdefs` with `let` and just manually assigning it inside of my code | 
| 06:41:04 | FromDiscord | <Elegantbeef> It's silly that you can have try except expressions but not strict defs + try except | 
| 06:47:12 | FromDiscord | <zectbumo> is there a way in the docs to show me all procs that have the first argument type File? | 
| 06:48:42 | FromDiscord | <Elegantbeef> Nope | 
| 06:48:59 | FromDiscord | <zectbumo> sounds like another feature I need to build 😛 | 
| 06:50:48 | FromDiscord | <leorize> it used to exist I think | 
| 06:51:06 | FromDiscord | <zectbumo> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 06:51:26 | FromDiscord | <Elegantbeef> `stdout` is not a a static value | 
| 06:51:44 | FromDiscord | <Elegantbeef> Generic parameters have to be compile time constants | 
| 06:51:53 | FromDiscord | <zectbumo> ok | 
| 06:52:20 | FromDiscord | <zectbumo> what I probable want is FileHandle then | 
| 06:52:26 | FromDiscord | <zectbumo> (edit) "probable" => "probably" | 
| 06:52:52 | FromDiscord | <Elegantbeef> I mean you can just use an `static range[0..2]` and then do `cast[FileHandle]` and write to it | 
| 06:53:10 | FromDiscord | <zectbumo> I'll try that | 
| 06:57:28 | FromDiscord | <zectbumo> In reply to @leorize "it used to exist": that's what I thought too | 
| 07:21:59 | * | PMunch joined #nim | 
| 07:32:49 | * | advesperacit joined #nim | 
| 07:48:27 | FromDiscord | <gyatsoyt> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 07:48:52 | FromDiscord | <gyatsoyt> i only have 2 brain cells left now | 
| 07:49:16 | * | synaps3 joined #nim | 
| 07:58:19 | FromDiscord | <pmunch> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 07:59:00 | FromDiscord | <pmunch> (edit)  | 
| 07:59:14 | FromDiscord | <pmunch> @gyatsoyt, something like that? | 
| 08:01:05 | FromDiscord | <gyatsoyt> yea | 
| 08:01:16 | FromDiscord | <gyatsoyt> tyy | 
| 08:02:23 | FromDiscord | <odexine> slightly wrong i believe | 
| 08:02:41 | FromDiscord | <odexine> indentation wrong after the first stdout.write | 
| 08:03:27 | FromDiscord | <gyatsoyt> In reply to @odexine "indentation wrong after the": fixed it myself | 
| 08:03:45 | PMunch | Ah, yes. That's what I get for manually trying to fix the indent :P | 
| 08:06:32 | FromDiscord | <ca_lobo_14153> Can anyone tell me where nim is pulling the configs from when compiling?  I seem to get an extr 'lib' when it tries ot open the '/usr/lib/nim/system.nim' file... '''dietpi@DietPi:~$ nim c -d:ssl ./downloadAndParse.nim ↵Error: cannot open '/usr/lib/nim/lib/system.nim' ''' | 
| 08:07:42 | FromDiscord | <ca_lobo_14153> (edit) "Can anyone tell me where nim" => "sent a long message, see <!doctype html> <html lang=en> <head>     <meta charset=utf-8>     <title> </title> </head> <style>     body {         font-family: monospace;  margin: 2em;     } </style> <body>     <p>ix.io" | "pulling the configs from when compiling?" => "taking a break 🍻</p>" | "I seem to get an extr 'lib' when it tries ot open the '/usr/lib/nim/system.nim' file... | 
| 08:08:03 | FromDiscord | <ca_lobo_14153> (edit) "long message," => "code paste," | "<!doctype html> <html lang=en> <head>     <meta charset=utf-8>     <title> </title> </head> <style>     body {         font-family: monospace;  margin: 2em;     } </style> <body>     <p>ix.io is taking a break 🍻</p>     <img src="/underconstruction.gif" width="200px"> </body> </html>" => "https://play.nim-lang.org/#ix=html>" | 
| 08:08:17 | PMunch | Well the `nim/lib/system.nim` part is typically correct | 
| 08:08:25 | PMunch | It seems like you have installed Nim incorrectly | 
| 08:09:28 | PMunch | And Nim prints out the configs it uses while compiling | 
| 08:09:30 | FromDiscord | <ca_lobo_14153> yep... built v2.0.2 and installed/uninstalled twice... once for /usr/local/bin and again for /usr/bin   I've review the install.sh file and it seems to be correct... hence the question | 
| 08:09:56 | PMunch | I would highly recommend installing via Choosenim | 
| 08:10:17 | FromDiscord | <leorize> are you using the Debian package? | 
| 08:10:19 | FromDiscord | <ca_lobo_14153> I would  except Odroid N2+ is not a supported arch | 
| 08:10:52 | PMunch | You could certainly put these files in unconventional places and get Nim to work, but there are many third party tools which expect things to be in certain places | 
| 08:11:00 | PMunch | Ah, that's a shame | 
| 08:11:53 | FromDiscord | <leorize> what arch is odroid n2+? | 
| 08:12:07 | FromDiscord | <leorize> if it's arm then nightlies got binaries | 
| 08:12:14 | FromDiscord | <ca_lobo_14153> previous used Debian 1.0.xx    ARM64 | 
| 08:12:23 | FromDiscord | <leorize> and, uh, don't ever use install.sh | 
| 08:12:35 | FromDiscord | <leorize> it doesn't work and will always give you broken nim | 
| 08:12:43 | FromDiscord | <MDuardo> I use the `nim` package from the repos↵It works fine | 
| 08:12:49 | FromDiscord | <ca_lobo_14153> ok... that's the problem then leorize... 🙂 | 
| 08:12:59 | FromDiscord | <ca_lobo_14153> I used install.sh to install... | 
| 08:13:05 | FromDiscord | <leorize> just unpack the nightlies archive and add the bin folder to PATH | 
| 08:13:11 | FromDiscord | <leorize> no magic required | 
| 08:13:20 | FromDiscord | <MDuardo> Yeah, easy | 
| 08:14:09 | FromDiscord | <ca_lobo_14153> ok I will try that tommorrow... thanks for the pointer... can someone "fix" the install  instructions on nim-lang to prevent newbies like me from going off into the weeds with install.sh? | 
| 08:14:14 | FromDiscord | <MDuardo> Or if you regret, see the bash script and deleted whatever it put on your computer and install Nim with a normal executable | 
| 08:15:19 | FromDiscord | <MDuardo> Maybe open a discussion on GitHub? | 
| 08:16:29 | synaps3 | hi all, decided to try nim | 
| 08:17:29 | FromDiscord | <odexine> welcome | 
| 08:17:45 | FromDiscord | <Phil> Cheers | 
| 08:18:40 | FromDiscord | <albassort> we are here to help :) | 
| 08:19:39 | * | jjido joined #nim | 
| 08:31:57 | * | synaps3 quit (Quit: WeeChat 3.0) | 
| 08:31:59 | FromDiscord | <MDuardo> Ask right away | 
| 08:33:10 | * | jjido quit (Quit: My laptop has gone to sleep. ZZZzzz…) | 
| 08:39:39 | FromDiscord | <ca_lobo_14153> Ok opened a bug in Nim on install.sh.... | 
| 08:40:16 | FromDiscord | <ca_lobo_14153> question regarding Choosenim support - there doesn't seem to be much maintenance on choosenim these days... | 
| 08:40:45 | FromDiscord | <leorize> dom left nim so all of their projects are now unmaintained | 
| 08:41:05 | FromDiscord | <leorize> and no one stepped up to continue the work | 
| 08:41:05 | FromDiscord | <ca_lobo_14153> is it worth opening an issue for the following.... | 
| 08:41:07 | FromDiscord | <Phil (he/him)> I can only state how it works for me on arch Linux\: Without issue over the last \~2 years I think.↵Swapping between devel and stable "just worked" | 
| 08:42:31 | FromDiscord | <ca_lobo_14153> ok,  I will not bother then...  @Phil how do you swap? | 
| 08:42:44 | FromDiscord | <ca_lobo_14153> my OS/Arch are : | 
| 08:42:45 | FromDiscord | <MDuardo> I believe it could be solved just by adding the binary to the home directory in .bashrc↵(@ca_lobo_14153) | 
| 08:43:21 | FromDiscord | <ca_lobo_14153> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 08:43:47 | FromDiscord | <Phil (he/him)> I typically just use `choosenim devel`, `choosenim stable`, `choosenim 1.6.10`, `choosenim update devel`, `choosenim update stable` | 
| 08:44:17 | FromDiscord | <Phil (he/him)> choosenim  jumps to that version.↵↵choosenim update x in the case of devel and stable will update what you currently have to the most recent devel/stable versions | 
| 08:47:30 | PMunch | Yeah I think the main reason no-one has stepped in to take over choosenim is because it "just works" | 
| 08:47:59 | FromDiscord | <ca_lobo_14153> LOL...   in my case... just works = " not supported" | 
| 08:48:00 | PMunch | If it stops working I'll likely fork it myself | 
| 08:48:11 | PMunch | Well yeah, the no support issue isn't great | 
| 08:48:29 | PMunch | But I think that's just a matter of there not being binaries built by the Nim CI | 
| 08:49:12 | FromDiscord | <ca_lobo_14153> problem isn't the binaries... I built it and all the test passed...  issue is the install is FUBAR'd | 
| 08:49:31 | PMunch | Well yes, but that's not a choosenim issue | 
| 08:50:39 | FromDiscord | <Phil (he/him)> ~~Lets provide a nim snap so it can compile on all systems~~ | 
| 09:26:27 | FromDiscord | <bigcatnova> how do i make a design a gui in nim | 
| 09:26:32 | FromDiscord | <bigcatnova> (edit) "a" => "and" | 
| 09:27:17 | FromDiscord | <Elegantbeef> You can use owlkettle if you want to use GTK, there are some QT libraries for qml and QT 6 | 
| 09:27:31 | FromDiscord | <Elegantbeef> You can also use webui and similar packages if you are that disposition | 
| 09:28:31 | FromDiscord | <bigcatnova> In reply to @Elegantbeef "You can use owlkettle": thanks ill use owlkettle | 
| 09:29:28 | FromDiscord | <bigcatnova> is it native though? if someone wants to use my compiled nim program with a gui, do they need to install anything beforehand | 
| 09:29:33 | FromDiscord | <bigcatnova> (windows 10/11) | 
| 09:29:59 | FromDiscord | <Elegantbeef> You'd have to ship gtk with it | 
| 09:30:01 | FromDiscord | <Elegantbeef> Or statically link it | 
| 09:30:24 | FromDiscord | <bigcatnova> ok thanks | 
| 09:30:52 | FromDiscord | <Elegantbeef> No clue how easy it is to statically link it on windows I know it's annoying to link GTK from linux to windows | 
| 09:32:06 | FromDiscord | <MDuardo> I heard from GTK devs that it's a bit painful to make GTK to work on Windows | 
| 09:32:21 | FromDiscord | <Elegantbeef> It's not that difficult to make it work | 
| 09:32:46 | FromDiscord | <Elegantbeef> Think they only ship their stuff with msys though | 
| 09:33:29 | FromDiscord | <bigcatnova> so its more than just dlls required? | 
| 09:33:34 | FromDiscord | <Elegantbeef> https://can-lehmann.github.io/owlkettle/docs/installation.html | 
| 09:33:37 | FromDiscord | <Elegantbeef> Not for usuers | 
| 09:33:38 | FromDiscord | <Elegantbeef> users\ | 
| 09:33:54 | FromDiscord | <Elegantbeef> For developers you follow the installation guide | 
| 09:34:52 | FromDiscord | <Phil> What can RickBaretto say, except, you're welcome | 
| 09:35:12 | FromDiscord | <bigcatnova> In reply to @Elegantbeef "For developers you follow": okay i got it now | 
| 09:36:11 | FromDiscord | <MDuardo> Just like when you need to download some stuff on Cargo when you build Rust projects↵↵Binaries are clean and dependency free | 
| 09:36:29 | FromDiscord | <Elegantbeef> Well they're not dependency free since they depend on gtk 😛 | 
| 09:37:25 | FromDiscord | <Elegantbeef> You need to statically link to gtk to make the dependency free but that also means gpl would like a word | 
| 09:37:25 | FromDiscord | <Elegantbeef> them\ | 
| 09:37:33 | FromDiscord | <bigcatnova> is there a better library for gui development in nim? owlkettle doesnt seem great for windows users | 
| 09:38:11 | FromDiscord | <loloof64> Hi ! I'm having an issue in a Nim+WebUi project. The fact is that I get a runtime error, but it does not help me to debug : even using gdb it's worse. If I can I'll create a thread in order to give more details | 
| 09:38:15 | FromDiscord | <Elegantbeef> https://nimble.directory/search?query=ui | 
| 09:38:37 | FromDiscord | <Elegantbeef> Do you have a minimum reproduction of your issue? | 
| 09:38:41 | FromDiscord | <bigcatnova> In reply to @Elegantbeef "https://nimble.directory/search?query=ui": oh thanks | 
| 09:40:41 | FromDiscord | <MDuardo> I've never tried to make an GUI outside a browser↵↵I will try Owlkettle tomorrow | 
| 09:40:53 | FromDiscord | <Elegantbeef> It's a very nice library imo | 
| 09:40:57 | PMunch | bigcatnova, Gtk should be fine for Windows users | 
| 09:41:09 | FromDiscord | <Elegantbeef> @loloof64 just ask your question here | 
| 09:41:36 | FromDiscord | <loloof64> Yes thank you, otherwise I've found how to create a thead. | 
| 09:42:15 | FromDiscord | <Elegantbeef> The Nim community is spread across multiple chats so discord threads will only get a subset of eyes on | 
| 09:42:36 | FromDiscord | <loloof64> Thank you, so I'm creating a project in Nim with WebUI, with the following main code | 
| 09:43:01 | FromDiscord | <loloof64> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 09:43:42 | FromDiscord | <loloof64> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 09:44:23 | FromDiscord | <loloof64> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 09:45:21 | FromDiscord | <Elegantbeef> I do not have the toml so I'm also getting a SIGSEGV 😄 | 
| 09:45:30 | FromDiscord | <Elegantbeef> But that aside it works fine on my OS | 
| 09:45:30 | FromDiscord | <loloof64> I guess it is something related to the Toml.loadFile call, but I don't know exactly how to solve it. Indeed the file does not exists for now, but I've tried to try/catch. | 
| 09:45:42 | FromDiscord | <Elegantbeef> You cannot try catch nil refs | 
| 09:45:46 | FromDiscord | <loloof64> ok | 
| 09:45:52 | FromDiscord | <loloof64> thanks I understand better | 
| 09:45:55 | FromDiscord | <Elegantbeef> Check if the file exists first | 
| 09:46:07 | FromDiscord | <loloof64> yes, thank you 🙂 | 
| 09:46:26 | FromDiscord | <Elegantbeef> But the code likely should not crash if the file does not exist | 
| 09:47:05 | FromDiscord | <Elegantbeef> I'd suggest making a min reproduction of the error and submitting to the tomlserialisation repo | 
| 09:47:27 | FromDiscord | <loloof64> Yes, thank you 🙂 | 
| 09:47:33 | FromDiscord | <griffith1deadly> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 09:47:55 | FromDiscord | <griffith1deadly> (edit)  | 
| 09:48:00 | FromDiscord | <loloof64> Thank you. I'll try this way 🙂 | 
| 09:48:06 | FromDiscord | <griffith1deadly> (edit)  | 
| 09:48:13 | FromDiscord | <griffith1deadly> (edit)  | 
| 09:48:20 | FromDiscord | <griffith1deadly> (edit)  | 
| 09:48:30 | FromDiscord | <Elegantbeef> Well technically with Nim's new default intialisers you should do `var settings = default GameSettings` | 
| 09:49:19 | FromDiscord | <loloof64> Trying right now 🙂 | 
| 09:49:37 | FromDiscord | <Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 09:49:47 | FromDiscord | <Elegantbeef> This is a tinge funny | 
| 09:50:10 | FromDiscord | <nnsee> well, I wanted to fork choosenim, even bought `getnim` domains, but people here told me that someone's already doing that | 
| 09:50:14 | FromDiscord | <nnsee> but apparently not | 
| 09:50:33 | FromDiscord | <Elegantbeef> gitnim exists | 
| 09:50:58 | FromDiscord | <Elegantbeef> http://gitnim.com/ infact | 
| 09:51:54 | FromDiscord | <onigirimental> is there some tutorial about sending data to and from C++ with threads or coroutines on both sides? | 
| 09:52:27 | * | jmdaemon quit (Quit: ZNC 1.8.2 - https://znc.in) | 
| 09:52:41 | FromDiscord | <onigirimental> lets say I want gui application thread and some http client thread that will do downloads while gui thread continues handling events | 
| 09:52:49 | FromDiscord | <Phil> Like a nim thread sends something to a C++ thread? | 
| 09:52:57 | FromDiscord | <onigirimental> yes | 
| 09:53:14 | FromDiscord | <onigirimental> and receiveing data back | 
| 09:53:30 | FromDiscord | <griffith1deadly> In reply to @onigirimental "lets say I want": then you can use threads and channels, but idk about C++ part | 
| 09:54:00 | FromDiscord | <onigirimental> it should be some mutant with high level of emit usage | 
| 09:54:17 | FromDiscord | <loloof64> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 09:55:19 | FromDiscord | <Phil> I have honestly no clue on how to do that.↵I'd honestly keep the code bases separated and have the c++ code run as a process | 
| 09:55:26 | FromDiscord | <Phil> Then you can talk to that process via sockets IIRC | 
| 09:55:38 | FromDiscord | <griffith1deadly> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 09:55:45 | FromDiscord | <loloof64> (edit)  | 
| 09:55:56 | FromDiscord | <Phil> (edit) "that.↵I'd" => "that @onigirimental .↵I'd" | 
| 09:56:24 | FromDiscord | <Elegantbeef> What an oddly specific thing to have a tutorial for 😄 | 
| 09:56:24 | FromDiscord | <Elegantbeef> If you want to be a pro Nim programmer drop the `return` | 
| 09:56:25 | FromDiscord | <Elegantbeef> Also you're not using `path` | 
| 09:56:25 | FromDiscord | <Elegantbeef> I feel like any sane person would just wrap the C++ code with a C header and then call that from Nim | 
| 09:56:27 | FromDiscord | <griffith1deadly> In reply to @isofruit "Then you can talk": or ipc (pipes) | 
| 09:56:56 | FromDiscord | <Phil> That's beyond me, I experimented with inter-process-communication once via sockets and that was in python | 
| 09:56:58 | FromDiscord | <Phil> So eh | 
| 09:57:22 | FromDiscord | <Phil> I work on inter-thread-communication right now but trying to do that between 2 programming languages seems wild to me, not sure how to achieve that properly | 
| 09:57:54 | FromDiscord | <loloof64> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 09:58:37 | FromDiscord | <loloof64> Oh, just forgot that level has to be -1 and not 0 by default | 
| 09:59:07 | FromDiscord | <loloof64> (edit) "Oh, ... just" added "I" | 
| 09:59:39 | FromDiscord | <Elegantbeef> @onigirimental are you attempting to use a specific library/program or is this just a weird thing you're doing? 😄 | 
| 10:04:11 | FromDiscord | <loloof64> In fact I plan to communicate with a chess uci engine. And for the GUI part, I'm using WebUi. | 
| 10:04:27 | FromDiscord | <loloof64> https://webui.me/docs/2.4/#/ | 
| 10:04:58 | FromDiscord | <loloof64> https://fr.wikipedia.org/wiki/Universal_Chess_Interface | 
| 10:06:31 | FromDiscord | <loloof64> Oups sorry, I did not notice that the previous message was not for me : apologizing | 
| 10:13:33 | FromDiscord | <onigirimental> In reply to @Elegantbeef "<@1194940244659810375> are you attempting": I will use pure Nim without additional libraries, xmake as build system and https://github.com/linuxmint/xapp with its system tray functionality | 
| 10:16:56 | PMunch | But why though? | 
| 10:17:12 | FromDiscord | <onigirimental> why not? | 
| 10:17:25 | PMunch | It's a cumbersome way to go about things? | 
| 10:19:23 | FromDiscord | <onigirimental> my goal is desktop app | 
| 10:19:28 | FromDiscord | <onigirimental> there is no other way arount | 
| 10:20:11 | FromDiscord | <onigirimental> of course you can do multiple processes, pipes and other stuff, but it's very bad performance-wise and makes cross-compilation a lot harder | 
| 10:20:13 | PMunch | Uhm, there are many ways of creating apps | 
| 10:20:24 | PMunch | And doing it manually with emit is about the worst possible one | 
| 10:21:02 | FromDiscord | <Elegantbeef> Using Nim as a C++ frontend is a horrifically funny nerdsnipe | 
| 10:21:09 | FromDiscord | <mratsim> In reply to @onigirimental "of course you can": Are your users typing at nanoseconds speed? | 
| 10:21:39 | FromDiscord | <mratsim> Nim is a better C++ build system, bite me | 
| 10:21:39 | FromDiscord | <onigirimental> it's implemented using emit everywhere, you're just using additional abstractions that wont make things easier | 
| 10:22:08 | FromDiscord | <mratsim> I replaced cmake with Nim here: https://github.com/mratsim/agent-smith/blob/a2d9251/third_party/ale_build.nim#L65-L83 | 
| 10:22:59 | FromDiscord | <Phil> ~~nimble task are the best build system, bite me~~ | 
| 10:23:03 | FromDiscord | <Phil> (edit) "task" => "tasks" | 
| 10:23:21 | PMunch | onigirimental, that's like writing stuff in assembly because abstractions won't make things easier.. The whole point of an abstraction is to make something easier | 
| 10:23:47 | PMunch | I might just completely misunderstand what you're trying to do, but what I think you're doing is absolutely bonkers | 
| 10:24:02 | FromDiscord | <mratsim> In reply to @onigirimental "lets say I want": just use async? | 
| 10:24:03 | FromDiscord | <onigirimental> the button in gtkmm is Button, the button in gintro abstraction is Button, what's simpler? | 
| 10:24:35 | PMunch | Huh? | 
| 10:25:08 | FromDiscord | <onigirimental> @mratsim how nim's async would work with c++? | 
| 10:26:01 | FromDiscord | <mratsim> usually you split between compute tasks and IO tasks.↵↵Compute tasks make progress by using your CPU, IO tasks make progress by waiting on data.↵Both http download (waiting on network) and GUI (waiting on user inputs) are about waiting, and multiple threads won't speed anything, the communication overhead actually will make things slower. | 
| 10:26:12 | FromDiscord | <Phil> I don't understand the constellation and which bits and bobs are C++ here.↵I'm getting progressively more confused as we talk | 
| 10:26:16 | FromDiscord | <mratsim> In reply to @onigirimental "<@570268431522201601> how nim's async": `nim cpp` will compile Nim in C++ mode. | 
| 10:26:42 | FromDiscord | <mratsim> now, what's the C++ part of your code? | 
| 10:27:36 | FromDiscord | <onigirimental> i don't have any code yet, just searching for examples. We still need Nim primitives to make generated c++ talk with written nim code | 
| 10:27:39 | FromDiscord | <Phil> Like, I am working on multithreading and a lib for easy long-running "threadServers" | 
| 10:27:56 | FromDiscord | <onigirimental> (edit) "i don't have any code yet, just searching for examples. We still need Nim primitives to make generated c++ talk with written ... nim" added "ASYNC" | 
| 10:27:57 | FromDiscord | <Phil> That you can ping with messages and that support async and can do whatever | 
| 10:28:10 | FromDiscord | <Phil> And may have their own threadpool for task parallelism | 
| 10:28:26 | FromDiscord | <Phil> But I can't imagine how C++ interop would work | 
| 10:28:55 | FromDiscord | <Phil> C++ would need to be passed a ptr to a channel and understand the channel implementation, which sounds already too far fetched to me | 
| 10:29:13 | FromDiscord | <onigirimental> but one thing i can tell for sure is that gtk has it's own thread | 
| 10:29:24 | FromDiscord | <Phil> gtk has its own thread and its own tools for parallelism | 
| 10:29:44 | FromDiscord | <Phil> Strictly speaking, if you use gtk you shouldn't even be using nim tools for multithreading unless gtk has no abstraction | 
| 10:29:49 | FromDiscord | <mratsim> In reply to @onigirimental "i don't have any": Nim calls C++ or C++ calls Nim? | 
| 10:29:59 | FromDiscord | <Q-Master> just write a nim proc which will put something to channel↵(@Phil) | 
| 10:30:00 | FromDiscord | <Phil> GTK provides procs to dispatch tasks and has its own GAsyncQueue | 
| 10:30:52 | FromDiscord | <onigirimental> In reply to @mratsim "Nim calls C++ or": both. nim calls c++ to start gui thread; gui thread calls Nim sending some data on user input events; nim thread does some downloads to c++ thread to update gui | 
| 10:31:24 | FromDiscord | <Phil> Then use GAsyncQueue, spawn your own thread with a while-loop that polls GAsyncQueue or sth | 
| 10:31:26 | FromDiscord | <onigirimental> the main function is on nim's side | 
| 10:31:56 | FromDiscord | <mratsim> In reply to @onigirimental "both. nim calls c++": write a queue in either C++ or Nim, write the header for C++, write a wrapper for Nim (if the queue was written in C++) | 
| 10:32:10 | FromDiscord | <Phil> In reply to @mratsim "write a queue in": Since GTK comes with a queue for that I'd suggest using that | 
| 10:32:18 | FromDiscord | <mratsim> In reply to @isofruit "Since GTK comes with": yes fair enough. | 
| 10:32:21 | FromDiscord | <Phil> No need to reinvent the wheel if your car already comes with some | 
| 10:32:40 | FromDiscord | <mratsim> In reply to @isofruit "No need to reinvent": _reinventing the wheel since 2017_ | 
| 10:33:07 | FromDiscord | <Phil> if your car already comes with some | 
| 10:33:11 | FromDiscord | <onigirimental> car is definitely not designed for writing bindings for its parts) | 
| 10:33:15 | FromDiscord | <Phil> Plenty of cars without wheels out there | 
| 10:33:26 | FromDiscord | <mratsim> In reply to @isofruit "*if your car already": Nim used to have std/threadpools 😉 | 
| 10:33:44 | FromDiscord | <Phil> Yeh and now we have like 3 libs with subtle differences for the same 😛 | 
| 10:34:31 | FromDiscord | <mratsim> I'm writing a weave-io though I will likely rename it, because the dash becomes underscore | 
| 10:35:34 | FromDiscord | <mratsim> for now it lives here: https://github.com/mratsim/weave-io↵↵I need to change the worker queues to FIFO for fairness and latency↵I also need to add a global queue on top for tasks that comes from any threads. | 
| 10:36:19 | FromDiscord | <mratsim> Then I will look into dealing with blocking tasks like reading from stdin, might have a dynamic pool of threads, unsure yet on how to detect blocked threads or long-running threads. | 
| 10:36:48 | FromDiscord | <mratsim> or maybe just provide a `spawnBlocking` for tasks that will be stuck | 
| 10:37:31 | FromDiscord | <ieltan> very interesting stuff for the curious: https://github.com/blackmius/uasync | 
| 10:37:52 | FromDiscord | <ieltan> it's async/await based on io_uring 🙂 | 
| 10:40:57 | FromDiscord | <Phil> In reply to @mratsim "I'm writing a weave-io": Looking forward to eventually using it with threadbutler | 
| 10:41:13 | FromDiscord | <Phil> Once, in the far future, when all of the tech-stack I need to rely on is correct and safe | 
| 10:44:22 | FromDiscord | <kiloneie> In reply to @isofruit "Yeh and now we": Yeah that was me confused a few days ago... | 
| 10:47:03 | Amun-Ra | is using emit the only way to catch JS exception? | 
| 10:55:57 | FromDiscord | <9ih> how ass of an idea is it to use Nim for graphics programming (game engine type beat)? | 
| 10:56:08 | FromDiscord | <9ih> or is that quite reasonable | 
| 10:58:46 | PMunch | I'd say it's quite reasonable | 
| 10:59:15 | PMunch | Might even go as far as to say it's a great idea | 
| 10:59:33 | FromDiscord | <Clonkk> Well I know there are bindings to Raylib, Godot and Unreal.out there. I think Beamdog has developed and shipped game using Nim AFAIK↵(@9ih) | 
| 11:00:23 | FromDiscord | <9ih> I just have an awfully specific use case that I wanted to use C for, but alas C graphics development on Windows is a bit of a strange business, especially since I want to get emscripten involved | 
| 11:01:14 | FromDiscord | <9ih> but with the way that Nim has JS as a target natively and I don't need to worry about including libraries like ICU (I think Nim has good unicode support?), I think it's looking like a good option right now | 
| 11:02:21 | Amun-Ra | I'm writing image viewer port for js target (using canvas) | 
| 11:02:47 | FromDiscord | <griffith1deadly> In reply to @9ih "I just have an": naylib then or sokol-nim | 
| 11:03:04 | PMunch | @Clonkk, wait what? | 
| 11:03:06 | FromDiscord | <griffith1deadly> both support emscripten as i recall | 
| 11:04:06 | FromDiscord | <9ih> well chances are I won't need emscripten with nim | 
| 11:04:09 | PMunch | I have heard that they have used some Nim for internal tools and such, but have they actually released a game written in Nim? | 
| 11:04:33 | FromDiscord | <9ih> since I can just choose between webgl bindings or opengl bindings backend surely | 
| 11:04:39 | FromDiscord | <9ih> (edit) "since I can just choose between webgl bindings or opengl bindings backend ... surely" added "depending on the target" | 
| 11:04:46 | FromDiscord | <9ih> and then compile to C or JS | 
| 11:07:42 | Amun-Ra | that's how I catch js exceptions in js target: https://dpaste.com/H4FEMRNEY; I think I'll write a proper macro/template for that | 
| 11:12:19 | FromDiscord | <mratsim> In reply to @Clonkk "Well I know there": Beandog has shipped tooling for NeverwinterNights but the game is not in Nim, unless there is another game I'm not aware of?↵↵https://github.com/niv/neverwinter.nim | 
| 11:12:26 | FromDiscord | <mratsim> (edit) "Beandog" => "Beamdog" | 
| 11:14:46 | PMunch | Well they do appear to have a new game out.. | 
| 11:17:07 | FromDiscord | <ieltan> anyone has ressources on wrapping c libraries that does their own async ? | 
| 11:19:12 | PMunch | I mention it briefly here: https://peterme.net/wrapping-c-libraries-in-nim.html | 
| 11:21:16 | PMunch | And the bindings from that article can be found here: https://github.com/PMunch/libcoap | 
| 11:22:12 | PMunch | It's mostly a matter of manually creating Futures and registering the file handles with the async runtime | 
| 11:23:32 | FromDiscord | <ieltan> alright, thanks ! 🙂 | 
| 11:23:39 | PMunch | https://github.com/PMunch/libcoap/blob/master/src/coap.nim#L231-L244 | 
| 12:01:18 | * | azimut joined #nim | 
| 12:02:58 | * | azimut quit (Remote host closed the connection) | 
| 12:03:34 | * | azimut joined #nim | 
| 12:09:12 | FromDiscord | <Phil> Alrighty, finally on lunchbreak | 
| 12:09:35 | FromDiscord | <Phil> In reply to @onigirimental "car is definitely not": Out of curiosity, looked at GAsyncQueue yet? | 
| 12:10:00 | FromDiscord | <Phil> For message queue between the GTK-eventloop happening in your C++ code and the planned thread-"server" in nim for sending messages to? | 
| 12:11:13 | _________ | Amun-Ra: you can catch the exception in nim, like this: https://paste.gg/p/anonymous/d4958e8819f140dea8b2f30e0e30a9a8 | 
| 12:32:32 | * | jjido joined #nim | 
| 12:45:19 | * | rockcavera joined #nim | 
| 13:07:25 | FromDiscord | <nnsee> btw Phil I solved the problem I had last night with Prologue | 
| 13:08:03 | FromDiscord | <nnsee> it was a gcsafe-related error, adding the gcsafe pragma explicitly to my callback made the compiler actually spit out an actionable error that wasn't nonsense | 
| 13:15:18 | * | casaca joined #nim | 
| 13:17:44 | FromDiscord | <Phil> Oh crap did I entirely forget about your problem? | 
| 13:17:55 | FromDiscord | <Phil> Sorry, I have goldfish memory | 
| 13:18:15 | FromDiscord | <Phil> (edit) "Sorry, I have goldfish memory ... " added "when I'm on sth else" | 
| 13:18:36 | FromDiscord | <Phil> Basically turns me into a 50:50 coinflip machine on if I'll remember sth that occurred while I was on tunnelvision | 
| 13:21:39 | * | mronetwo joined #nim | 
| 13:21:49 | * | mhcat joined #nim | 
| 13:22:55 | * | noeontheend joined #nim | 
| 13:24:06 | * | adigitoleo joined #nim | 
| 13:24:28 | * | jjido quit (Quit: My laptop has gone to sleep. ZZZzzz…) | 
| 13:42:07 | * | noeontheend quit (Ping timeout: 260 seconds) | 
| 13:42:35 | * | mronetwo quit (Ping timeout: 260 seconds) | 
| 13:42:46 | * | adigitoleo quit (Ping timeout: 258 seconds) | 
| 13:43:02 | * | casaca quit (Ping timeout: 268 seconds) | 
| 13:43:03 | * | mhcat quit (Ping timeout: 260 seconds) | 
| 13:51:32 | * | mhcat joined #nim | 
| 13:51:37 | * | noeontheend joined #nim | 
| 13:51:45 | FromDiscord | <nnsee> In reply to @isofruit "Oh crap did I": it's fine, you seemed busy | 
| 13:51:54 | * | mronetwo joined #nim | 
| 13:51:57 | * | adigitoleo joined #nim | 
| 13:56:11 | * | adigitoleo quit (Ping timeout: 258 seconds) | 
| 13:56:13 | * | mronetwo quit (Ping timeout: 264 seconds) | 
| 13:56:18 | * | noeontheend quit (Ping timeout: 260 seconds) | 
| 13:56:52 | * | mhcat quit (Ping timeout: 276 seconds) | 
| 14:04:51 | Amun-Ra | _________: JsError, I'm going to give it a try, thanks :) | 
| 14:18:42 | FromDiscord | <nnsee> In reply to @isofruit "Oh crap did I": you can still help me - i'm being dumb with threads and i don't know how to fix it | 
| 14:19:22 | Amun-Ra | _________: works like a charm :) | 
| 14:26:19 | FromDiscord | <Phil> In reply to @nnsee "you can still help": Ping me in an hour post work | 
| 14:43:04 | FromDiscord | <onigirimental> In reply to @isofruit "Out of curiosity, looked": i will implement gtk-independent solution based on iso c or c++ | 
| 14:43:31 | FromDiscord | <onigirimental> or even wrap nim's async things to be callable from c | 
| 14:45:30 | FromDiscord | <Phil> I don't think we have an AsyncQueue yet 😄 | 
| 14:45:52 | FromDiscord | <Phil> I only suggested GAsyncQueue because I think it makes the most sense - Your C++ wrapper for GTK likely already knows it and very likely so will gintro | 
| 14:46:06 | FromDiscord | <Phil> And even if not, writing your own bindings to it should be a thing of 10 minutes | 
| 14:46:23 | FromDiscord | <Phil> For a comparatively complex component you'd otherwise need to invest some considerable testing for | 
| 14:46:32 | FromDiscord | <Phil> That's a pretty hefty tradeoff in your favour | 
| 14:46:54 | FromDiscord | <onigirimental> https://nim-lang.org/docs/system.html#Channel | 
| 14:46:55 | FromDiscord | <Phil> (edit) "That's a pretty hefty tradeoff in your favour ... " added "by just using somebody else's stuff. Particularly from somebody that you already depend on anyway" | 
| 14:47:15 | FromDiscord | <Phil> In reply to @onigirimental "https://nim-lang.org/docs/system.html#Channel": Yeah but that's only going to work by either blocking or polling | 
| 14:47:45 | FromDiscord | <onigirimental> this is exactly what synchronization primitive should do | 
| 14:47:50 | FromDiscord | <Phil> And I don't think it's too crazy to use GAsyncQueue since I think your c++ should already have access | 
| 14:52:16 | FromDiscord | <Phil> In reply to @onigirimental "this is exactly what": I guess I just also want a "push" solution 😄 | 
| 14:54:04 | FromDiscord | <onigirimental> mutex with array of items will do, just don't lock it for too much | 
| 14:54:38 | FromDiscord | <Phil> I mean, that's still a "pull" solution where you poll the queue | 
| 14:54:54 | FromDiscord | <Phil> I was more thinking a "push" solution where the queue has a callback to execute on your thread when a message arrives | 
| 14:54:55 | FromDiscord | <onigirimental> from other side you push | 
| 14:55:42 | FromDiscord | <leorize> you can just write this part yourself on top of any queue \:p↵(@Phil) | 
| 14:55:45 | FromDiscord | <onigirimental> callback is executed when one of threads lock the queue and takes value | 
| 14:55:59 | FromDiscord | <Phil> In reply to @leorize "you can just write": mratsim already offered to blatantly steal from him | 
| 14:57:25 | FromDiscord | <onigirimental> i'm doing things my wrong way anyway, i believe emit is the best interop | 
| 14:58:41 | FromDiscord | <griffith1deadly> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 15:01:26 | FromDiscord | <leorize> that means you have a memory corruption and should use address sanitizer | 
| 15:02:12 | FromDiscord | <griffith1deadly> fun | 
| 15:11:04 | FromDiscord | <requiresupport> how do define when chronos is used for async and when asyncdispatch is used in your code. If i want to support both | 
| 15:18:03 | * | PMunch quit (Quit: Leaving) | 
| 15:18:38 | FromDiscord | <bigcatnova> does dimscord support slash commands | 
| 15:19:28 | FromDiscord | <griffith1deadly> In reply to @bigcatnova "does dimscord support slash": yes | 
| 15:20:15 | FromDiscord | <griffith1deadly> https://github.com/ire4ever1190/dimscmd?tab=readme-ov-file#slash-commands | 
| 15:21:52 | FromDiscord | <bigcatnova> thanks | 
| 15:23:46 | FromDiscord | <nnsee> something is seriously fucked up with my async postgres connection pool and i don't know what | 
| 15:24:05 | FromDiscord | <nnsee> every sql request has a delay of almost exactly 1 second in each async procedure | 
| 15:25:33 | FromDiscord | <bigcatnova> what is the asterisk () used for in variable definition | 
| 15:25:44 | FromDiscord | <nnsee> for exporting them | 
| 15:25:50 | FromDiscord | <bigcatnova> like this `var variable: string = ""` | 
| 15:25:52 | FromDiscord | <nnsee> so if you `import` it from another module, you can access them | 
| 15:25:57 | FromDiscord | <bigcatnova> In reply to @nnsee "so if you `import`": ohh | 
| 15:27:20 | FromDiscord | <Robyn [She/Her]> In reply to @nnsee "every sql request has": Sounds odd... | 
| 15:29:25 | FromDiscord | <nnsee> i'm sure it's some polling going haywire somewhere but i have no clue what i'm looking for exactly | 
| 15:31:23 | FromDiscord | <nnsee> maybe i should just ditch the async connection pool and just create one connection for each thread | 
| 15:31:29 | FromDiscord | <nnsee> and use db_connector directly | 
| 15:36:46 | FromDiscord | <Robyn [She/Her]> Go ahead if you think that's the best idea | 
| 15:49:16 | FromDiscord | <nnsee> it just seems like a lot of overhead for barely any benefit at this scale | 
| 15:58:10 | FromDiscord | <Phil> Oh wow, work took a bit, alrighty now I'm available | 
| 15:58:57 | FromDiscord | <Phil> In reply to @requiresupport "how do define when": Generally chronos usage should be indicated via the chronos flag. | 
| 15:59:02 | FromDiscord | <Phil> Asyncdispatch actually mentions that one | 
| 15:59:07 | FromDiscord | <Phil> Let me go look for it | 
| 15:59:23 | FromDiscord | <Phil> https://nim-lang.org/docs/asyncdispatch.html#multiple-async-backend-support | 
| 16:00:20 | FromDiscord | <Phil> sent a long message, see <!doctype html> | 
| 16:01:26 | FromDiscord | <Phil> In reply to @nnsee "i'm sure it's some": Okay, you had a thread thingy | 
| 16:02:53 | FromDiscord | <Phil> In reply to @requiresupport "how do define when": Note, if you want to provide users the option to use both std/asyncdispatch and chronos, then you need to basically have the same module 2 times:↵once for chronos, once for asyncdispatch, and both need to be able to coexist side by side | 
| 16:03:00 | FromDiscord | <Phil> (edit) "In reply to @requiresupport "how do define when": Note, if you want to provide users the option to use both std/asyncdispatch and chronos, then you need to basically have the same module 2 times:↵once for chronos, once for asyncdispatch, and both need to be able to coexist side by side ... " added "if imported in the same module" | 
| 16:03:26 | FromDiscord | <Phil> (edit) "In reply to @requiresupport "how do define when": Note, if you want to provide users the option to use both std/asyncdispatch and ... chronos,the" added "chronos (because e.g. one lib forces them to use" | "chronos (because e.g. one lib forces them to usechronos, ... then" added "the other std/asyncdispatch)," | 
| 16:03:51 | FromDiscord | <requiresupport> In reply to @isofruit "Note, if you want": oh I thought I could have them in the same file but just add a bunch of `when defined...` | 
| 16:04:24 | FromDiscord | <Phil> In reply to @requiresupport "oh I thought I": You absolutely can, see the second paragraph of what I posted.↵That just means that if a user is forced to use both otherwise they'll have problems with your lib ^^ | 
| 16:05:24 | FromDiscord | <requiresupport> so my question is how to use `when defined(...)` so that when a user compiles with `-d:asyncBackend=chronos` it would compile my chronos code | 
| 16:06:19 | FromDiscord | <Phil> Generally you can access the value of a "defined" flag, see here:↵https://nim-lang.org/docs/nimc.html#compiler-usage-compileminustime-symbols | 
| 16:07:04 | FromDiscord | <nnsee> In reply to @nnsee "maybe i should just": yeah, doing this made everything much, much faster | 
| 16:07:34 | FromDiscord | <nnsee> and the code a bit simpler since i no longer have to keep track of the connection index from my connection pool when using transactions (`BEGIN .. COMMIT` etc) | 
| 16:11:34 | FromDiscord | <Phil> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 16:11:51 | FromDiscord | <Phil> In reply to @nnsee "yeah, doing this made": Async connection pool?↵Why not just a single connection pool with a lock? | 
| 16:12:08 | FromDiscord | <requiresupport> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 16:13:49 | FromDiscord | <nnsee> In reply to @isofruit "Async connection pool? Why": a combination of the fact that i had already created an async connection pool when i realized that prologue creates `nproc` amount of threads and each of them gets their own pool, not understanding how gcsafe and threadvar works, etc | 
| 16:13:51 | FromDiscord | <nnsee> general stupidity, really | 
| 16:14:05 | FromDiscord | <Phil> 😄 | 
| 16:14:24 | FromDiscord | <Phil> If you want you can take a look at tinypool | 
| 16:14:43 | FromDiscord | <Phil> It's what norm's connection pools are based on (albeit norm's are far more flexible) | 
| 16:15:07 | FromDiscord | <Phil> In fact you could also use norm's connection pools.↵In the end a connection pool really is just a seq of connections with a lock | 
| 16:36:57 | FromDiscord | <maker_of_mischief> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 16:37:04 | FromDiscord | <maker_of_mischief>  https://media.discordapp.net/attachments/371759389889003532/1195043711491510372/17049910239804519.png?ex=65b28e2f&is=65a0192f&hm=a60aa8f8b69bd7cde95220a442bfb27b15ad6b407fc385faa7602045242b9a1f& https://media.discordapp.net/attachments/371759389889003532/1195043711730589797/17049910239804519.png?ex=65b28e2f&is=65a0192f&hm=2b89858cd59e9a4cfaacff0bd59b94b129ad4c5458582edc127e92cf521e8fc8& | 
| 16:38:47 | FromDiscord | <maker_of_mischief> does len interact with strings differently based on bytes or something??? | 
| 16:38:53 | FromDiscord | <maker_of_mischief> does the unicode arrow do it? | 
| 16:39:11 | FromDiscord | <maker_of_mischief> oh https://media.discordapp.net/attachments/371759389889003532/1195044246596632576/17049911519932178.png?ex=65b28eaf&is=65a019af&hm=00ca70f70cbf990db4e6a2a36ec0c033e914e14e2663cc23c9d35943c0cac6d4& | 
| 16:39:17 | FromDiscord | <maker_of_mischief> it was the unicode doing it | 
| 16:41:35 | FromDiscord | <Phil> The power of unicode! | 
| 17:17:53 | FromDiscord | <MDuardo> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 17:20:10 | FromDiscord | <Phil> In reply to @MDuardo "How do cleanly end": I mean, typically if nothing happens you juts get exitcode 0 afaik | 
| 17:21:37 | FromDiscord | <MDuardo> But can you stop this from happening if you force the program to quit?↵↵SIGINT\: Interrupted by Ctrl-C.↵Error\: execution of an external program failed | 
| 17:22:25 | FromDiscord | <Phil> I don't think you can, but I might be wrong here.↵This is more a general question about how to "sense" an interrupt | 
| 17:22:47 | FromDiscord | <Phil> It feels like you shouldn't be able to because Ctrl-C should be unstoppable and function independent of the application | 
| 17:23:08 | FromDiscord | <Phil> But then again, vim exists and you sure as hell won't get out of that one with CTRL + C | 
| 17:25:16 | FromDiscord | <Phil> In reply to @MDuardo "But can you stop": https://nim-lang.org/docs/segfaults.html#c_signal%2Ccint%2CCSighandlerT↵This might be of interest here | 
| 17:25:37 | FromDiscord | <Phil> https://stackoverflow.com/questions/17766550/ctrl-c-interrupt-event-handling-in-linux↵Combined with this | 
| 17:33:21 | FromDiscord | <MDuardo> sent a code paste, see https://play.nim-lang.org/#ix=html> | 
| 17:45:50 | FromDiscord | <bigcatnova> possible to use a custom file description when compiling? windows | 
| 17:56:16 | NimEventer | New thread by jasonfi: 9999999999999999.0 – 9999999999999998.0, see https://forum.nim-lang.org/t/10866 | 
| 18:03:53 | * | jmdaemon joined #nim | 
| 18:10:37 | * | jmdaemon quit (Ping timeout: 264 seconds) | 
| 18:12:32 | * | zgasma joined #nim | 
| 18:22:43 | * | xutaxkamay quit (Quit: ZNC 1.8.2+deb3.1 - https://znc.in) | 
| 18:24:31 | * | xutaxkamay joined #nim | 
| 18:32:06 | * | jmdaemon joined #nim | 
| 18:32:44 | FromDiscord | <nnsee> In reply to @isofruit "It *feels* like you": ctrl-c isn't uncatchable at all, it's designed to be catched so the application can cleanly shut down | 
| 18:33:04 | FromDiscord | <Phil> In reply to @nnsee "ctrl-c isn't uncatchable at": I mean yeah, I posted sighandler bindings below 😛 | 
| 18:33:10 | FromDiscord | <Phil> Once I realized that is | 
| 18:49:30 | Amun-Ra | Nim has its own ^C hook handler | 
| 18:49:39 | Amun-Ra | vide setControlCHook | 
| 19:02:58 | * | jmdaemon quit (Ping timeout: 264 seconds) | 
| 19:04:19 | FromDiscord | <griffith1deadly> In reply to @griffith1deadly "what could that mean?": fixed by `--d:useMalloc` lol | 
| 19:05:17 | Amun-Ra | -d=usemalloc switches nim to use malloc every time nim allocated a memory | 
| 19:06:32 | Amun-Ra | without it the default is mmap | 
| 19:07:13 | FromDiscord | <Robyn [She/Her]> In reply to @Amun-Ra "without it the default": I thought it was using Nim's own allocator | 
| 19:07:15 | Amun-Ra | I mean on posix systems, dunno what's the default on window | 
| 19:07:49 | Amun-Ra | Robyn: Nim on linux allocates a chunk of memory with mmap and than it allocated parts of it internally | 
| 19:07:59 | Amun-Ra | allocates* | 
| 19:08:33 | FromDiscord | <Robyn [She/Her]> Ah | 
| 19:08:50 | FromDiscord | <Robyn [She/Her]> Unrelated to what I said before, but I'm genuinely wondering if I should take another crack at Nim on the JVM | 
| 19:09:20 | Amun-Ra | is that a thing? | 
| 19:09:30 | Amun-Ra | I'm currently playing with js target | 
| 19:09:37 | Amun-Ra | ecma one and nodejs one | 
| 19:11:56 | FromDiscord | <Phil> Generally -d:useMalloc is a good idea | 
| 19:13:24 | Amun-Ra | true | 
| 19:13:44 | FromDiscord | <Phil> If you use multithreading it becomes mandatory | 
| 19:13:52 | FromDiscord | <Phil> Because the default allocator isn't race-free | 
| 19:14:03 | Amun-Ra | nim is very elastic in many fields | 
| 19:14:11 | FromDiscord | <Phil> At least it pings up with tsan in some circumstances which -d:useMalloc fixes | 
| 19:14:12 | Amun-Ra | elastic → flexible (?) | 
| 19:22:37 | FromDiscord | <khazakar> In reply to @Amun-Ra "elastic → flexible (?)": sort of yeah | 
| 19:24:24 | Amun-Ra | in polish "elastyczny" means both | 
| 19:24:39 | FromDiscord | <khazakar> W sumie racja 😉 | 
| 19:24:44 | Amun-Ra | :D | 
| 19:25:16 | FromDiscord | <khazakar> Nie spodziewałeś się tego, co? 😄 | 
| 19:25:26 | Amun-Ra | "góra z górą…" ;) | 
| 19:25:31 | FromDiscord | <khazakar> 😉 | 
| 19:27:43 | * | azimut quit (Ping timeout: 240 seconds) | 
| 19:29:20 | Amun-Ra | khazakar: how long have you been writing in nim? :) | 
| 19:29:42 | FromDiscord | <khazakar> In reply to @Amun-Ra "<@1068255412840845362>: how long have": Not that long, learning it after python. Then exploring other languages. | 
| 19:30:47 | * | azimut joined #nim | 
| 19:32:49 | Amun-Ra | same here, more/less | 
| 19:33:23 | Amun-Ra | I was thinking of starting a project using nim | 
| 19:33:34 | Amun-Ra | and I finally started one | 
| 19:37:19 | * | azimut quit (Ping timeout: 240 seconds) | 
| 19:43:10 | * | azimut joined #nim | 
| 19:48:38 | FromDiscord | <Robyn [She/Her]> Nope, but it could be↵(<@709044657232936960_=41mun-=52a=5b=49=52=43=5d>) | 
| 19:49:11 | Amun-Ra | but, why? ;) | 
| 19:49:41 | Amun-Ra | Robyn: btw, I had successfully ported nim program on AmigaOS for m68k cpus :) | 
| 19:50:07 | * | azimut quit (Ping timeout: 240 seconds) | 
| 19:51:00 | FromDiscord | <Robyn [She/Her]> My only reason would be Minecraft modding \:P↵(<@709044657232936960_=41mun-=52a=5b=49=52=43=5d>) | 
| 19:51:20 | Amun-Ra | we all got different priorieties :) | 
| 19:53:07 | FromDiscord | <Robyn [She/Her]> Oh nice!↵(<@709044657232936960_=41mun-=52a=5b=49=52=43=5d>) | 
| 19:54:16 | * | azimut joined #nim | 
| 19:55:49 | * | jmdaemon joined #nim | 
| 20:07:37 | * | jmdaemon quit (Ping timeout: 264 seconds) | 
| 20:19:37 | * | rockcavera quit (Remote host closed the connection) | 
| 20:25:10 | * | mahlon quit (Remote host closed the connection) | 
| 20:26:31 | * | azimut quit (Ping timeout: 240 seconds) | 
| 20:28:25 | * | azimut joined #nim | 
| 20:31:45 | * | mahlon joined #nim | 
| 20:33:06 | * | rockcavera joined #nim | 
| 20:36:12 | FromDiscord | <Robyn [She/Her]> Yeah haha | 
| 21:11:47 | * | jmdaemon joined #nim | 
| 21:31:43 | * | azimut quit (Ping timeout: 240 seconds) | 
| 22:01:43 | * | azimut joined #nim | 
| 22:15:26 | * | mahlon quit (Quit: PotatoTech) | 
| 22:20:46 | * | mahlon joined #nim | 
| 22:46:26 | * | advesperacit quit () | 
| 23:37:31 | FromDiscord | <kiloneie> Is this crashing for anyone else ?↵https://nim-lang.org/docs/hcr.html | 
| 23:39:39 | FromDiscord | <mengu> In reply to @kiloneie "Is this crashing for": if you're asking about the web page, no | 
| 23:39:51 | FromDiscord | <zectbumo> are you doing the sdl example? | 
| 23:39:58 | FromDiscord | <kiloneie> yeh | 
| 23:40:28 | FromDiscord | <kiloneie> i got someone else's example  via opengl, which worked till i changed vec4 then it crashed on a loop | 
| 23:40:44 | FromDiscord | <kiloneie> so i decided to take the official one... i don't even get to see a window | 
| 23:41:00 | FromDiscord | <kiloneie> the error is... i can't understand it | 
| 23:42:04 | FromDiscord | <kiloneie> "initialier element is not constant" that's mostly what i can read | 
| 23:44:17 | FromDiscord | <kiloneie> `note: (near initialization for 'NTIv2EGx6zLiZFblvraKNRmL1cg_.destructor')↵compilation terminated due to -fmax-errors=3.` | 
| 23:47:13 | FromDiscord | <kiloneie> hmm i think this was made before ORC, setting mm to refc gets rid of most of the problems, the i got now is "could not load: nimhcr.dll" from what i briefly read, is that in order for hot code reloading to work, it compiles to dll | 
| 23:54:28 | FromDiscord | <khazakar> In reply to @kiloneie "hmm i think this": Good candidate for issue at GH I think | 
| 23:55:46 | FromDiscord | <kiloneie> possibly, unless someone has a solution in the next 30 minutes before i got to bed | 
| 23:55:46 | FromDiscord | <Elegantbeef> I believe HCR does not work with orc | 
| 23:55:49 | FromDiscord | <Elegantbeef> Not that it really worked otherwise | 
| 23:56:41 | FromDiscord | <kiloneie> from what i've seen it worked(no idea how well...) |