00:15:09 | * | jjido quit (Quit: My laptop has gone to sleep. ZZZzzz…) |
00:41:12 | * | redj joined #nim |
00:53:04 | * | tiorock joined #nim |
00:53:04 | * | tiorock quit (Changing host) |
00:53:04 | * | tiorock joined #nim |
00:53:04 | * | rockcavera is now known as Guest9206 |
00:53:04 | * | tiorock is now known as rockcavera |
00:55:59 | * | Guest9206 quit (Ping timeout: 260 seconds) |
01:51:35 | * | amadaluzia quit (Quit: ZNC 1.9.1 - https://znc.in) |
03:02:17 | * | rockcavera quit (Remote host closed the connection) |
03:03:46 | FromDiscord | <nasuray> In reply to @pmunch "And a lot less": Thanks for keeping the forums usable and free of spam! |
04:34:44 | * | nils` quit (Ping timeout: 260 seconds) |
04:44:49 | FromDiscord | <myriad_colors> If Nim hadn't inherited the enforced indentation rules from Python, it would be the perfect replacement for it. |
04:44:58 | FromDiscord | <myriad_colors> at least for me |
04:46:05 | FromDiscord | <myriad_colors> I swear, Im loving it. |
04:56:29 | FromDiscord | <pmunch> You get used to the indentation after a while |
05:00:34 | FromDiscord | <myriad_colors> Is there some formatter that fixes the indentation for me? |
05:17:02 | FromDiscord | <Phil> nph should work for this |
05:37:23 | FromDiscord | <pmunch> In reply to @myriad_colors "Is there some formatter": Define fixes, since indentation decides what belongs to which block it isn't always clear what the "correct" formatting is without the programmers intent |
05:48:48 | FromDiscord | <myriad_colors> Well, assuming each indent is a tab of 4 spaces, then i assume that 'fix' means correct any indent that is not at the correct width, usually its not hard to infer this by context, but its annoying to handle. |
05:50:05 | Amun-Ra | there's nimpretty, but I've never used it in a while; I'm not a sloppy programmer ;) |
05:51:04 | FromDiscord | <myriad_colors> Yeah, im abd at keeping the code tidy |
05:55:38 | FromDiscord | <Elegantbeef> Cannot format out a 5 character indent cause it's invalid syntax and ambiguous |
05:56:30 | FromDiscord | <Elegantbeef> sent a code paste, see https://play.nim-lang.org/#pasty=ApYlKYRA |
05:58:55 | FromDiscord | <myriad_colors> sent a code paste, see https://play.nim-lang.org/#pasty=YZhQVSEl |
05:59:36 | FromDiscord | <Elegantbeef> Why is that more valid than into the if statement? |
06:03:05 | * | shrikant joined #nim |
06:05:22 | Amun-Ra | that's why 4 space idents make more sense; we could snap it to the side with less space char difference ;> |
06:05:37 | Amun-Ra | 3* |
06:15:10 | * | ntat joined #nim |
06:16:46 | * | beholders_eye joined #nim |
06:19:12 | FromDiscord | <janakali> In reply to @Elegantbeef "Cannot format out a": solution: formatter defaults to inner indent and by typing ';' you tell it to exit the scope |
06:20:41 | FromDiscord | <Elegantbeef> Real solution\: learn to write clean code |
06:22:47 | Amun-Ra | +1 |
06:24:25 | FromDiscord | <janakali> but muh tooling |
06:25:49 | FromDiscord | <myriad_colors> In reply to @Elegantbeef "Why is that more": So you are telling me that, because a few case are ambiguous, I shouldnt rely on formatters? This says mroe about enforcing indenting than it says about formatters. |
06:26:12 | FromDiscord | <Elegantbeef> Well you said you want to fix code |
06:26:17 | FromDiscord | <myriad_colors> Fix indenting |
06:26:24 | FromDiscord | <myriad_colors> its a different matter. |
06:26:32 | FromDiscord | <Elegantbeef> I provided a reason why you cannot fix indentation if it's not consistent |
06:26:40 | FromDiscord | <Elegantbeef> Formatters can format code just fine |
06:27:14 | FromDiscord | <myriad_colors> Again, this says more about indentation and whitespaces being meaningful |
06:27:22 | FromDiscord | <Elegantbeef> Not particularly |
06:27:30 | FromDiscord | <Elegantbeef> Cause you're going to write the same code anyway |
06:28:07 | FromDiscord | <Elegantbeef> I wrote C# before I wrote Nim and I never attempted to use a formatter to fix indentation |
06:28:15 | FromDiscord | <myriad_colors> Not if changing indentation changes the semantics. |
06:28:42 | FromDiscord | <Elegantbeef> Uh huh |
06:28:53 | FromDiscord | <lainlaylie> indentation is our curly braces, a formatter cannot guess what you meant |
06:29:03 | FromDiscord | <myriad_colors> Yep, I am free to dislike this particular convention. |
06:29:21 | FromDiscord | <myriad_colors> Anyway, that said, it is a great language. |
06:29:36 | FromDiscord | <myriad_colors> I can deal with this annoyance. |
06:29:48 | FromDiscord | <myriad_colors> In reply to @lainlaylie "indentation is our curly": Just use braces. |
06:30:06 | FromDiscord | <Elegantbeef> Nah braces are redundant since everyone already does properly indented code |
06:30:15 | FromDiscord | <lainlaylie> this is nim |
06:43:54 | * | Jjp137 quit (Quit: Leaving) |
06:48:26 | FromDiscord | <nnsee> this isn't a loaded question but why do you write code with messed up indentation in the first place |
06:48:35 | FromDiscord | <nnsee> or like how does that even happen |
07:06:27 | * | ntat quit (Read error: Connection reset by peer) |
07:18:55 | * | ntat joined #nim |
07:21:23 | FromDiscord | <Phil> sent a long message, see https://pasty.ee/LxpXiARw |
07:21:36 | * | ntat quit (Read error: Connection reset by peer) |
07:21:42 | FromDiscord | <Phil> Though I guess it's somewhat easier to fall into those trappings with meaningful indentation. |
07:22:20 | FromDiscord | <Phil> (edit) "https://pasty.ee/sHJKfILb" => "https://pasty.ee/QmoKfmQx" |
07:23:39 | * | Jjp137 joined #nim |
07:24:02 | FromDiscord | <Phil> But that was just to be on the complete side, I think for the unambiguous cases nph can help (there's an extension for it afaik) |
07:39:24 | * | jjido joined #nim |
07:49:11 | FromDiscord | <madonuko> using a formatter with owlkettle is a nightmare tho |
07:49:29 | FromDiscord | <madonuko> and I just gave up and not use LSPs and formatters |
07:50:43 | FromDiscord | <Phil> In reply to @madonuko "using a formatter with": That one I'm not surprised about, when you use macros that essentially define a new language, then I don't think nph can do much there |
07:51:08 | FromDiscord | <Phil> Though I might be wrong on that one |
07:51:17 | FromDiscord | <madonuko> eh, in rust the formatter ignores everything in a macro body |
07:51:24 | FromDiscord | <madonuko> I kinda expected the same thing in nim |
07:52:08 | FromDiscord | <Phil> Would need to ask arnetheduck if he knows more on the matter |
07:55:05 | FromDiscord | <pmunch> In reply to @isofruit "That one I'm not": Depends on the macro though, some macros would format just fine |
07:58:03 | FromDiscord | <pmunch> One pro of spaces vs. brackets for us non-american folk: no more AltGr! |
07:58:09 | FromDiscord | <pmunch> Or at least a lot less of it |
07:58:40 | FromDiscord | <pmunch> To do {} on my keyboard is AltGr+7 and AltGr+0 (8 and 9 are for [ and ] respectively) |
07:58:48 | FromDiscord | <pmunch> Much easier to hit space or tab 🙂 |
08:03:29 | FromDiscord | <Phil> In reply to @pmunch "One pro of spaces": That means you get less value out of your keyboard! |
08:04:07 | FromDiscord | <Phil> AltGr already faces a lot less wear&tear! |
08:07:24 | * | jjido quit (Quit: My laptop has gone to sleep. ZZZzzz…) |
08:50:41 | * | nils` joined #nim |
09:43:43 | FromDiscord | <bubbly_avocado_86424> hey, since looking into building an app with UI (one or more of GUI/TUI/WUI) i'm looking at webUI but also considering use of Tauri since this covers a lot of ground already. ↵↵Is there a good resource on working Nim + Tauri outside of what is on the Tauri website ? |
09:43:59 | FromDiscord | <bubbly_avocado_86424> (edit) "hey, since looking into building an app with UI (one or more of GUI/TUI/WUI) i'm looking at webUI but also considering use of Tauri since this covers" => "sent" | "lot of ground already. ↵↵Is there a good resource on working Nim + Tauri outside of what is on the Tauri website ?" => "long message, see https://pasty.ee/aDcxHOJR" |
10:19:44 | * | beholders_eye quit (Quit: WeeChat 4.5.1) |
10:20:06 | * | beholders_eye joined #nim |
10:31:10 | FromDiscord | <janakali> In reply to @janakali "I made a thing:": GrabNim can now install nightlies and compile nim from source! |
10:32:26 | FromDiscord | <janakali> (edit) "nim" => "Nim" |
10:37:35 | FromDiscord | <lainlaylie> cool |
11:05:25 | * | beholders_eye quit (Ping timeout: 248 seconds) |
11:32:03 | * | xet7 joined #nim |
11:56:37 | * | xet7 quit (Ping timeout: 252 seconds) |
11:57:42 | * | xet7 joined #nim |
12:41:12 | FromDiscord | <madonuko> In reply to @janakali "GrabNim can now install": can this be run and installed as root? I'm interesting in packaging this in terra |
12:49:00 | FromDiscord | <Trayambak> I'm sorry if I'm being stupid but what advantages does GrabNim have over choosenim? \:P↵(@janakali) |
12:54:38 | FromDiscord | <madonuko> sent a long message, see https://pasty.ee/MsBSGbBk |
13:19:34 | FromDiscord | <janakali> In reply to @Trayambak "I'm sorry if I'm": 1. grabnim doesn't use shims↵2. grabnim doesn't create dirs in $HOME↵3. grabnim doesn't override your binaries in "~/.nimble/bin"↵4. latest choosenim release currently still has a bug that causes hundreds nimsuggest processes in lsp |
13:26:47 | FromDiscord | <janakali> In reply to @madonuko "can this be run": I've never considered it running as root. But installing it to "/usr/bin" and running with normal user privileges should be fine. |
14:35:14 | FromDiscord | <axgam> yo guys im new to nim and C performance for python-lua looks sounds awesome! does Nim support OpenGL bindings? I am very new sorry for dumb questions. |
14:35:49 | FromDiscord | <axgam> also what is grabnim and choosenim |
14:43:38 | FromDiscord | <madonuko> hey it seems to work as root |
14:43:43 | FromDiscord | <madonuko> packaged it |
14:45:10 | FromDiscord | <madonuko> <https://github.com/terrapkg/packages/pull/5342> |
14:47:10 | FromDiscord | <demotomohiro> In reply to @itsaxgam "yo guys im new": I used this library to use OpenGL before: https://github.com/johnnovak/nim-glfw |
14:47:45 | FromDiscord | <axgam> thanks! i will check it out! |
15:00:51 | FromDiscord | <gokr> @janakali Cool, will try grabnim (avoided choosenim after lsp issues) |
15:01:08 | * | beholders_eye joined #nim |
15:05:33 | * | jjido joined #nim |
15:24:44 | * | jjido quit (Quit: My laptop has gone to sleep. ZZZzzz…) |
16:42:28 | * | andy-turner joined #nim |
16:42:52 | * | andy-turner quit (Remote host closed the connection) |
16:59:36 | FromDiscord | <Robyn [She/Her]> In reply to @myriad_colors "If Nim hadn't inherited": enforced indentation rules? as in? |
17:00:07 | FromDiscord | <Robyn [She/Her]> In reply to @Amun-Ra "there's nimpretty, but I've": nimpretty is not great, tbh |
17:03:23 | Amun-Ra | I write nim… pretty already… ;) |
17:03:49 | FromDiscord | <Robyn [She/Her]> In reply to @demotomohiro "I used this library": treeform also has a lib for this, right? windy or smth? |
17:04:00 | FromDiscord | <Robyn [She/Her]> In reply to @Amun-Ra "I write nim… pretty": same tho |
17:04:55 | FromDiscord | <Robyn [She/Her]> i am interested in making a customisable formatter for Nim tho, either as a nph fork/ext, or just a new thing... tho using existing work is defo better than writing something new |
17:14:02 | FromDiscord | <demotomohiro> In reply to @battery.acid.bubblegum "treeform also has a": https://github.com/treeform/windy↵This one?↵It says: "This library is still in development and is not ready to be used." |
17:18:32 | FromDiscord | <Phil> TFW you're arne, you make a pretty well publicized formatter plugin and nobody talks about it when the topic of formatting comes up |
17:18:54 | * | beholders_eye quit (Ping timeout: 260 seconds) |
17:18:58 | FromDiscord | <Phil> At this point I'd not ever even mention nimpretty and just always mention nph when it comes to formatting |
17:48:11 | * | xet7 quit (Remote host closed the connection) |
17:49:39 | * | xet7 joined #nim |
18:13:58 | * | ntat joined #nim |
18:16:56 | FromDiscord | <heysokam> In reply to @itsaxgam "yo guys im new": yes. I have an app that does use opengl. this is what I used:↵https://github.com/heysokam/tinyfb/blob/395e787c9a5af9f2f730f19c72bcc01ee26adba4/tinyfb.nimble#L20-L21 |
18:23:56 | FromDiscord | <heysokam> In reply to @battery.acid.bubblegum "i am interested in": when nph was announced, I brought up the lack of customization and the reply was that nph was made with customization in mind, and it just was not exposed. I was also recommended to fork for that reason |
18:41:33 | * | jjido joined #nim |
19:10:13 | * | xet7 quit (Remote host closed the connection) |
19:11:45 | * | xet7 joined #nim |
19:12:10 | FromDiscord | <Robyn [She/Her]> Is it safe to cast `proc(a: Ctx)` to `proc(a: CtxBase)` where CtxBase is `ref object of RootObj` and Ctx is `ref object of CtxBase` |
19:12:17 | FromDiscord | <Robyn [She/Her]> makes sense honestly↵(@heysokam) |
19:20:16 | FromDiscord | <heysokam> In reply to @Robyn "Is it safe to": Last time I tried it I didn't get good outcomes. Maybe someone knows some trick to make it safe, but it didn't work for me even for types that had the same structure internally |
19:20:24 | * | xet7_ joined #nim |
19:20:58 | FromDiscord | <heysokam> can't remember if they were `ref object` or not, though |
19:21:27 | Amun-Ra | cast object itself |
19:23:13 | * | xet7 quit (Ping timeout: 276 seconds) |
19:24:53 | FromDiscord | <Robyn [She/Her]> Since they're references, I think there should be no problem, but I can't be sure without testing ig |
19:26:28 | * | xet7_ quit (Ping timeout: 276 seconds) |
19:26:55 | * | andy-turner joined #nim |
19:27:27 | * | andy-turner quit (Read error: Connection reset by peer) |
19:33:19 | * | xet7 joined #nim |
19:34:05 | FromDiscord | <nocturn9x> does anyone know of a reliable way to serialize a large nim object to disk? I have a ~36MB neural network that I currently embed into my executable using `staticRead`. For efficienty purposes I'd like to be able to `cast` this string/byte stream to the object itself instead of copying from the constant into a new object. I've tried in the past but apparently the VM's compile time ability to cast is very limited. Any workarounds? |
19:37:01 | FromDiscord | <nocturn9x> sent a code paste, see https://play.nim-lang.org/#pasty=qIBOGgdi |
19:37:41 | FromDiscord | <nocturn9x> this is the object (`FT_SIZE=704`, `HL_SIZE=1536`, `NUM_INPUT_BUCKETS=16`, `NUM_OUTPUT_BUCKETS=8`, `ALIGNMENT_BOUNDARY=64`) |
19:38:54 | FromDiscord | <nocturn9x> I am willing to work around nim's limitations by doing `cimport` hackery, if necessary |
19:39:08 | FromDiscord | <nocturn9x> I just don't know the black magic required to do this |
19:39:22 | FromDiscord | <nocturn9x> C/C++ chess engine devs do it just fine so it must be possible |
19:40:17 | FromDiscord | <Elegantbeef> Is there any reason you don't just static read then `let myVar = cast[ptr T](myVarData[0].addr)`? |
19:41:22 | FromDiscord | <nocturn9x> iirc I tried this in the past and it failed, the reason being that the raw binary file I read in is not padded the same way as the object |
19:41:34 | FromDiscord | <nocturn9x> as you can see, each layer is padded to 64 bytes |
19:41:42 | FromDiscord | <Robyn [She/Her]> https://play.nim-lang.org/#pasty=ZgAQQuPv this doesn't work 😔 |
19:41:44 | FromDiscord | <nocturn9x> whereas the network file is padded to 64 bytes as a whole |
19:41:50 | FromDiscord | <Elegantbeef> How can you cast it to an object if it's not padded the same way? |
19:42:12 | FromDiscord | <nocturn9x> well what I was hoping to be able to do is have a utility that loads the network into memory and dumps the raw bytes of the entire object to disk |
19:42:22 | FromDiscord | <nocturn9x> then I load _that_ into my `staticRead` |
19:42:33 | FromDiscord | <nocturn9x> and `cast` with that |
19:42:48 | FromDiscord | <Elegantbeef> Robyn `{.nimcall.}` |
19:42:51 | FromDiscord | <nocturn9x> though it wouldn't be pointers |
19:43:07 | FromDiscord | <Elegantbeef> Right if the dumped data is the same as the object the padding will be fine on a read from the dump |
19:43:34 | FromDiscord | <Elegantbeef> sent a code paste, see https://play.nim-lang.org/#pasty=AZCnOjHr |
19:43:49 | FromDiscord | <Elegantbeef> That will work the same as `let myVar = cast[T](staticRead"bleh")` |
19:44:07 | FromDiscord | <nocturn9x> the answer then is how do I dump the object |
19:44:17 | FromDiscord | <nocturn9x> I tried doing it on my own and it didn't work :( |
19:45:30 | FromDiscord | <nocturn9x> In reply to @Elegantbeef "That will work the": ah see there lies the problem |
19:45:33 | FromDiscord | <nocturn9x> it can't be `let` |
19:45:37 | FromDiscord | <nocturn9x> it has to be `const` |
19:45:47 | FromDiscord | <nocturn9x> otherwise it won't be a constant and I will get none of the benefits |
19:45:58 | FromDiscord | <nocturn9x> hence why I mentioned `cimport` shenanigans |
19:46:24 | FromDiscord | <Elegantbeef> the stdlib `write` procedure |
19:46:25 | FromDiscord | <Robyn [She/Her]> Ah lemme try |
19:46:25 | FromDiscord | <Elegantbeef> `file.write(myData.addr, sizeof(myData))` |
19:46:25 | FromDiscord | <Robyn [She/Her]> Yay it works, thanks Beef |
19:46:27 | FromDiscord | <Elegantbeef> Sorry `writeBuffer` |
19:46:37 | FromDiscord | <nocturn9x> gotcha |
19:46:54 | FromDiscord | <nocturn9x> it will still be `let` though |
19:47:03 | FromDiscord | <nocturn9x> meaning it will be a variable somewhere |
19:47:14 | FromDiscord | <nocturn9x> I need it to be a constant, like just a verbatim thing in `.bss` or whatever |
19:47:22 | FromDiscord | <nocturn9x> that's what gets me the efficiency gains |
19:47:40 | FromDiscord | <nocturn9x> otherwise there's no point to any of this |
19:47:52 | FromDiscord | <Elegantbeef> the string data will be in the rodata section |
19:49:16 | FromDiscord | <nocturn9x> that's not what I need |
19:49:25 | FromDiscord | <nocturn9x> I need `myVar` to be there |
19:49:29 | FromDiscord | <nocturn9x> otherwise it's pointless |
19:49:35 | FromDiscord | <Elegantbeef> Well then time to replicate it using emit |
19:49:47 | FromDiscord | <nocturn9x> let me show you how C++ engines do it |
19:49:57 | FromDiscord | <Elegantbeef> I don't care how they do it, I cannot read C++ |
19:50:39 | FromDiscord | <nocturn9x> fair lol |
19:50:45 | FromDiscord | <Elegantbeef> Use emit to replicate it |
19:50:48 | FromDiscord | <nocturn9x> still, they use `reinterpret_cast` |
19:50:51 | FromDiscord | <Elegantbeef> Or use codegendecl |
19:50:58 | FromDiscord | <nocturn9x> on an already constant byte stream |
19:51:23 | FromDiscord | <nocturn9x> In reply to @Elegantbeef "Use emit to replicate": idk how to use that tbh |
19:51:29 | FromDiscord | <nocturn9x> emit has always been quite weird for me |
19:51:41 | FromDiscord | <Elegantbeef> Emit is just writing C inline |
19:51:45 | FromDiscord | <Elegantbeef> It's nothing fancy |
19:52:13 | FromDiscord | <nocturn9x> hmm |
19:53:40 | FromDiscord | <nocturn9x> I'll have to fiddle with it ig |
19:54:29 | * | xet7 quit (Ping timeout: 248 seconds) |
19:54:48 | FromDiscord | <Elegantbeef> sent a code paste, see https://play.nim-lang.org/#pasty=JGHykfAH |
19:55:01 | FromDiscord | <Elegantbeef> Or w/e they do in C |
20:06:52 | * | xet7 joined #nim |
20:11:20 | Amun-Ra | .bss → .data |
20:20:29 | * | xet7 quit (Quit: Leaving) |
20:20:50 | * | xet7 joined #nim |
20:25:20 | * | ntat quit (Ping timeout: 272 seconds) |
20:37:00 | FromDiscord | <Robyn [She/Her]> Matt, what's the problem if it's a variable, exactly? since it'd be in memory, isn't that better than it solely being on disk? |
20:40:58 | Amun-Ra | he wants the data as const memory, without copying all the data at the start |
20:52:58 | FromDiscord | <leorize> why do you think so?↵(@nocturn9x) |
20:53:13 | FromDiscord | <leorize> string literals are CoW from static storage by default |
20:55:27 | FromDiscord | <leorize> if you need it as `T`, just cast the string data pointer to `ptr T` and you will have static storage `T` |
21:04:11 | FromDiscord | <nocturn9x> I don't need a ptr tho? |
21:04:18 | FromDiscord | <nocturn9x> In reply to @Amun-Ra "he wants the data": ^^ |
21:04:43 | FromDiscord | <nocturn9x> In reply to @battery.acid.bubblegum "Matt, what's the problem": if it's a constant in the executable then it doesn't get deduplicated, no matter how many instances of the engine are running |
21:04:47 | FromDiscord | <Elegantbeef> Hey my echo is a bit delayed |
21:04:57 | FromDiscord | <nocturn9x> when running the engine in separate processes, this boosts performance |
21:05:01 | FromDiscord | <leorize> the ptr is just an implementation detail |
21:05:05 | FromDiscord | <nocturn9x> (this is the case in testing) |
21:05:30 | FromDiscord | <nocturn9x> I'll try though |
21:36:37 | * | amadaluzia joined #nim |
21:43:34 | * | rockcavera joined #nim |
21:48:35 | FromDiscord | <Robyn [She/Her]> In reply to @nocturn9x "when running the engine": fair i think? |
21:55:18 | * | jjido quit (Quit: My laptop has gone to sleep. ZZZzzz…) |
22:10:31 | * | mahlon quit (Quit: PotatoTech) |
22:13:59 | FromDiscord | <heysokam> sent a code paste, see https://play.nim-lang.org/#pasty=wKSiyHLQ |
22:14:47 | FromDiscord | <heysokam> Either way you are achieving the same thing, so it depends on how you prefer to solve it |
22:18:44 | * | beholders_eye joined #nim |
22:26:18 | FromDiscord | <nocturn9x> thanks! |
22:26:25 | FromDiscord | <nocturn9x> looks simple enough ig! |
22:26:29 | FromDiscord | <nocturn9x> will give it a shot |
22:31:43 | * | beholders_eye quit (Ping timeout: 276 seconds) |
22:43:07 | * | amadaluzia quit (Quit: ZNC 1.9.1 - https://znc.in) |
23:02:25 | * | mahlon joined #nim |