<< 11-11-2020 >>

00:00:39FromDiscord<shadow.> i am moving to discord lol
00:00:43*shadowninja55 quit (Quit: Connection closed)
00:01:00FromDiscord<ElegantBeef> Fuck that shadowninja55 guy amirite?
00:01:03FromGitter<gogolxdong> ^[^#].* in vscode got correct result , but using re/rex findAll doesn't find anything. anything missing?
00:01:06FromDiscord<shadow.> dude yeah he sucks
00:01:11FromDiscord<shadow.> idk who tf he thought he was
00:02:35FromDiscord<ElegantBeef> If vscode doesnt using pcre regex it isnt a great place to test
00:02:55FromDiscord<Rika> i'm considering making a pure nim ver. of homebridge because i have nothing to do
00:03:14FromDiscord<ElegantBeef> What's it
00:03:25FromDiscord<ElegantBeef> Is it IOT shit?
00:03:31FromDiscord<ElegantBeef> Do i have to scream?!
00:03:41FromDiscord<Rika> smh
00:04:09FromDiscord<ElegantBeef> No, no go do it, i'll just be in the corner screaming
00:04:28FromDiscord<shadow.> beautiful code
00:04:28FromDiscord<shadow.> sent a code paste, see https://play.nim-lang.org/#ix=2DIn
00:04:29FromDiscord<shadow.> LMAO
00:04:45FromDiscord<Rika> > No, no go do it, i'll just be in the corner screamingโ†ตill make sure you'll scream louder because of the code
00:04:54FromDiscord<shadow.> nobody can beat how bad my code is
00:05:04FromDiscord<ElegantBeef> It's fine, minus the hardcoded stuff
00:05:20FromDiscord<ElegantBeef> make a bitmap object and have a serialize proc, god damn it
00:05:24FromDiscord<Rika> yummy yummy magic numbers
00:05:33FromDiscord<shadow.> hmmm
00:05:41FromDiscord<shadow.> no
00:05:45FromDiscord<shadow.> i think not
00:05:53FromDiscord<ElegantBeef> Rika, my development today was making macros for embedding nimscript in moe, so i'm already screaming
00:06:00FromDiscord<Rika> good
00:06:07FromDiscord<shadow.> its better than me having to make the nim file.write() function in c++
00:06:10FromDiscord<shadow.> LMAO
00:06:11FromDiscord<shadow.> sent a code paste, see https://play.nim-lang.org/#ix=2DIo
00:06:23FromDiscord<Rika> ugh c++
00:06:25FromDiscord<shadow.> disgusting
00:06:38FromDiscord<shadow.> /s
00:06:51FromDiscord<Rika> /?
00:06:53FromDiscord<shadow.> idk i prefer nim now honestly bc i use to use c++ for speed and distribution but nim does both of those things fine
00:06:54FromDiscord<Rika> /s?
00:06:59FromDiscord<Rika> no way youre sarcastic
00:07:11FromDiscord<shadow.> i mean there are some nice parts of c++
00:07:18FromDiscord<ElegantBeef> A lot of people like the readabillity of Nim, so it's not a difference of opinion
00:07:22FromDiscord<Rika> eeh...
00:07:25FromDiscord<shadow.> fair
00:07:27FromDiscord<shadow.> yeah nim is pretty nice
00:07:39FromDiscord<shadow.> it's basically python's syntax but (imo) more readable bc of function typing
00:07:43FromDiscord<shadow.> (edit) "function" => "proc"
00:07:48FromDiscord<Rika> python has typing too
00:07:51FromDiscord<Rika> but only optional lol
00:07:56FromDiscord<Rika> so basically no one uses it
00:07:56FromDiscord<shadow.> not enforced ye
00:08:01FromDiscord<shadow.> so gl finding anyone that uses it lmaoo
00:08:03*leorize quit (Ping timeout: 240 seconds)
00:08:05FromDiscord<Rika> i did
00:08:13FromDiscord<Rika> but no one else really does lmao
00:08:18FromDiscord<ElegantBeef> Speaking of, gdscript is wanting to add annotations and the like, so they're... really just making an interpreted nim
00:08:20FromDiscord<Rika> ig those at google maybe
00:08:31FromDiscord<ElegantBeef> They also added optional typing
00:08:44FromDiscord<Rika> all in or nothing smh
00:08:48FromDiscord<Rika> optional is not an option!
00:08:52FromDiscord<shadow.> i think im a bit stupid but what is nimscript?
00:08:54FromDiscord<shadow.> LMAO
00:08:54FromDiscord<ElegantBeef> I agree
00:08:59FromDiscord<shadow.> im very new to nim if you cant already tell
00:09:02FromDiscord<Rika> nimscript is nim but a script
00:09:03FromDiscord<ElegantBeef> Nimscript is the interpreted version of nim
00:09:07FromDiscord<shadow.> interpreted?
00:09:12FromDiscord<shadow.> how does it compare to compiled nim
00:09:13FromDiscord<ElegantBeef> Nim has a VM which can run code that's not compiled
00:09:14FromDiscord<Rika> yes nim has its own VM
00:09:22FromDiscord<ElegantBeef> Actually how it compiles code
00:09:24FromDiscord<Rika> its whats used when you use a macro
00:09:34FromDiscord<shadow.> can you use nimscript in a shell type environment?
00:09:36FromGitter<gogolxdong> remembered vscodes uses PCRE, has it been upgraded to PCRE2?
00:09:36FromDiscord<ElegantBeef> Yes
00:09:39FromDiscord<shadow.> like you can with py, ruby, julia, node etc
00:09:42FromDiscord<shadow.> damn thats cool
00:09:43FromDiscord<nikki> the compile-time logic you can write in nim itself (nim's version of constexpr) needs to be eval'd somehow in the compiler. that's the nim vm
00:09:44FromDiscord<Rika> pcre has a 2?
00:09:57*leorize joined #nim
00:09:59FromDiscord<Rika> `nim e` is how to eval a nimscript
00:10:04FromDiscord<nikki> or at least, that's where it came from
00:10:05FromDiscord<Rika> on the cli i mean
00:10:05FromDiscord<ElegantBeef> I've made a relatively easy to use interop so you can use nimscript to control nim compiled code
00:10:15FromDiscord<ElegantBeef> And it's glorious! ๐Ÿ˜›
00:10:15FromDiscord<nikki> but could go anywhere, as beef is exploring ๐Ÿ˜‰
00:10:16FromDiscord<shadow.> do streams close once out of scope or do i have to manually close them before proc return
00:10:32FromDiscord<nikki> arc makes it deterministic
00:10:34FromDiscord<Rika> manually for now afaik?, in the future automatically
00:10:39FromDiscord<shadow.> ah ok
00:10:45FromDiscord<nikki> the destruction at least. i forget if they close on destruct
00:10:49FromDiscord<nikki> are you a c++head?
00:10:53FromDiscord<shadow.> python / c++
00:10:56FromDiscord<shadow.> ik thats an oxymoron
00:10:56FromDiscord<shadow.> LMAO
00:11:09FromDiscord<shadow.> python is what i started with, c++ is what ive come to enjoy
00:11:14FromDiscord<nikki> i dove into the nuskool c++ stuff for a lil recently
00:11:17FromDiscord<ElegantBeef> I overly like how silly this commit was
00:11:20FromDiscord<nikki> there's a lot of overlap with nim
00:11:21FromDiscord<ElegantBeef> <https://github.com/beef331/moe/commit/c93c5af5b8e93dc193f130fd005078c32b9309f0>
00:11:23FromDiscord<shadow.> ye
00:11:28FromDiscord<nikki> esp w/ move semantics and arc
00:11:33FromDiscord<Rika> i started with python and moved on to nim
00:11:34FromDiscord<ElegantBeef> Replacing 400 lines of code with like 10
00:11:38FromDiscord<nikki> i think a big deal is that you can also just metaprogram in the same lang
00:11:52FromDiscord<nikki> also the value type ness by default is a huge overlap
00:11:54FromDiscord<shadow.> nim is cool i just wish it had a sponsor / financial backing so it could grow more
00:12:00FromDiscord<nikki> eg. that's a departure from java and python
00:12:00FromDiscord<Rika> > Replacing 400 lines of code with like 10โ†ตdoesnt sound that silly imo
00:12:11FromDiscord<nikki> @shadow. hmm it goes both ways
00:12:18FromDiscord<shadow.> i mean with more packages and support i feel like nim could easily grow past python
00:12:19FromDiscord<nikki> i like that it's growing on its own
00:12:23FromDiscord<shadow.> just bc its as simple but much faster
00:12:30FromDiscord<shadow.> and has advantages that come w compiled languages
00:12:31FromDiscord<shadow.> and static typing
00:12:33FromDiscord<ElegantBeef> Well it's silly in that it's a relatively simple code block that replaces a shit ton of copy pasta, but i was just too tired at the time of originally doing it to use it
00:12:35FromDiscord<shadow.> but thats up to opinion i suppose
00:12:46FromDiscord<nikki> well that also make evolution hardse
00:12:49FromDiscord<nikki> harder
00:12:51FromDiscord<shadow.> also is profanity allowed, bc if so id like to introduce an amazing github license
00:13:02FromDiscord<ElegantBeef> Sure as fucking shit it is
00:13:02FromDiscord<Rika> there was this f# dude who hated the type annotations
00:13:08FromDiscord<shadow.> sent a long message, see http://ix.io/2DIq
00:13:10FromDiscord<shadow.> โค๏ธ
00:13:10FromDiscord<Rika> ah this license
00:13:11FromDiscord<ElegantBeef> Yea we've all seen it
00:13:12FromDiscord<shadow.> yes
00:13:15FromDiscord<Rika> i never use it
00:13:16FromDiscord<shadow.> damn
00:13:19FromDiscord<shadow.> mit?
00:13:19FromDiscord<ElegantBeef> I just use MIT
00:13:21FromDiscord<shadow.> rip
00:13:27FromDiscord<Rika> unlicense sometimes
00:13:34FromDiscord<ElegantBeef> Attribution is all i ask for
00:13:34FromDiscord<nikki> when do licenses apply
00:13:45FromDiscord<nikki> it just depends on the interop with license at site of use right
00:13:46FromDiscord<Rika> its on the license usually
00:14:02FromDiscord<ElegantBeef> Yea fully depends on the license
00:14:05FromDiscord<shadow.> is there any good way to iterate a seq backwards
00:14:10FromDiscord<shadow.> or should i just use a countdown index
00:14:22FromDiscord<nikki> countdown is the good way
00:14:25FromDiscord<shadow.> f
00:14:32FromDiscord<shadow.> i mean i could make a reverse iterator but eh
00:14:38FromDiscord<nikki> personal opinion stuff tho
00:14:42FromDiscord<Rika> https://nim-lang.org/docs/algorithm.html#reverse%2CopenArray%5BT%5D ?
00:14:49FromDiscord<nikki> cuz you can build any sort of abstraction and make it look different
00:14:57FromDiscord<shadow.> oh algorithm
00:14:58FromDiscord<ElegantBeef> You could use sequtils and algorithim to do โ†ต`for x in toSeq(theSeq.items).reverse` ๐Ÿ˜„
00:15:15FromDiscord<nikki> if you're down to copy the whole thing
00:15:17FromDiscord<Rika> inefficient w
00:15:25FromDiscord<ElegantBeef> Well of course
00:15:30FromDiscord<shadow.> yeah id like to avoid copying
00:15:32FromDiscord<ElegantBeef> Just make the reverseItems iterator
00:15:33FromDiscord<shadow.> i just wanted an iterator lol
00:15:34FromDiscord<Rika> also you use reversed for that and not reverse
00:15:49FromDiscord<nikki> so yeah you can make your own abstraction, as indicates
00:15:50FromDiscord<shadow.> something like c++'s
00:15:53FromDiscord<nikki> (edit) "indicates" => "indicated"
00:15:55FromDiscord<shadow.> sent a code paste, see https://play.nim-lang.org/#ix=2DIr
00:16:00FromDiscord<shadow.> lol
00:16:11FromDiscord<ElegantBeef> Like i said i often suggest usable but silly implementations
00:16:12FromDiscord<shadow.> to be fair c++ begin and end iterators kinda suck so i dont miss them
00:16:13FromDiscord<nikki> yeah this is where the opinion comes in. to me i just want to see the numeric loop at this point
00:16:19FromDiscord<shadow.> rip i prefer range based loops
00:16:23FromDiscord<shadow.> or idk what the term is
00:16:24FromDiscord<shadow.> lmao
00:16:33FromDiscord<nikki> ime composability of stream abstractions makes code hardwer to read for me
00:16:36FromDiscord<shadow.> rip
00:17:06FromDiscord<Rika> idk ive liked how nim does for loops
00:17:07FromDiscord<shadow.> ig reversed() works for my purposes lol
00:17:10FromDiscord<shadow.> yes they're cool
00:17:12FromDiscord<shadow.> similar to rust lol
00:17:18FromDiscord<ElegantBeef> Iterators for loops is just nice
00:17:20FromDiscord<Rika> wtf
00:17:21FromDiscord<Rika> dude
00:17:25FromDiscord<shadow.> what?
00:17:26FromDiscord<Rika> dont say the forbidden words
00:17:30FromDiscord<shadow.> rust?
00:17:30FromDiscord<Rika> rt
00:17:32FromDiscord<shadow.> go?
00:17:35FromDiscord<ElegantBeef> V
00:17:38FromDiscord<shadow.> LOL
00:17:53FromDiscord<shadow.> is memory safety not allowed
00:17:55FromDiscord<shadow.> smh
00:18:09FromDiscord<ElegantBeef> Nah we got `lent` and `sink` so we're rust now
00:18:13FromDiscord<shadow.> LMAO
00:18:16FromDiscord<nikki> tfw rust means mem safety isn't allowed anywhere else
00:18:18FromDiscord<ElegantBeef> Where is our github issue "Are we rust yet?"
00:18:25FromDiscord<shadow.> time to go buy ownership of my variable at the store
00:18:25FromDiscord<Rika> nah its just tiring to keep on hearing aoout how rt is so much better omg!!!
00:18:34FromDiscord<shadow.> lol im not a rust fan
00:18:38FromDiscord<Rika> i know
00:18:38FromDiscord<shadow.> i like it but for me its too strict
00:18:42FromDiscord<Rika> dont worry
00:18:44FromDiscord<nikki> yeah ae can tell
00:18:50FromDiscord<shadow.> f
00:19:05FromDiscord<Rika> are you saying it would be better if we couldnt tell?
00:19:12FromDiscord<nikki> yo whatcha tryna code in nim
00:19:16FromDiscord<ElegantBeef> If you're here instead of inside rust's server it's pretty clear you arent that interested in rust ๐Ÿ˜›
00:19:20FromDiscord<shadow.> LMAO
00:19:23FromDiscord<nikki> game stuff, web stuff, net stuff, ...
00:19:28FromDiscord<shadow.> who me?
00:19:33FromDiscord<ElegantBeef> No the door
00:19:39FromDiscord<Rika> beef how do YOU know hes not in the rust server
00:19:41FromDiscord<shadow.> i wanna try a discord bot and maybe a website backend
00:19:48FromDiscord<Rika> are YOU in the rust server HMMMMMMMMMMMMMMMM
00:19:48FromDiscord<ElegantBeef> Are they presently talking there rika?
00:19:51FromDiscord<shadow.> lmfao
00:19:53FromDiscord<shadow.> HMMMMM
00:19:55FromDiscord<ElegantBeef> Nah i have a spy in here from rust
00:19:56FromDiscord<shadow.> dont say the r word
00:20:01FromDiscord<shadow.> ugh
00:20:03FromDiscord<Rika> sorry, rt
00:20:08FromDiscord<nikki> import rst
00:20:13FromDiscord<nikki> already exists in nim
00:20:14FromDiscord<nikki> next
00:20:14FromDiscord<shadow.> also how would you guys simplify this if else lmoa
00:20:20FromDiscord<shadow.> sent a code paste, see https://play.nim-lang.org/#ix=2DIs
00:20:21FromDiscord<Rika> christ
00:20:23FromDiscord<ElegantBeef> There is a rellfy feller in here who doesnt like Nim, but is in here for whatever reason
00:20:24FromDiscord<Rika> what the hell
00:20:24FromDiscord<shadow.> i dont think having an if statement checked every iteratio nof the loop
00:20:27FromDiscord<shadow.> is a good idea
00:20:32FromDiscord<shadow.> (edit) "iteratio nof" => "iteration of"
00:20:39FromDiscord<shadow.> but idk how else to cut out the padding thing
00:20:45FromDiscord<shadow.> i mean what happens if you try to write an empty list?
00:20:46FromDiscord<shadow.> lmfao
00:20:58FromDiscord<Rika> cant you put the reversed for loop outside the condition
00:21:02FromDiscord<Rika> and then remove the else
00:21:09FromDiscord<Rika> oh
00:21:11FromDiscord<Rika> misread
00:21:15FromDiscord<shadow.> well then wouldnt i have to put an if over every iteration of the padWidth loop
00:21:17FromDiscord<Rika> damn it its like 9 am
00:21:21FromDiscord<shadow.> which is (inefficient?)
00:21:32FromDiscord<Rika> im not supposed to be reading code this early in the morning
00:21:35FromDiscord<shadow.> yikes
00:21:51FromDiscord<Rika> eh
00:21:55FromDiscord<Rika> this looks good enough to me
00:21:56FromDiscord<nikki> make padWidth zero
00:21:58FromDiscord<nikki> for the else branch
00:21:59FromDiscord<Rika> also smh 4 width index
00:22:01FromDiscord<Rika> i mean
00:22:03FromDiscord<Rika> indent
00:22:03FromDiscord<nikki> and just have the same branch
00:22:16FromDiscord<nikki> so eg if padWidt > 4: padWidth = 0
00:22:27FromDiscord<shadow.> oh shit yeah you're right
00:22:30FromDiscord<shadow.> bc im using a for loop
00:22:31FromDiscord<shadow.> ty
00:22:43FromDiscord<shadow.> oh right what happens when you do for i in 1..1 lmao
00:22:49FromDiscord<nikki> try it
00:22:53FromDiscord<shadow.> smart
00:22:56FromDiscord<Rika> nothing
00:22:56FromDiscord<shadow.> :BigBrain:
00:22:59FromDiscord<Rika> i is 1
00:23:03FromDiscord<Rika> then no loop happens
00:23:07FromDiscord<nikki> i think 1 iter
00:23:10FromDiscord<Rika> i mean
00:23:11FromDiscord<nikki> cuz not 1..<1
00:23:12FromDiscord<ElegantBeef> 1..1 is inclusive
00:23:12FromDiscord<Rika> no looping
00:23:18FromDiscord<ElegantBeef> so it does it once
00:23:20FromDiscord<nikki> u get 1 iter with 1
00:23:20FromDiscord<shadow.> oh ok
00:23:24FromDiscord<Rika> it runs but it doesnt loop
00:23:27FromDiscord<Rika> :facepalm1:
00:23:33FromDiscord<shadow.> fr?
00:23:37FromDiscord<shadow.> that doesnt seem right
00:23:41FromDiscord<nikki> thats why try it
00:23:43FromDiscord<ElegantBeef> it's inclusive so it runs once
00:23:45FromDiscord<shadow.> alr lemme try it
00:23:46FromDiscord<Rika> !eval for i in 1..1: echo i
00:23:48FromDiscord<nikki> this is one of those things the compiler answers better
00:23:49NimBot1
00:23:55FromDiscord<nikki> jep
00:23:59FromDiscord<shadow.> f
00:24:05FromDiscord<Rika> i dont see how this is wrong
00:24:05FromDiscord<shadow.> i did not know there was an eval bot
00:24:07FromDiscord<shadow.> does that use nimscript?
00:24:07FromDiscord<nikki> nim is good at responding
00:24:10FromDiscord<Rika> no
00:24:11FromDiscord<nikki> to ur questions imo
00:24:15FromDiscord<nikki> when exploring
00:24:18FromDiscord<shadow.> oh true
00:24:23FromDiscord<Rika> it compiles the code
00:24:24FromDiscord<ElegantBeef> It's just easier to ask nim then asking us typically
00:24:35FromDiscord<shadow.> !eval cast[array[3, byte]](0)
00:24:37NimBotCompile failed: /usercode/in.nim(1, 1) Error: expression 'cast[array[3, byte]](0)' is of type 'array[0..2, byte]' and has to be used (or discarded)
00:24:41FromDiscord<Rika> you have to echo it
00:24:42FromDiscord<Rika> lol
00:24:42FromDiscord<ElegantBeef> Got the evalbot, the playground, inim, your compiler
00:24:45FromDiscord<shadow.> f
00:24:49FromDiscord<shadow.> !eval echo cast[array[3, byte]](0)
00:24:49FromDiscord<ElegantBeef> Got many way to answer
00:24:51NimBot[0, 0, 0]
00:24:55FromDiscord<shadow.> oh smart
00:24:58FromDiscord<shadow.> ty
00:25:01FromDiscord<shadow.> i didnt know it existed lmao
00:25:07FromDiscord<shadow.> ( the bot )
00:25:09mipriwhat you want to do is cast a ptr int to a ptr array[4, byte], and then move those bytes to fit into your 3-byte array
00:25:49FromDiscord<Rika> !eval echo cast[array[3, byte]](12)
00:25:50FromDiscord<shadow.> wait i solved it dw i was just testing the bot lol
00:25:51NimBot[12, 0, 0]
00:25:59FromDiscord<nikki> gotta afk this was fun
00:26:19FromDiscord<shadow.> time to go post my amazing bitmap library def not hardcoded ๐Ÿšช๐Ÿƒโ€โ™€๏ธ
00:29:03*leorize quit (Ping timeout: 240 seconds)
00:29:55miprihttps://play.nim-lang.org/#ix=2DIv
00:30:56FromDiscord<shadow.> whats that for
00:31:08FromDiscord<shadow.> lol
00:31:13FromDiscord<ElegantBeef> a better way to get the int24
00:31:16FromDiscord<shadow.> ahh smart
00:31:27FromDiscord<shadow.> i just did a single cast lol
00:31:33FromDiscord<shadow.> prolly shoulda put more effort into it but
00:31:38FromDiscord<shadow.> im too lazy :))
00:32:13FromDiscord<shadow.> im glad i found this server bc there isnt that much on nim online at least for certain aspects
00:32:16FromDiscord<shadow.> and i havent met many ppl that use it
00:32:22FromDiscord<shadow.> but its cool to talk w other ppl that like it lol
00:32:26FromDiscord<ElegantBeef> "many" is an understatmenet
00:32:27FromDiscord<shadow.> bc i find it very unique and east to use
00:32:37FromDiscord<shadow.> yeahh
00:32:42FromDiscord<ElegantBeef> It'
00:32:45FromDiscord<shadow.> im trying to bug all my friends to try it lmaoo
00:32:49FromDiscord<shadow.> (edit) "east" => "easy"
00:32:54FromDiscord<ElegantBeef> (edit) "It'" => "It's an obscure langauage so it's userbase is like -10 sadly"
00:33:06FromDiscord<ElegantBeef> As i have done, actually got my robotic friends interested in it
00:33:29FromDiscord<shadow.> idk for me it was interesting bc it was super easy to program in but it benchmarked at the same level as c++ and rt
00:33:42FromDiscord<ElegantBeef> Yes i have friends that are robots, i'm not the most friendly person ๐Ÿ˜„
00:33:55FromDiscord<shadow.> and my main complaints of compiled statically-typed languages is readability and simplicity lol
00:33:57FromDiscord<shadow.> rip asf
00:34:38FromDiscord<ElegantBeef> I mean C# doesnt really suffer from readablillity, but once you get to system programming languages such as Rust/C++ it certainly gets annoying to read
00:34:46FromDiscord<shadow.> well yeah c# isnt that bad
00:35:10FromDiscord<notchris> hey all im using a nim wrapper for the raylib library, for ui. i can get it to work and i was able to build the dylib (since im on osx)
00:35:23FromDiscord<notchris> but im trying to build the raygui extension https://github.com/raysan5/raygui
00:35:29FromDiscord<notchris> and i cant seem to figure out how to build the dylib
00:35:32FromDiscord<notchris> or if thats possible?
00:35:34FromDiscord<ElegantBeef> I laugh at Rt's `let mut` as it just seems overly redundant imo ๐Ÿ˜„
00:35:53FromDiscord<shadow.> lmfao fax
00:36:03FromDiscord<shadow.> immutable as default is kinda weird imo
00:36:08FromDiscord<shadow.> i like how nim does it with `let`
00:36:19FromDiscord<Rika> im fine with immutable as default
00:36:26FromDiscord<shadow.> `let` is honestly a very cool thing i havent seen much lmao
00:36:27FromDiscord<shadow.> processed immutables
00:36:29FromDiscord<shadow.> instead of just constants
00:36:32FromDiscord<Rika> though nim doesnt technically default to it for variables at lesat
00:36:35FromDiscord<ElegantBeef> well as am i, but just use `let` and `mut`, cmon it does the same
00:36:35*leorize joined #nim
00:36:40FromDiscord<shadow.> ye
00:36:50FromDiscord<notchris> I tried to compile it with make, but im new to compilation sort of
00:37:16FromDiscord<ElegantBeef> Is there a flag or something to say you want to build raylib with the gui support?
00:37:43FromDiscord<notchris> Well there is a cask that seems to be building it with params, but i actually could find if with GUI was one of them
00:37:54FromDiscord<notchris> i went through its build steps
00:38:14FromDiscord<notchris> https://github.com/Homebrew/homebrew-core/blob/master/Formula/raylib.rb
00:38:28FromDiscord<notchris> (edit) "Well there is a cask that seems to be building it with params, but i actually could ... find" added "not"
00:39:30FromDiscord<ElegantBeef> did you look at the examples make file?
00:41:09FromDiscord<notchris> @ElegantBeef yes but i cant find any reference https://github.com/raysan5/raylib/blob/master/examples/Makefile
00:41:32FromDiscord<ElegantBeef> Yea i'm uncertain how to build it, so... have fun ๐Ÿ˜„
00:41:51FromDiscord<notchris> Haha, oh jeez, ill do my best ๐Ÿ™‚
00:45:13FromDiscord<shadow.> ripp
00:49:45FromDiscord<shadow.> whats the best channel to use the bot in lol
00:49:48FromDiscord<shadow.> is there a testing channel?
00:50:25FromDiscord<shadow.> !eval echo cast[array[3, byte]](0xffffff)
00:50:28NimBot[255, 255, 255]
00:50:35FromDiscord<shadow.> damn that is quite cool
00:50:53FromDiscord<shadow.> !eval echo cast[array[3, byte]](0x00aaff)
00:50:57NimBot[255, 170, 0]
00:51:04FromDiscord<shadow.> ahh
00:57:36*Tanger quit (Quit: Leaving)
01:01:24FromDiscord<nikki> @notchris i may be able to help you with this one of these days
01:01:50FromDiscord<notchris> ooo
01:01:54FromDiscord<notchris> TY @nikki
01:13:43*leorize quit (Ping timeout: 240 seconds)
01:16:00*leorize joined #nim
01:25:23FromDiscord<shadow.> can you eval multiple lines with the bot?
01:25:35FromDiscord<shadow.> !eval var x = 5โ†ตecho x
01:25:37NimBotCompile failed: /usercode/in.nim(1, 10) Error: invalid token: no whitespace between number and identifier
01:25:44FromDiscord<shadow.> oop
01:26:11FromDiscord<ElegantBeef> !eval var x = 5; echo x
01:26:14NimBot5
01:27:55FromDiscord<shadow.> ah smart
01:29:19FromDiscord<TheRealBob> !eval var x = 5+1; echo x
01:29:22NimBot6
01:29:27FromDiscord<shadow.> gamer
01:31:13FromDiscord<ElegantBeef> Glad you didnt trust my eval enough ๐Ÿ˜„
01:31:53FromDiscord<shadow.> wait what
01:31:54FromDiscord<shadow.> im confused
01:32:53FromDiscord<shadow.> did you make it?
01:32:55FromDiscord<ElegantBeef> It's ok, you'll figure it out eventually
01:32:57FromDiscord<ElegantBeef> No
01:32:59FromDiscord<shadow.> lmmao
01:33:00FromDiscord<shadow.> OH
01:33:02FromDiscord<shadow.> i see
01:33:04FromDiscord<TheRealBob> you cant test the bot on the test channel lol
01:33:05FromDiscord<shadow.> rip
01:33:08FromDiscord<shadow.> here it is then
01:33:32FromDiscord<shadow.> !eval import strformat; echo &"I have {55} lines of code."
01:33:35NimBotI have 55 lines of code.
01:33:39FromDiscord<shadow.> spicy
01:37:26FromDiscord<shadow.> @ElegantBeef where can i find info about setting up that nimscript shell thing?
01:37:28FromDiscord<shadow.> sounds interesting
01:37:36FromDiscord<shadow.> or any type of environment like that rly
01:37:43FromDiscord<TheRealBob> yes
01:37:54FromDiscord<ElegantBeef> https://nim-lang.org/docs/nimscript.html
01:38:08FromDiscord<ElegantBeef> https://nim-lang.org/docs/nims.html
01:39:18FromDiscord<ElegantBeef> You cannot use it as a shell, just like a bash repalacement
01:39:49FromDiscord<TheRealBob> ah ok
01:41:05FromDiscord<shadow.> https://github.com/inim-repl/INim
01:41:05FromDiscord<shadow.> interesting
01:48:50*Tanger joined #nim
01:53:08*Jesin quit (Quit: Leaving)
02:07:54*Jesin joined #nim
02:19:39*apahl quit (Ping timeout: 244 seconds)
02:20:41*abm quit (Read error: Connection reset by peer)
02:21:59*apahl joined #nim
02:26:28*cgfuh quit (Quit: WeeChat 2.9)
02:29:09FromDiscord<shadow.> time to make a nim interpreter in rt
02:29:15FromDiscord<shadow.> the most illegal action of all
02:36:50FromDiscord<Rika> how dare you
02:41:50*rockcavera quit (Ping timeout: 272 seconds)
02:44:41FromDiscord<shadow.> lmfao
02:44:51FromDiscord<shadow.> can you do the countup with step in the .. form?
02:44:55FromDiscord<shadow.> or is there no shortening for that
02:45:58FromDiscord<shadow.> (edit) ".." => "default range iterable"
02:47:19FromDiscord<Rika> in the what
02:47:25FromDiscord<Rika> `..`? none
02:47:31FromDiscord<Rika> `countup`? has
02:48:01*Lockses joined #nim
02:48:13*brainproxy quit (Ping timeout: 264 seconds)
02:49:13LocksesAre there any resources on writing locks? I want to make a lock so that I can do avoid hitting rate limits for certain servers I need to talk to, so I basically need a lock that includes some sort of built in timer.
02:51:19FromDiscord<Rika> are you using multithreading
02:55:02FromDiscord<shadow.> nop
02:55:09FromDiscord<shadow.> oh not me LOL
02:55:21FromDiscord<shadow.> i was like why is multithreading relevant to a for loop step
02:56:05LocksesI'd like to be able to use multithreading in the future, right now I'm just going to try using async.
02:57:24*brainproxy joined #nim
03:00:23*mmohammadi9812 joined #nim
03:02:21FromDiscord<Rika> you can use regular data structures for async, but for multithreading i dont think there is any such datatype
03:02:40FromDiscord<Rika> and any solution that ive thought of so far are prone to race conditions
03:03:05FromDiscord<Rika> i dont see why you need to multithread this though
03:03:11FromDiscord<Rika> since this is io bound and not cpu bound
03:06:56*Lockses quit (Remote host closed the connection)
03:13:22FromGitter<gogolxdong> Google developed the distributed compiler called Goma. Googlers and contributors who have tryjob access could use Goma. โŽ โŽ If you are not a Googler and would like to use Goma sign up.
03:13:40FromGitter<gogolxdong> What's a distributed compiler like?
03:39:05*Jesin quit (Ping timeout: 240 seconds)
04:01:50*muffindrake quit (Ping timeout: 264 seconds)
04:03:55*muffindrake joined #nim
04:06:02*supakeen quit (Quit: WeeChat 2.9)
04:06:02*vicfred quit (Quit: Leaving)
04:06:36*supakeen joined #nim
04:11:53*a_chou joined #nim
04:34:13*a_chou quit (Remote host closed the connection)
04:34:36*bacterio joined #nim
04:34:36*bacterio quit (Changing host)
04:34:36*bacterio joined #nim
04:34:38*a_chou joined #nim
04:37:12*a_chou quit (Remote host closed the connection)
04:46:14bungcompile code on machines through network
04:48:30*brainproxy quit (Ping timeout: 272 seconds)
04:54:03*leorize quit (Ping timeout: 240 seconds)
04:56:09*leorize joined #nim
05:17:14*jmiven joined #nim
05:36:16*Jesin joined #nim
05:55:51*narimiran joined #nim
06:23:48*habamax joined #nim
06:31:32*apahl quit (Remote host closed the connection)
06:31:55*apahl joined #nim
06:39:49*waleee-cl quit (Quit: Connection closed for inactivity)
06:53:31*solitudesf joined #nim
07:19:34*brainproxy joined #nim
07:24:55*brainproxy quit (Ping timeout: 246 seconds)
07:25:38*max_ joined #nim
07:26:56*max_ is now known as quassel909
07:27:09*quassel909 quit (Client Quit)
07:27:37FromDiscord<levovix> how to check if type has trivial copy hook?
07:31:23*brainproxy joined #nim
07:35:48*brainproxy quit (Ping timeout: 258 seconds)
07:36:43*PMunch joined #nim
07:53:05*max_ joined #nim
07:58:48FromGitter<TheEngineersCorner> Hi, is there a straight forward guide to getting nimgl working? I am running into the same problems discussed earlier here. (fresh install of ubuntu 20.4) โŽ gcc: error: private/glfw/src/vulkan.c: No such file or directory
08:07:35*brainproxy joined #nim
08:08:16PMunch@TheEngineersCorner, it seems like you have not initialised Git submodules
08:08:44PMunchHow did you install nimgl?
08:08:55PMunchOr did you simply clone it manually with git?
08:12:19*brainproxy quit (Ping timeout: 256 seconds)
08:12:43PMunchHaha, you remember the Python fibonacci script from yesterday? The 10_000_000_000 version is still running :P
08:13:08PMunchFor context the Nim solution finished in slightly more than 2.5 minute, this has been running since yesterday
08:14:12FromDiscord<Rika> Lol
08:14:27FromDiscord<Rika> Does it already use cached results
08:15:08PMunchIt uses a highly optimised algorithm: http://ix.io/2DKg
08:25:22FromDiscord<Rika> Looks optimized alright
08:27:58FromDiscord<ElegantBeef> Shit... i was going to ask you something pmunch but i cant recally now
08:28:04FromDiscord<ElegantBeef> (edit) "recally" => "recall"
08:28:23PMunchHmm, do you remember anything about what it was?
08:28:31FromDiscord<ElegantBeef> Nope
08:28:42PMunchOtherwise I'm here pretty much all day, so if it comes back to you just ping me :P
08:29:01PMunchRika, yeah the Python version is actually really fast
08:29:15FromDiscord<Rika> Zoom
08:29:19PMunchBut it gets beaten handily by the Nim version
08:30:00FromDiscord<Rika> As expected
08:30:47PMunchI was actually a little bit surprised
08:31:07PMunchI mean Python probably also wraps a similar underlying library to what the Nim solution is using
08:31:07FromDiscord<Rika> Whatโ€™s the nim version code
08:32:03PMunchPretty much the same thing: http://ix.io/2DKp
08:36:21FromDiscord<nikki> yeah interpreting bytecode the way python does should make it take much longer
08:36:24FromDiscord<ElegantBeef> Well i'm just going to talk about my fork of moe which is adding nimscript configuration in hopes it pops back
08:36:24FromDiscord<nikki> vs. just compiled code
08:36:46FromDiscord<nikki> like this doesn't just call off to some C function and wait, the loop is python code
08:37:15PMunchTrue, but I assumed (wrongly it appears) that it would JIT compile the Python code into something that was fairly fast
08:37:21Zoom[m]Rika, What?
08:37:37FromDiscord<nikki> cpython doesn't have a jit
08:37:37PMunch@Elegant, the editor right?
08:37:41FromDiscord<ElegantBeef> Yea
08:37:46FromDiscord<ElegantBeef> Zoom they just wrote zoom due to the speed
08:37:52FromDiscord<nikki> slash what python interpreter ru using ๐Ÿค”
08:37:54FromDiscord<ElegantBeef> Your name is bound to be mentioned accidently
08:37:58FromDiscord<Rika> Oh my god thereโ€™s a user called zoom
08:38:15FromDiscord<ElegantBeef> They have a cousin blam and sibling boom
08:38:44ZevvSooo, folks, what do we Nim today
08:39:08PMunchJust looking at bignum/bigfloat libraries to see if I can implement one into stacklang
08:39:14FromDiscord<Rika> Recreate YouTube-dl in nim
08:39:21FromDiscord<Rika> I kid of course
08:39:31FromDiscord<ElegantBeef> I'm trying to remember what the fuck i wanted to say to pmunch
08:39:37FromDiscord<ElegantBeef> We can embark on this journey together!
08:39:39PMunchI mean that would certainly bring som publicity, Rika
08:39:44FromDiscord<Rika> You shall not remember beef
08:39:57PMunchA vegans dream
08:40:00FromDiscord<Rika> PMunch of course but itโ€™s pretty Herculean if you ask me
08:40:25PMunchIsn't it "just" some link grabbing?
08:40:43Zevvthere are bignum bindings, I started a bigfloat once but abandoned it
08:40:52FromDiscord<Rika> It has plug-in extensibility afaik
08:41:01Zevvgmp
08:41:30PMunchYeah the bignum gmp bindings look good
08:41:37PMunchBut they don't have sin/cos/etc
08:41:46ZevvPMunch: I happen to work on a commercial product that also "steals" streams from youtube. It's more involved then that.
08:41:55PMunchI could of course convert to a float, do the calculation, and convert back
08:42:11Zevvwhat calculations are you doing?
08:42:19FromDiscord<ElegantBeef> all of them
08:42:22ZevvI thought this discussion came from someone doing fibonaccis
08:42:24PMunchYeah I would guess it's more complicated, but how much?
08:42:43FromDiscord<Rika> In other news a few months ago I implemented float16 for no real reason other than to use it in CBOR
08:42:47PMunchZevv, it started there, then I realised how nice bignum was, and now I want to use it for stacklang
08:42:57FromDiscord<ElegantBeef> float16 is nice though, as it works well with gpu interop
08:43:24FromDiscord<ElegantBeef> halfs are pretty nice for saving memory
08:43:46Zevvyoutube is funny because it does not use any kind of manifests, like 99% of the other streaming services do
08:43:47FromDiscord<Rika> It only does conversion right now lmao I donโ€™t have anything but conversion from 64
08:43:59Zevvthere's no MPD or M3U8, it's all magic in URLs
08:44:30Zevvthey use arbritrary split MP4 chunks
08:44:40FromDiscord<ElegantBeef> Is the best way to make something like a half to use an `array[2, byte]` or what?
08:44:55FromDiscord<Rika> I used a distinct int16
08:45:15FromDiscord<Rika> Easier to do operations on
08:45:30ZevvElegantBeef: you can just use (u)int16s and cast where needed
08:47:09*miere joined #nim
08:47:20FromDiscord<ElegantBeef> Ok so say a 24 bit value? ๐Ÿ˜›
08:47:45FromDiscord<ElegantBeef> Dont you dare say use an extra unneeded byte!
08:47:46FromDiscord<Rika> Weโ€™re talking about float16 are we not
08:47:53FromDiscord<ElegantBeef> We were
08:48:14FromDiscord<Rika> Other types have different solutions
08:48:28Zevvfor half floats you need native support of your language.
08:48:32Zevvthat's not just castable simply
08:48:49Zevvor you need to do the encoding/decoding yourself
08:48:54FromDiscord<ElegantBeef> Yea i know that
08:49:11ZevvI thought you would :)
08:49:31ZevvI bet we can tell nim to use __fp16 as underlying storage for a type
08:49:46Zevvthere is this funny pragma that allows C-level declarations
08:49:53ZevvI forgot what it was. PMunch used it for the atmel progmem
08:50:03*leorize quit (Ping timeout: 240 seconds)
08:50:28FromDiscord<ElegantBeef> I didnt notice that it was zevv and not z oo m
08:50:37FromDiscord<Rika> Lol
08:50:37FromDiscord<ElegantBeef> Both have green avatars and 4 letter names
08:50:53ZevvYeah I always confuse all the people here. They all have names and they all type words
08:51:19FromDiscord<miere> Sorry for dumb question, but can I use {.discardable.} pragma with function pointers? It works with plain procs, but doesn't with pointer to proc https://play.nim-lang.org/#ix=2DKs
08:51:21FromDiscord<ElegantBeef> Wow he's now mocking me!
08:51:52PMunchcodeGenDecl :D
08:51:53ZevvZevv, mocking the world since '74
08:51:57Zevvright that one
08:52:02*miere quit (Remote host closed the connection)
08:52:57PMunchmiere, unfortunately not it seems
08:53:21PMunchI would guess that {.discardable.} creates two versions of the proc, one that discards and one that doesn't
08:53:40PMunchWhat you could do is wrap it in an Option
08:53:48PMunchBut you would still have to handle it
08:53:59*brainproxy joined #nim
08:54:05FromDiscord<ElegantBeef> Yea pmunch based off this that seems reasonable
08:54:06FromDiscord<ElegantBeef> https://play.nim-lang.org/#ix=2DKu
08:55:14*leorize joined #nim
08:56:00FromDiscord<miere> Is it a bug then that it doesn't work?
08:56:32*letto quit (Quit: Konversation terminated!)
08:58:10PMunchNot really
08:58:16PMunchIt's just not a supported scenario
08:58:49FromDiscord<miere> Yeah, found an issue https://github.com/nim-lang/Nim/issues/14260
08:58:50disbotโžฅ {.discardable.} on object fields causes compile error ; snippet at 12https://play.nim-lang.org/#ix=2lAd
08:59:00PMunchEssentially the discardable part is a Nim thing, so it isn't able to create an object with a function pointer because it doesn't know if it has a return type or not
09:00:29PMunchI guess it could add a hidden field and a union type though
09:00:34PMunchBut that is a bit messy
09:01:25*letto joined #nim
09:15:58FromDiscord<D3F0LT> How do I make testament walk only subfolders in tests? I try testament p "tests / / . Nim" [1], it does not find tests, although there is a subfolder and a file in it
09:17:53*Tanger quit (Remote host closed the connection)
09:25:52FromGitter<matrixbot> `Clonkk` I use ``testament p "tests/**/t*.nim" `` for subfolder
09:34:20*krux02 joined #nim
09:44:22*hnOsmium0001 quit (Quit: Connection closed for inactivity)
09:45:12*MarderIII joined #nim
09:49:35FromDiscord<Gabben> sent a code paste, see https://play.nim-lang.org/#ix=2DL3
10:03:23*leorize quit (Ping timeout: 240 seconds)
10:15:18*leorize joined #nim
10:19:51FromGitter<matrixbot> `Clonkk` Ah youare on Windows. If I remeber correctly Windows only supports wildcard char in the last element of a path.
10:20:24FromGitter<matrixbot> `Clonkk` I Could be wrong (ot simply outdated), I haven't used windows in a while
10:26:25*MarderIII quit (Quit: Leaving)
10:27:49*mmohammadi9812 quit (Ping timeout: 264 seconds)
10:28:44*mmohammadi9812 joined #nim
10:33:30*luis__ joined #nim
10:40:42*luis__ quit (Quit: luis__)
10:50:29FromDiscord<Timmy> sent a code paste, see https://play.nim-lang.org/#ix=2DLq
10:59:40Araqwoah bootstrapping works
10:59:49Araqamazing (I'm on a branch)
11:02:15Araq6.3s vs 6.7s
11:02:35Araqwow that's much better than my initial benchmark suggested
11:07:01*brainproxy quit (Ping timeout: 265 seconds)
11:09:38*Tanger joined #nim
11:15:28*xet7 quit (Remote host closed the connection)
11:16:53*xet7 joined #nim
11:44:22PMunchDamn, I wish I had put a status indicator into this Python script..
11:45:00PMunchWith the Nim version taking 2.5 minutes I didn't quite expect the Python version to take this long..
11:45:39FromDiscord<lqdev> PMunch: what script?
11:45:49PMunchThe fibonacci thing from yesterday
11:46:01PMunchCalculating the 10_000_000_000th fibonacci number
11:46:31FromDiscord<lqdev> oof
11:46:44*rockcavera joined #nim
11:46:48FromDiscord<lqdev> iterative or recursive?
11:46:55PMunchiterative
11:47:04FromDiscord<lqdev> sorry i wasn't following the discussions here yesterday ๐Ÿ˜…
11:47:09PMunchHaha, recursive would break the stack so bad :P
11:47:14FromDiscord<lqdev> yes
11:47:29FromDiscord<lqdev> i wonder if python has proper tail call support ๐Ÿค”
11:47:47FromDiscord<lqdev> lua would handle a recursive fib just fine
11:47:49PMunchPython version: http://ix.io/2DKg, Nim version: http://ix.io/2DKp
11:48:07PMunchGood question, I kinda doubt it though
11:48:40PMunchBut yeah, with tail-end recursion it would run just fine
11:51:01Araqjust stop messing around with 'fib', it's a bad benchmark
11:51:02*lritter joined #nim
11:51:28Araqguys, 0.4s faster bootstrapping, that's not nothing
11:51:40PMunchOh yeah, only reason we were doing it was because someone came in here and wondered why Python was faster :P
11:51:50PMunchSo of course we had to disprove him
11:52:18PMunchHad to re-run the Nim version to make sure I actually input the number correctly, even though I almost ran out of RAM while running it it still only took 3.5 minutes
11:52:27PMunchCurious though that it uses so much more memory
11:52:41PMunchPython currently sits at 0.5Gb, Nim version peaked at about 13Gb
11:57:38*max__ joined #nim
11:58:38FromDiscord<Rika> That's a lot
12:00:43PMunchMhm
12:01:03PMunchGranted we are working with a very large number here
12:01:27*max_ quit (Ping timeout: 258 seconds)
12:02:58ForumUpdaterBotNew thread by HJarausch: Variable length tuple unpacking, see https://forum.nim-lang.org/t/7072
12:05:53*max__ quit (Quit: max__)
12:06:02*supakeen quit (Quit: WeeChat 2.9)
12:06:24*synthmeat quit (Quit: WeeChat 2.9)
12:06:36*supakeen joined #nim
12:07:11*synthmeat joined #nim
12:10:30PMunchRika, the answer will be about 2_000_000_000 digits
12:13:04FromDiscord<Rika> That's a lot of bytes needer
12:13:49PMunchYuup
12:15:57FromDiscord<Rika> That's around 6 or 7 gigabytes just for the number I think
12:16:39PMunchWhich probably means the Python solution is quite a way away from completing..
12:16:55PMunchIt's closing in on 5Gb now
12:18:23*leorize quit (Ping timeout: 240 seconds)
12:20:22FromDiscord<Rika> Lol
12:21:44*NimBot joined #nim
12:23:09*abm joined #nim
12:26:01*leorize joined #nim
12:38:55PMunchDoes Python have some magic switch like -d:release to speed things up?
12:39:03*leorize quit (Ping timeout: 240 seconds)
12:39:18FromDiscord<lqdev> no
12:39:25FromDiscord<lqdev> but you can use pypy
12:41:39PMunchWell that's just cheating
12:41:47PMunchI could also use Nim
12:42:07FromDiscord<lqdev> nim is faster
12:45:10*leorize joined #nim
12:51:36*mmohammadi9812 quit (Ping timeout: 256 seconds)
12:57:16Zevvyou say
13:03:55*brainproxy joined #nim
13:10:30*mmohammadi9812 joined #nim
13:10:54FromDiscord<malfong> `=destroy` is like defer free? https://play.nim-lang.org/#ix=2DMi
13:14:44FromDiscord<Timmy> How on earth do you store such a big number?
13:15:06FromDiscord<Rika> With a lot of memory
13:15:36PMunch@Timmy, with bignum :)
13:15:57PMunchBasically a way of allocating memory on the fly for massive numbers
13:16:57Zevvlog2(10^2e6) / 8 is about 830 megabyte
13:17:20Zevv2e9, that i
13:17:21Zevvs
13:17:38FromDiscord<Rika> Thatโ€™s to store a number 2 billion
13:17:38FromDiscord<Timmy> Why are you deviding by 8?
13:17:43FromDiscord<Rika> Not 2 billion digits
13:17:46Zevvthe number of bits
13:17:50FromDiscord<Timmy> (edit) "deviding" => "devising"
13:18:57FromDiscord<Rika> Oh misread
13:19:20Zevvdigits to bits to bytes
13:19:48FromDiscord<Timmy> I do not math too well
13:20:12Zevvone better maths well if one wants to code well
13:21:15FromDiscord<Rika> I was pretty sure about my 6 gigabyte estimate....
13:21:17FromDiscord<Timmy> I math just well enough for what I do
13:21:39FromDiscord<Timmy> which is not cryptography or bigints clearly
13:21:40FromDiscord<Rika> Maybe I did not divide
13:21:41FromDiscord<Timmy> :KEKW:
13:21:55FromDiscord<Rika> This isnโ€™t even cryptography
13:22:28Araqmalfong: don't call =destroy directly unless you know what you're doing
13:22:29FromDiscord<Timmy> obv, but cryptography is very math heavy.
13:38:49*brainproxy quit (Ping timeout: 258 seconds)
14:04:43*Vladar joined #nim
14:05:47bungCan introduce a new flag when compile to js that disable vm gen ? some places compile time results differs from js
14:06:10*brainproxy joined #nim
14:07:56bungthat's not reliable , except can directly interate with js engine take result from there.
14:08:38FromDiscord<shadow.> is there a way to use big decimals in bigint?
14:08:41FromDiscord<shadow.> (edit) "bigint?" => "bignum?"
14:09:02FromDiscord<shadow.> tryna implement chudnovsky's algorithm in nim
14:09:08FromDiscord<shadow.> did it in py fairly easily but thats python
14:09:17FromDiscord<shadow.> (edit) "tryna implement chudnovsky's algorithm ... in" added "(pi calculator)"
14:11:30*brainproxy quit (Ping timeout: 256 seconds)
14:18:23PMunch@shadow, you have rationals in bignum
14:19:10PMunchhttps://github.com/kaushalmodi/bignum/blob/master/src/bignum/private/rat.nim
14:23:27*luis__ joined #nim
14:23:50FromDiscord<shadow.> ooh ok
14:24:45FromDiscord<shadow.> is there any way to set precision?
14:26:10PMunchNot for those, they store everything as rationals
14:26:26FromDiscord<shadow.> ah ok
14:26:28PMunchFor that you'd want to wrap a bigfloatlibrary
14:26:28FromDiscord<Rika> precision does not exactly apply to rationals
14:26:38FromDiscord<shadow.> yeah i found nim-decimal which looks interesting
14:26:44FromDiscord<shadow.> @Rika lol fair enough
14:26:52FromDiscord<Rika> those also dont exactly have precisions afaik
14:27:16FromDiscord<shadow.> fr?
14:27:22FromDiscord<shadow.> theres a setPrec() function
14:27:41FromDiscord<Rika> i mean precision loss
14:27:54FromDiscord<Rika> in the traditional float sense
14:28:51FromDiscord<shadow.> ah ye
14:29:33FromDiscord<shadow.> https://github.com/status-im/nim-decimal
14:29:40FromDiscord<shadow.> trying to use this but after installed the package wont import lmao
14:29:47FromDiscord<Rika> whats the error
14:29:48FromDiscord<shadow.> the main file is decimal.nim and thats what im importing
14:29:51FromDiscord<shadow.> one sec
14:29:59FromDiscord<shadow.> cannot open file
14:30:02FromDiscord<shadow.> (edit) "file" => "file: decimal"
14:30:09FromDiscord<shadow.> other packages work fine ofc
14:32:42FromDiscord<Rika> the nimble package is malformed
14:32:49FromDiscord<hugogranstrom> Try import Decimal
14:32:52FromDiscord<Rika> srcDir says src but new dir is decimal
14:33:40FromDiscord<shadow.> ah
14:33:47FromDiscord<hugogranstrom> The package name is capitalized for some reason
14:33:51FromDiscord<shadow.> fr?
14:33:53FromDiscord<shadow.> thats odd
14:34:04FromDiscord<shadow.> still cant open
14:34:08FromDiscord<shadow.> should i just fix the src path
14:34:10FromDiscord<hugogranstrom> :(
14:34:17*luis__ left #nim (#nim)
14:34:23FromDiscord<shadow.> where are nimble packages usually stored lmao
14:34:27FromDiscord<shadow.> bc i cant find them in my nim installation
14:34:38FromDiscord<shadow.> ima assume appdata
14:34:38FromDiscord<hugogranstrom> .nimble somewhere
14:34:56FromDiscord<hugogranstrom> Windows it's USER/.nimble I think
14:35:03FromDiscord<shadow.> a ty
14:35:05FromDiscord<shadow.> (edit) "a" => "ah"
14:35:55FromDiscord<Rika> you're gonna have to uninstall the package and git clone it (to wherever you put your nim projects), then change the nimble file, then nimble develop inside the dir
14:36:17FromDiscord<shadow.> https://media.discordapp.net/attachments/371759389889003532/776092940849381376/unknown.png
14:36:19FromDiscord<Rika> afaik, the nimble dir will not have the decimal dir since nimble deletes it?
14:36:23FromDiscord<shadow.> lmfao
14:36:23FromDiscord<Rika> exactly
14:36:25FromDiscord<shadow.> this seems a bit odd
14:36:26FromDiscord<shadow.> no code?
14:36:27FromDiscord<shadow.> lmao
14:36:31FromDiscord<Rika> i said
14:36:44FromDiscord<Rika> since the file is "malformed", nimble mistakenly deleted the code
14:36:49FromDiscord<shadow.> ah ok
14:36:53FromDiscord<Rika> so do what i said above
14:36:56FromDiscord<shadow.> kk
14:37:48FromDiscord<mratsim> strange, I don't remember adding Decimal in uppercase
14:38:00FromDiscord<mratsim> and I don't remember the uppercase being a problem :p
14:38:15FromDiscord<shadow.> lmao this is your package isnt it
14:38:20FromDiscord<shadow.> yes
14:38:20*brainproxy joined #nim
14:38:36FromDiscord<shadow.> @Rika alright i git cloned it in
14:38:49FromDiscord<Rika> now change srcdir to decimal
14:38:52FromDiscord<shadow.> kk
14:38:59FromDiscord<shadow.> done
14:39:01FromDiscord<Rika> then in the same dir do `nimble develop`
14:39:09FromDiscord<Rika> as the nimble file i mean
14:39:19FromDiscord<shadow.> wdym
14:39:21FromDiscord<Rika> then you should be able to compile your program
14:39:31FromDiscord<Rika> same dir as nimble file: run `nimble develop`
14:39:57FromDiscord<shadow.> sent a code paste, see https://play.nim-lang.org/#ix=2DMG
14:40:02FromDiscord<Rika> lol
14:40:06FromDiscord<shadow.> i did something dumb
14:40:07FromDiscord<shadow.> didnt i
14:40:09FromDiscord<Rika> no
14:40:16FromDiscord<Rika> i think its just because of the repo name
14:40:19FromDiscord<shadow.> ah lol
14:40:20FromDiscord<Rika> change it to just `decimal`
14:40:23FromDiscord<shadow.> kk
14:40:49FromDiscord<shadow.> invalid name
14:40:50FromDiscord<shadow.> kekw
14:41:24FromDiscord<Rika> w0t
14:41:27FromDiscord<shadow.> w0t
14:41:39FromDiscord<Rika> then idk im dumb ask someone more intelligent than a banana
14:41:50FromDiscord<shadow.> hmm
14:41:59FromDiscord<shadow.> i suppose it'd be a good idea to ask the person that made it
14:42:05FromDiscord<shadow.> @mratsim how do you recommend i install your package?
14:42:30FromDiscord<shadow.> i just realized the package is 20% html
14:42:33FromDiscord<shadow.> lol
14:42:49FromDiscord<shadow.> (on github ofc not once installed)
14:42:51FromDiscord<Rika> Probably documentation
14:43:11FromDiscord<shadow.> yeye
14:43:19FromDiscord<shadow.> i mean i could use bignum rat
14:43:30FromDiscord<shadow.> but i dont think thats good for pi is it
14:43:42FromDiscord<shadow.> especially when im limited to like around 14 digits per iteration
14:43:47FromDiscord<shadow.> so if i go higher precision
14:43:49FromDiscord<shadow.> then it wont be correct
14:47:58*waleee-cl joined #nim
14:49:32FromDiscord<mratsim> normally it's nimble install decimal
14:50:05FromDiscord<shadow.> oh lemme try that i suppose lmao
14:50:11FromDiscord<mratsim> but do you need bigint or bigfloat?
14:50:15FromDiscord<shadow.> bigfloat
14:50:19FromDiscord<shadow.> for pi calculation
14:50:24FromDiscord<shadow.> to arbitrary digits
14:50:30FromDiscord<mratsim> okay. Also make sure to check JohnAD Decimal128 package
14:50:32FromDiscord<mratsim> ah
14:50:52FromDiscord<mratsim> then yeah you have to use nim-decimal. It's pretty raw though since I didn't end up needing it so far
14:50:59FromDiscord<shadow.> rip
14:51:03FromDiscord<shadow.> sent a code paste, see https://play.nim-lang.org/#ix=2DMM
14:51:08FromDiscord<shadow.> thats the python implementation
14:51:10FromDiscord<shadow.> tryna recreate in nim
14:51:20*astronavt joined #nim
14:51:56FromDiscord<Rika> uh rename the package folder to `nim_decimal`
14:52:22FromDiscord<Rika> i dont know why `decimal` doesnt work, prolly related to why the package name is caps D `Decimal`
14:52:51FromDiscord<Rika> @shadow. ^
14:53:48FromDiscord<shadow.> ah ok
14:53:53FromDiscord<shadow.> lemme re git clone it i deleted it :KEKW:
14:53:55FromDiscord<shadow.> (edit) removed ":KEKW:"
14:54:58FromDiscord<shadow.> still did not work
14:55:13FromDiscord<shadow.> @Rika rip
14:55:29FromDiscord<Rika> eeeh
14:55:33FromDiscord<Rika> whats the error again
14:55:51FromDiscord<shadow.> sent a code paste, see https://play.nim-lang.org/#ix=2DMP
14:56:18FromDiscord<Rika> what the heeeeck
14:57:12FromDiscord<shadow.> weird
14:57:37FromDiscord<shadow.> fixed it
14:57:43FromDiscord<shadow.> it needed a version number at the end
14:57:46FromDiscord<shadow.> nim-decimal-0.1
14:57:57FromDiscord<shadow.> sent a code paste, see https://play.nim-lang.org/#ix=2DMR
14:57:58FromDiscord<shadow.> lol
14:58:31FromDiscord<Rika> ?????????????????
14:58:35FromDiscord<shadow.> i think that means its good
14:58:36FromDiscord<Rika> okay........
14:58:39FromDiscord<Rika> yes
14:58:44FromDiscord<shadow.> i changed the package name to decimal
14:58:48FromDiscord<shadow.> now its complaining theres two files in src
14:58:49FromDiscord<shadow.> LMAO
14:58:52FromDiscord<shadow.> but it worked
14:58:53FromDiscord<shadow.> ty
14:59:27FromDiscord<mratsim> >_>
14:59:34FromDiscord<shadow.> lool
14:59:39FromDiscord<mratsim> Nimble warnings are so annoying
14:59:54FromDiscord<Rika> lol yeah
14:59:58FromDiscord<mratsim> but don't worry even Nim zip package had this warnings iirc
15:00:51FromDiscord<shadow.> lol
15:01:29FromDiscord<shadow.> now my linter isnt working with the package
15:01:32FromDiscord<shadow.> gotta love it
15:01:33FromDiscord<shadow.> loll
15:01:43FromDiscord<Rika> amazing
15:01:51FromDiscord<Rika> congrats welcome to nim xddd
15:02:06FromDiscord<shadow.> faxx
15:02:24FromDiscord<mratsim> Wait until you use a package that means instant death to nimsuggest (like Weave)
15:03:50FromDiscord<shadow.> klmfao
15:03:52FromDiscord<shadow.> (edit) "klmfao" => "lmfao"
15:04:03FromDiscord<shadow.> i mean to be fair its at least better than dynamic languages
15:04:08FromDiscord<shadow.> python suggest shudders
15:04:44FromDiscord<Rika> eh idk i like nim's syntax and compiler enough to forgive its other tooling
15:05:30FromDiscord<shadow.> yeye
15:05:50FromDiscord<shadow.> `mpd_ssize_t`
15:05:53FromDiscord<shadow.> sheesh
15:06:12FromDiscord<shadow.> lookin like a whole c++ type
15:06:13FromDiscord<shadow.> lol
15:06:29*tane joined #nim
15:07:04FromDiscord<lqdev> nimsuggest is so buggy that it led me to abandoning nvim in favor of lite just because i couldn't bear my highlighting disappearing every 2 minutes
15:07:30FromDiscord<shadow.> not me using vscode-
15:07:31FromDiscord<shadow.> ASNDOASJDOJASD
15:08:49FromDiscord<shadow.> how can i use setPrec with a uint64 if it needs an mpd_ssize_t
15:09:31FromDiscord<shadow.> i dont see a conversion lol
15:13:11*vicfred joined #nim
15:14:17FromDiscord<mratsim> https://github.com/status-im/nim-decimal/blob/master/decimal/decimal_lowlevel.nim#L120
15:14:20*PMunch quit (Quit: leaving)
15:14:31FromDiscord<mratsim> rough I said ๐Ÿ˜‰
15:14:41FromDiscord<mratsim> that's autogenerated
15:15:11FromDiscord<lqdev> ever since i stopped using nimsuggest my life has become so much better
15:15:19FromDiscord<lqdev> less memory usage
15:15:22FromDiscord<lqdev> less frustration
15:15:34FromDiscord<lqdev> less crashes
15:15:51FromDiscord<lqdev> more syntax highlighting
15:15:59FromDiscord<lqdev> less rm -rf ~/.cache/nim
15:16:06FromDiscord<shadow.> ohh ok
15:16:07FromDiscord<shadow.> hmm
15:16:13FromDiscord<shadow.> ah i see
15:16:23FromDiscord<mratsim> less 100%CPU that are annoying on benchmarks because you forgot about them
15:16:29FromDiscord<shadow.> int64 works ty
15:16:34FromDiscord<lqdev> @mratsim yes
15:16:50FromDiscord<lqdev> i hope IC will improve nimsuggest's speed
15:17:04FromDiscord<lqdev> because right now i'm so happy without it that i'm definitely not coming back
15:17:23FromDiscord<lqdev> the basic context-free autocomplete lite provides is more than enough for me
15:17:55*brainproxy quit (Read error: Connection reset by peer)
15:27:03*leorize quit (Ping timeout: 240 seconds)
15:30:16*vicfred quit (Quit: Leaving)
15:30:26*leorize joined #nim
15:33:40FromGitter<bung87> IC means what?
15:34:54FromDiscord<lqdev> incremental compilation
15:35:34FromDiscord<lqdev> @Clyybberrrrrrrrrrrrrrr your bugfix for `internal error: environment misses 'thing'` doesn't seem to work
15:36:31disrupteknimsuggest will be faster under ic, yes.
15:36:42FromGitter<bung87> I remenber it stop development
15:36:43disruptekit'll be changed to merely use the ic artifacts.
15:37:48disruptekbut honestly, it's never been a problem for me.
15:39:04FromDiscord<lqdev> you haven't used nimsuggest while developing my game, then.
15:39:13FromDiscord<lqdev> it's so paaaaaaaainfully slow
15:39:33disruptekwhy?
15:40:17FromDiscord<lqdev> god knows why
15:41:57*vicfred joined #nim
15:44:31disruptekwell, then i wouldn't pin your hopes on ic making it faster.
15:45:58FromDiscord<lqdev> my project takes long to compile
15:46:00FromDiscord<lqdev> almost 8 seconds
15:46:14FromDiscord<lqdev> that's why i think IC would make nimsuggest faster
15:46:35FromDiscord<lqdev> it's really slow only in modules that need a lot of other modules compiled
15:46:57FromDiscord<lqdev> so it's fine in a small module like `common` which maybe contains one or two types declared
15:47:06FromDiscord<lqdev> but slow in modules like `player` which depend on a lot of the game
15:47:10disruptek8 seconds is not a long time.
15:47:40FromDiscord<lqdev> yeah, imagine typing `player.` and waiting 8 seconds until suggestions pop up.
15:48:00FromDiscord<lqdev> it's not a long time to compile, but for suggestions it's painful.
15:48:14FromDiscord<lqdev> same with nim.nvim's semantic syntax highlighting
15:48:14disruptekare you saying suggests happen automatically?
15:48:23disruptekand can you gimme a repro?
15:48:30FromDiscord<lqdev> that's how i have them set up
15:48:51disruptekwell then, enjoy your setup.
15:48:54FromGitter<bung87> that is not the case , graph build on first time
15:48:58FromDiscord<lqdev> try opening this module with nim.nvim and see how long it takes to highlight https://github.com/liquid600pgm/planet-overgamma/blob/rapid/src/planet_overgamma/world.nim
15:49:39disrupteki always ready it as 600 gallons per minute and it fucks me up.
15:49:57FromGitter<bung87> suggest methods usual not recompile module
15:50:42disruptekhow can i clone this?
15:50:45*dddddd quit (Ping timeout: 240 seconds)
15:51:45disruptekthe world.nim find in src highlights instantly but nimsuggest crashes.
15:52:04FromDiscord<lqdev> pfffffff that too
15:52:13FromGitter<bung87> nim.nvim highlight?
15:52:20FromDiscord<lqdev> for me removing ~/.cache/nim works
15:52:25FromDiscord<lqdev> but it's a band-aid solution
15:52:32disrupteknot for me.
15:52:42FromDiscord<lqdev> then i have no clue.
15:52:49disruptekneither 1.4 or 1.5.
15:53:06FromDiscord<lqdev> and 1.2 ain't gonna work because the code was written against 1.4.
15:53:06FromGitter<bung87> suggest does not have highlight
15:53:17FromDiscord<lqdev> @bung87 it does
15:53:25FromDiscord<lqdev> https://github.com/alaviss/nim.nvim
15:53:52FromDiscord<lqdev> disruptek: does nimsuggest output anything if you try running it from your terminal?
15:54:18disruptekyeah, SIGSEGV.
15:55:01FromDiscord<lqdev> wut
15:55:11disruptekcrashing in a lastSon call on type relation.
15:56:13FromGitter<bung87> no it' s extension feature nimsuggest does not
15:56:30disruptekic will make nimsuggest faster for sem, but it won't magically make the compiler not crash.
15:57:06disruptekevery time i use gdb i wonder why no one has bothered to fix the name mangling.
15:57:15disrupteklame.
15:57:41*rockcavera quit (Remote host closed the connection)
15:58:29FromGitter<bung87> the first problem is define project structure
16:05:55ForumUpdaterBotNew thread by BarrOff25: Changing alignment requirement of object type?, see https://forum.nim-lang.org/t/7074
16:06:23*leorize quit (Ping timeout: 240 seconds)
16:14:59*leorize joined #nim
16:16:09*xet7 quit (Remote host closed the connection)
16:16:21*fredrikhr quit (Read error: Connection reset by peer)
16:17:34*xet7 joined #nim
16:18:46FromGitter<eagledot> @mratsim Do i need visual Studio to make arraymancer work with cuda on windows?
16:20:35FromDiscord<mratsim> Good question, Windows is a notoriously bad platforms for Cuda, right behind Mac (but because there is no more Nvidia GPU/drivers for Mac)
16:21:22FromDiscord<mratsim> I think it might work with LLVM
16:21:35FromDiscord<mratsim> because the Nvidia compiler is now a LLVM extension
16:22:02FromDiscord<mratsim> the main issue is that the LLVM is always lagging behind CUDA (so you need LLVM trunk to use the latest Cuda version)
16:22:45FromDiscord<mratsim> See here: https://gist.github.com/ax3l/9489132#clang--x-cuda
16:23:55FromDiscord<mratsim> For proper compiler configuration you would need to have a nim.cfg with those changes: https://github.com/mratsim/Arraymancer/blob/master/nim.cfg#L25-L30
16:24:04FromGitter<eagledot> i was able to run examples in nimcuda (https://github.com/unicredit/nimcuda) with precompiled DLLs only.Also wanted to understand why need ``nvcc`` for arraymancer, is it because som cuda code is being emitted by nim?
16:24:25FromDiscord<mratsim> Yes, Arraymancer generates cuda code
16:25:34FromDiscord<mratsim> I think WSL now supports GPU so it might work under WSL
16:26:12disruptekmy testes have revealed another arc win.
16:26:29disruptek14.5s for skiplists torture test turned into 5.5s under arc.
16:27:46FromGitter<eagledot> @mratism Thanks . Your discussion and explanations in issues are also a big help.
16:29:08FromGitter<eagledot> Do i need -d:danger flag with every compilation?
16:29:43FromGitter<eagledot> Because on windows i was getting error with -d:danger flag.
16:32:20FromDiscord<mratsim> no
16:32:31FromDiscord<mratsim> if it's still there it's a leftover from 0.20
16:33:04FromGitter<eagledot> So speed wouldnot suffer i am not using -d:danger flag anymore?
16:34:17*rockcavera joined #nim
16:37:03*leorize quit (Ping timeout: 240 seconds)
16:40:20FromDiscord<mratsim> no
16:40:26FromDiscord<mratsim> but do use release
16:40:39FromDiscord<mratsim> actually yes it can for some stuff
16:41:03disruptekrelease includes assertions now.
16:41:29FromDiscord<mratsim> dangers avoid bounds check to ensure that if you do foo[5] there is no check that is added to verify that 5 is within foo size
16:42:24FromDiscord<mratsim> in the future move (PR change to pointer+len) for most of the stuff I will use unchecked primitives so it wouldn't matter
16:42:32FromDiscord<mratsim> but it might still matter with the current backend.
16:44:36*leorize joined #nim
17:22:04*apahl quit (Ping timeout: 240 seconds)
17:23:24*apahl joined #nim
17:35:37*habamax quit (Ping timeout: 265 seconds)
17:45:57*hnOsmium0001 joined #nim
17:48:43*leorize quit (Ping timeout: 240 seconds)
17:49:31*leorize joined #nim
17:53:36*natrys joined #nim
18:04:32*dddddd joined #nim
18:04:58*astronavt quit (Ping timeout: 256 seconds)
18:06:19*bung quit (Quit: Lost terminal)
18:14:30*xet7 quit (Quit: Leaving)
18:20:50*abm quit (Quit: Leaving)
18:24:02*Kaivo quit (Quit: WeeChat 2.9)
18:29:43*leorize quit (Ping timeout: 240 seconds)
18:30:10FromDiscord<For Your Health> sent a code paste, see https://play.nim-lang.org/#ix=2DOb
18:31:15FromDiscord<For Your Health> (edit) "https://play.nim-lang.org/#ix=2DOb" => "https://play.nim-lang.org/#ix=2DOc"
18:31:44FromDiscord<For Your Health> I'm probably doing something silly though, I'm not very good at Nim yet
18:33:54*leorize joined #nim
18:37:05*Vladar quit (Remote host closed the connection)
18:39:43*Vladar joined #nim
18:44:07FromDiscord<mratsim> Does updateGame has a var parameter?
18:44:19FromDiscord<mratsim> you can't capture a mutable parameter
18:45:39FromDiscord<For Your Health> Yeah, self is a var parameter.
18:46:34FromDiscord<For Your Health> If I can't capture a mutable parameter, I'm a bit lost on how to encapsulate the logic of a fixed timestep. Maybe I'm going about the idea wrong.
18:47:45FromDiscord<For Your Health> sent a code paste, see https://play.nim-lang.org/#ix=2DOh
18:49:40FromDiscord<lqdev> why'd you even make this into an object?
18:51:25FromDiscord<For Your Health> I'm not a super experienced programmer so I'm probably doing something dumb. However, I made it into an object because I need to keep track of some mutable state (the accumulator)
18:51:45FromDiscord<For Your Health> Also the interpolation, but that could be returned from the function I suppose
18:52:24FromDiscord<For Your Health> Is there a cleaner way of doing this?
18:54:35FromDiscord<lqdev> sure is https://github.com/liquid600pgm/rapid/blob/master/src/rapid/game.nim#L9
18:55:00FromDiscord<lqdev> not only cleaner but also more efficient as you're not creating a closure
18:55:00FromDiscord<nikki> @For Your Health you could make it a template that embeds the frame body
18:58:50FromDiscord<mratsim> Or have your Frame carry the time: https://github.com/mratsim/trace-of-radiance/blob/master/trace_of_radiance/scenes_animated.nim#L53-L63
18:59:34FromDiscord<mratsim> and then your step is straightforward: https://github.com/mratsim/trace-of-radiance/blob/master/trace_of_radiance/scenes_animated.nim#L159-L170
19:01:03FromDiscord<For Your Health> Thanks for the help so far everyone. Those links are a little beyond my comprehension at the moment but I will study them until I understand. I am very much stuck in OOP land as a programmer and trying to expand my mind to other ideas.
19:01:49FromDiscord<mratsim> it wouldn't be safe in OOP as well.
19:02:33FromDiscord<mratsim> what you did was capturing a pointer (because mutation) in a closure but that pointer is only valid for the duration of the proc while your closure would outlive it
19:02:57FromDiscord<mratsim> (that's borrow checking in Rust terms)
19:04:10FromDiscord<mratsim> sent a long message, see http://ix.io/2DOp
19:04:21FromDiscord<mratsim> possibly more
19:04:54FromDiscord<mratsim> there are various tradeoff in terms of speed (cache/memory locality, cache misses) , extensibility and ergonomics though
19:05:32FromDiscord<nikki> the main thing seems to be they want to have a utility that wraps a fixed timestep (with an accumulator) and parameterizes over the frame body
19:05:44FromDiscord<mratsim> well it would be safe actually in most OOP languages because they always allocate on the heap, but in C++ you would have issues
19:05:59FromDiscord<nikki> in c++ it works out with a reference capture
19:06:14FromDiscord<nikki> the closure is immediately executed and never held
19:06:21FromDiscord<nikki> it would probably be inlined
19:06:26FromDiscord<For Your Health> My main goal was to completely encapsulate the logic behind doing a fixed physics timestep without any other concerns.
19:06:42FromDiscord<mratsim> proc step(param1, param2)
19:06:54FromDiscord<mratsim> or use a template
19:07:21FromDiscord<mratsim> that would have the least impact on your code
19:07:28FromDiscord<nikki> the template that takes the body is the simplest soln
19:08:01FromDiscord<nikki> @For Your Health what is outside comprehension re: the template + body soln?
19:08:11FromDiscord<nikki> i don't think it's about OO or not OO
19:08:26FromDiscord<mratsim> proc update(self: var FixedTimestep, deltaDuration: Duration, updateStatement: untyped) =โ†ตโ†ต^new signature
19:08:45FromDiscord<mratsim> and then in the body just do "updateStatement"
19:09:01FromDiscord<nikki> does proc need to be template there?
19:09:11FromDiscord<nikki> or does proc automatically define a template if some param is untyped
19:09:14FromDiscord<mratsim> and call the template with self.update(deltaDuration, updateGame(self))
19:09:20FromDiscord<nikki> also the param can be typed, no identifiers are unbound
19:09:48FromDiscord<mratsim> you need to make it an explicit template
19:10:55FromDiscord<For Your Health> @nikki A lot at the moment. I haven't had a good look at it yet. I am not super savvy with templates yet, I'm not sure what the inject pragma does, have no idea what monotimes is, and I'm not sure what the various block: lines are for.
19:11:37FromDiscord<mratsim> you don't need the inject pragma, monotimes is a monotonic clock library
19:11:46FromDiscord<nikki> ok, all of that other stuff is unnecessary. the main thing is
19:11:48FromDiscord<mratsim> template are for literal substitution
19:12:09FromDiscord<nikki> ^ that part. and you can just take a body parameter and inject it into the middle of your loop
19:12:28FromDiscord<mratsim> so you won't create a closure at runtime, you copy paste the template body at compile-time
19:13:00FromDiscord<Daniel> today i read this:โ†ตhttps://blog.johnnovak.net/2017/04/22/nim-performance-tuning-for-the-uninitiated/โ†ตโ†ตWhile i am not a programmer, ...well learning atm, from this text apparently "ref" completely slowed nim performance after compilation, quite interesting to me who is discovering programming in general.
19:13:08disruptekAraq: should i add nimph to important packages? it's broken by idgen changes.
19:13:14FromDiscord<For Your Health> I see. So essentially I am encapsulating the logic of a fixed physics update through metaprogramming?
19:13:33FromDiscord<nikki> honestly, it's not a huge change from what you already have
19:13:43FromDiscord<nikki> you want to pass code to run by passing a closure? pass a `body: typed` instead
19:13:48FromDiscord<Daniel> only atfer removing ref, nim comes to C level performance
19:13:56FromDiscord<mratsim> "automated copy-pasting" is a better way to put it, this is as soft as metaprogramming can be here
19:13:58FromDiscord<nikki> neither approach is more metaprogrammy than the other
19:14:07FromDiscord<nikki> i can write a whole example if that helps, brb
19:14:26FromDiscord<For Your Health> @nikki That would be greatly appreciated
19:14:35FromDiscord<mratsim> @Daniel it's due to something due to memory locality and cache misses
19:14:52FromDiscord<mratsim> a ref allocate on the heap just like malloc/free
19:14:53FromDiscord<nikki> i think this is discernible by just reading about templates in the nim manual though
19:15:08FromDiscord<nikki> there's no need to psych oneself out with all of the other extra stuff like the other stuff you saw in the github links sent, or the word metaprogramming
19:15:13FromDiscord<mratsim> The heap is slower than the stack for repeated alloc/dealloc
19:15:30FromDiscord<mratsim> because it has way more overhead
19:15:43FromDiscord<For Your Health> I don't mind metaprogramming. In fact I think it is a really elegant and powerful idea. I just always seem to get confused by it
19:15:55FromDiscord<mratsim> so don't allocate refs in compute sensitive part of your code.
19:16:14FromDiscord<nikki> i think the confusion came from github links having a bunch of other stuff
19:16:28FromDiscord<nikki> https://play.nim-lang.org/#ix=2DOs
19:16:31FromDiscord<Daniel> but when is using ref necessary?...can everything be done without it?
19:16:32FromDiscord<nikki> here's the minimal example
19:17:03FromDiscord<nikki> @For Your Health does this example make sense? can build up from there
19:17:22FromDiscord<For Your Health> I understand the example, but I'm not sure what the point of 'typed' vs 'untyped' is
19:17:25FromDiscord<nikki> @Daniel refs are pointers to heap allocations, and also ask nim to manage when to free the heap allocation
19:17:53FromDiscord<nikki> @For Your Health so for now, if you skip that thing (i'll explain it) does it make sense that if you change your frame function tobe a template, and then pass the body as a `body: typed` and mention body where you called the closure -- that it would work?
19:17:54FromDiscord<mratsim> It depends on your application. Usually ref are used to represent unique resources, i.e. you cannot use a database connection for another, they are not "fungible" just like even if 2 persons are of the same height, same number of arms and feet they are not necessarily the same.
19:18:18FromDiscord<mratsim> In that case, refs make sense.
19:18:56FromDiscord<nikki> @For Your Health typed vs. untyped is just saying whether to typecheck the body before or after substitution
19:19:01FromDiscord<mratsim> Also for large objects you want ref because there is just not enough stack memory
19:19:16FromDiscord<mratsim> (over 2MB)
19:19:45FromDiscord<nikki> @For Your Health an example where you want it to be `untyped` is -- if your template defines some variable that the body uses. in this case if the body is typechecked before expanding the template, that variable would be undefined
19:20:39FromDiscord<nikki> re: the refs thing -- you can also use heap memory without using refs, but yeah. eg. if you have a Table with a bunch of values, the values are not in stack memory (it's in a seq, and seqs allocate heap memory for their values)
19:20:53FromDiscord<nikki> you can also just alloc0 etc.
19:21:40FromDiscord<For Your Health> @nikki It's making some sense. I probably need to play around with it a bit to get an understanding. Templates haven't quite clicked for me yet.
19:21:46FromDiscord<nikki> @For Your Health i don't think the typed vs. untyped thing is clear right off the bat. i think it helps to just ... trust it for now and kinda just go with the `body: typed` thing, and after using templates a couple times it'll settle in
19:21:52FromDiscord<mratsim> anyway if your interested in this topic @Daniel the entry point to the rabbit hole is a google search on Value object vs Reference object and look into C++ and Rust related info
19:22:14FromDiscord<nikki> i think an important distinction though @mratsim is that in nim's case it's more than value vs. ref distinction
19:22:24FromDiscord<nikki> a big part is that in nim they are managed too, and that in eg. arc it adds refcounts
19:22:29FromDiscord<mratsim> indeed
19:22:31FromDiscord<nikki> personally i reach for ref, when that entire semantics is the semantics i want
19:22:45FromDiscord<nikki> it's an owned ref (unless it's {.cursor.})
19:22:53FromDiscord<mratsim> Indeed, also there are atleast 2 or 3 related topics where I expand on that on the Nim forum
19:23:18FromDiscord<nikki> @For Your Health tbh there's not much of a click. hmmm maybe one way to address it is -- what's your programming background?
19:23:21FromDiscord<nikki> have you written c++ before?
19:23:39FromDiscord<nikki> or c
19:23:59FromDiscord<nikki> if so i'd say it's like a real version of macros, instead of substituting text, it's working on a syntactic understanding of the source code
19:24:08FromDiscord<For Your Health> My background is I'm an almost completely self taught hobbyist. I have written tons of different languages including c and c++, but I'm not very good
19:24:34FromDiscord<nikki> yeah so invoking a template causes the compiler to say "oh, ok, i'll go take the template, splice in the parameters, and replace this code with that"
19:24:46FromDiscord<Daniel> tnx, googled now about it, my head is exploding ๐Ÿ™ƒ
19:25:01FromDiscord<For Your Health> So templates aren't like rust macros in that they literally write code?
19:25:08FromDiscord<nikki> @Daniel it's good to keep doing a mix of just using things (practice) and reading up, you'll get used to it ๐Ÿ™‚
19:25:15FromDiscord<For Your Health> (edit) "So templates aren't like rust macros in that they ... literally" added "don't"
19:25:48FromDiscord<nikki> they do. would you say my earlier description (in quotes) involves writing code, or no?
19:26:15FromDiscord<nikki> the description is actually what happens, you could interpret that as writing or not
19:27:11FromDiscord<For Your Health> What threw me off is you saying "instead of substituting text, it's working on a syntactic understanding of the source code"
19:27:25FromDiscord<nikki> ah ok. so lemme think about how to explain that difference
19:27:43FromDiscord<nikki> so in C, say you have a macro like
19:28:06FromDiscord<nikki> #define add(a, b) a + b
19:28:17FromDiscord<nikki> when the C compiler encounters a usage of this macro like
19:28:22FromDiscord<nikki> add(f(), 3)
19:28:37FromDiscord<nikki> it is taking the text f() and the text 3, and substituting a and b with them in the macro, to get f() + 3
19:28:50FromDiscord<nikki> and then it substitutes the whole add(f(), 3) for that result in the invocation
19:29:11FromDiscord<For Your Health> Yeah that much I understand
19:29:11FromDiscord<nikki> just checking if this is understood, once we're in sync on this we can compare it to nim's templates
19:29:15FromDiscord<nikki> cool that's good
19:29:25FromDiscord<nikki> now in nim's template case what' shappening is
19:29:55FromDiscord<nikki> template add(a: typed, b: typed): a + b
19:30:00FromDiscord<nikki> when the compiler sees
19:30:04FromDiscord<nikki> add(f(), 3)
19:30:17FromDiscord<nikki> at this point, the compiler has already parsed the source code
19:30:29FromDiscord<nikki> so add is in the form AddCall ( LeftChild, RightChild )
19:30:37FromDiscord<nikki> and then the LeftChild is f call ()
19:30:41FromDiscord<nikki> and the right child is Three
19:30:55FromDiscord<nikki> it actually doesn't look like this, it's the whole structure defined by the AST structures in macros.nim
19:31:07FromDiscord<nikki> but the higher level point is: this is at a later stage of compilation
19:31:09FromDiscord<nikki> parsing is done already
19:31:34FromDiscord<nikki> in the C case, the macro substitution was done by the C preprocessor before doing any parsing of actual C
19:32:01FromDiscord<nikki> in any case, the compiler understands that add is a template, and then splices the f call ast and the 3 ast into the ... + ... AST
19:32:19FromDiscord<nikki> so it's not text manipulation, it's manipulation of those data structures that represent the code
19:32:24FromDiscord<nikki> for this case, it seems trivial and not that different
19:32:48FromDiscord<For Your Health> It makes much more sense now. I guess my idea of metaprogramming was limited to C perspective of doing literal text manipulation.
19:32:56FromDiscord<nikki> but the real power comes when you want to do stuff like "ok, for each paramaeter, if it's a statement, do this. if it's a number, do this other thing" etc. -- if you want more intelligent logic that uses the fact that it's already parsed
19:32:58FromDiscord<For Your Health> Also the word 'template' threw me off a bit coming from c++
19:33:26FromDiscord<nikki> yeah there is no identification of the template concept in c++ with that in nim
19:34:04FromDiscord<nikki> maybe nim generics are similar ish, but, not worth comparing that much imo. better to study each for its own independent definition / usage
19:35:34FromDiscord<nikki> but yeah templates and macros let you program the compiler's manipulation of parsed structure of your source code, basically
19:35:52FromDiscord<For Your Health> That is really cool. Seems very powerful.
19:36:09FromDiscord<nikki> if you want to see a specific usage that i benefited from just a few days ago
19:36:37FromDiscord<nikki> i've been working on a game engine kinda thing that runs natively, but also in the browser through nim->c->wasm->...
19:36:45FromDiscord<nikki> i wanted to call out to http://google.github.io/incremental-dom/ to render DOM elements
19:37:00FromDiscord<For Your Health> That sounds right up my alley. I'll take a look
19:37:31FromDiscord<nikki> oh i just have a private repo with my engine haha, i just started working on it a couple weeks ago porting some c++ work
19:37:32FromDiscord<nikki> anyways
19:37:56FromDiscord<nikki> in that link -- you can see how this lib has you write elementOpen(...); child(); child(); elementClose(...); right?
19:38:18FromDiscord<For Your Health> Yeah
19:38:50FromDiscord<nikki> i just had a macro that let me write a more concise syntax for it
19:38:52FromDiscord<nikki> https://media.discordapp.net/attachments/371759389889003532/776169087800836166/unknown.png
19:39:14FromDiscord<nikki> the `elem` macro basically takes a html node name, and a bunch of attributes, and the body has code to run within it, which is usually some logic plus child elements
19:39:53FromDiscord<nikki> in this case it's a macro, not a template. and it iterates through the ast and produces the code required. it sounds more complicated than it really is
19:40:26FromDiscord<For Your Health> Yeah I've seen some macro code and that is way over my head currently.
19:40:48FromDiscord<nikki> https://media.discordapp.net/attachments/371759389889003532/776169569701986324/unknown.png
19:41:02FromDiscord<nikki> here's for example what that last ui.box: ui.text "fps: " ... expands out to
19:41:36FromDiscord<For Your Health> That's cool. Definitely saves a lot of typing!
19:41:58FromDiscord<nikki> yeah a big thing is preventing mistakes, and also allowing you to change the api used underneath, but keep the same api
19:42:18FromDiscord<nikki> like, i may be interested in making a native ui layer that implements this, after having prototyped uis in the web/dom
19:43:43FromDiscord<nikki> https://gist.github.com/nikki93/d33d38ffe03dd0cf41d523cb1bc28ed3
19:43:45FromDiscord<nikki> this is the macro itself
19:43:48FromDiscord<For Your Health> I'll have to dedicate some time to learning more about macros and templates. It always seems to be the answer to various problems I have.
19:44:15FromDiscord<nikki> i was following the "nim in action" book to learn nim, and the metaprogramming chapter in the end was good
19:44:47FromDiscord<nikki> the `nnkStmtList` etc. is me checking "hey is this a statement list? oh ok let's put that there then"
19:46:09FromDiscord<For Your Health> I might have to break down and buy that book. I just haven't because I am flip flopping a lot on languages
19:46:46FromDiscord<nikki> yeah i had a language exploration phase in the last 8 months. went through go, c++, zig, some rust
19:47:04FromDiscord<nikki> i checked nim out early in that and a benchmark of recursive fib showed it to be slow, turns out i didn't enable d:danger and then it was fast or faster than the others
19:47:04FromDiscord<For Your Health> I'm in language exploration hell right now
19:47:15FromDiscord<nikki> in any case, i think the book is very worth it
19:47:40FromDiscord<nikki> nim in particular has had the best combo among those
19:47:57FromDiscord<nikki> re: c++; i'd written it a ton for a while. i was just picking up and digging into the more modern c++ concepts
19:48:04FromDiscord<For Your Health> Yeah nim seems like a solid language.
19:48:49FromDiscord<For Your Health> I hear the c and c++ interop is really good and that is something I am interested in
19:49:38FromDiscord<Daniel> now when you mention language exploration phase, i am still going through that phase, ...for me as a begginer in programing, without any legacy or influence from any other language, so far nim seems like good choice...however i am not completely sure if i wil be able to create what i set a goal, windows desktop application with gui
19:50:06FromDiscord<Daniel> (edit) "now when you mention language exploration phase, i am still going through that phase, ...for me as a begginer in programing, without any legacy or influence from any other language, so far nim seems like good choice...however i am not completely sure if i wil be able to create what i set ... a" added "as"
19:50:09FromDiscord<nikki> @Daniel in the beginning you kinda just have to keep doing stuff. any thing you do is productive and you learn from
19:50:22FromDiscord<nikki> don't psych out on specific goals and whether they will be achieved or not
19:50:34FromDiscord<nikki> you may discover that you like building something else along the way, who knows ๐Ÿ™‚
19:50:35FromDiscord<haxscramper> Automatic C++ interop is not really good, but if you want to wrap something manually this is quite easy - for example https://discord.com/channels/371759389889003530/371759389889003532/757703554734751754
19:50:59FromDiscord<nikki> and @For Your Health yeah the c++ interop is among the best. i was able to wrap entt which is template heavy
19:51:16FromDiscord<haxscramper> By C++ I mean specifically - classes and template hell like stdlib
19:51:22FromDiscord<nikki> the main reason it works out is it compiles to c or c++ so you're just interacting among structures within the same language
19:51:29FromDiscord<nikki> vs. using ffi, where templates just don't exist
19:52:38FromDiscord<For Your Health> I'll definitely be doing more research into that when I get around to it. I am interested in doing game dev and using the bullet physics engine
19:52:45FromDiscord<nikki> also looking at the generated c is really instructive when learning or using nim
19:52:59FromDiscord<nikki> great way to just know what something does imo
19:53:22FromDiscord<nikki> wrapping bullet should be fine. it's mostly news and method calls
19:58:29*xet7 joined #nim
20:07:19*xet7 quit (Remote host closed the connection)
20:20:01FromDiscord<shadow.> !eval echo {1: 2, 3: 4}.type.name
20:20:05NimBotCompile failed: /usercode/in.nim(1, 23) Error: undeclared field: 'name'
20:20:14FromDiscord<shadow.> !eval echo {1: 2, 3: 4}.type
20:20:17NimBotarray[0..1, (int, int)]
20:20:47FromDiscord<shadow.> !eval import tables; echo {1: 2}.toTable.type
20:20:49NimBotTable[system.int, system.int]
20:23:30FromDiscord<shadow.> !eval echo (44100 500).type
20:23:32NimBotCompile failed: /usercode/in.nim(1, 13) Error: invalid token: (\29)
20:23:47FromDiscord<shadow.> !eval echo (44100 \ 500).type
20:23:49NimBotCompile failed: /usercode/in.nim(1, 14) Error: invalid token: (\29)
20:23:53FromDiscord<shadow.> hmm
20:24:37miprisome non-ASCII is making it through to IRC
20:24:53disrupteki don't believe it.
20:24:56*Kaivo joined #nim
20:27:19Zevvwhat's this IRC anyway
20:28:31*xet7 joined #nim
20:39:28*natrys quit (Quit: natrys)
20:41:03*xet7 quit (Remote host closed the connection)
20:41:31*xet7 joined #nim
20:43:42FromDiscord<shadow.> lmfao
20:44:01FromDiscord<shadow.> if anyone's experienced with the wave format, how do you read how many sample per channel there are in the header?
20:48:31*narimiran quit (Ping timeout: 246 seconds)
20:56:48FromDiscord<shadow.> https://media.discordapp.net/attachments/371759389889003532/776188700094758982/unknown.png
20:56:49FromDiscord<shadow.> hmm-
20:56:54FromDiscord<shadow.> thats the entire error msg
20:58:50solitudesfadd var to argument
21:03:43*leorize quit (Ping timeout: 240 seconds)
21:04:16disruptekdon't do it.
21:06:03*leorize joined #nim
21:07:36FromDiscord<shadow.> ah yes var fixed it ty
21:07:38FromDiscord<shadow.> wait why dont do it?
21:07:48disruptekyou don't know where its been.
21:07:53FromDiscord<shadow.> lmao
21:08:25FromDiscord<shadow.> how can i make an empty sequence literal?
21:08:26FromDiscord<shadow.> but with a type
21:08:28FromDiscord<shadow.> if that makes sense?
21:08:48FromDiscord<shadow.> like `@[]: seq[float64]`
21:09:14FromDiscord<ElegantBeef> `var t: seq[float64] = @[]`
21:09:18ForumUpdaterBotNew thread by Peter: Deprecated operators for DateTime private members, see https://forum.nim-lang.org/t/7075
21:09:29FromDiscord<shadow.> is there any way to do it without making a var is what i meant
21:09:46FromDiscord<shadow.> wait nvm i think im being dumb
21:09:56FromDiscord<ElegantBeef> `newSeq[:T](0)`?
21:10:17FromDiscord<ElegantBeef> guess the `:` is redundant
21:12:10FromDiscord<shadow.> ah ok
21:12:11FromDiscord<shadow.> ty
21:17:15Zoom[m]<FromDiscord "<shadow.> if anyone's experience"> Eh, Samplerate at offset 24?
21:18:24FromDiscord<shadow.> i believe it was samplesPerChannel i was looking for
21:18:39FromDiscord<shadow.> and i think? its at offset 40
21:19:56FromDiscord<shadow.> i just did `thatNumber div channelCount 8 / bitsPerSample`
21:20:01FromDiscord<shadow.> and i think its correct?
21:20:07disruptekbananas.
21:20:42FromDiscord<shadow.> lol what
21:23:08FromDiscord<nikki> for the var seq case -- `var t: seq[float64]` is enough (no need for the `= @[]` even)
21:23:22FromDiscord<shadow.> oh it auto-initializes to empty im guessing?
21:23:30FromDiscord<nikki> it's zero initialized just like everything else
21:23:33FromDiscord<shadow.> ahh ok
21:23:42FromDiscord<nikki> a seq consists of a data pointer and a capacity and a length
21:23:59FromDiscord<nikki> if the data pointer is `nil` (which is what it is when zero-initialized) it's considered an empty seq by all of the seq procs
21:24:04Zoom[m]Oh, wait, weren't the channels supposed to be interleaved? I need a refresher.
21:24:31FromDiscord<nikki> in nim the idiomatic thing seems to be to consider the zero-initialized case a valid empty value, for most data structures
21:24:35disrupteki'm only going to say this once:
21:24:46disruptekbananas are yellow fruits, but not all yellow fruits are bananas.
21:25:04FromDiscord<nikki> have u personally asked every yellow fruit how it feels
21:25:04disruptekthink about it.
21:26:58*xet7_ joined #nim
21:27:29*xet7 quit (Read error: Connection reset by peer)
21:28:06*xet7_ is now known as xet7
21:28:24FromDiscord<shadow.> hmm
21:28:26FromDiscord<shadow.> you're not wrong
21:28:43FromDiscord<nikki> @shadow. do you have lsp set up?
21:28:55FromDiscord<nikki> if so you can try this `var s: seq[int]; s.add(3)`
21:28:59FromDiscord<nikki> then go to defn on the `add`
21:29:13FromDiscord<nikki> and see how -- it considers the `nil` data pointer for a seq as a valid case
21:29:45FromDiscord<shadow.> lmao all im trying to do is set a `seq[seq[float64]] to @[@[], @[]]`
21:29:52FromDiscord<shadow.> i just wound up doing `this.samples = repeat(newSeq[float64](0), 2)`
21:35:16*Vladar quit (Quit: Leaving)
21:37:03*andinus quit (*.net *.split)
21:37:03*junland quit (*.net *.split)
21:37:03*casaca quit (*.net *.split)
21:37:03*nyaayaya quit (*.net *.split)
21:37:03*ForumUpdaterBot quit (*.net *.split)
21:37:03*Onionhammer quit (*.net *.split)
21:37:04*snowolf quit (*.net *.split)
21:37:04*leorize quit (*.net *.split)
21:37:04*opal quit (*.net *.split)
21:37:04*muffindrake quit (*.net *.split)
21:37:04*themoon[m] quit (*.net *.split)
21:37:04*planetis[m] quit (*.net *.split)
21:37:04*JStoker quit (*.net *.split)
21:37:04*mfiano quit (*.net *.split)
21:37:05*Tanger quit (*.net *.split)
21:37:05*tsujp quit (*.net *.split)
21:37:05*nekits07 quit (*.net *.split)
21:37:05*deepend quit (*.net *.split)
21:37:05*blueberrypie quit (*.net *.split)
21:37:05*kitech1 quit (*.net *.split)
21:37:05*cyraxjoe quit (*.net *.split)
21:37:05*zedeus quit (*.net *.split)
21:37:05*acidx quit (*.net *.split)
21:37:05*tribly quit (*.net *.split)
21:37:05*dsrw_ quit (*.net *.split)
21:37:05*lritter quit (*.net *.split)
21:37:05*bacterio quit (*.net *.split)
21:37:05*sagax quit (*.net *.split)
21:37:05*CcxWrk quit (*.net *.split)
21:37:05*idf quit (*.net *.split)
21:37:06*ache-of-head[m] quit (*.net *.split)
21:37:06*leorize[m]1 quit (*.net *.split)
21:37:06*hnOsmium0001[m] quit (*.net *.split)
21:37:06*lnxw37d4 quit (*.net *.split)
21:37:06*pulux quit (*.net *.split)
21:37:07*EastByte quit (*.net *.split)
21:37:07*GaveUp quit (*.net *.split)
21:37:07*Araq quit (*.net *.split)
21:37:07*Zevv quit (*.net *.split)
21:37:07*cornfeedhobo quit (*.net *.split)
21:37:07*cow-orker quit (*.net *.split)
21:37:07*shodan45 quit (*.net *.split)
21:37:07*ChanServ quit (*.net *.split)
21:37:07*jrhawley[m] quit (*.net *.split)
21:37:07*ee7[m] quit (*.net *.split)
21:37:07*nikki93[m] quit (*.net *.split)
21:37:07*reversem3 quit (*.net *.split)
21:37:07*BitPuffin quit (*.net *.split)
21:37:08*Zoom[m] quit (*.net *.split)
21:37:08*jholland__ quit (*.net *.split)
21:37:08*notchris quit (*.net *.split)
21:37:08*leorize[m] quit (*.net *.split)
21:37:08*GitterIntegratio quit (*.net *.split)
21:37:08*apahl quit (*.net *.split)
21:37:08*gangstacat quit (*.net *.split)
21:37:08*Prestige quit (*.net *.split)
21:37:08*njoseph quit (*.net *.split)
21:37:08*Jjp137 quit (*.net *.split)
21:37:08*nikita` quit (*.net *.split)
21:37:08*surma quit (*.net *.split)
21:37:08*ormiret quit (*.net *.split)
21:37:09*Yardanico quit (*.net *.split)
21:37:09*krux02 quit (*.net *.split)
21:37:09*ldlework quit (*.net *.split)
21:37:09*idxu quit (*.net *.split)
21:37:09*l1x quit (*.net *.split)
21:37:09*rayman22201 quit (*.net *.split)
21:37:09*nikki93 quit (*.net *.split)
21:37:09*Jitty[m] quit (*.net *.split)
21:37:09*lum[m] quit (*.net *.split)
21:37:09*MTRNord[m] quit (*.net *.split)
21:37:10*mipri quit (*.net *.split)
21:37:10*hnOsmium0001 quit (*.net *.split)
21:37:10*kinkinkijkin quit (*.net *.split)
21:37:10*guelosk[m] quit (*.net *.split)
21:37:10*pbb quit (*.net *.split)
21:37:10*hyiltiz quit (*.net *.split)
21:37:10*clemens3 quit (*.net *.split)
21:37:10*stefantalpalaru quit (*.net *.split)
21:37:10*jonjitsu[m] quit (*.net *.split)
21:37:10*brainbomb[m] quit (*.net *.split)
21:37:10*Helios quit (*.net *.split)
21:37:10*Avatarfighter[m] quit (*.net *.split)
21:37:10*solitudesf quit (*.net *.split)
21:37:10*blackbeard420 quit (*.net *.split)
21:37:10*livcd quit (*.net *.split)
21:37:10*revere quit (*.net *.split)
21:37:11*disbot quit (*.net *.split)
21:37:11*federico3 quit (*.net *.split)
21:37:11*shashlick quit (*.net *.split)
21:37:11*Kaivo quit (*.net *.split)
21:37:11*rockcavera quit (*.net *.split)
21:37:11*tane quit (*.net *.split)
21:37:11*supakeen quit (*.net *.split)
21:37:11*vesper11 quit (*.net *.split)
21:37:11*jxy quit (*.net *.split)
21:37:11*antranigv quit (*.net *.split)
21:37:11*jmiven quit (*.net *.split)
21:37:11*hpyc9 quit (*.net *.split)
21:37:11*fowl quit (*.net *.split)
21:37:11*sirn quit (*.net *.split)
21:37:11*Adeon quit (*.net *.split)
21:37:11*ryuzak1[m] quit (*.net *.split)
21:37:12*vqrs quit (*.net *.split)
21:37:12*qwertfisch quit (*.net *.split)
21:37:12*lmariscal quit (*.net *.split)
21:37:12*FromGitter quit (*.net *.split)
21:37:12*Axiomatic quit (*.net *.split)
21:37:12*wowi42_ quit (*.net *.split)
21:37:12*literal_ quit (*.net *.split)
21:37:12*def- quit (*.net *.split)
21:37:12*Oddmonger quit (*.net *.split)
21:37:12*sknebel quit (*.net *.split)
21:37:12*ehmry quit (*.net *.split)
21:37:12*lum quit (*.net *.split)
21:37:12*hoek quit (*.net *.split)
21:37:12*koltrast quit (*.net *.split)
21:37:12*unclechu quit (*.net *.split)
21:37:12*Northstrider[m] quit (*.net *.split)
21:37:13*synthmeat quit (*.net *.split)
21:37:13*Jesin quit (*.net *.split)
21:37:13*zielmicha__ quit (*.net *.split)
21:37:13*mwbrown quit (*.net *.split)
21:37:13*dom96 quit (*.net *.split)
21:37:13*WilhelmVonWeiner quit (*.net *.split)
21:37:13*FromDiscord quit (*.net *.split)
21:37:13*Amun_Ra quit (*.net *.split)
21:37:13*iwq quit (*.net *.split)
21:37:13*dgb quit (*.net *.split)
21:37:13*yumaikas quit (*.net *.split)
21:37:13*kaliy quit (*.net *.split)
21:37:13*so quit (*.net *.split)
21:37:13*disruptek quit (*.net *.split)
21:37:13*xet7 quit (*.net *.split)
21:37:13*mmohammadi9812 quit (*.net *.split)
21:37:13*Cthalupa quit (*.net *.split)
21:37:13*suchasurge quit (*.net *.split)
21:37:13*D_ quit (*.net *.split)
21:37:13*Q-Master quit (*.net *.split)
21:37:13*Lord_Nightmare quit (*.net *.split)
21:37:13*voltist quit (*.net *.split)
21:37:13*mal`` quit (*.net *.split)
21:37:14*Cadey quit (*.net *.split)
21:37:14*waleee-cl quit (*.net *.split)
21:37:14*beatmox quit (*.net *.split)
21:37:14*d10n-work quit (*.net *.split)
21:37:14*stever quit (*.net *.split)
21:37:14*euantorano quit (*.net *.split)
21:37:14*npgm_ quit (*.net *.split)
21:37:14*r4vi quit (*.net *.split)
21:37:14*matlock quit (*.net *.split)
21:37:14*kwilczynski quit (*.net *.split)
21:37:14*skelett quit (*.net *.split)
21:37:14*crem quit (*.net *.split)
21:37:14*vicfred quit (*.net *.split)
21:37:14*oculuxe quit (*.net *.split)
21:37:14*oprypin quit (*.net *.split)
21:37:14*voidpi quit (*.net *.split)
21:37:15*jken quit (*.net *.split)
21:37:15*screens__ quit (*.net *.split)
21:37:15*lain quit (*.net *.split)
21:37:15*drewr quit (*.net *.split)
21:37:15*Ekho quit (*.net *.split)
21:37:40*xet7 joined #nim
21:37:40*leorize joined #nim
21:37:40*Kaivo joined #nim
21:37:40*hnOsmium0001 joined #nim
21:37:40*apahl joined #nim
21:37:40*rockcavera joined #nim
21:37:40*vicfred joined #nim
21:37:40*tane joined #nim
21:37:40*waleee-cl joined #nim
21:37:40*mmohammadi9812 joined #nim
21:37:40*synthmeat joined #nim
21:37:40*supakeen joined #nim
21:37:40*lritter joined #nim
21:37:40*Tanger joined #nim
21:37:40*krux02 joined #nim
21:37:40*solitudesf joined #nim
21:37:40*Jesin joined #nim
21:37:40*jmiven joined #nim
21:37:40*bacterio joined #nim
21:37:40*muffindrake joined #nim
21:37:40*kinkinkijkin joined #nim
21:37:40*gangstacat joined #nim
21:37:40*hpyc9 joined #nim
21:37:40*blackbeard420 joined #nim
21:37:40*Prestige joined #nim
21:37:40*Cthalupa joined #nim
21:37:40*oculuxe joined #nim
21:37:40*beatmox joined #nim
21:37:40*l1x joined #nim
21:37:40*rayman22201 joined #nim
21:37:40*zielmicha__ joined #nim
21:37:40*nikki93 joined #nim
21:37:40*ehmry joined #nim
21:37:40*andinus joined #nim
21:37:40*tsujp joined #nim
21:37:40*mwbrown joined #nim
21:37:40*opal joined #nim
21:37:40*sagax joined #nim
21:37:40*guelosk[m] joined #nim
21:37:40*pbb joined #nim
21:37:40*lmariscal joined #nim
21:37:40*kaliy joined #nim
21:37:40*njoseph joined #nim
21:37:40*Jjp137 joined #nim
21:37:40*vesper11 joined #nim
21:37:40*Zoom[m] joined #nim
21:37:40*dom96 joined #nim
21:37:40*suchasurge joined #nim
21:37:40*ryuzak1[m] joined #nim
21:37:40*lum joined #nim
21:37:40*hoek joined #nim
21:37:40*jholland__ joined #nim
21:37:40*notchris joined #nim
21:37:40*d10n-work joined #nim
21:37:40*nikita` joined #nim
21:37:40*stever joined #nim
21:37:40*euantorano joined #nim
21:37:40*surma joined #nim
21:37:40*npgm_ joined #nim
21:37:40*r4vi joined #nim
21:37:40*Adeon joined #nim
21:37:40*fowl joined #nim
21:37:40*sirn joined #nim
21:37:40*matlock joined #nim
21:37:40*kwilczynski joined #nim
21:37:40*ormiret joined #nim
21:37:40*junland joined #nim
21:37:40*nekits07 joined #nim
21:37:40*FromGitter joined #nim
21:37:40*oprypin joined #nim
21:37:40*ache-of-head[m] joined #nim
21:37:40*WilhelmVonWeiner joined #nim
21:37:40*D_ joined #nim
21:37:40*EastByte joined #nim
21:37:40*Q-Master joined #nim
21:37:40*FromDiscord joined #nim
21:37:40*hyiltiz joined #nim
21:37:40*clemens3 joined #nim
21:37:40*deepend joined #nim
21:37:40*blueberrypie joined #nim
21:37:40*Axiomatic joined #nim
21:37:40*stefantalpalaru joined #nim
21:37:40*koltrast joined #nim
21:37:40*Yardanico joined #nim
21:37:40*casaca joined #nim
21:37:40*kitech1 joined #nim
21:37:40*jrhawley[m] joined #nim
21:37:40*lum[m] joined #nim
21:37:40*Jitty[m] joined #nim
21:37:40*jonjitsu[m] joined #nim
21:37:40*nikki93[m] joined #nim
21:37:40*ee7[m] joined #nim
21:37:40*GitterIntegratio joined #nim
21:37:40*leorize[m] joined #nim
21:37:40*unclechu joined #nim
21:37:40*MTRNord[m] joined #nim
21:37:40*Avatarfighter[m] joined #nim
21:37:40*BitPuffin joined #nim
21:37:40*leorize[m]1 joined #nim
21:37:40*Helios joined #nim
21:37:40*planetis[m] joined #nim
21:37:40*lnxw37d4 joined #nim
21:37:40*reversem3 joined #nim
21:37:40*brainbomb[m] joined #nim
21:37:40*hnOsmium0001[m] joined #nim
21:37:40*themoon[m] joined #nim
21:37:40*JStoker joined #nim
21:37:40*Lord_Nightmare joined #nim
21:37:40*mfiano joined #nim
21:37:40*cyraxjoe joined #nim
21:37:40*GaveUp joined #nim
21:37:40*wowi42_ joined #nim
21:37:40*ldlework joined #nim
21:37:40*jxy joined #nim
21:37:40*zedeus joined #nim
21:37:40*voltist joined #nim
21:37:40*idxu joined #nim
21:37:40*voidpi joined #nim
21:37:40*acidx joined #nim
21:37:40*skelett joined #nim
21:37:40*nyaayaya joined #nim
21:37:40*mal`` joined #nim
21:37:40*vqrs joined #nim
21:37:40*ForumUpdaterBot joined #nim
21:37:40*snowolf joined #nim
21:37:40*Onionhammer joined #nim
21:37:40*tribly joined #nim
21:37:40*jken joined #nim
21:37:40*Araq joined #nim
21:37:40*screens__ joined #nim
21:37:40*Amun_Ra joined #nim
21:37:40*CcxWrk joined #nim
21:37:40*idf joined #nim
21:37:40*dsrw_ joined #nim
21:37:40*Zevv joined #nim
21:37:40*antranigv joined #nim
21:37:40*mipri joined #nim
21:37:40*cow-orker joined #nim
21:37:40*qwertfisch joined #nim
21:37:40*lain joined #nim
21:37:40*cornfeedhobo joined #nim
21:37:40*disruptek joined #nim
21:37:40*literal_ joined #nim
21:37:40*def- joined #nim
21:37:40*Northstrider[m] joined #nim
21:37:40*iwq joined #nim
21:37:40*crem joined #nim
21:37:40*dgb joined #nim
21:37:40*livcd joined #nim
21:37:40*shodan45 joined #nim
21:37:40*revere joined #nim
21:37:40*pulux joined #nim
21:37:40*Oddmonger joined #nim
21:37:40*drewr joined #nim
21:37:40*Cadey joined #nim
21:37:40*so joined #nim
21:37:40*Ekho joined #nim
21:37:40*disbot joined #nim
21:37:40*federico3 joined #nim
21:37:40*shashlick joined #nim
21:37:40*yumaikas joined #nim
21:37:40*sknebel joined #nim
21:37:48*nisstyre quit (Max SendQ exceeded)
21:37:48*d10n quit (Max SendQ exceeded)
21:38:00*d10n joined #nim
21:38:00*d10n quit (Changing host)
21:38:00*d10n joined #nim
21:38:48*nisstyre joined #nim
21:40:20*andinus quit (*.net *.split)
21:40:20*junland quit (*.net *.split)
21:40:21*casaca quit (*.net *.split)
21:40:21*nyaayaya quit (*.net *.split)
21:40:21*ForumUpdaterBot quit (*.net *.split)
21:40:21*Onionhammer quit (*.net *.split)
21:40:21*snowolf quit (*.net *.split)
21:40:23*muffindrake quit (*.net *.split)
21:40:24*themoon[m] quit (*.net *.split)
21:40:24*planetis[m] quit (*.net *.split)
21:40:24*JStoker quit (*.net *.split)
21:40:24*mfiano quit (*.net *.split)
21:40:27*dom96 quit (Ping timeout: 266 seconds)
21:40:32*EastByte quit (*.net *.split)
21:40:32*GaveUp quit (*.net *.split)
21:40:32*Araq quit (*.net *.split)
21:40:32*Zevv quit (*.net *.split)
21:40:32*cornfeedhobo quit (*.net *.split)
21:40:32*cow-orker quit (*.net *.split)
21:40:32*shodan45 quit (*.net *.split)
21:41:01*muffindrake joined #nim
21:41:01*planetis[m] joined #nim
21:41:01*themoon[m] joined #nim
21:41:01*JStoker joined #nim
21:41:01*mfiano joined #nim
21:41:08*EastByte joined #nim
21:41:08*GaveUp joined #nim
21:41:08*Araq joined #nim
21:41:08*Zevv joined #nim
21:41:08*cow-orker joined #nim
21:41:08*cornfeedhobo joined #nim
21:41:08*shodan45 joined #nim
21:41:18*JStoker quit (Max SendQ exceeded)
21:41:20*JStoker joined #nim
21:41:46*d10n quit (*.net *.split)
21:41:46*Tanger quit (*.net *.split)
21:41:46*tsujp quit (*.net *.split)
21:41:46*nekits07 quit (*.net *.split)
21:41:46*deepend quit (*.net *.split)
21:41:46*blueberrypie quit (*.net *.split)
21:41:46*kitech1 quit (*.net *.split)
21:41:46*cyraxjoe quit (*.net *.split)
21:41:46*zedeus quit (*.net *.split)
21:41:46*acidx quit (*.net *.split)
21:41:46*tribly quit (*.net *.split)
21:41:46*dsrw_ quit (*.net *.split)
21:41:46*andinus joined #nim
21:41:46*junland joined #nim
21:41:46*casaca joined #nim
21:41:46*nyaayaya joined #nim
21:41:46*ForumUpdaterBot joined #nim
21:41:46*Onionhammer joined #nim
21:41:46*snowolf joined #nim
21:41:50*nisstyre quit (*.net *.split)
21:41:51*lritter quit (*.net *.split)
21:41:51*bacterio quit (*.net *.split)
21:41:51*sagax quit (*.net *.split)
21:41:51*CcxWrk quit (*.net *.split)
21:41:51*idf quit (*.net *.split)
21:41:54*JStoker quit (*.net *.split)
21:41:54*ache-of-head[m] quit (*.net *.split)
21:41:54*leorize[m]1 quit (*.net *.split)
21:41:54*hnOsmium0001[m] quit (*.net *.split)
21:41:54*lnxw37d4 quit (*.net *.split)
21:41:54*pulux quit (*.net *.split)
21:41:55*Jesin quit (Quit: Leaving)
21:41:59*dom96 joined #nim
21:42:00*dom96 quit (Changing host)
21:42:00*dom96 joined #nim
21:42:13*d10n joined #nim
21:42:13*Tanger joined #nim
21:42:13*nekits07 joined #nim
21:42:13*deepend joined #nim
21:42:13*blueberrypie joined #nim
21:42:13*kitech1 joined #nim
21:42:13*cyraxjoe joined #nim
21:42:13*zedeus joined #nim
21:42:13*acidx joined #nim
21:42:13*tribly joined #nim
21:42:13*dsrw_ joined #nim
21:42:16*nisstyre joined #nim
21:42:16*lritter joined #nim
21:42:16*bacterio joined #nim
21:42:16*sagax joined #nim
21:42:16*CcxWrk joined #nim
21:42:16*idf joined #nim
21:42:33*JStoker joined #nim
21:42:33*ache-of-head[m] joined #nim
21:42:33*leorize[m]1 joined #nim
21:42:33*lnxw37d4 joined #nim
21:42:33*hnOsmium0001[m] joined #nim
21:42:33*pulux joined #nim
21:42:35*nisstyre quit (Max SendQ exceeded)
21:42:43*hnOsmium0001[m] quit (Max SendQ exceeded)
21:43:14*leorize quit (*.net *.split)
21:43:14*opal quit (*.net *.split)
21:43:35*nisstyre joined #nim
21:43:41*tsujp joined #nim
21:43:45*nikki93[m] quit (Ping timeout: 246 seconds)
21:43:45*Jesin joined #nim
21:43:47*Jitty[m] quit (Ping timeout: 244 seconds)
21:43:47*lum[m] quit (Ping timeout: 244 seconds)
21:43:53*planetis[m] quit (Ping timeout: 260 seconds)
21:44:13*hnOsmium0001 quit (Ping timeout: 244 seconds)
21:44:25*ache-of-head[m] quit (Ping timeout: 240 seconds)
21:44:26*leorize[m]1 quit (Ping timeout: 240 seconds)
21:44:26*lnxw37d4 quit (Ping timeout: 240 seconds)
21:44:37*mwbrown quit (Ping timeout: 264 seconds)
21:44:44*guelosk[m] quit (Ping timeout: 244 seconds)
21:44:44*jonjitsu[m] quit (Ping timeout: 244 seconds)
21:44:45*brainbomb[m] quit (Ping timeout: 244 seconds)
21:44:45*Helios quit (Ping timeout: 244 seconds)
21:44:45*Avatarfighter[m] quit (Ping timeout: 244 seconds)
21:44:48*jrhawley[m] quit (Ping timeout: 246 seconds)
21:44:48*ee7[m] quit (Ping timeout: 246 seconds)
21:44:48*reversem3 quit (Ping timeout: 246 seconds)
21:44:48*BitPuffin quit (Ping timeout: 246 seconds)
21:44:49*MTRNord[m] quit (Ping timeout: 244 seconds)
21:44:49*unclechu quit (Ping timeout: 246 seconds)
21:44:52*deepend quit (Quit: o/)
21:44:53*ryuzak1[m] quit (Ping timeout: 272 seconds)
21:44:57*Zoom[m] quit (Ping timeout: 268 seconds)
21:44:57*leorize[m] quit (Ping timeout: 268 seconds)
21:44:57*GitterIntegratio quit (Ping timeout: 268 seconds)
21:45:02*themoon[m] quit (Ping timeout: 260 seconds)
21:45:17*deepend joined #nim
21:45:36*mwbrown joined #nim
21:45:44*leorize joined #nim
21:45:44*opal joined #nim
21:45:52*d10n-work quit (Ping timeout: 260 seconds)
21:46:35*PMunch joined #nim
21:46:45*solitudesf quit (*.net *.split)
21:46:46*blackbeard420 quit (*.net *.split)
21:46:46*livcd quit (*.net *.split)
21:46:46*revere quit (*.net *.split)
21:46:46*disbot quit (*.net *.split)
21:46:46*federico3 quit (*.net *.split)
21:46:46*shashlick quit (*.net *.split)
21:46:49*Kaivo quit (*.net *.split)
21:46:49*rockcavera quit (*.net *.split)
21:46:49*tane quit (*.net *.split)
21:46:49*supakeen quit (*.net *.split)
21:46:49*vesper11 quit (*.net *.split)
21:46:49*jxy quit (*.net *.split)
21:46:49*antranigv quit (*.net *.split)
21:46:53*hoek quit (Ping timeout: 246 seconds)
21:47:07*solitudesf joined #nim
21:47:07*blackbeard420 joined #nim
21:47:07*livcd joined #nim
21:47:07*revere joined #nim
21:47:07*disbot joined #nim
21:47:07*federico3 joined #nim
21:47:07*shashlick joined #nim
21:48:32*jmiven quit (*.net *.split)
21:48:32*hpyc9 quit (*.net *.split)
21:48:32*fowl quit (*.net *.split)
21:48:32*sirn quit (*.net *.split)
21:48:32*Adeon quit (*.net *.split)
21:48:32*vqrs quit (*.net *.split)
21:48:32*qwertfisch quit (*.net *.split)
21:50:05*jmiven joined #nim
21:50:05*hpyc9 joined #nim
21:50:05*Adeon joined #nim
21:50:05*fowl joined #nim
21:50:05*sirn joined #nim
21:50:05*vqrs joined #nim
21:50:05*qwertfisch joined #nim
21:50:53*Kaivo joined #nim
21:50:53*rockcavera joined #nim
21:50:53*tane joined #nim
21:50:53*supakeen joined #nim
21:50:53*vesper11 joined #nim
21:50:53*jxy joined #nim
21:50:53*antranigv joined #nim
21:51:27*d10n-work joined #nim
21:51:36*hnOsmium0001 joined #nim
21:51:39*lmariscal quit (*.net *.split)
21:51:39*FromGitter quit (*.net *.split)
21:51:39*Axiomatic quit (*.net *.split)
21:51:39*wowi42_ quit (*.net *.split)
21:51:39*literal_ quit (*.net *.split)
21:51:39*def- quit (*.net *.split)
21:51:39*Oddmonger quit (*.net *.split)
21:51:39*sknebel quit (*.net *.split)
21:51:45*synthmeat quit (*.net *.split)
21:51:45*zielmicha__ quit (*.net *.split)
21:51:45*WilhelmVonWeiner quit (*.net *.split)
21:51:45*FromDiscord quit (*.net *.split)
21:51:45*Amun_Ra quit (*.net *.split)
21:51:45*iwq quit (*.net *.split)
21:51:45*dgb quit (*.net *.split)
21:51:45*yumaikas quit (*.net *.split)
21:51:45*kaliy quit (*.net *.split)
21:51:45*so quit (*.net *.split)
21:51:45*disruptek quit (*.net *.split)
21:52:32*hoek joined #nim
21:53:00*synthmeat joined #nim
21:53:00*zielmicha__ joined #nim
21:53:00*kaliy joined #nim
21:53:00*WilhelmVonWeiner joined #nim
21:53:00*FromDiscord joined #nim
21:53:00*Amun_Ra joined #nim
21:53:00*disruptek joined #nim
21:53:00*iwq joined #nim
21:53:00*dgb joined #nim
21:53:00*yumaikas joined #nim
21:53:00*so joined #nim
21:53:05*lmariscal joined #nim
21:53:05*FromGitter joined #nim
21:53:05*Axiomatic joined #nim
21:53:05*wowi42_ joined #nim
21:53:05*literal_ joined #nim
21:53:05*def- joined #nim
21:53:05*Oddmonger joined #nim
21:53:05*sknebel joined #nim
21:53:15*ehmry quit (*.net *.split)
21:53:15*lum quit (*.net *.split)
21:53:15*koltrast quit (*.net *.split)
21:53:15*Northstrider[m] quit (*.net *.split)
21:53:22ForumUpdaterBotNew thread by HJarausch: Nim.cfg, see https://forum.nim-lang.org/t/7076
21:53:24*ehmry joined #nim
21:53:24*lum joined #nim
21:53:24*koltrast joined #nim
21:53:24*Northstrider[m] joined #nim
21:53:42*xet7 quit (*.net *.split)
21:53:42*mmohammadi9812 quit (*.net *.split)
21:53:42*Cthalupa quit (*.net *.split)
21:53:42*suchasurge quit (*.net *.split)
21:53:42*D_ quit (*.net *.split)
21:53:42*Q-Master quit (*.net *.split)
21:53:42*Lord_Nightmare quit (*.net *.split)
21:53:42*voltist quit (*.net *.split)
21:53:42*mal`` quit (*.net *.split)
21:53:43*Cadey quit (*.net *.split)
21:54:03*waleee-cl quit (*.net *.split)
21:54:04*beatmox quit (*.net *.split)
21:54:04*stever quit (*.net *.split)
21:54:04*euantorano quit (*.net *.split)
21:54:04*npgm_ quit (*.net *.split)
21:54:04*r4vi quit (*.net *.split)
21:54:04*matlock quit (*.net *.split)
21:54:04*kwilczynski quit (*.net *.split)
21:54:04*skelett quit (*.net *.split)
21:54:04*crem quit (*.net *.split)
21:54:06*xet7 joined #nim
21:54:06*mmohammadi9812 joined #nim
21:54:06*Cthalupa joined #nim
21:54:06*suchasurge joined #nim
21:54:06*D_ joined #nim
21:54:06*Q-Master joined #nim
21:54:06*Lord_Nightmare joined #nim
21:54:06*voltist joined #nim
21:54:06*mal`` joined #nim
21:54:06*Cadey joined #nim
21:54:12*mmohammadi9812 quit (Max SendQ exceeded)
21:54:30*deepend quit (*.net *.split)
21:54:30*vicfred quit (*.net *.split)
21:54:30*oculuxe quit (*.net *.split)
21:54:30*oprypin quit (*.net *.split)
21:54:30*voidpi quit (*.net *.split)
21:54:30*jken quit (*.net *.split)
21:54:30*screens__ quit (*.net *.split)
21:54:30*lain quit (*.net *.split)
21:54:30*drewr quit (*.net *.split)
21:54:30*Ekho quit (*.net *.split)
21:54:36*Axiomatic quit (Remote host closed the connection)
21:54:44*Axiomatic joined #nim
21:54:46*waleee-cl joined #nim
21:54:46*beatmox joined #nim
21:54:46*stever joined #nim
21:54:46*euantorano joined #nim
21:54:46*npgm_ joined #nim
21:54:46*r4vi joined #nim
21:54:46*matlock joined #nim
21:54:46*kwilczynski joined #nim
21:54:46*skelett joined #nim
21:54:46*crem joined #nim
21:54:55*kwilczynski quit (Max SendQ exceeded)
21:55:09*deepend joined #nim
21:55:09*vicfred joined #nim
21:55:09*oculuxe joined #nim
21:55:09*oprypin joined #nim
21:55:09*voidpi joined #nim
21:55:09*jken joined #nim
21:55:09*screens__ joined #nim
21:55:09*lain joined #nim
21:55:09*drewr joined #nim
21:55:09*Ekho joined #nim
21:55:18*Ekho quit (Max SendQ exceeded)
21:55:44*d10n-work quit (Ping timeout: 240 seconds)
21:56:04*hnOsmium0001 quit (Ping timeout: 240 seconds)
21:56:44*hoek quit (Ping timeout: 240 seconds)
21:57:05FromDiscord<notchris> pears are the best fruit tbh
21:57:32*waleee-cl quit (Ping timeout: 260 seconds)
21:57:32*npgm_ quit (Ping timeout: 260 seconds)
21:57:32*matlock quit (Ping timeout: 260 seconds)
21:57:33*so quit (Max SendQ exceeded)
21:57:45*hnOsmium0001 joined #nim
21:58:26*hoek joined #nim
21:59:26*d10n-work joined #nim
22:00:33mipri(!) independent fact checkers have confirmed that tomatoes are the best fruit. Click here to learn more.
22:01:17*waleee-cl joined #nim
22:01:25*nikki93[m] joined #nim
22:01:39*matlock joined #nim
22:01:48FromDiscord<notchris> Tomatoes are like, barely a fruit
22:02:14disruptektomatoes are the original switch hitters.
22:02:38*kwilczynski_ joined #nim
22:02:43*so joined #nim
22:03:09*lum[m] joined #nim
22:03:09*Jitty[m] joined #nim
22:03:23*npgm_ joined #nim
22:03:32FromDiscord<notchris> I feel like tomatoes have no place on sandwiches, they feel awkward
22:03:59*Ekho joined #nim
22:04:20mipriName a fruit that you'd prefer to find on a sandwich.
22:04:51mipriwant some apple slices? orange rind? some melon next to your roast beef?
22:04:55*kwilczynski_ is now known as kwilczynski
22:05:40FromDiscord<notchris> I donโ€™t want any fruits on a sandwich, also turkey > roast beef
22:05:41FromDiscord<Daniel> perhaps none of the fruit should be on a sandwich?
22:05:58miprithe proper context of your complaints with the tomato, is that the tomato is the only contender for this position at all.
22:06:11FromDiscord<notchris> Well...youโ€™ve got me there
22:06:49FromDiscord<Daniel> whats the criteria to be a contender?
22:07:18FromDiscord<notchris> Taste good and not be awkward
22:07:42miprithere are some double entres there if you look for them.
22:08:01*planetis[m] joined #nim
22:08:44FromDiscord<Daniel> onion, corn, salad, garlic even
22:08:57FromDiscord<Daniel> this is now #offtopic
22:09:22*Helios joined #nim
22:09:36FromDiscord<notchris> Well, we all eat sandwiches I assume and nim is relatable in some ways to a sandwich
22:12:07*tane quit (Quit: Leaving)
22:12:46*Zoom[m] joined #nim
22:12:54*leorize[m] joined #nim
22:13:54*guelosk[m] joined #nim
22:13:54*jonjitsu[m] joined #nim
22:13:55*brainbomb[m] joined #nim
22:14:25*themoon[m] joined #nim
22:14:32*lnxw37d4 joined #nim
22:15:15*ee7[m] joined #nim
22:15:15*jrhawley[m] joined #nim
22:17:13*Avatarfighter[m] joined #nim
22:18:30*reversem3 joined #nim
22:18:33*BitPuffin joined #nim
22:19:30*unclechu joined #nim
22:21:06FromDiscord<ElegantBeef> Peppers are good on a sandwich
22:23:31*hnOsmium0001[m] joined #nim
22:24:16*leorize[m]1 joined #nim
22:24:52*ache-of-head[m] joined #nim
22:27:57FromDiscord<shadow.> bread is good on a sandwich
22:28:39*MTRNord[m] joined #nim
22:33:46*mmohammadi9812 joined #nim
22:42:20FromDiscord<shadow.> !eval echo [0, 1].type
22:42:23NimBotarray[0..1, int]
22:42:51miprinimble install inim and you can ask these questions locally just as easily
22:43:17PrestigeHas anyone worked on a treesitter grammar for Nim?
22:43:32PMunchI think someone did, yeah
22:44:02PrestigeI'm looking into using treesitter for nvim, would like to use it for Nim as well
22:44:02PMunchPrestige, something like this? https://github.com/genotrance/nimtreesitter
22:44:26PrestigeHm this says it's a wrapper, I don't think it's a grammar
22:44:50disrupteki don't think anyone has written a grammar.
22:45:09disruptekbut, shashlick is intimately familiar with treesitter.
22:45:48PrestigeI wonder if it'd be terribly hard to implement
22:46:30FromDiscord<shadow.> hmm
22:46:38FromDiscord<shadow.> can you use stream.write() and specify endianess?
22:46:48disruptekno, chucklehead.
22:47:00FromDiscord<shadow.> chucklehead
22:47:12FromDiscord<shadow.> should i just cast to a byte array and reverse then
22:48:21disrupteki don't care.
22:49:25disruptekshashlick: think nimble could be fixed so i can run gittyup tests?
22:49:44disrupteki could maybe make a PR if it's not much trouble.
22:49:59disruptekelse i will just wait for other people to fix it.
22:51:03PMunchHmm, I wonder if I can use the Kiwi cassowary solver for layouts in PiMo...
22:51:14PMunchMight be worth a try
22:54:43*PMunch quit (Quit: leaving)
23:06:04FromDiscord<nikki> PMunch: is this layouts for a ui lib?
23:06:19FromDiscord<nikki> if you're interested in flexbox layouts like in css and react native and whatnot you could try https://yogalayout.com/
23:06:31FromDiscord<nikki> flexbox impl with pure C api
23:07:34FromDiscord<nikki> https://github.com/facebook/yoga/blob/master/yoga/Yoga.h
23:07:35FromDiscord<nikki> is the api
23:07:46FromDiscord<Daniel> what about nuklear?
23:08:22FromDiscord<nikki> nuklear also does rendering and events and whatnot, and i'm not sure how complete its layout impl is
23:09:31FromDiscord<Daniel> i just discovered nuklear 2 days ago, when was searching for gui for my app
23:10:13FromDiscord<nikki> if you want the app to be end-user-facing, i'd recommend using qt, dom, ... or sth. that a lot of actual apps use. but maaaaaybe you could get away with nuklear
23:10:17FromDiscord<nikki> if it's eg internal tooling and so on, anything works
23:10:35FromDiscord<ElegantBeef> Pimo is his planned tiling window manager
23:10:54FromDiscord<nikki> ah word
23:11:04FromDiscord<Daniel> i am still discovering, thank you for suggestions
23:11:23FromDiscord<Daniel> i read qt is licensing mess
23:11:30PrestigeI tried Nuklear last week and nothing was working properly
23:12:04FromDiscord<nikki> totally depends on what your app wants to do and what its for and who its for
23:12:09FromDiscord<ElegantBeef> Pmunch i'd be pretty happy with a simple "pattern" which lets you tell the window manager how to split for the next windows
23:13:22FromDiscord<ElegantBeef> So you have a alterating split with a `hSplit, vSplit` and a `repeat: pattern` for a master/stack split you could do `hsplit, vsplit` with `repeat: vsplit`
23:13:52FromDiscord<ElegantBeef> Although that doesnt work well with your planned layouts afaik
23:16:18*lritter quit (Ping timeout: 260 seconds)
23:17:32FromDiscord<shashlick> @disruptek which specific issue? I've been on an extended break from coding
23:20:38FromDiscord<ElegantBeef> I guess with that way pmunch you can still specify whether floating windows float or take their requested space as long as you make it so they dont disalign the grid
23:22:18*solitudesf quit (Ping timeout: 256 seconds)
23:23:03FromDiscord<ElegantBeef> I also suppose if you have a `hSplitRight` and `hSplitLeft` with the coresponding vSplit that'd allow you to get any layout users would want without much work, just make the pattern and send it
23:23:31ForumUpdaterBotNew thread by Snej: Best practices for packages that bind to C libraries?, see https://forum.nim-lang.org/t/7078
23:23:53FromDiscord<ElegantBeef> Prestige, quick implement my suggestion in nimdow ๐Ÿ˜›
23:25:22PrestigeYeah I think other WMs do something similar
23:25:41FromDiscord<ElegantBeef> I know awesome didnt make it easy to do
23:25:46*xet7 quit (Ping timeout: 256 seconds)
23:26:37FromDiscord<shadow.> how do you do constructors in nim LMASDJNAOUSDASD
23:26:44FromDiscord<shadow.> i looked it up and results are not conclusive-
23:26:55FromDiscord<ElegantBeef> make a proc named `init`
23:26:57FromDiscord<ElegantBeef> (edit) "`init`" => "`init T`"
23:27:13FromDiscord<ElegantBeef> Or if you're super lazy use my packageโ†ต<https://github.com/beef331/constructor>
23:27:17FromDiscord<shadow.> lool
23:27:22FromDiscord<shadow.> wait like
23:27:40FromDiscord<ElegantBeef> Like what duuuuude?
23:27:48FromDiscord<shadow.> lol like
23:27:55FromDiscord<shadow.> init AudioFile()
23:27:56FromDiscord<shadow.> or
23:27:58FromDiscord<shadow.> initAudioFile()
23:28:03FromDiscord<ElegantBeef> without a space
23:28:09FromDiscord<shadow.> ok lol
23:28:18FromDiscord<shadow.> i saw somethin like newAudioFile whats that about?
23:28:28FromDiscord<ElegantBeef> `new` for reference objects and `init` for value types
23:28:35FromDiscord<shadow.> ohh ok
23:28:47FromDiscord<shadow.> wait
23:28:50FromDiscord<shadow.> im so confused rn-
23:28:53FromDiscord<ElegantBeef> Ok
23:28:59FromDiscord<shadow.> alright so i have a type called WaveFile
23:28:59FromDiscord<ElegantBeef> It's only a convention it's not forced
23:29:04*krux02 quit (Quit: Leaving)
23:29:06FromDiscord<shadow.> and i initialize it like this `var audio = WaveFile()`
23:29:15FromDiscord<shadow.> but id like it to have some automatic values like
23:29:20FromDiscord<shadow.> sampleRate etc
23:29:26FromDiscord<shadow.> so how would i do that in a constructor
23:29:45FromDiscord<ElegantBeef> Yes then define an `initWaveFile` if you dont want to do `WaveFile(sampleRate: 44000, samples: 2048)` and so on
23:30:14FromDiscord<ElegantBeef> Or just use my package and use `--expandMacro:construct` so you can see what you should do
23:30:20FromDiscord<shadow.> hmm ok
23:30:41FromDiscord<shadow.> does initWaveFile have any arguments
23:30:44*xet7 joined #nim
23:30:45FromDiscord<ElegantBeef> Any you want
23:30:45FromDiscord<shadow.> like a this reference
23:30:48FromDiscord<shadow.> wait-
23:30:50FromDiscord<shadow.> my brain-
23:30:53FromDiscord<shadow.> oop in nim is confusing
23:30:57FromDiscord<ElegantBeef> It's really not
23:31:01FromDiscord<shadow.> welp im just a c++ head
23:31:02FromDiscord<shadow.> so
23:31:12FromDiscord<ElegantBeef> `initWaveFile` calls the WaveFile constructor and returns it
23:31:18FromDiscord<shadow.> ohh
23:31:20FromDiscord<shadow.> ok ty
23:31:29FromDiscord<ElegantBeef> We dont have actual constructors here
23:32:20FromDiscord<shadow.> ah ok
23:32:27FromDiscord<ElegantBeef> Well we do but not default value overrides
23:33:02FromDiscord<ElegantBeef> Which is where my macro comes in, quickly generates them and you can provide both, optional, and default values. But think i've shilled it enough ๐Ÿ˜›
23:34:39FromDiscord<shadow.> loll ur good
23:34:46FromDiscord<shadow.> id just like to learn the default way first ig if that makes sense?
23:35:24FromDiscord<shadow.> sent a code paste, see https://play.nim-lang.org/#ix=2DQj
23:35:26FromDiscord<shadow.> i think this was what i was trying to do?
23:35:31FromDiscord<shadow.> lol
23:35:53FromDiscord<ElegantBeef> you dont need the return
23:35:57FromDiscord<shadow.> oh?
23:36:00FromDiscord<shadow.> why not
23:36:07FromDiscord<nikki> the last expr is implicitly returned
23:36:08FromDiscord<ElegantBeef> Nim implictly returns values if they are un cought
23:36:11FromDiscord<shadow.> oh right right
23:36:12FromDiscord<shadow.> lol
23:36:13FromDiscord<ElegantBeef> (edit) "cought" => "caught"
23:36:29FromDiscord<nikki> you can also just do `result.samples = ...; result.channelCount = ...;` etc.
23:36:38FromDiscord<nikki> (not recommending, just giving choices)
23:36:41FromDiscord<ElegantBeef> You can but where's the fun in that ๐Ÿ˜›
23:36:43FromDiscord<shadow.> i thought you cant do assignment in those fields?
23:36:48FromDiscord<shadow.> it didnt like it last time i did it
23:36:57FromDiscord<shadow.> oh WAIT
23:36:57FromDiscord<ElegantBeef> If it's a reference type what nikki said wouldnt work
23:37:08FromDiscord<shadow.> do you mean in the newWaveFile function?
23:37:08FromDiscord<nikki> i'm talking about the example you showed
23:37:08FromDiscord<ElegantBeef> If it's a value type it will as value types cannot be nil
23:37:11FromDiscord<nikki> it'll work there
23:37:20FromDiscord<nikki> yep
23:37:21FromDiscord<ElegantBeef> also if it's a value type you're supposed to use `init`
23:37:35FromDiscord<nikki> yeah the convention is `initX` for returning an object
23:37:38FromDiscord<shadow.> whats the difference between a valuetype and a referencetype (in this situation)?
23:37:40FromDiscord<nikki> for returning a `ref` the convention is `newX`
23:37:43FromDiscord<ElegantBeef> `ref Object`
23:37:55FromDiscord<shadow.> ah
23:38:03FromDiscord<shadow.> so for this i should use init?
23:38:07FromDiscord<nikki> but yeah there are no constructors. just procs that return stuff
23:38:07FromDiscord<ElegantBeef> Yes
23:38:17FromDiscord<shadow.> thats just naming convention?
23:38:20FromDiscord<ElegantBeef> Yes
23:38:23FromDiscord<shadow.> ah ok
23:38:58FromDiscord<shadow.> sent a code paste, see https://play.nim-lang.org/#ix=2DQk
23:38:59FromDiscord<shadow.> correct?
23:39:02FromDiscord<shadow.> seemed to work for me
23:39:03FromDiscord<shadow.> lol
23:39:18FromDiscord<nikki> yea that works too. up to you which way you wanna go
23:39:21FromDiscord<shadow.> ah ok ty
23:39:25FromDiscord<ElegantBeef> Yep
23:39:29FromDiscord<nikki> usually people indent with 2 spacaes
23:39:31FromDiscord<nikki> seems like you're using 4?
23:39:49FromDiscord<nikki> fine either way tho :p
23:40:13FromDiscord<shadow.> i use a tab usually lol
23:40:32FromDiscord<ElegantBeef> No you dont
23:40:36FromDiscord<ElegantBeef> You use 4 spaces
23:40:42FromDiscord<ElegantBeef> Just your editor pretends it's a tab
23:40:43FromDiscord<shadow.> i have tab set to autoreplace
23:40:45FromDiscord<ElegantBeef> Nim doesnt support tabs
23:40:46FromDiscord<shadow.> i think
23:40:46FromDiscord<shadow.> oh
23:40:53FromDiscord<shadow.> i think i have vscode set to replace tabs with 4 spaces?
23:40:54FromDiscord<nikki> i use assignment to result in cases like this:
23:40:56FromDiscord<nikki> https://media.discordapp.net/attachments/371759389889003532/776230006082633759/unknown.png
23:41:07FromDiscord<nikki> just saw that the C codegen came out better in these cases
23:41:13FromDiscord<ElegantBeef> You can use tabs if you use source code filters but ehh
23:41:26FromDiscord<ElegantBeef> Most programmers that think they use tabs actually use spaces
23:41:27FromDiscord<nikki> when you say use tabs, you mean you press the tab key?
23:41:36FromDiscord<shadow.> !eval var (x, y) = (1, 2); (x, y) = (y, x); echo x, " ", y
23:41:37FromDiscord<shadow.> yes
23:41:39NimBot2 1
23:41:45FromDiscord<shadow.> w o a h
23:41:48FromDiscord<shadow.> did not know you could do that
23:41:54FromDiscord<nikki> yeah, i think what that means is you're pressing the tab key to enter n number of spaces
23:41:58FromDiscord<shadow.> yup
23:42:01FromDiscord<shadow.> its a vscode setting
23:42:22FromDiscord<nikki> yeah i think using tabs is usually interpreted to mean that you have `\t` characters in the file haha, which i think nim doesn't support
23:42:25FromDiscord<ElegantBeef> Most editors default to spaces as tab, and then people go "I'd never use spaces as they're dumb" meanwhile they use spaces ๐Ÿ˜„
23:42:29FromDiscord<shadow.> lmfao
23:42:31FromDiscord<shadow.> i never said that
23:42:39FromDiscord<shadow.> i just said i like the length of a tab which for me is 4 spaces
23:42:40FromDiscord<ElegantBeef> Yea nikki it's using `\t` instead of `\s\s\s\s` ๐Ÿ˜„
23:42:43FromDiscord<shadow.> lol
23:42:57*abm joined #nim
23:43:03FromDiscord<ElegantBeef> I like tabs as they dont embedd the indention size into the file... ๐Ÿ˜„
23:44:10FromDiscord<nikki> @shadow. https://nim-lang.org/docs/manual.html#statements-and-expressions-tuple-unpacking it's this thing
23:44:14FromDiscord<shadow.> yeye
23:44:18FromDiscord<nikki> it also implicitly happens in `for ...` decls
23:44:24FromDiscord<shadow.> as a c++ programmer
23:44:32FromDiscord<shadow.> sTrUcTuReD biNdiNgS
23:44:34FromDiscord<nikki> c++ has it, called structured bindings
23:44:35FromDiscord<nikki> yeah
23:44:37FromDiscord<shadow.> yup
23:44:38FromDiscord<shadow.> auto [x, y]
23:44:47FromDiscord<nikki> before c++20 you couldn't capture structured bindings in a lambda
23:44:52FromDiscord<shadow.> and py also has it implicitly almost everywhere lol
23:44:55FromDiscord<shadow.> x, y = 1, 2
23:44:59FromDiscord<shadow.> but python is just....python
23:45:06FromDiscord<nikki> eg. `let [x, y] = sth(); const foo = [&]() { blah(x); }` wouldn't work
23:45:28FromDiscord<nikki> yeah an important thing is that you can't use it to swap, just keep that in mind i guess
23:45:39FromDiscord<shadow.> fr?
23:45:41FromDiscord<nikki> like `(x, y) = (y, x)` doesn't actually properly swap the stuff in nim
23:45:42FromDiscord<shadow.> didnt i just do it in the eval-
23:45:44FromDiscord<shadow.> oh lmfao
23:45:49FromDiscord<shadow.> ik theres a swap proc lol
23:45:59FromDiscord<nikki> oh ok, maybe it works then hmm
23:46:12FromDiscord<shadow.> !eval var (x, y) = (50, 100); (x, y) = (y, x); echo x, " ", y
23:46:15NimBot100 50
23:46:19FromDiscord<shadow.> hmm
23:46:23FromDiscord<shadow.> maybe it doesnt work with more complex stuff?
23:46:28FromDiscord<shadow.> lol
23:46:30FromDiscord<shadow.> tho that'd be odd
23:46:34FromDiscord<nikki> i remember reading somewhere that it fails in some case but maybe it's fine
23:46:40FromDiscord<nikki> idk if it forwards assignment operators, maybe not
23:46:44FromDiscord<shadow.> eh im sure theres a reason for a swap proc if it exists
23:46:49FromDiscord<ElegantBeef> Tuple unpacking is weird ๐Ÿ˜„
23:47:06FromDiscord<nikki> what's weird about it ๐Ÿค”
23:47:10FromDiscord<ElegantBeef> ~~flees the scene~~
23:47:13FromDiscord<shadow.> yeah bro
23:47:21FromDiscord<shadow.> ~~c++ devs rise-~~
23:47:22FromDiscord<shadow.> ASHDOHASODJASd
23:47:38FromDiscord<shadow.> cries in `static_cast<float>(x)`
23:47:43FromDiscord<shadow.> (edit) "`static_cast<float>(x)`" => "`static_cast<T>(x)`"
23:47:47FromDiscord<nikki> the nim manual is a pretty solid read
23:47:49FromDiscord<nikki> also "nim in action"
23:48:01FromDiscord<shadow.> ive read the nim manual in parts i just feel like the order was a bit weird
23:48:03FromDiscord<nikki> if you want to get through the nim concepts in a structured way
23:48:11FromDiscord<ElegantBeef> Well read the tutorial and then the manual
23:48:11FromDiscord<shadow.> nim in action looks cool
23:48:20FromDiscord<nikki> yeah, the nim in action book is more amenable to reading front to back it hink
23:48:24FromDiscord<shadow.> ah ok
23:48:25FromDiscord<nikki> vs. the manual. which is more spec'y
23:48:27FromDiscord<ElegantBeef> The tutorial is afterall meant to teach, whereas the manual is meant to document
23:48:41FromDiscord<shadow.> yeah true
23:48:46FromDiscord<shadow.> whew 40 bucks
23:48:48FromDiscord<shadow.> fair enough
23:48:57FromDiscord<ElegantBeef> Goes right into dom96's food fund ๐Ÿ˜›
23:49:07FromDiscord<shadow.> https://media.discordapp.net/attachments/371759389889003532/776232065179189258/unknown.png
23:49:07FromDiscord<nikki> haha, plus the publisher probs
23:49:09FromDiscord<shadow.> am i reading this correctly
23:49:17FromDiscord<nikki> gonna try to zone into some code for a bit
23:49:24FromDiscord<shadow.> ah ok gl!
23:57:12*bunbunbunbunny joined #nim