<< 11-08-2026 >>

00:18:01*Skippy8 joined #nim
01:08:09*Vyrnexis joined #nim
01:18:03*Skippy8 quit (Ping timeout: 244 seconds)
03:05:38*SchweinDeBurg quit (Remote host closed the connection)
03:05:55*SchweinDeBurg joined #nim
05:04:49*SchweinDeBurg quit (Remote host closed the connection)
05:05:46*SchweinDeBurg joined #nim
07:24:38*tokyovigilante quit (Ping timeout: 265 seconds)
07:50:14*Skippy8 joined #nim
08:21:12*Skippy8 quit (Ping timeout: 244 seconds)
08:21:54*Skippy8 joined #nim
08:46:39FromDiscord<ryzh.> Is Nim's [HotCodeReload](https://nim-lang.github.io/Nim/hcr.html) incompatible with any Nim's [memory management strategies](https://nim-lang.org/docs/mm.html)?
08:47:22FromDiscord<ryzh.> (edit) "Is Nim's [HotCodeReload](https://nim-lang.github.io/Nim/hcr.html) incompatible with any ... Nim'smodels](https://nim-lang.org/docs/mm.html)?" added "of" | "strategies](https://nim-lang.org/docs/mm.html)?" => "models](https://nim-lang.org/docs/mm.html)?"
08:47:34FromDiscord<ryzh.> (edit) "[HotCodeReload](https://nim-lang.github.io/Nim/hcr.html)" => "[Hot Code Reloading](https://nim-lang.github.io/Nim/hcr.html)"
08:49:11*tokyovigilante joined #nim
09:19:22*Skippy8 quit (Ping timeout: 260 seconds)
09:25:49*Skippy8 joined #nim
09:36:37*Skippy8 quit (Ping timeout: 252 seconds)
10:01:22*beholders_eye joined #nim
10:15:14*sdothum quit (Remote host closed the connection)
10:17:56*sdothum joined #nim
10:30:10*Skippy8 joined #nim
10:47:55*Skippy8 quit (Ping timeout: 244 seconds)
10:52:56*Skippy8 joined #nim
10:57:55*Skippy8 quit (Ping timeout: 264 seconds)
11:00:41*Skippy8 joined #nim
11:12:25*Freneticks left #nim (#nim)
11:39:57*Skippy8 quit (Ping timeout: 260 seconds)
11:41:56*Skippy8 joined #nim
11:50:41*Skippy8 quit (Ping timeout: 250 seconds)
12:41:44*tokyovigilante quit (Ping timeout: 243 seconds)
12:42:42*xutaxkamay_ joined #nim
12:42:46*Lord_Nightmare2 joined #nim
12:43:00*xutaxkamay quit (Ping timeout: 245 seconds)
12:43:35*Lord_Nightmare quit (Ping timeout: 251 seconds)
12:43:43*xutaxkamay_ is now known as xutaxkamay
12:44:57*Lord_Nightmare2 is now known as Lord_Nightmare
12:52:08*Skippy8 joined #nim
13:12:20FromDiscord<ryzh.> well, ok, seems it's a [deprecated](https://discord.com/channels/371759389889003530/1414321156617535498/1462816881110028565) feature.
14:45:08*Skippy8 quit (Ping timeout: 268 seconds)
15:05:24FromDiscord<gesee37> @11clock I saw that in the past you wanted to have OOP in Nim. I just made this: https://github.com/Gesee-y/Nim-OOP↵↵It allow to have OOP like programming in Nim but in a fully static way
15:06:27FromDiscord<gesee37> It's probably the cleaniest code I ever wrote 🙂
15:32:42FromDiscord<11clock> In reply to @gesee37 "<@214055489057587211> I saw that": I have since changed my mind and have been learning data oriented programming.
15:32:55FromDiscord<11clock> Thanks though
15:33:41FromDiscord<11clock> Kept seeing big tech people talking about how bad OOP is so I am currently looking into why by doing data oriented programming myself.
15:34:12FromDiscord<11clock> Turned out much of my custom engine is already data oriented. The main challenge has been the game architecture itself.
15:39:24FromDiscord<gesee37> In reply to @11clock "I have since changed": Well it's also another way to structure an engine, even though I more a fan of data pipelines and frame graphs as they coordinate the frame while allowing both OOP and DOD to coexist
15:49:21FromDiscord<_timurski> In reply to @11clock "Kept seeing big tech": it's just about thinking "what are the actual ways to determine if code is good" and that is some sort of combination of runtime performance, compile time performance, code complexity, etc. then you just apply whatever makes the most sense
15:49:29FromDiscord<scoopahdoopah> we got oop at home
15:50:03FromDiscord<_timurski> compression oriented programming is a pretty interesting idea that i'm fond of that i think might be something LLMs can be pretty good at and be what allows them to write much better quality code on a larger scale
15:53:45FromDiscord<scoopahdoopah> the bad part of oop is just like behavior becoming tangled together so if you can avoid that you still want to be able to organize things as objects that communicate in some way
15:54:52FromDiscord<gesee37> In reply to @_timurski "it's just about thinking": A guy once told me that program can be all about the degree of materialization used in the program↵When expressivity and flexibility is the goal, we can keep a low degree of materialization (meaning less optimized for the material) while higher degree takes more and more the material into account while programming (which gives birth to DOD)
15:55:42FromDiscord<scoopahdoopah> the underlying data storage can still be huge tables
15:57:03FromDiscord<scoopahdoopah> and it should be cuz the underlying data storage is huge tables lmao
15:59:37FromDiscord<gesee37> In reply to @scoopahdoopah "the underlying data storage": Well technically memory is a huge table so we have been doing that since ages :p
16:00:57FromDiscord<scoopahdoopah> but something like java starts to get insane cuz everything is a tangled mess of classes and then you abstract something on top of that
16:01:09FromDiscord<scoopahdoopah> when there shouldn't be too much separation between the memory and your abstraction
16:01:49FromDiscord<scoopahdoopah> cuz it can keep going forever and people will do it
16:04:41FromDiscord<scoopahdoopah> then u run into some weird edge case that came from your huge tower of abstraction and ur like well I gotta work around that and make a new one
16:06:08FromDiscord<scoopahdoopah> and now the windows start menu is react native
16:14:06FromDiscord<gesee37> In reply to @scoopahdoopah "and now the windows": Huh ??
16:14:13*Skippy8 joined #nim
16:14:14FromDiscord<gesee37> Seriously ?
16:14:48*mahlon quit (Ping timeout: 251 seconds)
16:16:41FromDiscord<scoopahdoopah> https://news.ycombinator.com/item?id=44124688
16:16:50FromDiscord<scoopahdoopah> I guess it's the recommended section of the start menu
16:16:54FromDiscord<scoopahdoopah> but it's in there lol
16:21:52FromDiscord<scoopahdoopah> whenever hardware gets better they just use it for more ads and telemetry
16:23:32FromDiscord<scoopahdoopah> and implement them faster with react
16:27:40*Skippy8 quit (Ping timeout: 248 seconds)
16:32:41*beholders_eye quit (Ping timeout: 248 seconds)
16:38:16*Skippy8 joined #nim
16:48:05*mahlon joined #nim
16:52:02*zero`_ quit (Ping timeout: 260 seconds)
17:01:05*amadaluzia quit (Remote host closed the connection)
17:01:26*amadaluzia joined #nim
17:18:29*amadaluzia quit (Remote host closed the connection)
17:25:47*zero` joined #nim
17:43:17FromDiscord<kapendev> I prefer sane oriented programming.
17:43:51FromDiscord<kapendev> Just don't be dogmatic.
17:51:16FromDiscord<gesee37> In reply to @kapendev "I prefer sane oriented": SOD (Sanity Oriented Design) Vs DOD (Dogma Oriented Design)
17:51:58FromDiscord<gesee37> It's so hard to choose one
17:53:45FromDiscord<kapendev> Unironically true in a way. There are good ideas in the DOD btw.
17:55:23*beholders_eye joined #nim
18:14:43*Skippy8 quit (Ping timeout: 265 seconds)
18:19:42*Skippy8 joined #nim
18:24:19*Skippy8 quit (Ping timeout: 264 seconds)
18:38:58*Skippy8 joined #nim
18:43:43*Skippy8 quit (Ping timeout: 265 seconds)
18:55:37FromDiscord<krisp0> is there any reason behind why asyncdispatch doesnt have a builtin async lock / semaphore etc? did have a look at chronos though but seems odd to have asyncdispatch to not be as feature complete
18:56:15FromDiscord<krisp0> (edit) "complete" => "rich"
19:02:47FromDiscord<gesee37> In reply to @krisp0 "is there any reason": You should check the `locks` module
19:03:37FromDiscord<krisp0> In reply to @gesee37 "You should check the": thats for synchronous locks
19:04:54*xet7 quit (Ping timeout: 245 seconds)
19:06:19FromDiscord<gesee37> In reply to @krisp0 "thats for synchronous locks": Huh what is an async lock ? And what is the difference with synchronous lock ?
19:12:37FromDiscord<krisp0> In reply to @gesee37 "Huh what is an": its similar to synchronous locks but it works in asynchronous contexts. it doesnt block the main thread while waiting for the lock
19:13:12FromDiscord<krisp0> should behave the same as asyncio.Lock when you use in async context
19:15:45FromDiscord<gesee37> In reply to @krisp0 "its similar to synchronous": Oh I see, so when you trigger the lock, it pause the current task and switch to another one until the lock is available
19:16:10FromDiscord<nervecenter> In reply to @11clock "Kept seeing big tech": Use a functional/immutable language for a while and build a usable example project. Clojure, Haskell, F#, Elixir really anything that forces immutability and doesn't have escape hatches.
19:17:53FromDiscord<nervecenter> It's weird that imperative world has an obsession with coming up with a new name for everything, data-oriented programming is just a proceduralized version of the experession- and value-oriented norms of functional world.
19:18:31FromDiscord<nervecenter> When data is immutable and reference semantics are completely inaccessible, of COURSE you build your programs around data and transformation of that data.
19:19:07FromDiscord<nervecenter> Nothing new under the sun.
19:20:40FromDiscord<nervecenter> (Big tech world is obsessed with this style for the reasons I gave in my NimConf talk, it makes structuring programs for the future, with all its potential changes and refactors, much much easier. Basically, helps put a cap on tech debt.)
19:21:47FromDiscord<11clock> In reply to @nervecenter "Use a functional/immutable language": Mutability is required for coding a video game.
19:24:36FromDiscord<gesee37> In reply to @11clock "Mutability is required for": Technically mutability can be expressed as an immutable transformation so
19:26:07FromDiscord<gesee37> In reply to @nervecenter "It's weird that imperative": For the data oriented thing, in video games I think it's a bit more complicated.↵I would say that DOD is basically having an in memory database that we optimize for some sort of operations
19:26:43FromDiscord<gesee37> Access, Query, Processing, Etc.↵A whole different paradigm that pure functional or imperative
19:28:45FromDiscord<nervecenter> In reply to @11clock "Mutability is required for": Oh I didn't really look back at all that
19:29:29FromDiscord<nervecenter> It's technically not required but good luck preserving performance
19:30:00FromDiscord<nervecenter> No spatial locality at all
19:37:45FromDiscord<krisp0> In reply to @gesee37 "Oh I see, so": Yh
19:47:19FromDiscord<scoopahdoopah> elixir is cool cuz it's like a functional layer over a whole runtime that you can really treat as mutable objects
19:47:25FromDiscord<scoopahdoopah> u should minimize doing it but it's nice to have
19:49:12FromDiscord<scoopahdoopah> it's like everything every other tech stack has but you just control it in a functional style
19:53:59FromDiscord<scoopahdoopah> like u can simulate any paradigm with any other but it's just way easier in elixir cuz it's all like part of the beam
19:56:54FromDiscord<gesee37> In reply to @scoopahdoopah "elixir is cool cuz": Well I think more people should check this: https://github.com/hylo-lang/hylo
19:57:25FromDiscord<gesee37> It shows that we can keep a functional paradigm while still allowing mutation
19:57:33FromDiscord<gesee37> mutable value semantics
19:58:25FromDiscord<gesee37> Nim already does it but doesn't frame itself as it, which is a shame, really.↵Everybody just talk about ARC/ORC without mentionning this
19:59:11FromDiscord<gesee37> That's really why I was happy when Nerve did his talk as he was one of the first to finally explain it
20:01:12FromDiscord<gesee37> In reply to @scoopahdoopah "like u can simulate": I think that with functional programming and metaprogramming you can simulate anything 🙂
20:06:28FromDiscord<scoopahdoopah> https://klipy.com/gifs/big-brain-lateralus
20:06:55*Skippy8 joined #nim
20:08:02FromDiscord<scoopahdoopah> ur gonna have to use metaprogramming to imagine what my gif looks like
20:10:59*beholders_eye quit (Ping timeout: 258 seconds)
20:11:25*Skippy8 quit (Ping timeout: 248 seconds)
20:18:57FromDiscord<11clock> Looking at Hylo
20:19:20FromDiscord<11clock> sent a code paste, see https://paste.rs/j3nCj
20:19:56FromDiscord<11clock> You could've at least shortened it to "pub" if you are shortening "function" to "fun", what is this inconsistency
20:22:37FromDiscord<gesee37> In reply to @11clock "You could've at least": But it's not "fun" that way
20:24:03FromDiscord<11clock> Why not have more fun with it and allow flipping the keywords too
20:24:08FromDiscord<11clock> "fun pub"
20:24:21FromDiscord<11clock> https://klipy.com/gifs/cheers-beer-37
20:25:27FromDiscord<scoopahdoopah> I thought the was weird at first but I really appreciate not seeing pub spammed everywhere now
20:29:36FromDiscord<scoopahdoopah> when something is really commonly used I start to feel like there's no way I have to keep repeating this over and over
20:31:04FromDiscord<scoopahdoopah> it seems like a simple idea but it always happens
20:33:15*Skippy8 joined #nim
20:33:59FromDiscord<scoopahdoopah> like in Odin they want u to do the thing where you prefix everything and then the first parameters type is the prefix again that kills me
20:37:27*Skippy8 quit (Ping timeout: 244 seconds)
20:38:05*Skippy8 joined #nim
20:42:37*Skippy8 quit (Ping timeout: 265 seconds)
20:55:53FromDiscord<11clock> Odin is very much against implicit overloading. The guy who made it is C pilled.
20:56:25FromDiscord<11clock> His response to criticism on the whole prefix thing is that it's purely an aesthetic complaint and to get over it.
20:57:00FromDiscord<11clock> Odin markets itself as an alternative to C so it makes sense.
20:58:05FromDiscord<11clock> I think Odin is a really well made language but I'm not sure I want to keep using it. It claims that it tries to get out of your way so that you can code, but my issue has been that the lack of features is inherently getting in my way since I have to work around the limitations. The main one is lack of closures.
20:58:54FromDiscord<11clock> The way I do animation systems revolves completely around closures, and the alternatives are just really ugly.
20:59:45FromDiscord<11clock> Again, nothing really wrong with the language itself, it just expects me to code in a way that I don't really like.
20:59:57FromDiscord<11clock> (edit) "really" => "personally"
21:00:07FromDiscord<scoopahdoopah> the context thing makes closures slightly less annoying than C but I'd rather be able to just have a closure even with overhead
21:01:49FromDiscord<scoopahdoopah> like I can see that it's a closure and it has overhead don't worry bro lol
21:02:15FromDiscord<11clock> The other main issue I have is lack of custom defaults in structs. I actually discovered that most languages with structs don't support this. Only Nim and Jai seem to.
21:03:06FromDiscord<11clock> Needing to make a constructor method just to have defaults, when procedures themselves can have default values in its parameters, ugh
21:03:21FromDiscord<11clock> (edit) "its" => "their"
21:04:10FromDiscord<11clock> Currently still on the fence between Odin and Nim. I think that they are my best options, but with their own drawbacks.
21:05:34FromDiscord<11clock> Swift is also pretty great, being basically a better C#, but it also enables me to easily drift back into OOP when I am trying to unlearn it atm.
21:07:16FromDiscord<scoopahdoopah> apple lang
21:07:21FromDiscord<scoopahdoopah> that one lang they make iPhone UI with
21:09:21FromDiscord<11clock> My only two main complaints with Nim are that enums need to all be prepended with the "pure" pragma because the default behavior is dumb, and the lack of good LSP.
21:17:51FromDiscord<gesee37> In reply to @11clock "My only two main": What's the problem with the default enum behavior ?
21:18:23FromDiscord<gesee37> Asking so I can also complain about it
21:19:10FromDiscord<11clock> It pollutes the global namespace. Given that we have enum inference, it's unnecessary and can cause name conflicts.
21:20:42FromDiscord<11clock> But yeah, I am wondering if I should use Nim to learn data oriented programming instead. Odin enforces the mentality, but in Nim I can just ignore the existence of RootObj.
21:21:11FromDiscord<gesee37> sent a code paste, see https://paste.rs/xgZzN
21:22:12FromDiscord<gesee37> (edit) "https://paste.rs/1A28t" => "https://paste.rs/p1rCI"
21:22:49FromDiscord<gesee37> In reply to @11clock "But yeah, I am": You mean ECS ??
21:22:57FromDiscord<11clock> Not the same thing.
21:24:06FromDiscord<11clock> Data oriented programming is mainly just separating the ideas of data and logic. Nim is already basically this by default, but can mimic OOP via RootObj and method call syntax.
21:25:01FromDiscord<gesee37> Oh I see. Then I think Nim can do that pretty well.↵You just have to focus on using `object` and a little bit of `ref`
21:25:11FromDiscord<gesee37> Most people don't event use OOP
21:25:22FromDiscord<gesee37> (edit) "event" => "even"
21:25:42FromDiscord<gesee37> In reply to @11clock "Data oriented programming is": That's a perfect case for multiple dispatch
21:25:57FromDiscord<gesee37> Functions and objects aren't bounded together
21:25:57FromDiscord<scoopahdoopah> yeah it seems like the consensus is ref and inheritance is there for when it would really help and not all over the place
21:26:32*SchweinDeBurg quit (Quit: WeeChat 4.8.0-dev)
22:17:39*xet7 joined #nim
22:28:36FromDiscord<nervecenter> Specific tools for specific jobs that you opt to when necessary? Say it ain't so
22:28:51FromDiscord<nervecenter> Alternatively there's what you guys were discussing earlier, Dogma Oriented Programming? lol
22:29:00FromDiscord<nervecenter> (edit) "to" => "into"
22:33:29FromDiscord<declasy> Hi!
22:33:49FromDiscord<declasy> Is nim a complete language?
22:48:28FromDiscord<abdulrahman.103> In reply to @declasy "Is nim a complete": Yeah
22:48:57FromDiscord<exelotl> yes - although there is a version 3 in the works, Nim 2 is very usable for serious projects
22:48:58FromDiscord<declasy> In reply to @abdulrahman.103 "Yeah": Is there if statements?
22:49:01FromDiscord<declasy> Libs?
22:49:19FromDiscord<abdulrahman.103> In reply to @declasy "Is there if statements?": Yeah lol
22:49:29FromDiscord<abdulrahman.103> In reply to @declasy "Libs?": Yeah but it lacks most stuff
22:49:38FromDiscord<abdulrahman.103> Or it exists but outdated
22:50:08FromDiscord<abdulrahman.103> Its a complete language but trying to do anything big would be a pain because of the lack of libraries
22:50:35FromDiscord<abdulrahman.103> Unless you find a library or you dont use one
22:50:39FromDiscord<abdulrahman.103> For example
22:50:43FromDiscord<abdulrahman.103> I wanted to make a tui camera
22:50:57FromDiscord<declasy> In reply to @abdulrahman.103 "Yeah but it lacks": So why did you say yeah?
22:51:20FromDiscord<abdulrahman.103> The library of cameras i think its named opencl
22:51:37FromDiscord<abdulrahman.103> Has no modern bindings
22:51:43FromDiscord<abdulrahman.103> In reply to @declasy "So why did you": Because the language is complete
22:51:51FromDiscord<abdulrahman.103> The libraries are not
22:52:15FromDiscord<abdulrahman.103> If you want to code pure nim you can do everything
22:52:24FromDiscord<abdulrahman.103> If you want libraries its 50 50
22:53:16FromDiscord<abdulrahman.103> Thats the most honest opinion youll get i think this server might be biased and tell you that nim is the perfect language that has no flaws
22:54:36FromDiscord<_timurski> In reply to @abdulrahman.103 "Its a complete language": C bindings are extremely easy to write
22:54:53FromDiscord<abdulrahman.103> In reply to @_timurski "C bindings are extremely": Its that easy and nobody maintains a modern opencl binding
22:54:59FromDiscord<_timurski> you can just do it yourself
22:55:37FromDiscord<_timurski> llm can do basic stuff like bindings basically perfectly now, especially with Nim where verification is ultra simple (just look at generated C)
22:56:11FromDiscord<abdulrahman.103> Cant we make a tool that automates that?
22:56:13FromDiscord<_timurski> In reply to @abdulrahman.103 "Thats the most honest": i think this is oversimplifying a lot of members' views, it just happens to have a lot of things we like
22:56:17FromDiscord<_timurski> In reply to @abdulrahman.103 "Cant we make a": there are tools that automate that
22:56:40FromDiscord<_timurski> though they're not perfect some people have mentioned, but it still isn't really a problem
22:56:54FromDiscord<_timurski> macros is a failcase that people have mentioned
22:56:58FromDiscord<_timurski> but that's an issue in like
22:57:05FromDiscord<_timurski> every c interop
22:57:15FromDiscord<_timurski> but nim makes it easier with macros and templates
22:57:28FromDiscord<abdulrahman.103> Never used macros in nim
22:57:29FromDiscord<_timurski> i have extremely ergonomic clay bindings in my project
22:57:56FromDiscord<_timurski> In reply to @abdulrahman.103 "Never used macros in": they can be pretty useful for a bunch of stuff
22:58:31FromDiscord<abdulrahman.103> I think i havent discovered most of nims features but recreating my python app in nim with same ease and 1000x performance is impressive
22:59:29FromDiscord<abdulrahman.103> Thats probably an overstatement i never tested it
22:59:33FromDiscord<abdulrahman.103> Or measured t
22:59:38FromDiscord<abdulrahman.103> (edit) "t" => "it"
22:59:46FromDiscord<abdulrahman.103> But python is slow
22:59:50FromDiscord<abdulrahman.103> So its probably true
22:59:53FromDiscord<_timurski> and for the flaws you mentioned, i personally think Nim's multithreading is harder than it needs to be, especially gc stuff can be a pain sometimes, i prefer a freer approach, but it's also just an opinionated language
23:01:31FromDiscord<abdulrahman.103> In reply to @_timurski "and for the flaws": Have you tried the js nim output?
23:02:01FromDiscord<abdulrahman.103> I never used anythit except nim -compile
23:02:08FromDiscord<abdulrahman.103> (edit) "anythit" => "anything"
23:06:11*SchweinDeBurg joined #nim
23:23:49FromDiscord<DetermiedNim1> i've used nim js
23:37:42FromDiscord<11clock> Urgh, Nim or Odin, still don't know which to pick for game dev.
23:38:48*SchweinDeBurg quit (Remote host closed the connection)
23:39:07*SchweinDeBurg joined #nim
23:39:13FromDiscord<11clock> More features and less technical overhead vs pragmatic design and better tooling...
23:45:12*rockcavera joined #nim