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...) |