<< 13-08-2025 >>

00:11:15*xet7 quit (Remote host closed the connection)
00:12:43*xet7 joined #nim
00:24:50*dza quit (Server closed connection)
00:26:25*dza joined #nim
00:36:13*xet7 quit (Ping timeout: 276 seconds)
02:54:03*rockcavera quit (Remote host closed the connection)
03:34:47*xet7 joined #nim
04:26:29*alexdaguy joined #nim
04:40:24*xet7 quit (Ping timeout: 252 seconds)
04:47:11FromDiscord<.tokyovigilante> on program exit, can I rely on the ORC garbage collector destroying all my objects? How would I ensure an object wrapping a socket closes it cleanly, for example, or a Vulkan object is released etc?
04:52:59FromDiscord<heysokam> What is the expected way to `return 0` for unix conventions when terminating a Nim app?↵Is `quit(0)` safe, or does it skip any of the lang's termination process or something?
04:53:02FromDiscord<arnetheduck> In reply to @elegantbeef "But like I said": the best thing that could happen to nim's hcr would be removing it from the stdlib / compiler 😉
04:55:20FromDiscord<heysokam> In reply to @.tokyovigilante "on program exit, can": for Vulkan, you'd call the destroy functions at the end of your app
04:55:52FromDiscord<heysokam> If you want that automated, then create a custom `destroy=` hook for your object
04:56:26FromDiscord<heysokam> its the wrong abstraction for GPU resources, though. be warned
04:57:17FromDiscord<.tokyovigilante> In reply to @heysokam "If you want that": yup, that's what I've more or less done, but for example I need to clean up all my images, pipelines etc, and then destroy the allocator, then the engine in a deterministic way. I don't think I can control it well enough to ensure everything is unwound correctly, so probably need to stick with manual memory management or a deletion queue.
04:57:51FromDiscord<heysokam> In reply to @.tokyovigilante "yup, that's what I've": the same happens with RAII. It's the wrong abstraction, that's why it doesn't work
04:58:38FromDiscord<heysokam> with GPU-CPU sync, you must be in complete control of what happens, since the GPU is the authoritative owner in reality, but RAII and friends are CPU-managed
05:00:35FromDiscord<.tokyovigilante> yup. was hoping I could manage that by holding a CPU-side reference until the fence/sync objects released, but it gets too complex.
05:54:48*redj quit (Ping timeout: 276 seconds)
06:01:13*skippy8 joined #nim
06:11:32FromDiscord<.tokyovigilante> Also graphics related, has anyone wrapped both Volk and the Vulkan Memory Allocator with Futhark? VMA and Volk both want to import vulkan.h, and then re-export all the types, leading to a bunch of collisions. I've tried various combinations of `nodeclguard` and friends, but it all seems pretty brittle. is there any way to make the FFI happy with types that are clearly the same across multiple imported wrappers?
06:22:16*nils` quit (Ping timeout: 252 seconds)
06:26:28FromDiscord<heysokam> sent a long message, see https://pasty.ee/miymMdgD
06:30:56FromDiscord<heysokam> > is there any way to make the FFI happy with types that are clearly the same across multiple imported wrappers↵You'd need to either create the wrappers together, so that the Nim types are the same↵Or create a layer of interaction where the types are casted between each other _(eg: with converters or templates)_
06:31:13FromDiscord<heysokam> Considering the size of vulkan, #2 sounds like hell to write
06:33:17FromDiscord<heysokam> I guess another option would be to cast on every usage
06:50:33*amadaluzia joined #nim
07:21:29FromDiscord<.tokyovigilante> Ideally Futhark would have a mode where it added declaration guards but didn’t rewrite names, then I could have the 64 bit enums in manually, the rest of the types from Volk, and VMA just for its own types, if that is a real thing. Or maybe just create a header that pulls in both and then run Futhark on that. Will keep chipping away. Had the same problem with Wayland and wayland-egl, but with less types so easier to do manually.
08:02:57*alexdaguy quit (Quit: WeeChat 4.7.0)
08:49:13*nils` joined #nim
09:43:34*beholders_eye joined #nim
09:48:02*Freneticks quit (Server closed connection)
09:48:11*Freneticks joined #nim
10:10:45FromDiscord<steamhacker_1837> what the...↵i found very interesting something
10:10:54FromDiscord<steamhacker_1837> (edit) "what the...↵i found ... very" added "something" | removed "something"
10:11:01FromDiscord<steamhacker_1837> command line(1, 2) Error: unknown CPU: 'list'. Available options are: i386, m68k, alpha, powerpc, powerpc64, powerpc64el, sparc, vm, hppa, ia64, amd64, mips, mipsel, arm, arm64, js, nimvm, avr, msp430, sparc64, mips64, mips64el, riscv32, riscv64, esp, wasm32, e2k, loongarch64
10:11:13FromDiscord<steamhacker_1837> does nim support elbrus? what the...
10:11:33FromDiscord<steamhacker_1837> even linux and rust does not support elbrus but how nim support elbrus?
10:54:22FromDiscord<.tokyovigilante> does anyone have an example for Futhark's `addOpirCallback`?
10:54:54FromDiscord<.tokyovigilante> aka the best but most-asked about (by me) Nim library...
10:55:05FromDiscord<heysokam> its likely related to modifying the json before renames
10:55:29FromDiscord<heysokam> but have not used it before myself. @pmunch might help
11:00:34*xet7 joined #nim
11:01:30FromDiscord<.tokyovigilante> Yup I'm just trying to drop any of the 64-bit `static const` Vulkan flags that aren't being imported with their values, and just define them manually for now.
11:03:11FromDiscord<heysokam> ah, I opened a bug ticket open for that. pmunch said that used to work, so must have been a regression from newer clang versions interacting with opir
11:05:54FromDiscord<pmunch> Ah yes, haven't gotten around to look at that yet (just got back from vacation)
11:06:15FromDiscord<pmunch> An Opir callback is simply a procedure that takes a `JsonNode` and returns a `JsonNode` IIRC
11:06:34FromDiscord<pmunch> You just need to make sure that the output is valid and you can do whatever you want
11:11:27FromDiscord<.tokyovigilante> sent a code paste, see https://play.nim-lang.org/#pasty=JefYXnpU
11:13:32FromDiscord<pmunch> Why do you have it as a closure?
11:17:14FromDiscord<.tokyovigilante> sent a code paste, see https://play.nim-lang.org/#pasty=oGcLdMRF
11:17:25FromDiscord<.tokyovigilante> Because it told me to? 🙂
11:18:03FromDiscord<.tokyovigilante> That's without the `{.closure.}` pragma, also doesn't work as a `proc`.
11:18:42FromDiscord<.tokyovigilante> i.e. `proc processor (node: JsonNode): JsonNode = echo $node`
11:20:33FromDiscord<pmunch> Ah I see..
11:20:38FromDiscord<pmunch> I think I messed up somewhere..
11:21:28FromDiscord<pmunch> sent a code paste, see https://play.nim-lang.org/#pasty=lYJxpTAQ
11:21:35FromDiscord<pmunch> That works, but it's not great..
11:22:01FromDiscord<janakali> In reply to @steamhacker_1837 "does nim support elbrus?": It was added by a [pull request](https://github.com/nim-lang/Nim/pull/19024). Also, I think `nim c --os:NintendoSwitch` is more unexpected
11:22:07FromDiscord<pmunch> I must've refactored it to a sequence at some point, and then forgotten to add `{.nimcall.}` inside the seq..
11:59:45*nils` quit (Ping timeout: 260 seconds)
12:06:04*blackbeard420 quit (Server closed connection)
12:06:17*blackbeard420 joined #nim
12:35:45*nils` joined #nim
13:31:35*kotrcka joined #nim
14:07:35*amadaluzia quit (Quit: You)
14:32:54FromDiscord<0xfab_10> what's up with this error https://play.nim-lang.org/#pasty=MRKFHTYh
14:36:28FromDiscord<Laylie> i've also run into this and worked around it by generating a `typeof` call
14:36:47FromDiscord<Laylie> but i would also like to know what is up with that behavior
14:41:55FromDiscord<0xfab_10> huh wrapping the parameter of `default` in `nnkTypeofExpr` solved it
14:43:29FromDiscord<0xfab_10> thanks
14:49:40FromDiscord<0xfab_10> if you do it like https://play.nim-lang.org/#pasty=LmbspCQC you don't need that
16:00:31FromDiscord<.skyvault> sent a code paste, see https://play.nim-lang.org/#pasty=qiszsvXG
16:00:37*kotrcka quit (Remote host closed the connection)
16:10:51FromDiscord<lainlaylie> `type` can mean `typeof` or `typedesc` or introduce a type definition depending on context, so it's better to be clear and use typedesc here
16:13:23FromDiscord<.skyvault> Ah okay, thanks
16:31:33FromDiscord<Robyn [She/Her]> In reply to @.skyvault "Is there a difference": typedesc > typeof > type
16:31:42FromDiscord<Robyn [She/Her]> type is deprecated
16:36:52FromDiscord<.skyvault> Thats good to know, I need to update my codebase, I went wild with `type`
16:50:58FromDiscord<blashyrk> sent a code paste, see https://play.nim-lang.org/#pasty=EjiQuMDV
16:51:31FromDiscord<blashyrk> (edit) "https://play.nim-lang.org/#pasty=uXXbcbdq" => "https://play.nim-lang.org/#pasty=AiNBQJYI"
16:52:43FromDiscord<blashyrk> (edit) "https://play.nim-lang.org/#pasty=MkWtWVNg" => "https://play.nim-lang.org/#pasty=ZHTpxYae"
16:55:08FromDiscord<0xfab_10> what's up with the compiler erroring about duplicate hooks when I have only one declaration
16:55:20FromDiscord<0xfab_10> sent a code paste, see https://play.nim-lang.org/#pasty=tgDcrBuL
16:55:24FromDiscord<0xfab_10> v2.2.4
16:55:41FromDiscord<lainlaylie> are you using the type before declaring the hook
16:55:46FromDiscord<0xfab_10> yeah
16:55:51FromDiscord<lainlaylie> that's why then, i think
16:56:26FromDiscord<0xfab_10> yeah
16:56:27FromDiscord<0xfab_10> thanks
16:58:08FromDiscord<lainlaylie> https://nim-lang.org/docs/destructors.html#hook-generation
17:23:00*beholders_eye quit (Ping timeout: 252 seconds)
17:38:13FromDiscord<nieznanymagnat> sent a code paste, see https://play.nim-lang.org/#pasty=hqyFevgh
17:40:03FromDiscord<Elegantbeef> Drop the constraint
17:40:12FromDiscord<Elegantbeef> The type is already constrained no?
17:42:34FromDiscord<ollicron_53732> this multitasking stuff is sorta hard to understand it's like I have no idea what's inside a core anymore
17:43:22FromDiscord<nieznanymagnat> In reply to @Elegantbeef "Drop the constraint": small issue is the value is passed down as a size of array inside the Graph↵but ig I could refactor it
17:43:47FromDiscord<Elegantbeef> `self.S`
17:46:02FromDiscord<nieznanymagnat> I like to make my life more difficult than it needs to be. Thanks 👍
17:46:51FromDiscord<Elegantbeef> But yea static parameters are generally buggy so have fun
18:13:03*ursa-major quit (Server closed connection)
18:13:12*ursa-major joined #nim
19:04:20FromDiscord<alehander92> PMunch, do you work with json schema ?
19:33:30*beholders_eye joined #nim
20:00:57FromDiscord<alehander92> i remember you using lsp but not i find out they dont define it with that for LSP
20:01:01FromDiscord<alehander92> i think they do have one for DAP
20:01:25FromDiscord<alehander92> so probably you didnt have a reason to look at it
20:14:18FromDiscord<pmunch> Not quite sure what you mean?
20:15:07FromDiscord<0xfab_10> sent a code paste, see https://play.nim-lang.org/#pasty=yEoBxMMi
20:15:33FromDiscord<0xfab_10> (edit) "https://play.nim-lang.org/#pasty=tsCbtpeW" => "https://play.nim-lang.org/#pasty=xAbOUvog"
20:15:36FromDiscord<Elegantbeef> Is it so hard to just to `T.default()`?
20:15:52FromDiscord<0xfab_10> and then mutate a var?
20:16:21FromDiscord<0xfab_10> sent a code paste, see https://play.nim-lang.org/#pasty=oPsIrCzy
20:16:45FromDiscord<Elegantbeef> What does `fillDefault` even do?
20:17:31FromDiscord<0xfab_10> fills an object with `default` and then overrides the given fields in the constructor
20:17:45FromDiscord<0xfab_10> (edit) "fills an object with `default` and then overrides the ... given" added "fields" | removed "fields"
20:17:50FromDiscord<0xfab_10> (edit) "fills an object with `default` and then overrides the fields given in the constructor ... " added "expr"
20:18:20FromDiscord<Elegantbeef> You really need to use quasi quoting
20:18:44FromDiscord<0xfab_10> it's easier this way
20:18:55FromDiscord<Elegantbeef> It's really not
20:19:39FromDiscord<0xfab_10> why
20:20:01FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#pasty=LTcIgGVe
20:20:04FromDiscord<Elegantbeef> That's why
20:21:42FromDiscord<0xfab_10> it's shorter, not really that much better tbh
20:22:01FromDiscord<Elegantbeef> It's more readable and maintainable
20:22:40FromDiscord<Elegantbeef> Not that it's likely it will need to change
20:25:02FromDiscord<0xfab_10> sent a code paste, see https://play.nim-lang.org/#pasty=CtHXxTVJ
20:25:10FromDiscord<0xfab_10> like this?
20:25:21FromDiscord<Elegantbeef> Yes
20:26:17FromDiscord<0xfab_10> cool
20:31:06FromDiscord<Elegantbeef> You also could use it on the assign if you were so inclined
20:32:04FromDiscord<Elegantbeef> sent a code paste, see https://play.nim-lang.org/#pasty=WjJmoUAr
21:00:59FromDiscord<0xfab_10> the silly function call syntax
21:02:01FromDiscord<Elegantbeef> huh?
21:03:38FromDiscord<0xfab_10> `result[1].add:`
21:13:09*rockcavera joined #nim
21:17:22*joast quit (Quit: Leaving.)
21:34:00*amadaluzia joined #nim
22:07:18*skippy8 quit (Quit: WeeChat 4.6.3)
22:35:27*rockcavera is now known as Guest2854
22:35:27*tiorock joined #nim
22:35:27*Guest2854 quit (Killed (tungsten.libera.chat (Nickname regained by services)))
22:35:27*tiorock is now known as rockcavera
22:37:29*tiorock joined #nim
22:37:29*rockcavera quit (Killed (platinum.libera.chat (Nickname regained by services)))
22:37:29*tiorock is now known as rockcavera