00:00:00*njoseph quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
00:00:05FromDiscord<Clyybber> if you have an ARM machine you want to run the end result on, why not use that to compile aswell?
00:00:08FromDiscord<kodkuce> so to save bin or what
00:00:18disrupteki just told you.
00:00:23FromDiscord<Clyybber> I bet my DS is gonna compile faster
00:00:25FromDiscord<kodkuce> dont want to bloat it :)
00:00:33*endragor joined #nim
00:00:41FromDiscord<Clyybber> kodkuce: You want to save the binary?
00:00:45disruptekremove csources and keep everything else.
00:00:48FromDiscord<kodkuce> yes
00:00:50disruptekremove nimcache, too.
00:00:57FromDiscord<Clyybber> You can delete everything except for bin and lib
00:01:03*njoseph joined #nim
00:01:10FromDiscord<Clyybber> lib contains the standard library
00:01:12FromDiscord<kodkuce> ok so to save lib too
00:01:15FromDiscord<Clyybber> and bin contains the nim compiler
00:01:17FromDiscord<kodkuce> ok dident know that
00:01:26disruptekyou can lose tests.
00:01:43disruptekyou can lose dist.
00:01:58FromDiscord<Clyybber> disruptek: What was on the MyType YourType thing?
00:01:59disruptekthat, with csources, should be empty enough.
00:02:09disruptekclyybber: fuck i dunno, too much pain.
00:02:13FromDiscord<Clyybber> verdict
00:02:15FromDiscord<Clyybber> I mean
00:02:44disrupteki pushed, so you can pull and it produces a lot of output that kinda shows the code path.
00:02:52FromDiscord<Clyybber> disruptek: damn, did you suffer a spinal disk herniation?
00:02:59*Cthalupa quit (Ping timeout: 258 seconds)
00:03:18disruptekjust a pulled muscle i think.
00:03:34FromDiscord<Clyybber> better get it checked, if thats an option
00:03:41disrupteknah. no health insurance.
00:03:49FromDiscord<Clyybber> fuck
00:03:56FromDiscord<Clyybber> what a shithole country
00:04:03disruptekit's pretty awful here.
00:06:08disruptekwhat i pushed has a section where we allow aliases for naming.
00:06:27disruptekbut it doesn't work because of the Lock thing. so i will try to figure out how that broke.
00:07:03FromDiscord<kodkuce> so last call on chu chu train i backed up /bin an /lib nothing else right
00:07:18disruptekhe must be ignoring me.
00:07:44FromDiscord<kodkuce> i spring my leg tendons
00:07:52FromDiscord<kodkuce> am atm using crouches :(
00:08:07disruptekthat sucks.
00:08:26*Cthalupa joined #nim
00:08:49FromDiscord<kodkuce> ok so last sec to stop me for 6 more hours of pain
00:09:04FromDiscord<kodkuce> bin and lib backed up
00:09:07disrupteki give up trying to teach you.
00:09:08FromDiscord<kodkuce> 5
00:09:13FromDiscord<kodkuce> me?
00:09:27FromDiscord<kodkuce> i tought you were talking to other dude
00:09:33disruptekno, chucklehead.
00:09:35disruptekscroll back.
00:10:21FromDiscord<kodkuce> you told me to lose test/ dist and csources or what
00:10:45disruptekyou are better off losing a couple large things and keeping the rest.
00:11:14disruptekrika can explain.
00:11:26*mipri joined #nim
00:11:56FromDiscord<kodkuce> issue is i dont know what all i need for running nim form source
00:12:13disruptekwell, we've tried to tell you.
00:12:25FromDiscord<kodkuce> *source build, and dont think there is writin on github page
00:14:04FromDiscord<kodkuce> i think i am blind
00:14:20disruptekthat happened to me when i was 13.
00:14:34disrupteki got over it once i learned to shave my palms.
00:14:44FromDiscord<kodkuce> what
00:14:54FromDiscord<kodkuce> you troling me?
00:15:18disruptekit happens to a lot of young perverts.
00:15:21FromDiscord<Rika> He's half trolling you
00:15:31shashlickdisruptek: I'm working on `nimble develop --deps pkg1` which will setup all deps in develop mode in sibling directories
00:15:41FromDiscord<kodkuce> so do i need anything else then lib and bin?
00:15:53disruptekah, nice. do their names have version numbers in them?
00:16:02shashlickWondering if it will be useful - it's what zah mentioned in the forum
00:16:06shashlickNo version
00:16:09disruptekrika: smack that kid for me, please.
00:16:16FromDiscord<kodkuce> dude
00:16:21shashlickAll will be #head
00:16:25disruptekshashlick: it's great, i've been using it for a couple weeks now.
00:16:30FromDiscord<kodkuce> i can beat you up with 1 leg if want
00:16:33FromDiscord<Rika> Honestly I don't understand what kodkuce is doing, what are you deleting exactly
00:16:45FromDiscord<kodkuce> i builded nim form source
00:16:48disruptekhe's deleting friends.
00:16:48FromDiscord<kodkuce> in qemu
00:16:51FromDiscord<Rika> Okay
00:16:55FromDiscord<kodkuce> for arm64
00:17:01FromDiscord<kodkuce> w8 6hours for that
00:17:05FromDiscord<Rika> Let me ask this for a sec
00:17:09FromDiscord<Rika> Do you have an rpi
00:17:36FromDiscord<kodkuce> my logic was to save /bin and use it to build on clean qemu
00:17:53FromDiscord<kodkuce> i have a rpi4 thats runing and i dont want to build on that one
00:17:54FromDiscord<Rika> Why do you need a clean vm
00:17:59FromDiscord<Rika> Why not
00:18:10FromDiscord<Rika> My rpi 4 built nim in minutes
00:18:14*evanj quit (Read error: Connection reset by peer)
00:18:14FromDiscord<Rika> Single digit minutes
00:18:15FromDiscord<kodkuce> and anyway on alpine there is no nim like there is 0.14 version
00:18:37FromDiscord<kodkuce> i am hoping that this qemu is not that much slow
00:18:47shashlickI'm going to use nimble link files to link nimbleDirs
00:19:01FromDiscord<kodkuce> i want to use qemu isted crosscompiling
00:19:07FromDiscord<Rika> You saw how slow the vm was already no?
00:19:34FromDiscord<kodkuce> i newer build nim myself before so dident know how it takes on awartge
00:20:01FromDiscord<Rika> Ah wait, your pi is on alpine, I see
00:21:22FromDiscord<kodkuce> yes
00:22:03FromDiscord<Rika> https://github.com/nim-lang/nightlies/releases/tag/2020-09-13-devel-1df5cfba52ccc71e3c69b6cd7d08cebd70bbb187 Have you checked this
00:25:17FromDiscord<kodkuce> dudebt saw that but i am guessing those are not musl?
00:25:56FromDiscord<Rika> Okay, what I mean is to download one of them, look at the structure, and whatever isn't in there you delete
00:27:25disruptekshashlick: huh?
00:27:58FromDiscord<kodkuce> thats smart
00:28:22disruptekthey are likely musl.
00:28:33FromGitter<deech_twitter> Can anyone using ML style pattern matching heavily recommend a library? I know of `patty` and `gara` they each have their tradeoffs.
00:28:37FromDiscord<kodkuce> what?
00:29:01disruptekdeech: look at krux02's ast_pattern_matching or w/e it's called.
00:29:13disruptek!repo owner:krux02 pattern
00:29:14disbotno results 😢
00:29:24disruptek!repo ast pattern match
00:29:24disbot12https://github.com/krux02/ast-pattern-matching -- 9ast-pattern-matching: 11A library to do pattern matching on the AST in the Nim programming language. 15 66⭐ 5🍴
00:29:45FromGitter<deech_twitter> This is just for the Nim AST, yes?
00:29:53disruptekdeech: but, i don't use ML pattern matching per se.
00:30:00disruptekafaik, yes.
00:31:08FromGitter<deech_twitter> Hmmm, some clippers magically appeared my hand & I see a hairy yak .
00:31:31disruptekthat's just rika.
00:32:30disrupteka shave probably won't help but i think a bath would do wonders.
00:33:15FromDiscord<Rika> Lol
00:34:38FromDiscord<acek7> Rika are you that hairy
00:34:57disruptekyou cannot imagine.
00:35:23FromDiscord<kodkuce> why all troling Rika?
00:35:27FromDiscord<kodkuce> it that a thing?
00:36:03FromDiscord<Clyybber> no its a person
00:36:38disrupteki think i'm going to go with kodkuce on this one: it's a thing.
00:36:39FromDiscord<Clyybber> even a yak is not a thing
00:36:51disrupteki'm telling you, it's not a yak.
00:36:57disruptekit's just rika.
00:37:22disrupteki know it smells like a yak, but.. well, i think we covered that.
00:38:01FromDiscord<Rika> @kodkuce it's a running joke and I have no issue with it so it's fine
00:38:04FromDiscord<Clyybber> @kodkuce thanks to leorize they do use musl
00:38:11FromDiscord<Clyybber> but it doesn't matter because they are statically linked
00:38:34FromDiscord<Clyybber> (apart from the fact that you cant statically link glibc afaik)
00:38:57FromDiscord<Rika> Isn't musl a statically linkable libc
00:39:16FromDiscord<Clyybber> yea
00:39:45FromDiscord<Clyybber> @kodkuce so instead of building 6 hours you could have just downloaded that :D
00:39:52*mipri left #nim (#nim)
00:41:43*lritter quit (Quit: Leaving)
00:42:03FromDiscord<kodkuce> so can i die now?
00:42:16disrupteki'm okay with that.
00:43:12FromDiscord<kodkuce> are you evil?
00:43:22FromDiscord<Clyybber> :nimrawr:
00:43:35disruptekchaotic neutral.
00:45:13FromDiscord<kodkuce> you play that Pilars of E.. dumb game?
00:46:39FromDiscord<kodkuce> hmm this qemu is not that much bad it compiled in 20 sec what compiles in 2 sec on pc
00:47:29FromDiscord<kodkuce> ok then i dont kill you
00:47:32disruptekclyybber: ahhh, i'm dumb. Lock is an alias for pthread_mutex_t.
00:50:06FromDiscord<Clyybber> kul
00:50:20FromDiscord<Clyybber> gl i'm gonna sleep a bit
00:50:25FromDiscord<Clyybber> cee yaa
00:50:28disruptekaight, thanks.
00:53:22FromDiscord<kodkuce> i go sleep too its 3am at me almost
00:53:29FromDiscord<kodkuce> good night all
00:53:36FromDiscord<kodkuce> (edit) '3am' => '3pm'
00:53:48FromDiscord<kodkuce> chaos peace :)
01:04:03*endragor quit (Ping timeout: 244 seconds)
01:11:46*Tanger joined #nim
01:31:07*endragor joined #nim
01:34:47*apahl_ joined #nim
01:36:14*endragor quit (Ping timeout: 256 seconds)
01:37:33*apahl quit (Ping timeout: 244 seconds)
01:51:49*Cthalupa quit (Ping timeout: 264 seconds)
01:55:12*Pisuke joined #nim
01:55:26*MyMind quit (Ping timeout: 256 seconds)
01:56:01*Cthalupa joined #nim
02:13:32*endragor joined #nim
02:19:22*femtotones quit (Quit: Default Quit Message)
02:21:08FromDiscord<ThothLoki> i have an icon (ico) file that i would like my app to use. how to i include that when i compile?
02:24:17FromDiscord<Rika> its platform specific, which platform is this
02:25:40FromDiscord<ThothLoki> for now, windows
02:26:29FromDiscord<Rika> sorry idk windows xd
02:26:32FromDiscord<Elegant Beef> No clue the api required, but to just include something statically you use `const name = staticRead(path)`
02:26:42FromDiscord<ThothLoki> LOL no worries
02:26:43FromDiscord<Elegant Beef> No clue how to use that for the windows api
02:26:51FromDiscord<ThothLoki> i am rewriting some apps for work
02:27:00FromDiscord<ThothLoki> so it must be windows
02:27:30FromDiscord<ThothLoki> but i selected nim because it is similar in syntax to python (what i am used to) and that i can use it on all OSs
02:27:40FromDiscord<ThothLoki> being that i use windows, mac and linux
02:30:55*mipri joined #nim
02:31:00*thomasross joined #nim
02:44:12*muffindrake quit (Ping timeout: 244 seconds)
02:45:05FromDiscord<ThothLoki> @Rika are you linux?
02:45:45FromDiscord<ThothLoki> @Elegant Beef or you?
02:45:55FromDiscord<Rika> yeah
02:46:01FromDiscord<Rika> im not linux itself, but i am using it
02:46:28*muffindrake joined #nim
02:46:31FromDiscord<ThothLoki> lol
02:46:44FromDiscord<ThothLoki> what distro and how do you do it in linux for an icon?
02:47:33FromDiscord<Rika> for linux its https://stackoverflow.com/a/41690936
02:47:39FromDiscord<Rika> easier to just link it tbh...
02:47:54FromDiscord<Rika> basically theyre not embedded in the executable
02:48:16FromDiscord<ThothLoki> ok
02:48:22FromDiscord<ThothLoki> i am fine with linking too
02:49:07FromDiscord<ThothLoki> what distro do you use?
02:51:15FromDiscord<Rika> its not distro specific afaik
02:52:47FromDiscord<ThothLoki> oh i know. i was just curios what distro you run
02:53:09FromDiscord<ThothLoki> i have been rocking fedora lately
02:59:44FromDiscord<Rika> oh, i use manjaro on my desktop (because its a pain to move distros rn) and nixos on my laptop
03:00:01FromDiscord<Elegant Beef> I use regolith linux
03:01:46FromDiscord<ThothLoki> i didnt have good luck with manjaro. arch vanilla worked better but still fucked up on me↵i have been meaning to try nixos↵↵i have never heard of regolith linux...........do tell
03:02:05FromDiscord<Elegant Beef> Regolith is ubuntu with a presetup i3-gaps,
03:02:13FromDiscord<Elegant Beef> and gnome intergration
03:02:20FromDiscord<ThothLoki> ?
03:02:30FromDiscord<ThothLoki> so......ubuntu fork
03:02:38FromDiscord<Elegant Beef> derivative
03:02:42FromDiscord<Elegant Beef> but close enoguh
03:02:46*rockcavera quit (Remote host closed the connection)
03:02:49FromDiscord<ThothLoki> sudo apt install upgrade --mint
03:02:51FromDiscord<ThothLoki> LOL
03:02:51FromDiscord<Rika> enoguh
03:03:09FromDiscord<Elegant Beef> Rkia i kown how to splle
03:04:46FromDiscord<ThothLoki> i know apt more than others but havent found a debian/ubuntu distro that has made me say "yes, this is the one"
03:05:05FromDiscord<Elegant Beef> A pre-setup i3-gaps is nice
03:05:15FromDiscord<ThothLoki> i have no idea what that means
03:05:31FromDiscord<ThothLoki> i have tried lots of distros but do not claim to be a pro
03:05:39FromDiscord<ThothLoki> i dont even claim to be an amature
03:06:08*waleee-cl quit (Quit: Connection closed for inactivity)
03:06:13*thomasross quit (Ping timeout: 260 seconds)
03:07:32FromDiscord<Elegant Beef> i3wm gaps is a tiling window manager
03:07:37FromDiscord<Elegant Beef> My preferred method of using a pc
03:09:35FromDiscord<ThothLoki> got a screenshot?
03:09:47FromDiscord<ThothLoki> i dont like gnome
03:10:30FromDiscord<ThothLoki> i am more of a cinnamon, mate or kde plasma kinda guy
03:10:46FromDiscord<ThothLoki> but i am an old windows guy so i have a lot to learn
03:11:04FromDiscord<ThothLoki> i respect gnome for what it is, but i dont like it personally
03:11:28FromDiscord<Elegant Beef> https://media.discordapp.net/attachments/371759389889003532/755264489875570798/regolith-linux-main.png
03:11:30FromDiscord<Elegant Beef> I dont use gnome
03:11:40FromDiscord<Elegant Beef> It just integrates with the gnome settings and shit
03:11:46FromDiscord<Elegant Beef> Not my desktop either
03:13:28FromDiscord<ThothLoki> interesting
03:13:29FromDiscord<ThothLoki> i like it
03:16:45*Cthalupa quit (Ping timeout: 244 seconds)
03:23:18*Cthalupa joined #nim
03:26:12FromDiscord<ThothLoki> ok, anyone use nigui?
03:34:02*Cthalupa quit (Ping timeout: 256 seconds)
03:38:15*Cthalupa joined #nim
03:46:47*shad0w_ joined #nim
04:02:34*shad0w__ joined #nim
04:03:15*shad0w__ quit (Remote host closed the connection)
04:04:55*shad0w_ quit (Ping timeout: 240 seconds)
04:05:12*endragor quit (Ping timeout: 256 seconds)
04:06:02*supakeen quit (Quit: WeeChat 2.9)
04:06:37*supakeen joined #nim
04:22:23*opal quit (Ping timeout: 240 seconds)
04:29:26*Tanger quit (Remote host closed the connection)
04:30:06*Tanger joined #nim
04:33:24FromDiscord<JSGRANT> @Elegant Beef That is WAY too much gap between windows lol
04:34:55*shad0w_ joined #nim
04:35:17FromDiscord<JSGRANT> Re: Plasma -- Honestly https://store.kde.org/p/1333377/ needs to be part of the mainstream KDE experience ... it's CRAZY that there is no in-built way to add / remove virtual-desktops and swap the order of an existing space.
04:35:40*shad0w_ quit (Remote host closed the connection)
04:36:35FromDiscord<Rika> i never needed it
04:37:38FromDiscord<JSGRANT> @Rika If you are on KDE (Plasma) how many virtual-desktops do you use & do you use the pager widget to display them / the contents?
04:37:55FromDiscord<Rika> https://media.discordapp.net/attachments/371759389889003532/755286245923356763/unknown.png
04:37:59*mipri left #nim (#nim)
04:38:07FromDiscord<Elegant Beef> As i said it's not my desktop
04:38:38FromDiscord<JSGRANT> @RikaIs that basically "it"; Like you have stuff minimized I assume in a given virtual-desktop if you're not using it?
04:39:01FromDiscord<JSGRANT> I used to have a "work" and "play" activity but then I realized I never really switched between them lol
04:39:17FromDiscord<Rika> i switch between them constantly
04:40:29FromDiscord<JSGRANT> But yeah, I view adding / removing virtual-desktops VITAL in my workflow and really I kinda wish there was a way to set set the name of a given 'workspace' to nil / blank. I have the onscreen display enabled and it's pretty annoying to see "Virtual Desktop 1 , Virtual Desktop 5'.
04:40:40FromDiscord<Elegant Beef> Although my gaps are similar size https://media.discordapp.net/attachments/371759389889003532/755286940038856785/unknown.png
04:40:56FromDiscord<JSGRANT> @Rika I'm saying there's really no need for you to add addition virtual-desktops?
04:40:59FromDiscord<Rika> jason-des
04:41:15FromDiscord<Rika> no i do not
04:41:23FromDiscord<Rika> anything that doesnt fit goes into gen
04:41:27FromDiscord<JSGRANT> > > 202X; not having a pun as your hostname.
04:41:33FromDiscord<Rika> and its fine
04:42:22FromDiscord<JSGRANT> I average 4 virtual-desktops & if I'm doing anything specific it can easily edge to 9. I like the "only 2-3 apps a virtual-desktop" workflow.
04:42:35FromDiscord<Rika> i dont
04:42:44FromDiscord<JSGRANT> obviously ; lol
04:43:30FromDiscord<JSGRANT> @Elegant Beef Still too much gap; I want INVERSE GAP; For them to be bleeeeeeding into each-other
04:43:41FromDiscord<Elegant Beef> floating windows suck 😛
04:45:31FromDiscord<JSGRANT> I never see myself actually writing a window-manager / wayland compostitor with the 1000 game-projects I want to do -- but I do REALLY want a AwesomeWM clone in Nim & configured in Nimscript. I really-really-really like the idea of being able to define any kind of interaction you want with an indepth widget system
04:47:08FromDiscord<Elegant Beef> Yea that was the goal with mine, but eh that died like all my either projects
04:51:35FromDiscord<JSGRANT> sent a long message, see http://ix.io/2xBN
04:52:00*njoseph quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
04:52:07*njoseph joined #nim
04:53:26disruptek!repo swayipc
04:53:26disbot12https://github.com/disruptek/swayipc -- 9swayipc: 11swayipc (i3ipc) for Nim 15 5⭐ 0🍴
04:53:34disruptekgood enough indeed.
04:54:08disruptek!repo wayland
04:54:08disbot12https://github.com/yglukhov/wayland -- 9wayland: 11Nim bindings for wayland 15 10⭐ 1🍴 7& 1 more...
04:59:30FromDiscord<JSGRANT> Wayland seems like the obvious direction to head in nowadays; At least to partially future-proof or of that sort. Glad to see we have some bindings already
05:00:55*cyraxjoe quit (Quit: I'm out!)
05:00:55*opal joined #nim
05:03:55*cyraxjoe joined #nim
05:08:17*endragor joined #nim
05:12:32*solitudesf joined #nim
05:19:28*narimiran joined #nim
05:27:13*shad0w_ joined #nim
05:40:42*Cthalupa quit (Ping timeout: 258 seconds)
05:46:10*Cthalupa joined #nim
06:25:06*endragor quit (Remote host closed the connection)
06:25:33*endragor joined #nim
06:32:49*endragor quit (Ping timeout: 265 seconds)
06:50:20*endragor joined #nim
06:56:30*Trustable joined #nim
07:00:41Araqfwiw I disabled "virtual desktops" everywhere, don't see the benefit
07:01:53*krux02 joined #nim
07:04:32FromDiscord<Elegant Beef> Yea i never used virtual desktops on any DE, but now i guess i use them since i use i3wm so got workspaces
07:04:47FromDiscord<Elegant Beef> For floating window managers they just seem redundant
07:10:26FromGitter<alehander92> i couldn't really see
07:10:39FromGitter<alehander92> an obvious fix for the zero-functional clyybber ?
07:11:04FromGitter<alehander92> but just barely gave a look, if you need some more context ping us
07:11:56FromGitter<alehander92> use `-->>`
07:12:01FromGitter<alehander92> to debug the produced code
07:25:44*Cthalupa quit (Ping timeout: 258 seconds)
07:30:11FromDiscord<JSGRANT> In WIndows that 'virtual-desktop overlay' thing is a bit to obfuscated imo for it to feel "natural" in that workflow; And I have no idea what the workflow is without it. Like I assume there must be keybindings to move between virtual-desktops and windows to a given desktop -- but I have no idea what they'd be.
07:30:57FromDiscord<JSGRANT> I'm at a point though, where I just can't go back from a virtual-desktop workflow. It's not perfect. But it's about 85% of what I want out of it.
07:32:09*Cthalupa joined #nim
07:34:07FromDiscord<JSGRANT> Certainly more enjoyable than having 10 things open and having to minimize then alt-tab through everything over and over again.
07:34:22*Vladar joined #nim
07:38:41FromDiscord<Elegant Beef> I mean my solution is to not have 10 things open
07:38:49FromDiscord<Elegant Beef> I very much close most applications
07:42:00*vicfred quit (Quit: Leaving)
07:42:13FromDiscord<Rika> i dont have enough applications per workspace to warrant more
07:42:43*Cthalupa quit (Ping timeout: 260 seconds)
07:46:46*Cthalupa joined #nim
07:48:02FromDiscord<JSGRANT> @Elegant Beef I mean, you open/close your editor & your browser all the time?
07:48:11FromDiscord<Elegant Beef> Yep
07:48:38FromDiscord<JSGRANT> Browser "might" be worth it because how much of a resource hog it is; But eh re: editor
07:48:50FromDiscord<Elegant Beef> I also dont have my browser to store previously opened tabs
07:49:26FromDiscord<JSGRANT> I wish there was a "standbye" mode for browser that effectively just 'paused' your cpu usage when the window wasn't focused
07:49:35FromDiscord<Elegant Beef> Eh window is still opened
07:50:37Oddmongeris there a « static » in Nim, which was very handy in C to store local values in a proc ?
07:50:59FromDiscord<Elegant Beef> `let` `const` `var`
07:51:02FromDiscord<JSGRANT> Sometimes Firefox will idle at ~25% on my main workstation computer; An empty Firefox session with just a new-tab HAS to be much smaller
07:52:05FromDiscord<Elegant Beef> What does static do that you want in nim?
07:52:36FromDiscord<Rika> @JSGRANT do you not discard your tabs?
07:52:37FromDiscord<JSGRANT> *Which obviously means ... it time to rewrite Servo x "Quantum" in Nim. :^)
07:52:46OddmongerElegant Beef: ok i try with let (var is not static afaik)
07:53:24FromDiscord<JSGRANT> @Rika I do, but i'll leave like a few youtube tabs up as reminders for later; And it'll just eat away at my resources
07:53:29FromDiscord<Rika> oddmonger: what your looking for is a var that is {.global.} afaik, if you mean variables that keep state between function invocations
07:53:36FromDiscord<JSGRANT> That and random javascript from blogs
07:53:49FromDiscord<Rika> > I do, but i'll leave like a few youtube tabs up as reminders for later; And it'll just eat away at my resources↵@JSGRANT i timestamp the youtube videos and discard them
07:54:18FromDiscord<Rika> my only issue is ram, firefox doesnt seem to free ram even if the tabs are discarded
07:54:46OddmongerRika : yes , that's it
07:55:27Oddmongeri was trying this (not working and complicated): https://play.nim-lang.org/#ix=2xCy
07:55:53FromDiscord<Rika> that is also wrong
07:56:19FromDiscord<Rika> `let mystore:array[10,T] = new array[10,T]` wrong type, `new array[10, T]` makes a `ref array[10, T]`
07:56:46*vicfred joined #nim
07:56:46FromDiscord<Rika> store doesnt do anything
07:56:47Oddmongeri wanted (in store) to test if the data was already there, and if not, store it - else return it in everycase
07:57:09FromDiscord<Rika> just use actual globals
07:57:22Oddmongeryes i will do, thank you
07:58:14*shad0w_ quit (Remote host closed the connection)
07:58:33FromDiscord<JSGRANT> @Rika I think it's a holdout from my old workflow where I used https://addons.mozilla.org/en-US/firefox/addon/tab-grenade/?src=hp-dl-upandcoming -- which ... LOOKS LIKE IT FINALLY HAS A WEBEXTENSION PORT after a year or-so of just not working in Firefox.
07:58:35FromDiscord<Rika> https://play.nim-lang.org/#ix=2xCz something like
07:58:53FromDiscord<Rika> congrats jsgrant
07:59:31Oddmonger yes that's what i was doing at the beginning
07:59:40Oddmongerseems we cannot avoid globals sometimes
08:02:02FromDiscord<Rika> well what you're doing is essentially a global
08:02:16FromDiscord<Rika> no matter how you write the code its gonna be a global
08:04:29FromDiscord<Rika> @JSGRANT also i always open `about:memory` and force a `Minimize memory usage` every day or so
08:06:50FromDiscord<JSGRANT> Didn't even know this existed; lol That said, my lowest-memory machine is this ultrabook with 8gb and my normal laptop is 16gb & 32gb in my desktop so not too-too concerned on that front or anything -- more worried about it eating all these cpu-cycles on these (mostly) old machines.
08:07:41FromDiscord<Rika> firefox is sipping cpu for me, until i play a video or livestream
08:08:53FromDiscord<JSGRANT> I'm blown away how much Twitch slows down ALL my machines.
08:09:19FromDiscord<Rika> have you tried youtube livestreams
08:09:32FromDiscord<JSGRANT> Like it's 1000% the JS and not the video-quality afaict; Works GREAT with streamlink pushing to vlc / mpv
08:09:37*Trustable quit (Remote host closed the connection)
08:09:40FromDiscord<JSGRANT> @Rika Nope
08:11:08FromDiscord<Rika> its gonna bring your computers to its fuckin knees i got like 50% usage on my fuckin 2700X watching ONE stream
08:12:04FromDiscord<Theodore> Yo are GUI's in nim OK
08:12:27FromDiscord<Theodore> Cuz i just tried to make a GUI in rust and almost jumped out my window
08:12:32FromDiscord<Theodore> never doing that again
08:13:16FromDiscord<mratsim> OpenGL GUIs seem to be working fine
08:13:24FromDiscord<mratsim> with nimx, nuklear or imgui
08:13:26FromDiscord<mratsim> or SDL
08:14:06FromDiscord<JSGRANT> https://github.com/trustable-code/NiGui/tree/master/examples
08:14:15FromDiscord<mratsim> "regular" non-immediate GUI, you have IUP that is stable, and for more fancy one, you can use webview, gintro or QML like we do here: https://github.com/status-im/nim-status-client
08:14:33FromDiscord<Theodore> aight thanksss
08:14:59FromDiscord<mratsim> what I posted was done in 3 months by a team of Nim newbies (but they are very strong at shipping products)
08:15:21FromDiscord<JSGRANT> Oh yeah, Gintro is a thing; Moved away from GNOME recently -- so kinda feel off my radar
08:15:38FromDiscord<Theodore> KDE>>>>>
08:15:45FromDiscord<Theodore> sry
08:16:03FromDiscord<JSGRANT> fell*
08:18:00FromDiscord<Theodore> uh
08:18:33FromDiscord<Theodore> Is the Nim setup thing supposed to make a `./nimble/bin`
08:18:37FromDiscord<Theodore> in my ~
08:18:43FromDiscord<Theodore> cuz i dont see that
08:20:05FromDiscord<JSGRANT> .nimble not ./nimble
08:20:37*FromDiscord quit (Remote host closed the connection)
08:20:54*FromDiscord joined #nim
08:21:06FromDiscord<Clyybber> Araq: ping
08:21:19FromDiscord<JSGRANT> @Theodore Guessing you intended .nimble?
08:21:25FromDiscord<Theodore> yup
08:21:37FromDiscord<Theodore> Never installed Nim on linux before
08:21:44FromDiscord<JSGRANT> Is choosenim found in your path?
08:21:54FromDiscord<Theodore> nothing from nim is in my path
08:21:59FromDiscord<Theodore> I have to add that no?
08:22:37FromDiscord<JSGRANT> Did you ever run the script ? ↵> curl https://nim-lang.org/choosenim/init.sh -sSf | sh
08:22:58FromDiscord<Theodore> uh i did what it said from https://nim-lang.org/install_unix.html
08:23:01FromDiscord<Theodore> with a tarball
08:23:33FromDiscord<Elegant Beef> Use choose nim
08:23:35FromDiscord<JSGRANT> Honestly just use choosenim; It manages installations for you.
08:23:35FromDiscord<Elegant Beef> https://media.discordapp.net/attachments/371759389889003532/755343039651643412/unknown.png
08:23:55FromDiscord<JSGRANT> It's basically rustup / pyenv for Nim
08:24:07FromDiscord<Theodore> ah its whatever i added it manually to my path
08:24:37FromDiscord<Theodore> or should i undo this and use choosenim?
08:25:06FromDiscord<JSGRANT> I mean, did it just install it to your /usr/local/bin ?
08:25:27FromDiscord<Theodore> no i just moved the folder to $HOME/.nim
08:25:31FromDiscord<mratsim> who has the rights to create a #science channel in Discord?
08:25:41FromDiscord<Theodore> then added $HOME/nim/bin to my .bashjrc
08:25:58FromDiscord<Elegant Beef> @Yardanico @dom96 possibly more mratsim
08:26:08FromDiscord<JSGRANT> I assume you could just remove the whole directory
08:27:22FromDiscord<JSGRANT> If it just built to a self-contained dir and not a bunch of diff paths on your root fs
08:27:23FromDiscord<mratsim> A wild @Yardanico appears lol
08:27:36FromDiscord<Theodore> ah i installed with choosenim
08:27:52FromDiscord<Yardanico> I'll create science
08:28:06*bouzu_ joined #nim
08:28:12FromDiscord<Yardanico> But I'm kinda away from the civilization
08:28:37FromDiscord<mratsim> You can create Cavemen as well
08:28:45FromDiscord<Yardanico> https://media.discordapp.net/attachments/371759389889003532/755344337449255012/IMG_20200915_112815.jpg
08:28:45FromDiscord<Elegant Beef> I mean im uncivilized aswell but i dont bring it up all the time
08:28:47FromDiscord<Yardanico> For 3 days
08:29:09FromDiscord<JSGRANT> @Yardanico I can't tell if it's been raining or not lol
08:29:43FromDiscord<Theodore> imagine being in civilization
08:31:04FromDiscord<Yardanico> It's not
08:32:39FromDiscord<JSGRANT> > Imagine having roofs.
08:34:32FromDiscord<Clyybber> nice @Yardanico what are you doing?
08:35:20*PMunch joined #nim
08:35:50*FromDiscord quit (Remote host closed the connection)
08:35:59Araqliftdestructors is killing me
08:36:20Oddmongeri cannot find {.global.} entry in the documentation, where should i search ?
08:36:21*FromDiscord joined #nim
08:36:24Araq@Clyybber: can you please rewrite it? it's becoming the worst module in the compiler
08:36:25*FromDiscord quit (Remote host closed the connection)
08:36:45*FromDiscord joined #nim
08:36:54*FromDiscord quit (Remote host closed the connection)
08:37:25*FromDiscord joined #nim
08:38:27AraqOddmonger, https://nim-lang.org/docs/manual.html#pragmas-global-pragma
08:38:57Oddmongerthank you, sorry to bother you with that (i had of course checked the index)
08:39:11Araqthe index should have it too
08:39:21*hnOsmium0001 quit (Quit: Connection closed for inactivity)
08:40:24Araqand it doesn't, it's all great
08:42:52Oddmongeri will have the reflex to check directry the manual now, as google doesn't automatically refers to it
08:46:48*FromDiscord quit (Remote host closed the connection)
08:56:25PMunchHmm, maybe with the new and improved jsondocs I should build a terminal tool to search for stuff in the manual right in your terminal
09:04:25*NimBot joined #nim
09:07:26Oddmongerdom96: i'm reading your book which is excellent, but i believe you don't talk about pragmas, do you ? (i've checked the index of the book, no «pragma», and didn't see it too in the «compiler» entry)
09:12:56*revere quit (Quit: quit)
09:18:28*Tanger quit (Quit: Leaving)
09:22:19AraqOddmonger, well we have many pragmas and many are implementation specific extensions
09:23:06AraqK&R C doesn't list GCC extensions either
09:28:02Oddmongerof course, i was thinking of a definition (which i have found in the book, at the end of «user definitions type» section - but wasn't in the index)
09:28:51Oddmongerthe definition in the book mentions the nim's official manual entry, which is ok
09:28:52*vqrs quit (Ping timeout: 260 seconds)
09:29:16*vqrs joined #nim
09:46:52*revere joined #nim
09:48:20Araqfound the bug :-)
09:52:59*Cthalupa quit (Ping timeout: 240 seconds)
09:57:36*Cthalupa joined #nim
09:58:22AraqI did it... https://github.com/nim-lang/Nim/pull/15329
09:58:23disbot➥ 3fixes #15076
09:59:09Araqin the end it was an error in my thinking about the problem...
10:06:10FromGitter<alehander92> :O
10:21:31*abm joined #nim
10:22:59FromGitter<alehander92> ok i was just not checking conditions well at all
10:23:06FromGitter<alehander92> this explains some things
10:41:57*krux02 quit (Remote host closed the connection)
10:47:36*endragor quit (Read error: Connection reset by peer)
10:48:00*endragor joined #nim
10:51:25*rockcavera joined #nim
10:54:40*Tanger joined #nim
11:10:36PMunchHmm, why is this an illegal recursion? `CommandExec = proc (calc: Calc, argument: string, parseFail: CommandExec): iterator() {.closure.}`
11:14:03PMunchShouldn't that argument be passed as a pointer anyways?
11:26:29*NimBot joined #nim
11:32:26*def- quit (Quit: -)
11:34:54*superbia quit (Read error: Connection reset by peer)
11:35:01*superbia1 joined #nim
11:35:13*def- joined #nim
11:42:46AraqPMunch: Nim says type recursions must be through a nominal type
11:43:17Araqbut it's probably a good idea to allow recursions for proc types
11:53:54Oddmongercan a global variable declared as ref be collected by the GC ?
11:54:20Oddmongerit's used only in the C api, so there is no reference to it when the calling function is over
11:54:41Oddmongerbut putting it global should protect it, doesn't it ?
11:56:43Araqwell the GC understands global variables if that's what you mean
11:56:50PMunchAraq, yeah there really shouldn't be a technical reason for this limitation..
11:58:01*Kaivo quit (Ping timeout: 246 seconds)
11:58:12Araqwell... mapping that type to C will be fun and might introduce lovely edge cases everywhere
11:59:36Oddmongerok so the GC doesn't collect globals
12:00:33*Kaivo joined #nim
12:00:49*bouzu__ joined #nim
12:03:07*bouzu_ quit (Ping timeout: 240 seconds)
12:03:44FromGitter<mratsim> The discord bridge is down
12:04:07PMunchOh, is that why it's so quiet here today?
12:04:14FromGitter<mratsim> you can't collect global, they have the same lifetime as the whole programming
12:04:27FromGitter<mratsim> program*
12:04:52*femtotones joined #nim
12:05:18Oddmongerok thank you
12:06:02*supakeen quit (Quit: WeeChat 2.9)
12:06:37*supakeen joined #nim
12:12:08*pietroppeter joined #nim
12:24:43PMunchYardanico, any insight on the Discord bot?
12:50:49FromGitter<alehander92> huh so
12:50:53FromGitter<alehander92> {A, B..C} is valid
12:50:54FromGitter<alehander92> cool
12:52:01PMunchYup :)
12:53:39*awe00 joined #nim
12:55:02*suchasurge quit (Ping timeout: 256 seconds)
12:55:22*suchasurge joined #nim
13:05:34*waleee-cl joined #nim
13:06:55*Tanger quit (Quit: Leaving)
13:10:25*idf left #nim ("ERC (IRC client for Emacs 27.1)")
13:11:04*idf joined #nim
13:56:19*surma_ joined #nim
13:57:05*stever_ joined #nim
13:57:06*jholland___ joined #nim
13:57:07*bozaloshtsh_ joined #nim
13:57:20*pangey__ joined #nim
13:57:41*sirn_ joined #nim
13:57:59*PMunch quit (Quit: Leaving)
13:58:51*Yardanico_ joined #nim
14:00:13*bozaloshtsh quit (Ping timeout: 272 seconds)
14:00:13*ormiret quit (Ping timeout: 272 seconds)
14:00:13*jholland__ quit (Ping timeout: 272 seconds)
14:00:13*sirn quit (Ping timeout: 272 seconds)
14:00:13*pangey quit (Ping timeout: 272 seconds)
14:00:14*JStoker quit (Ping timeout: 272 seconds)
14:00:14*surma quit (Ping timeout: 272 seconds)
14:00:16*kayw quit (Ping timeout: 272 seconds)
14:00:16*stever quit (Ping timeout: 272 seconds)
14:00:16*Yardanico quit (Ping timeout: 272 seconds)
14:00:17*kayw_ joined #nim
14:00:17*surma_ is now known as surma
14:00:17*jholland___ is now known as jholland__
14:00:17*stever_ is now known as stever
14:00:19*sirn_ is now known as sirn
14:03:37*arecacea1 quit (Ping timeout: 244 seconds)
14:06:45*arecacea1 joined #nim
14:07:44*ormiret joined #nim
14:07:47ZevvThis is a nice gem I just received: "You would not want possibility for dumping be switched off for release builds by the #ifndef NDEBUG?"
14:07:57Oddmongeri have a long seq of tuple to write (no, i don't know meta-way of doing this now) , can i spread it on several line for readability ? I get « alignment error » when i try
14:08:03ZevvHow many negations am I supposed to keep track off in my mind?
14:09:28*JStoker joined #nim
14:09:44*FromDiscord joined #nim
14:09:54*Kaivo quit (Ping timeout: 256 seconds)
14:09:57ZevvOddmonger: "alignment error"? You should really be able to, but make sure your comma is the last char on the line
14:11:53*Kaivo joined #nim
14:12:23FromDiscord<Yardanico> The bridge is up, i was away since we were doing a kind of a small conference there
14:12:48FromDiscord<Yardanico> I'll still be away since getting my phone charged there isn't easy
14:13:12OddmongerZevv: ah yes, with the comma as last char, it's ok. Thank you
14:13:44Oddmongeri tried to go to the next after the '='
14:13:54FromDiscord<Yardanico> I'm in a small student camp, there's only 60 of us there
14:13:59FromDiscord<Yardanico> Until Friday
14:14:06FromDiscord<exelotl> @Theodore you don't need to reach for a decompiler to view the C code that Nim produces. Just check the contents of your nimcache folder
14:15:13FromDiscord<exelotl> You should compile with -d:danger and -gc:arc if you don't want the generated code to be full of runtime checks and GC calls
14:19:17FromDiscord<mratsim> nim c --nimcache:myCfolder foo.nim
14:20:32*kayw_ quit (Quit: WeeChat 2.8)
14:21:55*pietroppeter quit (Quit: Connection closed for inactivity)
14:24:00*muffindrake quit (Quit: muffindrake)
14:25:32*dv^_^ quit (Quit: leaving)
14:27:32*pietroppeter joined #nim
14:28:09FromGitter<alehander92> ok
14:28:22FromGitter<alehander92> i need to start mapping graphs, not nodes in my maps
14:28:41FromGitter<alehander92> because otherwise the whole "update aliases when x changes"
14:28:49FromGitter<alehander92> becomes more code anyway
14:35:51*krux02 joined #nim
14:36:26*krux02_ joined #nim
14:40:30*krux02 quit (Ping timeout: 265 seconds)
14:47:32*thomasross joined #nim
14:57:33FromDiscord<mbenam> Good morning. Is there a zero configuration or mdns library written in nim?
14:58:54*bouzu__ quit (Ping timeout: 244 seconds)
15:00:42ZevvNot that I know of
15:01:07Zevvyou should be able to bind to avahi relatively easy, the problem is that avahi itself has a bit of a cumbersome API already
15:01:12Zevvcallback into callbacks into callbacks
15:04:52*bouzu__ joined #nim
15:04:53*narimiran quit (Ping timeout: 260 seconds)
15:05:28*bouzu__ quit (Remote host closed the connection)
15:10:20*muffindrake joined #nim
15:11:00FromDiscord<kodkuce> @Araq you replyed to my form thread :) , hmm atm i kinda got it running by using qemu, its kinda slow but ye would love 10 time more to not have to deal with qemu, so can you elaborate what you mean by those 3 points
15:12:11FromDiscord<kodkuce> hmm sec
15:17:58FromDiscord<kodkuce> i was missing cross-aarch64-linux-gnu-libc-0.33_3 but installed that too dident help
15:21:01FromDiscord<kodkuce> i simplyfided it for not just trying to build a nim file with echo "Kmee"
15:23:49FromDiscord<kodkuce> sent a code paste, see https://play.nim-lang.org/#ix=2xEB
15:24:00FromDiscord<kodkuce> i have all this installed
15:24:31*lritter joined #nim
15:28:04*a_chou joined #nim
15:28:50*krux02_ is now known as krux02
15:28:52FromDiscord<kodkuce> responed on form too
15:33:31*muffindrake quit (Quit: muffindrake)
15:34:16*muffindrake joined #nim
15:38:18*a_chou quit (Remote host closed the connection)
15:39:06*a_chou joined #nim
15:43:26*a_chou quit (Remote host closed the connection)
15:50:20*NimBot joined #nim
16:03:20*vycb[m] left #nim ("Kicked by @appservice-irc:matrix.org : Idle for 30+ days")
16:06:29*PMunch joined #nim
16:07:03*hnOsmium0001 joined #nim
16:08:43PMunchHmm, Prestige, I just encountered your issue. But in the same project I didn't have this issue earlier today
16:09:08PMunchGranted that was across two different machines with possibly different versions of NimLSP and Nim
16:13:55PMunchHmm, is there a way to uppercase an argument when combining identifiers in a template?
16:15:41PMunchI have an enum called ArithmeticCommands and a constant called arithmeticDocumentation (which is an array indexed by the enum). Now I want to create a template for a repeating piece of code for different commands
16:16:32PMunchBut without this I would need to do something like `createHelpSection(Arithmetic, arithmetic)` to have both an upper and lower case version to tag into my template
16:20:20disruptekdo it.
16:23:16disruptekthere's no way to titlecase the identifier inside a template embed afaik.
16:25:20PrestigePMunch: hm interesting
16:25:36PMunchdisruptek, ah I see
16:28:45*PMunch quit (Quit: leaving)
16:29:33disrupteki haven't taken a day off in over 9 weeks, and i have almost nothing to show for it. i think i need a career change.
16:29:41disrupteki mean, y'know, a career.
16:29:56supakeenThat just sounds American.
16:30:15disruptekfuck this shithole country.
16:30:37voidpii'm not being exploited atm but kind of want to
16:31:00ozcareers are annoying, just take the money and run!
16:31:01Prestigeyou want to be exploited
16:31:16disruptekmy neighbors are xenophobic, homophobic, racist mysogynists.
16:31:34Prestigedisruptek: pee in their rosebushes
16:31:36voidpiyou can also say work if you like
16:31:54*apahl_ quit (Ping timeout: 244 seconds)
16:31:57disrupteki'm talking about my fellow americans.
16:32:05disruptekwhat the fuck is wrong with these people?
16:32:20voidpiwhat did they do now?
16:32:22FromDiscord<kodkuce> go take bigest loan you can and go to spain
16:32:23disruptekdid you see this new RAND study?
16:32:30FromDiscord<kodkuce> declare bancrapcy
16:32:35FromDiscord<kodkuce> say you spend tall on gabling
16:32:55disrupteki did lose >$100k gambling against musk, the criminal.
16:33:20FromDiscord<zetashift> disruptek, no options open for moving somewhere you think is better?
16:33:26voidpiwhat RAND study?
16:34:05disrupteki will find a summary.
16:34:06*apahl joined #nim
16:34:15disruptekthe paper is a bit long.
16:34:53ZevvIt's like toilet paper
16:35:22disrupteka shitty summary.
16:35:28voidpiyeah, I'm shocked
16:35:49voidpiI'm still reading ssalewsky's book
16:35:59voidpibetter keep doing that
16:36:01disruptek7 minutes of outrage and then they'll move on to something else.
16:36:56disruptekit's hard to move without proof of employment elsewhere.
16:37:28voidpiI just stoped trying
16:37:38voidpilike years ago
16:38:03disrupteki haven't been consistent. but the responses i get, if any, are incredibly discouraging.
16:38:59Prestigenot working atm?
16:40:05PrestigeI mean disruptek
16:41:00disrupteki've been self-employed since 2007, but i gave up my businesses a few years ago to focus on software.
16:41:20disruptekit's been great, really.
16:41:24disruptekso wonderful.
16:42:30Zevvyeah nice isn't it
16:42:43disruptekanyway. i'm just feeling shitty 'cause i can barely sit here without back pain.
16:42:56disruptekit's frustrating to be greeted by mangling code yet again.
16:43:09disrupteksolitudesf know's what's up.
16:43:33PrestigeI just ordered a standing desk because of that
16:43:39Prestigewell, it gets here tomorrow
16:45:19disrupteki can't actually stand where my workstation is; the ceiling is too low.
16:46:57Prestigeah. that's too bad
16:48:05disruptekyeah, i need to make some modifications but i can't afford what i have in mind.
16:51:58disruptekpro tip: get yourself a heavy rubber pad and comfortable shoes. then a standing desk is doable. i'd also start with shorter periods of standing work.
16:53:25PrestigeYeah I need a standing matt, not sure what I'd prefer. Saw a few nice ones but they were crazy pricey
16:55:15disruptekwell, don't get a nice one.
16:55:27*Prestige folds a towel
16:55:34disruptekwe're talking about rubber, that's it.
16:55:47disruptekyou're going to literally walk all over it.
16:57:53FromDiscord<acek7> greetings robots
16:57:56disruptekif you spend too much money i will come after you.
16:59:48disruptekacek7: you make me want to be a better man.
17:01:43FromDiscord<acek7> get back to work
17:02:33disrupteki think prestige is a bathroom attendant. there's no shame in it.
17:03:00PrestigeI attend them often
17:03:18disruptekyou have to envy the man who knows what he wants.
17:03:29disruptekwho has found his calling.
17:03:57FromDiscord<acek7> are you practicing inspirational speeches
17:04:46disrupteknah, i've been an amateur all my life. mostly the women's room at the gym.
17:05:17disruptekjust giving props to those who've managed to turn pro and make it to the big leagues.
17:05:22disruptekthe show, if you will.
17:09:16*narimiran joined #nim
17:12:23*Trustable joined #nim
17:13:21*endragor quit (Remote host closed the connection)
17:13:49*endragor joined #nim
17:21:34*femtotones quit (Quit: Default Quit Message)
17:28:19*tane joined #nim
17:29:17*a_chou joined #nim
17:43:12disruptekclyybber: i'm getting codegen for the /same/ proc symbol yet different arguments (a generic); shouldn't i be getting a new proc from the frontend? is this an optimization?
17:45:58*Vladar quit (Quit: Leaving)
18:11:33*go|dfish quit (Ping timeout: 260 seconds)
18:12:25*Kaivo quit (Ping timeout: 240 seconds)
18:15:17*Kaivo joined #nim
18:15:22*go|dfish joined #nim
18:17:00FromGitter<alehander92> Araq i'll probably
18:17:25FromGitter<alehander92> be ready with the fixed version tomorrow
18:17:26FromGitter<alehander92> morning
18:18:49disruptekit's this stupid prototype stuff.
18:19:02disrupteki don't understand why we have to generate a prototype even before we have a proc.
18:22:22*solitudesf quit (Remote host closed the connection)
18:22:26FromGitter<alehander92> disruptek take care of the back thing
18:22:47disruptek'bout to try some masturbation.
18:23:14disruptekthis codegen is infuriating.
18:24:07FromDiscord<Clyybber> disruptek: You mean the same proc symbol?
18:24:15FromGitter<alehander92> Araq is it ok to use asserts in compilr code
18:24:41FromDiscord<Clyybber> alehander92: Its ok as a "unreachable" assert
18:24:49FromDiscord<Clyybber> but not for error messages
18:25:02Araqdisruptek: so that mutual recursions are supported
18:25:26FromGitter<alehander92> disruptek better just run a bit
18:25:35FromGitter<alehander92> clyybber hm
18:25:44FromGitter<alehander92> makes sense
18:25:44disrupteki'm afraid to spill my seed while running.
18:26:28disruptekclyybber: the param becomes TaintedString between the prototype generation to appease araq's mutual recursion, and the header generation after we have a proc symbol.
18:26:29FromDiscord<Clyybber> burden of mankind
18:26:31FromGitter<alehander92> yeah it's better to make little disrupteks!
18:26:34FromGitter<alehander92> instead of that
18:27:19FromDiscord<Clyybber> disruptek: I think its really best to always resolve for now
18:27:35FromDiscord<Clyybber> to get somethign that actually works
18:27:39disrupteki don't know what that means.
18:27:48FromDiscord<Clyybber> resolve the alias
18:27:50Araqit's not "my mutual recursion", Nim programmers expect that the backend can handle arbitrary Nim code...
18:27:56disruptekit's not an alias.
18:28:05FromDiscord<Clyybber> disruptek: TaintedString is an alias
18:28:11FromDiscord<Clyybber> unless you enable TaintMode
18:28:17disrupteknot when it's from a generic, it's not.
18:28:40FromGitter<alehander92> ok!
18:28:51FromDiscord<Clyybber> disruptek: maybe resolve it anyways?
18:29:03FromDiscord<Clyybber> yeah
18:29:09disruptekhow can i tell?
18:29:13FromDiscord<Clyybber> regardless of wether it stemmed from a generic or not
18:29:15FromDiscord<Clyybber> just resolve it
18:29:22*disruptek sighs.
18:29:26FromDiscord<Clyybber> and if it resolves to something we already generated skip it
18:29:29disruptekPRs accepted.
18:29:44disruptekyou seem to think that this code is somehow special.
18:29:45disruptekit's not.
18:29:56disruptekthe issue isn't the mangler.
18:30:00disruptekthe issue is the codegen.
18:30:27disruptekAraq: we need less ambitious nim programmers or more ambitious codegen.
18:30:41FromDiscord<Clyybber> we need clear problem descriptions
18:30:53disrupteki need health insurance.
18:31:17Araqwe need a disruptek who gets shit done instead of complaining about how hard compiler development is
18:31:32disrupteki'd love to meet him.
18:32:12disruptekthis fucking pr has languished for months. i don't see anyone else taking it over.
18:37:40FromGitter<Lecale> Anyone use nim-plotly much?
18:40:16disruptek!requires nim-plotly
18:40:17disbot9nim-plotly: 11cwpearson/3graph-datasets2 71 total
18:40:23disruptekno, is the answer.
18:40:51FromGitter<Lecale> masturbation gives you a bad back by the way
18:41:04disruptekpreaching to the choir, my friend.
18:41:55*pietroppeter quit (Quit: Connection closed for inactivity)
18:43:19disruptekstill, it's apparently the only thing i'm good at.
18:43:34disruptekeverything else, /and i mean everything/, is _too_ hard.
18:46:06*superbia1 is now known as superbia
18:46:23*arecacea1 quit (Remote host closed the connection)
18:48:31FromGitter<Lecale> Opened an issue, the slow but sure approach
18:49:16disruptekAraq: the fact is, the codegen design is stupid. you know it, and i know it. mutual recursion is a problem /due to the design/, not due to the ambition of the user.
18:49:25*a_chou quit (Ping timeout: 264 seconds)
18:49:42disruptek"work harder" is not a solution, it's an excuse you lay at my feet.
18:50:05disruptek"figure it the fuck out" is not helpful, especially when you cannot be bothered to write comments.
18:50:08*arecacea1 joined #nim
18:50:11Araq"due to the design"? what are you talking about
18:50:17Araqproc p # forward decl
18:50:22Araqproc q = p()
18:50:28Araqproc p() = q()
18:50:41Araqis valid Nim code and must be translatable to C
18:50:46disruptekthe design of using a fucking string and ropes that must be serialized to strings before the logic is complete.
18:50:52Araqergo we need to generate C prototypes
18:51:06Araqno amount of swearing changes this fact
18:51:07disruptekokay, buddy, i guess you're just not smart enough to solve the problem any other way.
18:51:51Araqindeed I'm not smart enough to change the C spec to suit my codegen conveniences
18:52:04disruptekit's not a convincing argument that i can write nim this way but i cannot write c.
18:52:34disruptekif i can do it in my editor, why can't you do it in your compiler?
18:53:12Araqplease read again what I wrote
18:53:27AraqI'm trying to explain to you why we need to generate C prototypes
18:53:46disruptekwe don't need to generate the strings. we just need to generate the concept of a prototype.
18:53:51disruptekit should be serialized later.
18:54:14AraqI'm not talking about strings, I am explaining the basic requirements to you
18:54:22Araqmaybe you already know them
18:54:29disruptekwell, i wish i could say it was a helpful refresher.
18:55:54disruptekthe mangler deals with strings. it's a serialization that, imo, should happen as late as possible. yet the ast is mutatable and in fact mutating during codegen. i'm asked to mangle the same symbols multiple times, in multiple contexts, with multiple (mutable and mutated) values.
18:55:58disruptekit's madness.
18:56:08disruptekto suggest that this is somehow the required design is insulting.
18:56:16FromDiscord<Vindaar> @Lecale: I just read your issue. Seems a bit weird to me. You sure that `--threads:on` is really applied?
18:57:33Araqnever said anything like that, I explained C prototypes to you
18:58:12disruptekthen we agree. cool.
18:58:57Araqand the old mangler supports the madness, you compute the mangled name, you set s.loc.r to it so that it's always accessed consistently, the end. Now I can understand that it's much harder with IC but still
18:59:22disruptekbut still what?
18:59:36AraqI don't see why we want /need to rewrite jsonutils and ignore 3 important packages just because.
19:01:40shashlickAraq - quick qn on nimble
19:01:42disruptekthen don't. i honestly don't care. i don't use testutils and i don't use jsonutils. i don't care about accessing tainted strings from c++. i don't read the c source and i don't need ic. almost no one does. i don't work for status and they won't even interview me. why should i give two shits if they can compile their code faster?
19:02:07shashlickhttp://ix.io/2xFY is what i'm thinking for `nimble develop` with all dependencies also being in develop mode
19:02:15shashlickany feedback - will it meet your needs
19:03:20FromDiscord<Avatarfighter> What's good everyone
19:03:41FromDiscord<JSGRANT> @Avatarfighter Off for a few daaaaaaaays :^)
19:03:42Prestigeyo @Avatarfighter
19:04:01FromDiscord<Avatarfighter> @JSGRANT how are your nim adventures 🙂
19:04:08FromDiscord<Avatarfighter> Prestige: working on anything exciting today./
19:05:25Prestigewell after work in a few hours, have a PR to review for my window manager. Probably just working on that this evening
19:06:19FromDiscord<Avatarfighter> I managed to substantially lower the ram usage of my scraper atm 😄
19:06:34PrestigeAy nice, what did you change?
19:06:44FromDiscord<Avatarfighter> I made a priority system for the URLs
19:06:50FromDiscord<JSGRANT> @Avatarfighter On hold for a few days; Moving all my machines back to Arch (since I switched back to KDE fulltime) lol
19:07:09FromDiscord<Avatarfighter> Since the site has certain pages that take priority over others I sort the ones I don't need in the moment on a file
19:07:29FromDiscord<Avatarfighter> @JSGRANT that's super exciting
19:07:32FromDiscord<Avatarfighter> arch btw
19:08:15FromDiscord<JSGRANT> Still looking to see if there are semi/lil-complete qml and/or general qt bindings for Nim. It's certainly a tall order on / for the latter.
19:08:32FromDiscord<Avatarfighter> there is a qml binding I believe
19:08:55FromDiscord<JSGRANT> There are a few, but the ones I've seen haven't been touched in over a year
19:09:28FromDiscord<JSGRANT> @Avatarfighter Also yeah -- pretty nice / easy to setup. Think I'm going to have to fork a kwin script though because it hasn't been updated in sometime and doesn't work on the latest Plasma
19:09:28FromDiscord<Avatarfighter> Status is using a QML binding I believe that is pretty modern, let me find it
19:10:09FromDiscord<JSGRANT> https://github.com/status-im/nim-status-client is an app
19:10:31FromDiscord<JSGRANT> Not sure if they have their own seperate lib outside of it though
19:10:35FromDiscord<Avatarfighter> I think they might use their own QML lib
19:10:44FromDiscord<Avatarfighter> NimQml would be the name otherwise
19:10:49FromDiscord<JSGRANT> Oh, maybe https://github.com/status-im/nim-status-client/blob/master/docs/qml_api.md
19:11:26FromDiscord<Avatarfighter> !repo nimqml
19:11:27disbot12https://github.com/filcuc/nimqml -- 9nimqml: 11Qt Qml bindings for the Nim programming language 15 72⭐ 9🍴 7& 1 more...
19:11:31FromDiscord<Avatarfighter> its that one
19:11:46FromDiscord<JSGRANT> Yeah, that's the one I saw and hasn't been touched in sometime
19:12:08FromDiscord<Avatarfighter> Probably nothing is broken tbh
19:12:29FromDiscord<JSGRANT> Don't know the QT ecosystem at all though -- so I guess I'll have to play around and see what works (hopefully as said, nothing is blatantly broken or anything)
19:13:44FromDiscord<JSGRANT> I assume QML is probably pretty stable, because it's frontend dev facing afact ? idk
19:13:50FromDiscord<JSGRANT> I guess I'll TIAS
19:14:11FromDiscord<JSGRANT> Well ... in a few days lol
19:14:16FromDiscord<Avatarfighter> from what I know QML is the scripting system for QT
19:15:23FromDiscord<JSGRANT> I really hate when projects use 'flat case' and not camel for folder names / files. Such a small quibble but I see it in examples all over
19:15:51FromDiscord<Avatarfighter> you would hate my projects
19:15:57FromDiscord<JSGRANT> you monster
19:15:58FromDiscord<JSGRANT> lol
19:15:58FromDiscord<Avatarfighter> its a mix of whatever I'm feeling like in the moment
19:16:19FromDiscord<Avatarfighter> sometimes we have snakecase, flat, camel
19:16:25*gmaggior joined #nim
19:17:19FromDiscord<JSGRANT> I have no issue with making snake and camel & feel like it 'can' be done well assuming certain discintions -- flat is a crime. Especially if it isareallylongnameforsomething.
19:17:28FromDiscord<JSGRANT> making / mixing*
19:19:44*femtotones joined #nim
19:21:51FromDiscord<Recruit_main707> haxcramper was working on wrapping clang to later wrap qt and complex libraries with it
19:21:57FromDiscord<Recruit_main707> i think it was him
19:22:27FromDiscord<Recruit_main707> the clang wrapper was going great, but i dont know how is the qt one doing
19:23:07FromDiscord<haxscramper> Yes, I'm still kind of working on it. Clang wrapper itself is 99% done, I'm already working on helpers for wrapping logic
19:23:46FromDiscord<haxscramper> But mostly it is dealing with C++ being garbage and putting trillions of case/if/else all over the place & figuring out how exactly clang ast is structured
19:25:23FromDiscord<Recruit_main707> did you wrap it by hand?
19:25:31FromDiscord<Recruit_main707> or you used c2nim/nimterop
19:25:44FromDiscord<Clyybber> disruptek: Maybe let it sit for a while and do something else
19:26:42FromDiscord<haxscramper> I used libclang in c++ to generate raw nim wrappers and then repeated whole process with raw + nim to generate more friendly API
19:26:45*narimiran quit (Ping timeout: 240 seconds)
19:27:06FromDiscord<haxscramper> Documentation + renaming everything so it would fit nim coding conventions
19:32:39FromDiscord<PizzaFox> is it recommended to copypaste https://github.com/nim-lang/nimble/blob/master/src/nimblepkg/cli.nim into my project so i dont have to deal with cli packages
19:34:08FromDiscord<haxscramper> You want to have some kind of interactive nimble setup for project or just looking for CLI interface generator?
19:34:35FromDiscord<PizzaFox> mostly i want code to make prompting easy
19:34:46FromDiscord<PizzaFox> and its nimble ™️ so i trust it
19:37:24FromDiscord<haxscramper> I just checked - you can't actually use it nimble file itself, since it reiles on terminal stdlib module
19:38:02FromDiscord<haxscramper> For regular code you can just `import nimblepkg/cli`,
19:39:24FromDiscord<PizzaFox> today i will `nimble install nimble`
19:46:24Prestige@PizzaFox lmk if the world implodes
19:46:41FromDiscord<PizzaFox> in javascript ecosystem you can `npm install npm`
19:46:45FromDiscord<PizzaFox> in theory nothing bad will happen
19:47:28*awe001 joined #nim
19:49:47*awe00 quit (Ping timeout: 240 seconds)
19:50:55FromDiscord<kodkuce> araq: do you know how to solve that magic?
19:53:46FromDiscord<lqdev> @PizzaFox the javascript ecosystem is known for being… weird. think is-odd/is-even.
19:54:16FromDiscord<PizzaFox> listen
19:56:20FromDiscord<PizzaFox> there are always tradeoffs https://zws.im/‍‍‍‍‌‌‌‍‌‍‍‌‍‌‍‍
19:56:43FromDiscord<ache of head> lmao
19:57:13FromDiscord<lqdev> https://github.com/nim-lang/Nim/issues/15334
19:57:15disbot➥ 3Macro with typed param can't be used as a pragma attached to a type ; snippet at 12https://play.nim-lang.org/#ix=2xGf
19:58:45shashlickchoosenim depends on nimble
20:07:39*a_chou joined #nim
20:12:42*solitudesf joined #nim
20:19:46muffindrakeSo I've not been on top of Nim for a while. Has memory management been deterministic, or was there a garbage collector at some point?
20:21:08FromDiscord<lqdev> there still is a GC, but deterministic mman is on its way.
20:21:10federico3plot twist: a deterministic garbage collector
20:22:41muffindrakeI'd like more details than that if possible.
20:26:59FromDiscord<dom96> https://nim-lang.org/docs/gc.html
20:27:50FromDiscord<PizzaFox> can i read the version from `pkg.nimble` somehow
20:27:55FromDiscord<PizzaFox> or is it exposed at build time or smth
20:28:39FromDiscord<PizzaFox> stackoverflow from a year ago says use parsecfg on it
20:29:05FromDiscord<haxscramper> https://nim-lang.org/docs/nimscript.html#version
20:29:53FromDiscord<haxscramper> Or you can do `nimble dump` to get information for package. Or you can try to use parsecfg for it
20:30:12FromDiscord<PizzaFox> i want it do be hardcoded at compile time
20:31:12FromDiscord<haxscramper> What are you trying to do?
20:31:31FromDiscord<dom96> `NimbleVersion` gets defined IIRC
20:32:26FromDiscord<PizzaFox> just want to log version in a cli
20:32:43FromDiscord<PizzaFox> without having to maintain a random string in both `pkg.nimble` and my `cli.nim`
20:34:54FromDiscord<PizzaFox> there is not `NimbleVersion`
20:43:16FromDiscord<dom96> https://github.com/nim-lang/nimble/blob/master/tests/tester.nim#L771
20:48:29FromDiscord<minierolls> does anyone know how to exit the program
20:48:40FromDiscord<Elegant Beef> I think you take the red pill
20:48:43FromDiscord<minierolls> e.g. `exit(0)` in other languages
20:48:50FromDiscord<Elegant Beef> `quit`
20:48:58FromDiscord<minierolls> do i have to `discard quit`
20:49:03*lritter quit (Ping timeout: 260 seconds)
20:49:22FromDiscord<minierolls> hmm, im getting an error that `quit` is of type `None` tho 😦
20:49:36FromDiscord<Recruit_main707> quit("error msg")
20:49:40FromDiscord<Elegant Beef> There are two quit proc signatures
20:49:41FromDiscord<minierolls> ah ty
20:50:36federico3it's classified
20:55:55*haxscramper joined #nim
20:55:56*lritter joined #nim
20:58:11haxscramperAraq: is there any posts/discussions/todo-lists for compiler codegen? I saw ropes|strings-bad thing come up seveal times (e.g that better codegen is necessary & it shold not be string-based) and since I will be writing some kind of codegen for Qt thing I can take this into account.
20:58:50haxscramper& try to design it from the start in a way that might /potentially/ be used in compiler
21:01:18FromDiscord<mratsim> I suppose it's about introducing an intermediate IR step
21:01:44FromDiscord<mratsim> and you lower to this IR and then you lower the IR to C code (or LLVM IR or JS)
21:02:09FromDiscord<mratsim> this is similar to Rust MIR that they introduced and it was apparently a big deal
21:03:06haxscramperIs it possible to just implement simple C code representation that might potentially be expanded into full IR later on, or this is something that
21:03:15haxscrampermust be designed from the start
21:03:37haxscramperIn once piece
21:04:00haxscrampers/simple/not really complex/
21:07:31*a_chou quit (Ping timeout: 272 seconds)
21:10:53disruptekwe have some plans for a new IR, it's just that they are in competition with nim's 2020 goals.
21:12:30disruptekthere's even some new PoC stuff, but so what. we can talk about strings and ropes but they are really unrelated to a proper impl.
21:13:47disruptekideally, it's ast1->ast2->(llvm-ir|js). we currently have ast0->(ropes|strings).
21:14:22FromDiscord<mratsim> Coming soon Veave: https://github.com/vlang/v/issues/3814#issuecomment-692899580
21:14:22disbot➥ 3V Concurrency Considerations
21:14:40FromDiscord<Avatarfighter> Pepelaugh
21:15:05FromDiscord<Avatarfighter> What is new disruptek
21:15:36disrupteki'm fucking tired of all the shitty swearing in this channel.
21:15:53FromDiscord<haxscramper> > Coming soon Veave↵I think it is the reason why V "lang" is on the hackernews again.
21:17:04*tribly quit (Quit: WeeChat 2.9)
21:17:46FromDiscord<mratsim> No it's just a "normal" post
21:17:52FromDiscord<Rika> Poof of concept
21:18:04*tribly joined #nim
21:19:10disrupteki'm just frustrated because i can't afford to work on code that no one understands and even fewer people use.
21:20:46FromDiscord<haxscramper> I thought it is related to incremental compilation which would benefit literally everyone?
21:21:06disruptekyou mean because of all the people complaining about how slow the compiler is?
21:21:21disruptekit solves which Real Problem, exactly? the one where we don't have enough complexity?
21:21:32disruptekthe one where we need more complications before we consider replacing the backend?
21:21:44FromDiscord<mratsim> running out of CI time and having lots of engineer waiting for it
21:21:49disruptekthe one were we need more changes introducing more bugs and fewer people that understand the existing code?
21:22:24disruptekif you can afford the engineers in the first place, buy more ci time.
21:22:45disruptekserver time is cheap compared to programmer time.
21:22:53disruptekif it's not, then you aren't hiring the right programmers.
21:23:10disruptekshow me a real fucking problem worth solving here, because this ain't it.
21:23:45disruptekbut i digress.
21:24:29FromDiscord<Rika> Honestly I think IC is great but we already have blazing fast compilation times so I get that adding it at the cost of massive complexity addition isn't worth it
21:24:45disruptekit's putting the cart before the horse.
21:25:08disruptekimpl ast2 /first/ and then we can do whatever you want with a solid piece of idiomatic, modern nim.
21:25:17FromDiscord<Rika> Prolly would be best to add it once we have rust level compile times :P
21:25:25disruptekthis bullshit where we're tied to 12 year-old pascal-cum-nim is absurd.
21:25:27FromGitter<iffy> I realize I can use `getKeyOrDefault`, but is there a way to tell the compiler that `hasKey` has confirmed that there won't be a KeyError? https://play.nim-lang.org/#ix=2xGU
21:25:53disruptekiffy: there isn't really an idiom to save yourself the lookup, no; at least, not in tables.
21:26:29FromGitter<iffy> I'm fine doing the lookup; I just don't know how to tell everything under the true branch of `hasKey` that there really is a key
21:26:31FromDiscord<Rika> It might come once drnim is done?
21:27:00disruptekiffy: sorry, i don't get it.
21:27:13disruptekdrnim cannot analyse that, anyway.
21:28:16FromGitter<iffy> The compiler complains that my proc `Error: can raise an unlisted exception: ref KeyError` but I don't see any possible way that KeyError can be raised. I mean, unless some threads are corrupting memory in between lines 9 and 11
21:28:31disruptekjust capture it in try/except and discard.
21:30:30FromGitter<iffy> okay; in TypeScript there are (sometimes fragile) type guards that let you inform the compiler, "hey, I've just proved this key exists. You can safely assume it exists for all the code after this point." I was hoping `hasKey` would do that for me. Anyway, using try/except is fine
21:30:45FromGitter<iffy> thanks!
21:31:41disruptekyeah, the reason you can't do it is that we don't have the presumptive primitives you want, afaik.
21:32:02disruptekso what we do have does have an effect, which is why it's a problem for you.
21:33:14*femtotones quit (Quit: Default Quit Message)
21:33:39FromGitter<iffy> I actually like the code better without trying `hasKey` first. So win-win :)
21:34:12disruptekwrite what looks good and you'll have an easier time optimizing it /if you must/ later. 😉
21:37:12FromDiscord<haxscramper> Is there an `expandMacros` can still show code if there is a type error in it?
21:37:42FromDiscord<haxscramper> (edit) 'Is there an `expandMacros` ... can' => 'Is there an `expandMacros`alternative that'
21:39:49FromDiscord<mratsim> result.toStrLit
21:39:56FromDiscord<mratsim> echo result.toStrLit*
21:40:15FromDiscord<haxscramper> Yes, but I'm testing macro and I either get 80+ prints or none
21:40:34FromDiscord<haxscramper> Is it possible to temporarily push define
21:40:34FromDiscord<mratsim> all my macros end in that: https://github.com/mratsim/weave/blob/996c53caaffc6617d5f16572bfd8357f20047d4f/weave/parallel_for_staged.nim#L209
21:40:41disruptekonce: echo result.toStrLit
21:41:36FromDiscord<haxscramper> So I can do something like `{.push: define(logOnlyThisInstantiation).): <some-code>`
21:41:56FromDiscord<haxscramper> I just can't figure out if the syntax is incorrect or this is simply not allowed
21:42:56FromDiscord<mratsim> push can only attach pragma to proc definition AFAIK
21:54:58FromGitter<alehander92> @iffy yeah this can be doable
21:55:12FromGitter<alehander92> with some generalization of flow .. typing? i guess the z3 stuff might be
21:55:16FromGitter<alehander92> the best fit maybe
21:55:19FromGitter<alehander92> eventually
21:57:40FromGitter<alehander92> disruptek well IC is just cool
21:57:45disruptekyeah, great.
21:57:48FromGitter<alehander92> but i agree that it might be much easier
21:57:55FromGitter<alehander92> with some different overall architecture
21:58:05FromGitter<alehander92> but such a rewrite would take .. an year? or more?
21:58:15FromGitter<alehander92> like, it sounds like a nim 2 thing to me
21:58:36disruptekit's not just about ease. i can rewrite more of the codegen to make this work. but every line i change introduces an unknown quantity of bugs.
21:59:13disruptekit's not a responsible use of time.
21:59:47*tane quit (Quit: Leaving)
22:03:59FromDiscord<dom96> Yay. Our discord is now verified.
22:04:07FromDiscord<Avatarfighter> ooo nice!
22:04:11FromDiscord<Avatarfighter> who is the partner?
22:04:20FromDiscord<dom96> Partner?
22:10:46FromGitter<alehander92> disruptek well .. I don't know
22:10:46FromDiscord<Avatarfighter> When a discord becomes verified the person who applied for the partnership becomes a Partner
22:10:46FromGitter<alehander92> such a major rewrite (new passes / more modern nim ) sounds cool
22:10:46FromGitter<alehander92> i also want to see that, but iirc Araq sees it as a risky thing
22:10:46FromGitter<alehander92> i mean, it would require a lot more work and people
22:10:46disruptekit's going to happen anyway.
22:10:46FromGitter<alehander92> I mean I'd like to see that
22:10:46FromGitter<alehander92> but it does sound that step-by-step improvements might be more ok
22:10:46FromGitter<alehander92> i mean, you need to develop both
22:10:46FromDiscord<dom96> @Avatarfighter me I guess
22:10:46disrupteki don't think so.
22:10:46FromGitter<alehander92> you barely have enough people to keep developing nim 1
22:10:46disruptekthat's really not my problem.
22:10:46FromGitter<alehander92> and now you need to do both this and a new nim 2
22:10:46FromDiscord<Avatarfighter> @dom96 hopefully 😄 You'll get a cool little badge then 🙂
22:10:46FromGitter<alehander92> impl*
22:10:46FromGitter<alehander92> and keep them compatible
22:10:46disrupteknot really.
22:10:46FromGitter<alehander92> to an extent
22:10:46disruptekfirst of all, why do any of it?
22:10:46FromGitter<alehander92> well, because they should implement the same lang
22:10:46disruptekwhy impl a new backend?
22:10:46FromGitter<alehander92> well, you said you want different ugh
22:10:46FromGitter<alehander92> mid-end (?)
22:10:46disruptekif no one wants to pay for it, i'm certainly not going to work on it. are you?
22:10:46disruptekif i wanted to do it for fun, i wouldn't do IC first.
22:10:46FromGitter<alehander92> but that's what I am saying
22:10:46disruptekthe backend works fine for me.
22:10:46FromGitter<alehander92> who would pay for such a risky thing
22:10:46FromGitter<alehander92> when one can more easily keep improving the current impl
22:10:46disruptekyou think it's easy?
22:10:46FromGitter<alehander92> no
22:10:46disruptekthen maybe don't use that word.
22:10:46FromGitter<alehander92> but you think it's easy to make a quality new impl *and* keep maintaining the other one?
22:10:46disruptekas araq has pointed out, lessons have been learned since the backend was written.
22:10:46*solitudesf quit (Ping timeout: 240 seconds)
22:10:49FromGitter<alehander92> yes
22:10:59FromGitter<alehander92> and they can be applied to the current impl often
22:11:06FromGitter<alehander92> even if less than perfect
22:11:14disruptekwhy maintain the existing backend?
22:11:21FromGitter<alehander92> because people use it
22:11:25FromGitter<alehander92> we dont have another one
22:11:35disruptekwhat lessons do you have in mind?
22:11:45FromGitter<alehander92> you said "lessons"
22:12:13disruptekyou can't argue that "they can be applied to the current impl often" and then wave your hand when i ask wtf you're talking about.
22:12:24disruptekwe already agree that changes to the existing backend are not easy.
22:12:31FromGitter<alehander92> i said that's my understanding of what araq wanted
22:12:47FromGitter<alehander92> that those new ideas might be integrated
22:12:55FromGitter<alehander92> into the existing impl
22:12:57disruptekwhich ideas?
22:13:20FromGitter<alehander92> the ideas he/you have about a "how we would write nim again if we can"
22:13:31disruptekthe only ideas i know of require throwing out the existing impl.
22:13:54FromGitter<alehander92> hm
22:13:55*Trustable quit (Remote host closed the connection)
22:13:55FromGitter<alehander92> like?
22:14:08disrupteklike what?
22:14:24FromGitter<alehander92> like which ideas?
22:14:55*NimBot joined #nim
22:15:01FromGitter<alehander92> so i planned to just use it for my side langs
22:15:15FromGitter<alehander92> so i dont know which are exactly your guys ideas
22:16:38disruptekcurrently we go f->h and we want to go f->g->h->i.
22:17:00disruptekthere's really no useful way to leverage f->h code.
22:17:05disruptekby design, it must be removed.
22:18:01FromGitter<alehander92> ok, but this can be done with
22:18:08FromGitter<alehander92> fixing the backend
22:18:17disruptekgo for it, buddy.
22:18:22FromGitter<alehander92> not by changing the language/whole architectture of how modules are compiled
22:18:26FromGitter<alehander92> like my thing
22:18:37FromGitter<alehander92> that's why i thought those ideas might not b that radical
22:19:21disruptekthe radical idea is a new design for ast transformation and adding at least one layer before passing to llvm.
22:19:38disruptekwe wouldn't use any of our backend code.
22:20:22FromGitter<alehander92> well
22:20:44FromGitter<alehander92> i don't know enough
22:20:44*mipri joined #nim
22:20:45disruptekthere's no point to having code that knows how to compose c from strings if you are going to use llvm api to compose ir.
22:20:48FromGitter<alehander92> to have a strong opinion
22:20:56disrupteki think you do.
22:21:00FromGitter<alehander92> yeah but i don't want
22:21:04FromGitter<alehander92> llvm-onlu
22:21:15FromGitter<alehander92> it's a big dep, it's a bit slower sometimes imo
22:21:23FromGitter<alehander92> and it's useful to have C/ cranelift
22:21:34FromGitter<alehander92> some kind of alternative
22:21:37FromDiscord<mratsim> llvm is meh for embedded
22:21:38disruptekyou know what's useful?
22:21:47disruptekbug-free code that thousands of other people are maintaining for us.
22:21:48FromDiscord<mratsim> many obscure target only have a C compiler
22:21:58FromGitter<alehander92> well ok C is pretty maintained
22:22:02disruptekyou know what i /don't/ care one iota about?
22:22:06disruptekobscure fucking targets.
22:22:08disruptekwho gives a shit.
22:22:15FromGitter<alehander92> well that's what nim is about
22:22:18FromGitter<alehander92> multi platforms
22:22:29FromGitter<alehander92> you can't just change all directions because "easy"
22:22:34FromGitter<alehander92> maybe this is a good idea
22:22:38FromGitter<alehander92> but it's not obvious
22:22:53FromDiscord<mratsim> Obscure targets are one way to attract people to Nim. Want to run Zig? too bad, want to run Rust? oops no LLVM for you
22:22:56FromGitter<alehander92> and come on tying yourself to llvm
22:22:57disruptekyou know what's a good idea? spending less time reinventing wheels.
22:23:07FromDiscord<Clyybber> thats why we use C buddy
22:23:07disruptekthere's no one who is interested in nim.
22:23:11FromDiscord<mratsim> LLVM is a moving target
22:23:12FromGitter<alehander92> when you already have a different thing there
22:23:17disruptekso don't talk to me about obscurity being super attractive.
22:23:19disrupteki don't see it.
22:23:23FromGitter<alehander92> LLVM is totally not trivial man
22:23:30disruptekso what?
22:23:32FromDiscord<Clyybber> disruptek: you need a punching bag
22:23:35disruptekyou think our current backend is trivial?
22:23:36FromDiscord<Clyybber> and health insurance
22:23:43FromGitter<alehander92> so i don't see how it's simpler than targetting C
22:23:46FromDiscord<mratsim> Some chinese company came and said they were using Nim to drive bluetooth software: https://forum.nim-lang.org/t/5509
22:23:51FromGitter<alehander92> it's probably a bit better
22:23:54disruptekbig fucking whoop.
22:24:09FromGitter<alehander92> well come on how hard can it be
22:24:11FromGitter<alehander92> to target C
22:24:22FromGitter<alehander92> (yeah i'll probably be wrong about this)
22:24:22disruptekwhat are you talking about?
22:24:26FromGitter<alehander92> (famous last words)
22:24:30disruptektotally not the point.
22:24:54FromGitter<alehander92> yeah probably the backend can be rewritten
22:25:00mipriwhat he's talking about is LLVM being a moving target, and the answer to "how many times a year does the C codegen have to be patched to keep pace with C standard changes?" being zero
22:25:01FromGitter<alehander92> and if it can easily have
22:25:05FromGitter<alehander92> IR->C IR->LLVM
22:25:11FromGitter<alehander92> passes: cool!
22:25:22disruptekof course it can.
22:25:31disruptekthat's what the backend ir does for us.
22:25:38FromGitter<alehander92> yeah this is a good thing
22:25:49FromGitter<alehander92> IR->Wasm etc
22:26:45disruptekclyybber: i need some fucking edibles is what i need.
22:27:17FromDiscord<Clyybber> that too
22:27:17FromGitter<alehander92> or a dog
22:27:57FromDiscord<Clyybber> disruptek: I am once again asking you to explain the issue (:p)
22:30:36disruptekthe issue is that the codegen wants a prototype for a proc that doesn't exist; there's no BProc. in generating that prototype, we establish a name for the proc after mangling its params. the first param is seq[string]. the proc is thus named add_seqString. next the compiler changes the 1st param to seq[TaintedString]. now it's ready to write the proc. the proc definition is created.
22:31:32disruptekthe proc reuses its mangled name, add_seqString, but it now has a seq[TaintedString] 1st param. so cpp cannot link with code that expects add_seqString to take a seq[string] because it has no such symbol.
22:32:46disruptekthe mangle of params should only involve the proc's scope, obviously, but we don't have a proc scope the first time we see the proc symbol.
22:33:20*krux02 quit (Remote host closed the connection)
22:33:36FromDiscord<Clyybber> I see
22:33:58*awe001 quit (Ping timeout: 246 seconds)
22:34:05disruptekif you look at the diff, you see me changing a lot of code to take BProc where it previously took BModule.
22:34:13disruptekthis is to set the scopes correctly.
22:34:43disruptekthere are some calls to genProcPrototype or genProcHeader which take a BModule because a BProc doesn't exist yet.
22:35:59*a_chou joined #nim
22:36:50disruptekto tie this to the last convo, imagine that we had a proper ast here.
22:37:01FromGitter<alehander92> oh man i need to rebuild koch
22:37:12FromDiscord<Clyybber> Do you have a clear idea what part of the compiler changes the 1st param?
22:37:13FromGitter<alehander92> when i update testament .. i forgot
22:37:13disruptekwe wouldn't even have the concept of a prototype. that'd just be a part of the serialization process.
22:37:31disruptekno, i dunno what's changing it.
22:38:06FromDiscord<Clyybber> If there were no change of the first param, there would be no issue, right?
22:38:38disruptekright. but i'm just going to remove the whole first pass of the prototype generation.
22:39:29disruptekalternatively, i could create a stack of those prototypes and unwind them later. but i really can't see why that'd be necessary.
22:40:10FromDiscord<Clyybber> disruptek: what is the first pass of the prototype gen?
22:40:43disruptekeg. in genProcNoForward.
22:42:48FromDiscord<Clyybber> will that solve the problem?
22:44:27disruptekit will solve one problem and produce others.
22:44:44disruptekalehander92: you know how ic works right now?
22:44:54disrupteki mean, the ic i wrong months ago.
22:45:14disruptekgreat slip.
22:45:19disrupteki mean, the ic i wrote months ago.
22:45:42FromDiscord<Clyybber> disruptek: can you explain what exactly you will remove, and what the effects are?
22:46:01disruptekno, because i don't know what effect it will have except to break code.
22:46:21disrupteki will remove the prototype generation whenever i don't have a proc.
22:46:35disruptektakes about two seconds.
22:48:11FromGitter<alehander92> disruptek
22:48:44FromGitter<alehander92> i am not sure: i guess you just cache stuff with frosty based on some kind of unique mangled name
22:48:50FromGitter<alehander92> but no idea about details
22:49:03disruptekit's simple. explaining it will highlight how stupid it is.
22:49:18FromGitter<alehander92> cool!
22:49:23disrupteki iterate over top-level statements.
22:49:41disruptekif the statement isn't in the cache,
22:49:54disrupteki make a fake copy of the entire module graph.
22:50:05disrupteki compile the statement against this fake graph.
22:50:25disruptekthen i iterate over the graph and compare it to the existing one.
22:50:41disrupteki record all of the changes, in order. this is the cache.
22:50:52disruptekthen i apply them to the original module graph.
22:51:08disruptekthat is all.
22:52:07FromGitter<alehander92> it should sound simple
22:52:16FromGitter<alehander92> but i need to read it several times more
22:52:32FromDiscord<dom96> disruptek: you wanna rewrite the backend?
22:52:56disruptekof course not. the compiler works fine for me.
22:55:44FromGitter<alehander92> disruptek
22:55:48FromGitter<alehander92> so does this work
22:55:49FromGitter<alehander92> with macros
22:55:52FromDiscord<dom96> Alright then
22:55:55FromGitter<alehander92> like, you just evaluate the vm thing?
22:56:06FromGitter<alehander92> and it generates top level stuff which you use in the same way
22:56:22disrupteki don't care how the frontend works.
23:00:54FromGitter<alehander92> hm, cool
23:00:55miprihow can I importc a #define?
23:02:11FromDiscord<haxscramper> https://github.com/nim-lang/c2nim#translating
23:26:44*haxscramper quit (Remote host closed the connection)
23:50:21*aenesidemus joined #nim