<< 22-05-2022 >>

00:19:59FromDiscord<Zectbumo> !eval echo """""""
00:20:02NimBot"
00:20:05FromDiscord<Zectbumo> that's one way to do it 🙂
00:20:17FromDiscord<Elegantbeef> `echo "\""`
00:20:24FromDiscord<Zectbumo> there's another
00:20:38FromDiscord<Zectbumo> that just made me laugh is all
00:21:52FromDiscord<Zectbumo> is there no way to get a quote inside a raw string? `r"no quotes allowed"`
00:22:22FromDiscord<Elegantbeef> raw strings do not respect escaped characters so imagine not
00:22:39FromDiscord<Zectbumo> yeah, I started a r string and then needed a quote in there and oops...
00:22:57FromDiscord<huantian> There should be a way right??
00:23:06FromDiscord<Zectbumo> not necessarily
00:23:27FromDiscord<Zectbumo> but it would make the world more complete
00:24:57FromDiscord<Zectbumo> I wish there were triple single quotes `'''`
00:25:07FromDiscord<Elegantbeef> And i wish there wasnt
00:25:10FromDiscord<Zectbumo> or just single quote strings for that matter
00:25:46FromDiscord<Zectbumo> you don't like triple anything? or just the triple single?
00:26:05FromDiscord<Elegantbeef> I like a explicit difference between char and string literals
00:26:21FromDiscord<Zectbumo> me too
00:26:42FromDiscord<Zectbumo> but triple `'''` singles doesn't have anything to do with char
00:27:04FromDiscord<Elegantbeef> I mean it's `'` which designates characters
00:27:13FromDiscord<Elegantbeef> I dont really see why it's any better than `"""`
00:27:55FromDiscord<Zectbumo> then double quotes can be used like '''my "quote" here'''
00:27:57FromDiscord<huantian> hmm I wonder if it's uh
00:28:10FromDiscord<huantian> !eval echo r" aaa "" aaa "
00:28:12NimBot aaa " aaa
00:28:15FromDiscord<huantian> there we go
00:28:32FromDiscord<Zectbumo> oh
00:28:33FromDiscord<Elegantbeef> How is it any different?
00:28:45FromDiscord<Elegantbeef> `""""my "quote" here"""` is valid
00:28:59FromDiscord<spoon> heck that works?
00:29:19FromDiscord<Zectbumo> I thought double quote maybe would work but that it wouldn't be in there because `"""` would be confusing. that's cool
00:30:04FromDiscord<Elegantbeef> `"""my "quote" here"""` sorry
00:30:19FromDiscord<Zectbumo> @ElegantBeef good point. I think I'll just the triple doubles or the @huantian quote pair
00:31:50FromDiscord<Zectbumo> In reply to @huantian "There should be a": you called it
00:32:57FromDiscord<Zectbumo> !eval echo "x"""
00:32:59NimBotCompile failed: /usercode/in.nim(1, 6) Error: in expression '"x" ""': identifier expected, but found '"x"'
00:33:09FromDiscord<Zectbumo> (edit) ""x"""" => "r"x""""
00:33:28FromDiscord<Zectbumo> !eval echo r"x"""
00:33:30NimBotx"
00:33:59FromDiscord<Zectbumo> at the end is okay, just as long as it doesn't happen at the start of the string (then it's tripple `"""`)
00:35:33*ltriant quit (Ping timeout: 276 seconds)
01:09:39*jmdaemon joined #nim
01:28:34*ltriant joined #nim
01:33:27*ltriant quit (Ping timeout: 260 seconds)
01:57:15*ltriant joined #nim
02:10:03FromDiscord<m4ul3r> sent a code paste, see https://play.nim-lang.org/#ix=3YjP
02:12:37FromDiscord<Elegantbeef> `services.mitems`
02:12:42FromDiscord<Elegantbeef> otherwise you're iterating a immutable `items`
02:16:14FromDiscord<m4ul3r> Thanks! I can see it's immutable now, are sequence items immutable after creation?
02:17:02FromDiscord<Elegantbeef> `items` is generally immutable and `mitems` is mutable
02:17:21FromDiscord<Elegantbeef> Nim attempts to default to immutable everywhere and this includes implicit iterators
03:50:00NimEventerNew thread by Stoneface86: Nim+CMake project example , see https://forum.nim-lang.org/t/9166
04:37:56*vicfred joined #nim
04:43:40*ltriant quit (Ping timeout: 246 seconds)
04:53:35*ltriant joined #nim
05:28:51*ltriant quit (Ping timeout: 244 seconds)
06:13:52*ltriant joined #nim
06:18:56*ltriant quit (Ping timeout: 272 seconds)
06:51:10*ltriant joined #nim
06:56:10*ltriant quit (Ping timeout: 244 seconds)
07:00:19*vicecea quit (Remote host closed the connection)
07:00:51*vicecea joined #nim
07:50:40*jjido joined #nim
08:00:34FromDiscord<d4rckh> In reply to @d4rckh "until i restarted the": okay, could it be because i am trying to send something at the same time?
08:00:39FromDiscord<d4rckh> (edit) "time?" => "time in 2 different procs?"
08:01:03FromDiscord<d4rckh> cuz it's so random
08:08:49FromDiscord<Elegantbeef> hard to say without code
08:10:03*jjido quit (Quit: My MacBook Air has gone to sleep. ZZZzzz
)
08:26:54*ltriant joined #nim
08:32:34*ltriant quit (Ping timeout: 246 seconds)
08:45:07*ltriant joined #nim
09:02:40FromDiscord<Bung> how to make stdin stdout to AsyncFile , I've tried serveral ways
09:02:46FromDiscord<Bung> on windows
09:03:37FromDiscord<Rika> is it even possible i do wonder
09:07:39FromDiscord<Bung> reopen std with openAsync make file open take with FILE_FLAG_OVERLAPPED then asyncdispatch createIoCompletionPort will work, method 2, dup to file and use openAsync
09:08:58FromDiscord<Bung> thats my thoughts after searching some c code
09:12:16FromDiscord<Bung> sent a code paste, see https://play.nim-lang.org/#ix=3YkI
09:12:29FromDiscord<Bung> (edit)
09:13:24FromDiscord<Bung> (edit) "https://play.nim-lang.org/#ix=3YkI" => "https://play.nim-lang.org/#ix=3YkJ"
09:36:30*ltriant quit (Ping timeout: 240 seconds)
09:39:18FromDiscord<salt> In reply to @Bung "reopen std with openAsync": in python, I run `WaitForMultipleObjects` in a separate thread with a stdin handle and a anonymous event handle that i use to cancel rescheduling of the `WaitFor`, when it returns, you can then handle stdin input -- i don't know how to implement it in nim, but if you're familiar with python maybe it's useful: https://github.com/salt-die/nurses_2/blob/main/nurses_2/io/input/win32/win32_input.
09:39:42FromDiscord<Rika> i believe he wants no extra threads
09:39:44FromDiscord<Rika> pure async
09:40:39FromDiscord<salt> i don't know how to do it purely async on windows, i think i've heard duping is only way
09:43:40FromDiscord<Bung> yeah, I want pure async way
09:44:36*jmdaemon quit (Ping timeout: 244 seconds)
09:51:56*ltriant joined #nim
09:55:22FromDiscord<salt> sent a code paste, see https://play.nim-lang.org/#ix=3Yl0
10:24:40FromDiscord<Phil> Nested generic types huh
10:28:23FromDiscord<Phil> ohhh wait no, generic concepts for generic types
10:36:12FromDiscord<mratsim> In reply to @salt "Having trouble getting the": Nim doesn't support explicit Higher Kinded Types
10:43:10FromDiscord<Phil> sent a code paste, see https://paste.rs/ttH
11:05:20NimEventerNew Nimble package! artemis - A simple Nim server for the Gemini protocol. Forked from geminim, see https://git.skylarhill.me/skylar/artemis
11:09:23FromDiscord<mratsim> sent a code paste, see https://play.nim-lang.org/#ix=3Yli
11:09:41FromDiscord<mratsim> (edit) "https://play.nim-lang.org/#ix=3Yli" => "https://play.nim-lang.org/#ix=3Ylj"
11:12:57FromDiscord<Phil> sent a code paste, see https://play.nim-lang.org/#ix=3Yll
11:13:10FromDiscord<Phil> (edit) "https://play.nim-lang.org/#ix=3Yll" => "https://play.nim-lang.org/#ix=3Ylm"
11:16:01*ltriant quit (Ping timeout: 246 seconds)
11:25:52FromDiscord<Rika> In reply to @Isofruit "hmmm this does lose": If you so desire, it’s time for concepts
11:26:27FromDiscord<Rika> Didn’t notice there are concepts already
11:26:31FromDiscord<Rika> Let me read harder
11:28:09FromDiscord<Rika> sent a code paste, see https://play.nim-lang.org/#ix=3Ylq
11:28:12FromDiscord<Rika> Without the generic
11:35:25FromDiscord<salt> sent a code paste, see https://paste.rs/qyj
11:36:35FromDiscord<salt> i don't know how bulky that will end up
11:37:36FromDiscord<Phil> Huh, managed to fix my example
11:59:06*ltriant joined #nim
12:04:06*ltriant quit (Ping timeout: 244 seconds)
12:18:09FromDiscord<Phil> Given that this was in inim and thus t1 and t2 were fixed, I am mildly concerned. Isn't DateTime recorded in a unix timestamp? Shouldn't the difference between two unix timestamps be consistent? https://media.discordapp.net/attachments/371759389889003532/977908221522092032/unknown.png
12:18:56FromDiscord<Yardanico> In reply to @Isofruit "Given that this was": see, this is why inim isn't a real repl :))
12:19:01FromDiscord<Yardanico> it always recompiles and reruns the whole file
12:19:08FromDiscord<Yardanico> so the difference between two calls will be different
12:19:22FromDiscord<Phil> In reply to @Yardanico "see, this is why": Dangit! I didn't know that!
12:19:24FromDiscord<Yardanico> your whole inim "session" is stored in a single nim file, new code is just added to it and it's being recompiled
12:19:42FromDiscord<Yardanico> and inim filters the output so only new stuff gets printed
12:19:49FromDiscord<Phil> so every command is essentially "add line to file, recompile file, rerun file for output" ?
12:19:51FromDiscord<Yardanico> yes
12:20:12FromDiscord<Phil> Hmmm makes sense
12:21:31FromDiscord<Yardanico> of course it's a bit more complicated than that (indentation and stuff), but the basics is basically this
12:21:33FromDiscord<Yardanico> inim is < 1kloc
12:21:35FromDiscord<Phil> Is there an expression in english of "They're all only cooking with water", meaning that typically advanced sounding stuff is a lot of the time also just fundamentals somewhat hidden.
12:22:04FromDiscord<Phil> (edit) "hidden." => "hidden?"
12:22:06*pch quit (Quit: Leaving)
12:22:26FromDiscord<Phil> That's what this realization moment felt like.↔No magic happening, just cleverly put together fundamentals to give the illusion of a repl
12:22:33FromDiscord<Yardanico> @Phil there's a more "real" repl that's `nim secret` but it runs the Nim VM so it has the same limitations like nimscript (no FFI)
12:22:40FromDiscord<Rika> “In the end it’s just (something I don’t know)”
12:24:27FromDiscord<Phil> In reply to @Yardanico "<@180601887916163073> there's a more": Given that typically I just want a repl to test stuff out, that works fine for me
12:24:45FromDiscord<Yardanico> it's a bit less "nice" than inim is that it's a basic repl with no things like outputting the type
12:24:46FromDiscord<Phil> stuff being various syntax constructs
12:24:58FromDiscord<Yardanico> idk, it's easy for me to just hit F6 in vscode :))
12:25:27FromDiscord<Rika> Yeah I don’t know it’s easy for me to just write a file and compile that
12:25:36FromDiscord<Phil> My main project has become a bit too complicated for me to play around with syntax constructs in it because if X is broken that can be due to 50 different reasons at this point
12:25:43FromDiscord<Rika> ~~too much vim usage to go back to normal editing~~
12:26:00FromDiscord<Phil> I literally made a "playground" project so that I can quickly play around and see what compiles and what doesn't
12:26:04FromDiscord<Yardanico> In reply to @Isofruit "My main project has": just create a temp file for that
12:26:08FromDiscord<Yardanico> it's a bit dirty, but I do it this way usually
12:26:16FromDiscord<Yardanico> just some "test.nim" in the root of your project, literally :P
12:26:22FromDiscord<Rika> I do that for every language I use
12:26:40FromDiscord<Rika> Because sometimes I get carried away and write nice complicated things that I may use again
12:27:41*pch joined #nim
12:49:01FromDiscord<Phil> How do I copy a ref type again? Is that where I start using explicit copy operators or somesuch in proc signatures?
12:55:47FromDiscord<Rika> Make a new reference and set the data of that to the same data of the old one?
12:57:08FromDiscord<Phil> Found `deepCopy()`
12:57:44FromDiscord<Phil> ... which araq appears to want to deprecate in favor of move semantics
13:10:37FromDiscord<ynfle> How can I read a file in the VM?
13:10:43FromDiscord<ynfle> ie. nimscript
13:10:46FromDiscord<Yardanico> In reply to @ynfle "How can I read": readFile works :) also there's `staticRead`
13:10:51FromDiscord<Yardanico> i mean readFile from os works
13:10:56FromDiscord<Yardanico> because there's a vm callback defined for it
13:15:29FromDiscord<Yardanico> @ElegantBeef IIRC nim doesn't change the order of the fields in the object definition when converting them into C structs? or it can do that for better alignment?
13:18:08FromDiscord<Yardanico> yeah doesn't look like it
13:18:29FromDiscord<ynfle> In reply to @Yardanico "i mean readFile from": Doesn't seem to
13:18:34FromDiscord<Yardanico> In reply to @ynfle "Doesn't seem to": can you show some code?
13:19:08FromDiscord<Yardanico> ah right readFile doesn't need os, it just works as is
13:19:10FromDiscord<Yardanico> https://media.discordapp.net/attachments/371759389889003532/977923579603734598/unknown.png
13:19:22FromDiscord<Yardanico> https://media.discordapp.net/attachments/371759389889003532/977923629574672394/unknown.png
13:19:58FromDiscord<Yardanico> In reply to @Yardanico "yeah doesn't look like": It's just confusing because the manual says "The implementation aligns the fields for the best access performance. The alignment is compatible with the way the C compiler does it."
13:20:18FromDiscord<Yardanico> and this statement is in the manual since the first git commit apparently
13:20:24FromDiscord<Yardanico> "The implementation aligns the fields for best access performance. The alignment is done in a way that is compatible the way the C compiler does it."
13:20:47FromDiscord<d4rckh> https://nim-lang.org/docs/asynchttpserver.html#Request
13:20:49FromDiscord<d4rckh> what's body?
13:21:05FromDiscord<Yardanico> body of the request?
13:21:08FromDiscord<Yardanico> some request types like POST have a body
13:21:16FromDiscord<d4rckh> what about GET?
13:21:31FromDiscord<d4rckh> how can i get the params?
13:21:37FromDiscord<Yardanico> that's query parameters
13:21:42FromDiscord<Yardanico> part of the URL
13:21:48FromDiscord<d4rckh> oh, i parse the url
13:21:48FromDiscord<d4rckh> i see
13:21:53FromDiscord<d4rckh> is there any built in parser?
13:22:03FromDiscord<Yardanico> url is already of the type Uri
13:22:09FromDiscord<d4rckh> ah
13:22:27FromDiscord<d4rckh> but query is a string
13:22:33FromDiscord<d4rckh> not a tabel or a sequence
13:22:34FromDiscord<Yardanico> you can just take `uri.query` and use https://nim-lang.org/docs/uri.html#decodeQuery.i%2Cstring
13:22:35FromDiscord<d4rckh> (edit) "a" => "at least"
13:22:39FromDiscord<d4rckh> ty
13:28:25FromDiscord<ynfle> sent a code paste, see https://paste.rs/7ke
13:28:51FromDiscord<ynfle> But it seems to work with regular nimscript
13:30:32*pch quit (Remote host closed the connection)
13:31:18FromDiscord<Yardanico> oh, sorry, don't really know how standalone nimscript works so can't help with that :(
13:32:50FromDiscord<ynfle> Ah ok
13:33:04FromDiscord<ynfle> Hopefully beef can help when he wakes up
13:35:09*pch joined #nim
13:35:26*krux02 joined #nim
13:45:31FromDiscord<Bung> In reply to @ynfle "Ah ok": it's not possible use native code in nimscripter AFAIK
13:46:27FromDiscord<deech> How do I create something compatible with a fixed size C array in Nim? I need to pass it to a C function that takes `void blah[]`.
13:46:53FromDiscord<Yardanico> In reply to @deech "How do I create": just make a fixed size Nim array? not sure exactly
13:47:01FromDiscord<Yardanico> can you show how an argument to pass for this C function is defined?
13:47:06FromDiscord<Yardanico> in C
13:47:52FromDiscord<deech> Just like that, the function is something like, `void f(void things[], int count);`
13:48:16FromDiscord<Yardanico> and how do you create a variable to pass as an argument for it in C?
13:49:47FromDiscord<Rika> The C type you gave us is ambiguous in meaning
13:49:48FromDiscord<ynfle> In reply to @Bung "it's not possible use": It's not native code
13:49:54FromDiscord<Rika> Do you know what the “human meaning” is
13:50:17FromDiscord<Yardanico> In reply to @Rika "The C type you": I mean it's not really ambiguous
13:50:32FromDiscord<Yardanico> `void` in C is of the size of the pointer on the machine
13:50:32FromDiscord<deech> That's what I'm trying to figure out, how to create a type that captures, `void things[]`. `array[...]` syntax requires the length up front, in C you can statically initialized the array without specifying the length.
13:50:43FromDiscord<Rika> In reply to @Yardanico "I mean it's not": I meant in intent not in what it is
13:50:49FromDiscord<Yardanico> In reply to @deech "That's what I'm trying": is it specifically defined as `void blah[]` ?
13:50:55FromDiscord<Yardanico> not `int blah[]` but `void blah[]` ?
13:51:24FromDiscord<Yardanico> but generally to those C functions you just pass a block of memory, you can pass a nim sequence, array, string or something else to it
13:51:27FromDiscord<deech> No, it is specifically defined as `SomeCppObject objs[]` and I am `extern`ing the function.
13:51:28FromDiscord<Rika> It decomposes to void anyway doesn’t it
13:52:00FromDiscord<deech> Conceptually yes, but you can't cast from from void to void [].
13:52:13FromDiscord<Bung> In reply to @ynfle "It's not native code": I use nimscripter heaily , but most part is pure nim code
13:52:42FromDiscord<Yardanico> In reply to @deech "No, it is specifically": you should've told that up front :)
13:52:53FromDiscord<Yardanico> if it's specifically defined like that then you need to make an array of `ptr SomeCppObject` I think
13:52:55FromDiscord<Yardanico> or sequence
13:53:03FromDiscord<Yardanico> and pass the addr of the first element + the length to the C function
13:54:00FromDiscord<deech> Right, what I'm trying to figure out is how to make that `array`. Nim requires specifying the length up front, no?
13:54:38FromDiscord<Yardanico> In reply to @deech "Right, what I'm trying": first of all, you can pass both an array and a seq to that C function
13:54:43FromDiscord<Yardanico> it doesn't specifically need to be an "array" type
13:55:01FromDiscord<Yardanico> second of all, Nim has length inference if you define all array elements right in the initialization
13:56:24FromDiscord<Rika> Are you trying to figure out the type definition in the function signature
13:56:33FromDiscord<ynfle> In reply to @Bung "I use nimscripter heaily": There is a subset of nimscript that is usable with nimscript
13:57:00FromDiscord<Rika> Since it’s going to be a `ptr ptr YourObject` either way isn’t it?
13:57:13FromDiscord<deech> I am representing the object as `void` in the extern'ed interface and Clang complains that it can't cast from `void` to `SomeCppObject []`. Same for `void`.
13:57:37FromDiscord<Rika> Why void?
13:58:00FromDiscord<deech> How else would you expose a C++ object in C?
13:58:11FromDiscord<deech> (edit) "in" => "to"
13:58:25FromDiscord<Yardanico> are you compiling with the C++ backend or the C backend?
13:58:33FromDiscord<Yardanico> if you compile with the C++ backend, why not just importc the C++ type itself?
14:00:19FromDiscord<Yardanico> both for array and a seq
14:00:21FromDiscord<Yardanico> sent a code paste, see https://paste.rs/CBD
14:00:40FromDiscord<Yardanico> (and yes I know this leaks, it's just an example)
14:01:01FromDiscord<Yardanico> (and I know https://nim-lang.org/docs/sequtils.html#newSeqWith.t%2Cint%2Cuntyped exists)
14:01:50*pch quit (Remote host closed the connection)
14:02:07FromDiscord<Yardanico> @deech does that code make sense for what you're trying to do?
14:02:49FromDiscord<Yardanico> ofc if you don't want to cast to ptr UncheckedArray each time you can instead just define `arr` as `ptr ptr cint` but this way it's clearer what the function signature is
14:03:47FromDiscord<deech> Thanks for that! If the code that used the C++ API was also using the C++ backend that would be feasible but I am exposing the API to code that uses the C backend.
14:04:41FromDiscord<deech> At the end of the day, I trust Nim's C backend more so I'd like to use it more if possible.
14:05:25*pch joined #nim
14:09:32FromDiscord<deech> I suppose I can wrap the C++ function with one that just takes `SomeCppObject` and a `count` and expose that.
14:27:36*ltriant joined #nim
14:32:22*ltriant quit (Ping timeout: 246 seconds)
15:05:30FromDiscord<Phil> What I would give for better error messages around generic
15:05:31FromDiscord<Phil> (edit) "generic" => "generics"
15:09:18FromDiscord<!Patitotective> In reply to @Isofruit "What I would give": a PR?
15:09:20FromDiscord<!Patitotective> (edit) "In reply to @Isofruit "What I would give": a PR? ... " added "lol"
15:09:52FromDiscord<Phil> In reply to @Patitotective "a PR? lol": I'm not even competent enough to write a proper ORM
15:10:56FromDiscord<Phil> I'm getting better, but given how much I'm still even struggling with generics at times... yeah no, not yet
16:00:56*krux02 quit (Remote host closed the connection)
16:01:37*krux02 joined #nim
16:31:24*ltriant joined #nim
16:38:07*ltriant quit (Ping timeout: 240 seconds)
17:02:49FromDiscord<ynfle> Nimscripter is mindblowing. Thanks beef
17:33:42*ehmry quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.)
17:36:11*ehmry joined #nim
17:42:56FromDiscord<!Patitotective> sent a code paste, see https://play.nim-lang.org/#ix=3YnD
17:43:07FromDiscord<!Patitotective> (edit) "https://play.nim-lang.org/#ix=3YnD" => "https://play.nim-lang.org/#ix=3YnE"
17:54:20*NimEventer quit (Ping timeout: 272 seconds)
17:54:32*Yardanico quit (Ping timeout: 248 seconds)
18:05:29FromDiscord<@mike_new:mikenew.io> sent a code paste, see https://play.nim-lang.org/#ix=3YnI
18:05:55FromDiscord<Rika> That’s not what he wants
18:06:24FromDiscord<Rika> He wants the range to be longer than the string he passes and the extra be set to \0
18:10:12*NimEventer joined #nim
18:10:14*Yardanico joined #nim
18:11:10FromDiscord<exelotl> `\0` is a single character
18:11:36FromDiscord<exelotl> oh wait I see
18:11:36*noeontheend joined #nim
18:13:40*toluene quit (Quit: The Lounge - https://thelounge.chat)
18:24:41FromDiscord<Mike> Yeah, realized that after I responded↔(@Rika)
18:30:03FromDiscord<ynfle> @Bung @ElegantBeef would there be an issue with returning `OrderedTable` from nimscript to the nim side of things?
18:31:36FromDiscord<ynfle> Is it because the seq is allocated on the heap?
18:32:46FromDiscord<demotomohiro> !eval var s = "\0hello\0\0";s[0..2] = "hi";doAssert s == "hi\0llo\0\0"
18:32:49NimBot/usercode/in.nim(1) in↔/playground/nim/lib/system/assertions.nim(38) failedAssertImpl↔/playground/nim/lib/system/assertions.nim(28) raiseAssert↔/playground/nim/lib/system/fatal.nim(53) sysFatal↔Error: unhandled exception: /usercode/in.nim(1, 47) `s == "hi\x00llo\x00\x00"` [AssertionDefect]
18:33:09FromDiscord<demotomohiro> var s = "\0hello\0\0";s[0..2] = "hi\0";doAssert s == "hi\0llo\0\0"
18:33:33FromDiscord<demotomohiro> !eval var s = "\0hello\0\0";s[0..2] = "hi\0";doAssert s == "hi\0llo\0\0"
18:33:36NimBot<no output>
18:34:03FromDiscord<demotomohiro> Is this @!Patitotective want?
18:35:16FromDiscord<ynfle> !eval import strutils; echo newString(10)
18:35:20NimBot
18:46:52FromDiscord<ynfle> !eval assert newString(10) == "\0\0\0\0\0\0\0\0\0\0"
18:46:55NimBot<no output>
18:50:19NimEventerNew thread by DMisener: How to avoid memory capture violation during addExitProc capture?, see https://forum.nim-lang.org/t/9167
18:56:18FromDiscord<Rika> In reply to @ynfle "!eval assert newString(10) ==": This looks wrong
19:04:08FromDiscord<ynfle> In reply to @Rika "This looks wrong": Why? It's zeroed?
19:04:29FromDiscord<Alea> does anyone know how to debug a multi module project in vscode? Breakpoint only seem to work when they're in the main file being debugged
19:04:49FromDiscord<Rika> In reply to @ynfle "Why? It's zeroed?": No I didn’t mean it
19:06:55FromDiscord<ynfle> In reply to @Rika "No I didn’t mean": Oh ok
19:07:17FromDiscord<ynfle> In reply to @Alea "does anyone know how": I'm assuming you want more than print statements
19:08:14FromDiscord<Alea> yep
19:09:07FromDiscord<Alea> I see that python has a "justMyCode" property that lets the debugger work on other files
19:09:14FromDiscord<Alea> but that doesn't seem to be allowed here?
19:10:31FromDiscord<ynfle> How are you debugging?
19:11:02FromDiscord<Alea> https://github.com/saem/vscode-nim#debugging
19:11:10FromDiscord<Alea> Like described here ^
19:13:24FromDiscord<ynfle> Haven't used it in a couple of months, but I'm pretty sure I was able to. Didn't use that as a guide. I used some other article online as a guid
19:16:54FromDiscord<ynfle> Is there any special handling of string for passing nim <--> nimscript in nimscript?
19:17:03FromDiscord<ynfle> Isn't that heap allocated?
19:17:12FromDiscord<ynfle> Is there a way to make tables work?
19:24:45*jmdaemon joined #nim
19:42:11*hellstabber joined #nim
19:42:49*jmd_ joined #nim
19:43:21*jmdaemon quit (Ping timeout: 248 seconds)
20:28:57*xet7 quit (Remote host closed the connection)
20:30:51*xet7 joined #nim
20:35:03*ltriant joined #nim
20:40:39*ltriant quit (Ping timeout: 276 seconds)
20:49:34FromDiscord<!Patitotective> In reply to @demotomohiro "Is this <@762008715162419261> want?": yep, thanks 🙃
20:52:48FromDiscord<ynfle> In reply to @ynfle "!eval assert newString(10) ==": @!Patitotective also see ☝
20:53:42FromDiscord<Elegantbeef> What's the issue?↔(@ynfle)
20:54:02FromDiscord<!Patitotective> In reply to @ynfle "<@762008715162419261> also see ☝": đŸ€š
20:54:46FromDiscord<ynfle> In reply to @Elegantbeef "What's the issue? (<@767093711112241162>)": When it "parses" the Table (OrderedTable in my case) on the nim side, the is nothing "inside"
20:55:34FromDiscord<Elegantbeef> That's a bug
20:55:39FromDiscord<Elegantbeef> And for your `readFile` issue that's expected
20:55:44FromDiscord<Elegantbeef> The NimVm doesnt have any C modules
20:56:28FromDiscord<Elegantbeef> https://github.com/beef331/nimscripter/blob/master/src/nimscripter/vmops.nim you can use this module
20:56:35FromDiscord<Elegantbeef> rather expand it
20:56:52FromDiscord<Elegantbeef> Intended usage is here
20:57:24FromDiscord<Elegantbeef> It's odd that an ordered table isnt sent properly, considering Json objects work
20:59:21FromDiscord<Elegantbeef> If you make a min repro i wouldnt mind taking a look at it
21:20:05FromDiscord<Mike> sent a code paste, see https://paste.rs/aPv
21:20:33FromDiscord<Mike> It says `Error: cannot instantiate: 'T'`. Shouldn't the compiler be able to figure out the type of `T` based on the return, the way it does with `auto`?
21:20:53FromDiscord<that_dude> sent a code paste, see https://play.nim-lang.org/#ix=3Yor
21:21:05FromDiscord<Mike> Yeah, but I would think it could infer that right?
21:21:06FromDiscord<that_dude> because you need to tell it what type the generic is dealing with
21:21:08FromDiscord<Elegantbeef> Generic arguments are inferred at the callsite
21:21:35FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=3Yos
21:21:54FromDiscord<Elegantbeef> Auto as a return type is not the same as auto as a parameter
21:22:15FromDiscord<Elegantbeef> auto as a return type does `typeof()` the assignment of `result` or the body of the proc
21:22:28FromDiscord<Elegantbeef> `auto` in a parameter is "We accept anything here"
21:23:02FromDiscord<Elegantbeef> So a proc with an auto return type is not actually generic
21:23:07FromDiscord<Mike> ahhhh okay, that's making a lot more sense. I was imagining `auto` as just sugar for a generic return type
21:23:25FromDiscord<Elegantbeef> It does work that way when the procedure is specialized
21:23:42FromDiscord<Mike> specialized?
21:23:45FromDiscord<Elegantbeef> For instance
21:23:45FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=3You
21:24:05FromDiscord<Mike> oh interesting
21:24:11FromDiscord<Elegantbeef> Specialized is when a generic procedure is instantiated for a specific type
21:24:21FromDiscord<Elegantbeef> It's also called reification i think
21:27:14FromDiscord<huantian> I always found it weird that Nim doesn’t check generic procs until they’re isntantated, like `proc a[K, V](b: Table[K, V]) = b.nonexistentProc` without calling it still compiles
21:27:33FromDiscord<Elegantbeef> Well that's cause it doesnt know the scope it's instantiated in
21:27:38FromDiscord<Mike> Yeah I think that's what's feeling weird to me, but I do get it
21:27:50FromDiscord<Elegantbeef> If the scope is unknown you cannot say if it actually does not compile
21:27:59FromDiscord<Elegantbeef> Consider mixins and the like
21:28:17FromDiscord<huantian> It is kinda annoying though, I have to write tests for my generics 😛
21:28:40FromDiscord<huantian> I can’t rely only on my IDE to tell me if I missspelled something
21:28:47FromDiscord<huantian> (edit) "missspelled" => "misspelled"
21:29:07FromDiscord<Elegantbeef> Actually your example doesnt compile
21:29:14FromDiscord<Elegantbeef> It cannot bind or mixin that symbol
21:29:34FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=3Yoy
21:29:42FromDiscord<Elegantbeef> If there is a single instance of the proc it binds it, if there are multiple it mixin's
21:30:02FromDiscord<Elegantbeef> sent a code paste, see https://paste.rs/w7b
21:30:17FromDiscord<Elegantbeef> But you dont even need that cause generics fail to compile if there isnt an instance of that proc in scope
21:30:42FromDiscord<Elegantbeef> I guess the dot expr does change the behaviour
21:30:43FromDiscord<huantian> I mean just writing this compiles https://play.nim-lang.org/#ix=3Yoz
21:31:07FromDiscord<Elegantbeef> The dotexpr changing the behaviour is cause it doesnt know at compile time if that's an field accessor or a call
21:31:14FromDiscord<Elegantbeef> So it's on you 😛
21:31:26*hellstabber quit (Quit: Textual IRC Client: www.textualapp.com)
21:32:21FromDiscord<Elegantbeef> The dotexpr mixin's the symbol due to the ambiguity and as such is usable with a proc declared after
21:32:35FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=3YoA
21:32:35FromDiscord<Elegantbeef> And actually how you might use a generic
21:33:15FromDiscord<huantian> Hm maybe I’ll not use dots with my generic procs the
21:33:28FromDiscord<Elegantbeef> You can also bind them 😛
21:33:38FromDiscord<Elegantbeef> Generics are complicated
21:33:54FromDiscord<Mike> sent a code paste, see https://play.nim-lang.org/#ix=3YoB
21:34:04FromDiscord<Elegantbeef> No
21:34:15FromDiscord<Elegantbeef> The latter it has `foo: string` `foo: int`
21:34:26FromDiscord<tandy> sent a code paste, see https://paste.rs/ZL6
21:34:31FromDiscord<Elegantbeef> the former has `foo: T` in both cases as it does not infer the return type but expects it passed in
21:34:37FromDiscord<huantian> In reply to @Elegantbeef "You can also bind": What does that mean lol
21:34:40FromDiscord<Elegantbeef> I mean i suppose it could reason it the same but i'd say that's wrong
21:35:12FromDiscord<Elegantbeef> There is `mixin` and `bind` the former takes consideration of the instantiation scope, the latter only takes consideration of declaration scope
21:35:38FromDiscord<Elegantbeef> So if you `bind` a procedure name it will statically hold the valid procedures
21:35:57FromDiscord<Mike> Yeah I guess if it's just "generics are determined at the call site" then that's just how it works, and `auto` is sometimes different.
21:36:03FromDiscord<Mike> Just wasn't expecting that
21:36:04FromDiscord<tandy> i get `Error: undeclared identifier: 'u'`
21:36:05FromDiscord<Elegantbeef> If you `mixin`(dotexprs and overridden symbols do this implicitly) it gives you generic interfaces
21:36:45FromDiscord<Mike> Ah. I have no idea how those work, but I'll check it out
21:37:14FromDiscord<Elegantbeef> `mixin` is kinda like a forward declaration it says "We'll have a procedure that matches this when we instantiate"
21:37:33FromDiscord<Elegantbeef> `bind` says "Ok we'll only consider procedures we have when we write this procedure, anything else doesnt matter"
21:38:01FromDiscord<huantian> Interesting
21:38:14FromDiscord<huantian> So is bind more “safe”?
21:38:24FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=3YoE
21:38:27FromDiscord<Elegantbeef> No bind is meant for when you dont want generic interfaces
21:38:32FromDiscord<Elegantbeef> Mixin is when you want generic interfaces
21:38:50FromDiscord<Elegantbeef> A generic interfaces is when you want to allow user defined code override the behaviour of a procedure, consider serializer hooks
21:38:56FromDiscord<huantian> Ah I see
21:39:11FromDiscord<Mike> sent a code paste, see https://play.nim-lang.org/#ix=3YoF
21:39:25FromDiscord<Mike> Is a mixin the right thing to use there then?
21:39:53FromDiscord<Elegantbeef> Are any of the procedures meant to be overridden by the user?
21:40:35FromDiscord<Mike> sent a code paste, see https://play.nim-lang.org/#ix=3YoG
21:40:49FromDiscord<Mike> Without having to think about which backend I'm on
21:40:58FromDiscord<Elegantbeef> make the return type `auto`
21:41:44FromDiscord<Elegantbeef> See how `doStuff` doesnt exist inside `doThing` but the compiler still compiles
21:41:48FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=3YoH
21:41:55FromDiscord<Elegantbeef> This is kinda like Rust's trait system but less instantiation safe
21:42:24FromDiscord<Elegantbeef> `mixin`'d symbols are akin to a trait that states "It must have these procedures"
21:42:25FromDiscord<Mike> And this isn't just forward declaration?
21:42:29FromDiscord<Elegantbeef> Nope
21:42:46FromDiscord<Elegantbeef> The logic works on anytype even one this module doesnt know
21:43:31FromDiscord<huantian> So doThing will work on all the types you defined
21:43:38FromDiscord<huantian> And break on the others
21:43:38FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=3YoJ
21:43:48FromDiscord<Elegantbeef> Yep really i'd use a conceept
21:43:54FromDiscord<Mike> sent a code paste, see https://play.nim-lang.org/#ix=3YoK
21:44:50FromDiscord<Elegantbeef> sent a code paste, see https://paste.rs/MGU
21:45:00FromDiscord<Elegantbeef> This explicitly defines the API required for `doThing`
21:45:03FromDiscord<Mike> Oh god. So many new things lol
21:45:05FromDiscord<huantian> Why do you still need the mixin?
21:45:08FromDiscord<Elegantbeef> Unrelated to Mike's issue
21:45:27FromDiscord<Elegantbeef> There is no `doStuff` symbol in scope
21:45:33FromDiscord<Elegantbeef> Concepts do not change how generics behave
21:45:41FromDiscord<huantian> Hm I see
21:45:42FromDiscord<Elegantbeef> It just allows more user friendly definitions of what's required
21:45:50FromDiscord<Elegantbeef> Nim doesnt have a trait system
21:45:59FromDiscord<Elegantbeef> It has generics/concepts which can approximate the compile checks
21:46:23FromDiscord<Elegantbeef> The benefit of `CanDoThing` over `auto` is it gives a clear and concise requirement
21:47:34FromDiscord<huantian> So if we specify doStuff to return int in the concept
21:47:43FromDiscord<huantian> The compiler still won’t know that in the proc?
21:48:06FromDiscord<Elegantbeef> How would it
21:48:08FromDiscord<Elegantbeef> Concepts constrain parameters not the proc
21:48:40FromDiscord<huantian> So I still have to write tests
21:48:54FromDiscord<Elegantbeef> Why?
21:49:08FromDiscord<Elegantbeef> If your `doStuff` doesnt return `int` the compile will give you a concrete error
21:49:31FromDiscord<huantian> But I’d have to instantiate doThing at least once
21:49:57FromDiscord<Elegantbeef> Well yea you need to specialize a generic
21:50:09FromDiscord<Elegantbeef> You dont need tests if you bind them
21:50:11FromDiscord<Elegantbeef> since they're statically known
21:50:45FromDiscord<huantian> Bind them as in use the keyword?
21:51:00FromDiscord<Elegantbeef> That's what bind means
21:51:46FromDiscord<Phil> Hmm I wonder if mixin is somewhat of an anti-pattern. ↔It's implicit magic that you have to know is there, I'm not sure of a really good usecase that is better than passing whatever value it brings as a parameter outside of rare exceptions (e.g. methods to initialize a specific type of object)
21:52:00FromDiscord<Elegantbeef> It's a super good pattern
21:52:04FromDiscord<Phil> (edit) "Hmm I wonder if mixin is somewhat of an anti-pattern. ↔It's implicit magic that you have to know is there, I'm not sure of a really good usecase ... that" added "where"
21:52:06FromDiscord<Elegantbeef> It's not implicit magic
21:52:23FromDiscord<Elegantbeef> Phill you use it if you use `jsonutils` or jsony
21:52:40FromDiscord<huantian> Like uh https://play.nim-lang.org/#ix=3YoN this?
21:52:57FromDiscord<Elegantbeef> Nim serialisation libraries heavily use mixin'd symbols
21:53:00FromDiscord<huantian> Or should I be binding on +
21:53:11FromDiscord<Elegantbeef> on `+`
21:53:18FromDiscord<Phil> Hmmmm
21:53:26FromDiscord<Elegantbeef> Ah this is an overloaded bound symbol
21:53:34FromDiscord<Elegantbeef> So yea this will be ambigous
21:53:44FromDiscord<Elegantbeef> The issue with generics is you dont really know if it's valid until instantiation
21:54:11FromDiscord<Elegantbeef> You dont know if `Test[int]` is a specialization that allows `+`
21:55:02FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=3YoO
21:55:21FromDiscord<huantian> Yeah ig same issue if I misspell fun
21:55:38FromDiscord<Elegantbeef> That's a tame generic, you can have very complex when statements that require complex instantiation logic to check
21:56:40FromDiscord<huantian> There’s no way to know if there’s a different version of SomeThing that has a field named fnu
21:57:19FromDiscord<Elegantbeef> Phill if unclear mixin's allow you to define interfaces after the procedure you're calling, so if you ever write a proc and then you can use another proc that's mixin'd
21:57:19FromDiscord<Elegantbeef> They're a bit complicated at first but they're what gives you statically dispatched interfaces
21:58:25FromDiscord<huantian> In reply to @huantian "There’s no way to": So ig for simple generics I just need some simple usage of the proc in a test or something to catch the typos
21:58:39FromDiscord<ynfle> In reply to @Elegantbeef "If you make a": So a basic example work, but mine doesn't
21:59:01FromDiscord<Phil> In reply to @Elegantbeef "Phill if unclear mixin's": I think what's giving me conflicting feelings is that they're only explicit if you document them well or center package functionality around them (as e.g. jsony did)
21:59:06FromDiscord<ynfle> this workds
21:59:09FromDiscord<ynfle> sent a code paste, see https://play.nim-lang.org/#ix=3YoR
21:59:10FromDiscord<ynfle> (edit) "workds" => "workss"
21:59:51FromDiscord<ynfle> (edit) "workss" => "works"
22:00:21FromDiscord<Phil> I was thinking a bit more about those recently because I keep mulling over my way of generating prologue handler procs which, by now, I'm building out of 3-5 different procs I pass in as parameters (crunched down often times to 1-2 parameters by helper procs that provide some sane default values for the more obvious procs)+
22:00:23FromDiscord<Phil> (edit) "procs)+" => "procs)"
22:01:35FromDiscord<Elegantbeef> I mean you generally want mixin'd so personally i'd prefer all symbols on generics to be open↔(@Phil)
22:01:59FromDiscord<Phil> In reply to @Elegantbeef "I mean you generally": I don't think I understand
22:02:33FromDiscord<Elegantbeef> Mixin'd only applies to generic procedures
22:02:38FromDiscord<Elegantbeef> Ynfle it works fine here
22:02:51FromDiscord<ynfle> In reply to @Elegantbeef "Ynfle it works fine": Ya that example works
22:03:04FromDiscord<ynfle> My complicated example doesn't
22:03:08FromDiscord<Andreas> sent a code paste, see https://play.nim-lang.org/#ix=3YoT
22:03:10FromDiscord<Phil> In reply to @Elegantbeef "Mixin'd only applies to": And by open you mean all mixin'd smybols themselves have to be generics?
22:03:28FromDiscord<Elegantbeef> by open i mean they're mixin'd
22:03:41FromDiscord<Elegantbeef> In Nim a mixin'd symbol is "open" a binded symbol is "closed"
22:03:49FromDiscord<Elegantbeef> Mixin only happens in generic scopes
22:04:09FromDiscord<Elegantbeef> If the procedure is generic you can mixin symbols to get interfaces that allow users to override or define behaviour for their types
22:04:57FromDiscord<Elegantbeef> What do you expect to happen?
22:04:57FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=3YoU
22:05:11FromDiscord<Elegantbeef> Shut those are supposed to be doThing 😄
22:05:31FromDiscord<Elegantbeef> There
22:05:32FromDiscord<Elegantbeef> What should happen
22:05:34FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=3YoV
22:05:43FromDiscord<Elegantbeef> [Mike](https://matrix.to/#/@mike_new:mikenew.io)\: this was the example i meant to give earlier 😄
22:05:48FromDiscord<Phil> I would assume it prefers the explicit implementations where applicable and ignores the two on top
22:05:54FromDiscord<Elegantbeef> Well it doesnt
22:05:58FromDiscord<Elegantbeef> By default it binds to the first
22:06:13FromDiscord<Phil> squints
22:06:29FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=3YoW
22:06:44FromDiscord<Elegantbeef> It mixin's now
22:07:04FromDiscord<Elegantbeef> Which makes sense
22:07:17FromDiscord<Elegantbeef> The compile bind's when there is a single symbol
22:07:24FromDiscord<Elegantbeef> But when there are multiple it makes a mixin
22:07:45FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#ix=3YoX
22:08:03FromDiscord<Elegantbeef> https://play.nim-lang.org/#ix=3YoY run the code if interested
22:08:23FromDiscord<Elegantbeef> Andreas are you in a template?
22:08:38FromDiscord<huantian> Too bad I can’t tell the compiler that doStuff has to have a certain signature
22:08:43FromDiscord<Andreas> @ElegantBeef pleeeeeaaaaase, write about this - it darn interesting but i'm too tired. Pls put smth in the Wiki or Blog or somewhere..
22:08:56FromDiscord<Andreas> (edit) "it" => "its"
22:09:27*noeontheend quit (Ping timeout: 240 seconds)
22:09:28FromDiscord<!Patitotective> sent a code paste, see https://play.nim-lang.org/#ix=3YoZ
22:09:55FromDiscord<Mike> Agreed, I really want to sort through everything but I'm so tired right now↔(@Andreas)
22:10:37FromDiscord<!Patitotective> In reply to @Andreas "<@145405730571288577> pleeeeeaaaaase, write about": we need BlogBeef
22:11:31FromDiscord<Rika> mixin - "i'm expecting this symbol to exist later"↔bind - "i have everything already, use what we have now"
22:11:39FromDiscord<Phil> sent a long message, see http://ix.io/3Yp0
22:11:51FromDiscord<Rika> i forgot if im right with bind
22:11:56FromDiscord<Phil> (edit) "http://ix.io/3Yp0" => "https://paste.rs/mMT"
22:12:04FromDiscord<Elegantbeef> Yea it's right, it only considers declaration scope
22:12:33FromDiscord<Phil> Buuuuut you expanded my consideration for the tool
22:12:34*dithpri quit (Ping timeout: 240 seconds)
22:12:39FromDiscord<Elegantbeef> Yes Nim instantiates a procedure once and reuses it across modules
22:12:40*krux02 quit (Remote host closed the connection)
22:12:45FromDiscord<Rika> mixin and bind are hard to understand names though really
22:12:56FromDiscord<Phil> Making it a really useful one for when you need consistent behaviour
22:12:59*dithpri joined #nim
22:13:39FromDiscord<huantian> Can you bind on object fields?
22:14:49FromDiscord<Rika> not that i know of now
22:14:50FromDiscord<Rika> (edit) "now" => "no"
22:15:00FromDiscord<ynfle> With concepts you should be able to
22:18:54FromDiscord<Andreas> @!Patitotective BlogBeef we need - how about 10-minutes of BeefZoom presenting `concepts mixins and binds` for dummies ?
22:19:43FromDiscord<!Patitotective> hahah
22:20:43FromDiscord<huantian> Maybe concepts should just be a footnote and have its own thing later heh
22:21:24*toluene joined #nim
22:32:32FromDiscord<ynfle> @ElegantBeef Can I point you to my code?
22:34:36FromDiscord<ynfle> I just serialize and deserialize to work around, but it's easier if not
22:39:40FromDiscord<!Patitotective> In reply to @Rika "Yardanico has a math": omg i just saw this message↔thank you Smart/ReadingYard
22:40:17FromDiscord<!Patitotective> this makes everything really, really easy↔i can add the cells as variables
22:45:16*ltriant joined #nim
22:50:54FromDiscord<Yayko> Hi, if anyone knows how to wrap C libraries and use them in Nim, please PM me, I'm lost I need help ^^
22:51:59FromDiscord<ynfle> In reply to @Yayko "Hi, if anyone knows": futhark is the future
22:53:21FromDiscord<!Patitotective> In reply to @Yayko "Hi, if anyone knows": https://github.com/PMunch/futhark
22:53:25FromDiscord<Yayko> In reply to @ynfle "futhark is the future": I will see that
22:53:30FromDiscord<!Patitotective> besides its example lol
22:53:46FromDiscord<ynfle> @ElegantBeef Never mind, it works!
22:53:58FromDiscord<ynfle> I think I know what the bug was
22:54:27FromDiscord<Andreas> sent a long message, see http://ix.io/3Yp6
22:54:49FromDiscord<Andreas> (edit) "http://ix.io/3Yp6" => "http://ix.io/3Yp7"
22:55:12FromDiscord<ynfle> Was it about nim?↔Which GC?↔Did you use `-d:useMaloc`?
22:55:39FromDiscord<Andreas> In reply to @ynfle "Was it about nim?": nope, i try with -d:useMaloc
22:55:56FromDiscord<ynfle> If not, valgrind doesn't know nim's allocator
22:56:14FromDiscord<ynfle> In reply to @ynfle "<@145405730571288577> Never mind, it": Ah nvm beef. Doesn't work
22:58:25FromDiscord<Andreas> `==65634== Use of uninitialised value of size 8`↔many of these - while app is running ? the de-allocations are not yet reached ?
23:00:15FromDiscord<ynfle> đŸ€·â€â™‚ïž not a valgrind expert
23:00:36FromDiscord<theangryepicbanana> sent a code paste, see https://play.nim-lang.org/#ix=3Yp9
23:00:50FromDiscord<theangryepicbanana> I've solved the issue by adding a forward declaration, but I still get the warning
23:01:11FromDiscord<Andreas> In reply to @ynfle "đŸ€·â€â™‚ïž not a valgrind": any alternatives ?
23:02:18FromDiscord<Elegantbeef> `--warning:User:off`↔(@theangryepicbanana)
23:02:41FromDiscord<Elegantbeef> You can disable specific warnings only whatever's in the brackets
23:03:08FromDiscord<theangryepicbanana> In reply to @Elegantbeef "`--warning:User:off` (<@356108561232953344>)": I tried this with a pragma and it didn't do anything
23:03:21FromDiscord<Elegantbeef> Good to hear my code works đŸ˜„â†”(@ynfle)
23:06:39FromDiscord<huantian> In reply to @ynfle "Ah nvm beef. Doesn't": Beef you missed this
23:07:05FromDiscord<Elegantbeef> Lol
23:07:07FromDiscord<Elegantbeef> Fucking baited
23:17:19*ltriant quit (Ping timeout: 244 seconds)
23:21:34*dithpri quit (Ping timeout: 240 seconds)
23:22:46*dithpri joined #nim
23:38:28*ltriant joined #nim
23:48:56*ltriant_ joined #nim
23:50:27*ltriant quit (Ping timeout: 260 seconds)