00:03:17 | disruptek | this is one of those bugs that just seems impossible. |
00:07:30 | * | krux02_ joined #nim |
00:11:20 | * | krux02 quit (Ping timeout: 265 seconds) |
00:12:13 | * | krux02_ quit (Client Quit) |
00:12:46 | * | ng0 quit (Quit: leaving) |
00:21:33 | disruptek | there's a certain logic to the compile-time vars persisting into runtime. |
00:22:45 | disruptek | it's like we ofter a continuum between aot, jit, or runtime. but, of course, i didn't like the impl. |
00:29:19 | * | Hideki_ joined #nim |
00:34:08 | * | Hideki_ quit (Ping timeout: 268 seconds) |
00:35:21 | * | rockcavera quit (Remote host closed the connection) |
00:41:49 | * | rockcavera joined #nim |
00:50:56 | * | chenhq2005 joined #nim |
00:57:42 | * | WilhelmVonWeiner joined #nim |
00:58:06 | * | WilhelmVonWeiner is now known as Guest50399 |
01:01:31 | FromDiscord | <Rika> Concepts are just type classes right? |
01:02:34 | * | letto quit (Ping timeout: 265 seconds) |
01:11:08 | * | icebattle quit (Ping timeout: 268 seconds) |
01:16:38 | * | voltist joined #nim |
01:17:31 | * | lritter quit (Quit: Leaving) |
01:27:18 | muffindrake | What's the closest thing to running .nim files as scripts? |
01:30:14 | shashlick | Nimscript |
01:32:48 | * | chenhq2005 quit (Ping timeout: 258 seconds) |
01:33:56 | shashlick | ~nimscript |
01:33:57 | disbot | nimscript: 11Module documentation - https://nim-lang.org/docs/nimscript.html -- shashlick |
01:34:47 | shashlick | ~nimscript |
01:34:47 | disruptek | wow, when did you add that one. |
01:34:48 | disbot | nimscript: 11NimScript is the subset of Nim that can be evaluated by Nim's builtin virtual machine - https://nim-lang.org/docs/nims.html -- shashlick |
01:34:57 | shashlick | Just did |
01:35:02 | disruptek | ahh |
01:35:16 | shashlick | Didn't realize it was only one per person |
01:35:36 | disruptek | yeah. it seemed like the right model. |
01:38:26 | shashlick | I made three messages to give some structure but seems fair |
01:38:50 | disruptek | i can put the link in if you want. |
01:39:34 | disruptek | funny thing about data. |
01:50:30 | * | koltrast quit (Ping timeout: 252 seconds) |
02:00:35 | * | chenhq2005 joined #nim |
02:04:21 | * | chenhq2005 quit (Client Quit) |
02:05:46 | * | chenhq2005 joined #nim |
02:16:38 | * | koltrast joined #nim |
02:18:55 | shashlick | I think it's good enough for now |
02:19:04 | * | letto joined #nim |
02:19:24 | disruptek | what was the cause of leorize's issue building nimterop? |
02:31:03 | shashlick | Cannot reassign stdout |
02:31:11 | shashlick | https://github.com/nimterop/nimterop/commit/359bc6e38a90696fe40b9265c62549af8200861d |
02:31:20 | disruptek | oh right. |
02:32:13 | disruptek | wow, this is cool. |
02:32:27 | disruptek | that'll make clyybber happy. |
02:52:43 | * | dddddd quit (Remote host closed the connection) |
02:59:22 | muffindrake | My actual question was how I'd run a given .nim file as a proper nim program in a script |
03:00:28 | voltist | As in compile and execute Nim from inside a Nim program? |
03:00:44 | * | NimBot joined #nim |
03:34:07 | leorize | shashlick: I just got back home, will test now |
03:34:49 | muffindrake | voltist: No, execute a regular nim program like a script |
03:35:12 | leorize | well the VM is not that nice to use atm... |
03:35:35 | leorize | https://github.com/nim-lang/Nim/blob/devel/compiler/scriptconfig.nim |
03:35:38 | leorize | ^ but there you go |
03:35:54 | leorize | that allows you to integrate the nimvm into your program |
03:36:39 | leorize | shashlick: btw you should bump the minimum regex verion for nimterop |
03:36:54 | disruptek | yeah, 0.11 is too old for 1.0.4. |
03:37:07 | disruptek | or 0.10 is. w/e |
03:37:55 | leorize | shashlick: building nimterop head and still got stdout reassignment issues |
03:39:32 | leorize | ah it's in a separated branch |
03:40:02 | leorize | so, uh... /tmp/nimble_32190/githubcom_genotrancenimarchive_0.3.4/nimarchive_32190.nims(23, 18) Error: cannot open file: nimterop/docs |
03:40:41 | leorize | printPkgInfo() failed |
03:40:51 | leorize | apparently the nimble file imports nimterop |
03:41:16 | leorize | and nimble didn't put nimterop in the path yet because it wasn't manage to figure out the dependencies |
03:51:51 | shashlick | Sorry I didn't get around to bump it |
03:52:54 | * | hexeratops joined #nim |
03:54:07 | * | rockcavera quit (Remote host closed the connection) |
03:58:49 | disruptek | i guess i want to see the last tag that passed or the first tag that failed. tags in the gutter, with color to indicate pass/fail. empty space means it's uncovered, but maybe we can heat map its impact on tests, too. |
03:59:35 | * | muffindrake quit (Ping timeout: 272 seconds) |
04:01:09 | * | muffindrake joined #nim |
04:04:07 | shashlick | bumped the reqs, let the CI pass and I'll merge/tag |
04:04:32 | leorize | disruptek: https://forum.nim-lang.org/t/5727#36031 |
04:04:57 | leorize | I think I can help with the pseudo package thing to install nimph :P |
04:05:16 | shashlick | @leorize: do you have latest nimterop and nimarchive? |
04:05:17 | disruptek | oh yeah, i forgot about that idea. |
04:05:44 | leorize | shashlick: nimterop with the commit from reopen branch |
04:06:14 | leorize | nimarchive@#head couldn't install because of the error I showed above |
04:06:49 | shashlick | you're on gentoo right? |
04:07:06 | leorize | yea, on nim/nimble git fwiw |
04:07:09 | shashlick | is there a docker i can use to repro? |
04:07:14 | shashlick | which nim/nimble |
04:07:31 | leorize | http://ix.io/27rj |
04:07:45 | leorize | nimble: 5e72840336c03ef66557f96623fedddece53083d |
04:08:04 | leorize | nim: 675ca997fba448c2eb096f4bb12ba97125d79bcd |
04:08:46 | leorize | if you're asking which ebuild: https://github.com/alaviss/lrz-overlay |
04:08:50 | leorize | ^ all in my overlay |
04:10:33 | shashlick | okay no idea on gentoo overlay stuff |
04:10:56 | leorize | it's just an ebuild repository |
04:11:21 | disruptek | the answer is, it's probably not easy to repro. |
04:11:21 | leorize | just in case you're curious on how I built my nim |
04:11:56 | shashlick | your nimble is super old |
04:12:10 | shashlick | June 21, 2019 |
04:13:39 | leorize | hmm, my auto updater should've caught that |
04:13:42 | leorize | building a new nimble now |
04:15:11 | leorize | oh, I know why... |
04:15:21 | leorize | nimble has to build nimble during choosenim installation |
04:15:25 | leorize | ... |
04:15:38 | leorize | on 0.11.0 now |
04:17:21 | leorize | and it still doesn't work |
04:17:35 | leorize | reason? I apparently cloned nimterop once with nimble develop :P |
04:17:55 | leorize | haven't updated that one since forever |
04:18:28 | leorize | it's building now |
04:19:24 | shashlick | okay neat, fingers crossed |
04:19:38 | leorize | ... /tmp/nimble_30354/githubcom_genotrancenimarchive_0.3.4/nimarchive/archive.nim(115, 10) template/generic instantiation of `cImport` from here |
04:19:41 | leorize | ... /usr/lib/nim/core/macros.nim(1504, 99) Error: undeclared identifier: 'stat' |
04:21:37 | shashlick | hmm |
04:22:36 | leorize | http://ix.io/27rm |
04:23:47 | shashlick | where do I start - https://hub.docker.com/u/gentoo/ |
04:26:03 | * | nsf joined #nim |
04:26:46 | shashlick | stat is defined - https://github.com/genotrance/nimarchive/blob/master/nimarchive/archive.nim#L100 |
04:27:37 | disruptek | all you need for a portage dockerfile: |
04:27:44 | disruptek | FROM gentoo/portage:latest as portage |
04:27:48 | disruptek | FROM gentoo/stage3-amd64:latest as gentoo |
04:27:55 | disruptek | COPY --from=portage /usr/portage /usr/portage |
04:28:31 | * | hexeratops quit (Quit: Leaving) |
04:28:51 | disruptek | then you can, like, RUN eselect profile set default/linux/amd64/17.0/no-multilib/hardened && source /etc/profile && emerge -DN @world |
04:31:05 | shashlick | @leorize: is your nimterop the latest? 😄 |
04:34:36 | leorize | maybe not :P |
04:35:10 | leorize | updated and still same result :( |
04:35:27 | leorize | on reopen branch rn |
04:36:44 | Yardanico | can you try with nim compiled as your user maybe? |
04:40:17 | leorize | ? |
04:41:15 | Yardanico | well I thought you have used nim from some gentoo overlay or from official gentoo repos and it didn't work with nimterop |
04:41:32 | leorize | it's not some overlay, it's mine :P |
04:42:28 | shashlick | how do you install stuff in gentoo? 😐 |
04:42:33 | shashlick | need git |
04:42:33 | * | marmotini_ joined #nim |
04:42:41 | leorize | emerge <package name> |
04:42:59 | Yardanico | well, to be honest I've actually tried gentoo for a week recently (after I got 3700X), didn't like it really (well, I've configured my system just like I use other distros usually) |
04:43:03 | Yardanico | but that's entire subjective :P |
04:43:37 | leorize | you will love gentoo when you start compiling your own system libraries :P |
04:43:53 | leorize | back when I was on arch an AUR package might lag behind official |
04:43:58 | leorize | and bam your stuff no longer works |
04:44:20 | leorize | have to download the pkgbuild and update it manually |
04:44:23 | disruptek | gentoo is pretty great. |
04:44:52 | * | chenhq2005_ joined #nim |
04:45:03 | Yardanico | well I don't really use stuff from AUR, almost everything is from official arch repos (I'm on arch right now), but I've looked at some alternative distros like alpine or void too |
04:45:23 | shashlick | meh |
04:45:46 | Yardanico | we should all just use windows like ar*q :P |
04:45:52 | shashlick | i boot stage3-amd64 |
04:46:02 | shashlick | what do i eselect |
04:46:14 | disruptek | eselect profile set default/linux/amd64/17.0/no-multilib/hardened && source /etc/profile && emerge -DN @world |
04:46:22 | leorize | don't have to, the default profile should just works |
04:46:40 | leorize | although the no multilib profile will give you faster build times (no need to build 32bit libs) :P |
04:47:01 | shashlick | doesn't work buddy |
04:47:20 | disruptek | eselect profile list |
04:47:39 | * | chenhq2005 quit (Ping timeout: 240 seconds) |
04:47:41 | disruptek | then eselect profile set NUM |
04:47:52 | shashlick | http://ix.io/27rr |
04:48:05 | shashlick | cannot load module list |
04:48:29 | disruptek | emerge --sync |
04:50:25 | shashlick | gpg: keyserver refresh failed: Server indicated a failure |
04:50:39 | * | marmotini_ quit (Remote host closed the connection) |
04:51:02 | * | pbb quit (Remote host closed the connection) |
04:51:11 | * | marmotini_ joined #nim |
04:52:36 | disruptek | ... |
04:52:55 | leorize | have you copied the resolv.conf before you chroot? |
04:53:13 | leorize | btw I grepped `stat` from nimterop output |
04:53:27 | * | marmotini_ quit (Remote host closed the connection) |
04:53:33 | leorize | there weren't any defines of that in the output |
04:53:44 | * | marmotini_ joined #nim |
04:55:31 | shashlick | must be some coverride bug |
04:55:52 | shashlick | works on ubuntu tho |
04:56:03 | leorize | I've removed nimterop cache |
04:56:10 | leorize | let's see if it's gonna work this time |
04:56:37 | shashlick | that might help, or even using -f |
04:56:42 | leorize | yep, probably the nimarchive build was botched |
04:56:50 | leorize | removed it and everything built |
04:58:34 | leorize | shashlick: you wanted a fully static binary, right? |
04:58:43 | leorize | lemme build static libressl real quick |
04:58:47 | * | jwm224 quit (Quit: WeeChat 2.8-dev) |
05:02:37 | shashlick | yep, will need to configure choosenim to statically link with it |
05:03:03 | shashlick | i am going to tag 0.5.1 of choosenim, will need an official build after that |
05:03:36 | leorize | got a build, fully static, no dlopens |
05:04:18 | leorize | question now is how do I send this to you lol |
05:08:19 | leorize | any file hosting service that I can just toss mine into? |
05:10:06 | leorize | shashlick: I think I can just mail it to you |
05:12:17 | leorize | shashlick: link sent via pm |
05:25:33 | disruptek | i want to export a proc that is operated upon by a custom macro pragma. but because this turns into mymacro: proc somedef*(), i get a compiler error: attempt to export proc not at top-level. 🙁 |
05:45:06 | * | marmotini_ quit (Remote host closed the connection) |
05:45:39 | * | marmotini_ joined #nim |
05:50:03 | * | marmotini_ quit (Ping timeout: 240 seconds) |
05:53:14 | * | leorize quit (Quit: WeeChat 2.6) |
05:55:41 | shashlick | just tagged choosenim v0.5.1, CI will build and post binaries in the next 30 minutes - appreciate some testing |
05:55:45 | shashlick | thanks in advance |
05:56:28 | * | marmotini_ joined #nim |
05:57:50 | FromGitter | <gogolxdong> Any idea why c2nim errors ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5e1ea9dd53fd014bb0750982] |
06:01:49 | * | marmotini_ quit (Ping timeout: 272 seconds) |
06:25:20 | * | narimiran joined #nim |
06:28:41 | * | marmotini_ joined #nim |
06:29:21 | * | marmotini_ quit (Remote host closed the connection) |
06:29:35 | * | marmotini_ joined #nim |
06:37:56 | * | theelous3 quit (Read error: Connection reset by peer) |
06:42:55 | * | chenhq2005_ quit (Ping timeout: 258 seconds) |
06:44:45 | leorize[m] | my guess would that c2nim couldn't process `__ctx` |
06:45:37 | leorize[m] | oh actually, maybe it's `CRYPTO_MINALIGN_ATTR` |
06:46:18 | leorize[m] | c2nim don't understand C macros really well |
06:53:40 | * | silvernode joined #nim |
06:54:50 | silvernode | Sitting here in the car at work on my ThinkPad about to clock in. How is everyone? |
06:55:07 | silvernode | It's 23:54 here in AZ |
07:00:58 | * | silvernode quit (Ping timeout: 268 seconds) |
07:06:50 | * | marmotini_ quit (Remote host closed the connection) |
07:07:27 | * | marmotini_ joined #nim |
07:11:39 | * | marmotini_ quit (Ping timeout: 240 seconds) |
07:19:16 | * | voltist quit (Quit: Leaving) |
07:25:50 | livcd | i am about to puke |
07:25:54 | FromGitter | <zacharycarter> it's 9:25 am here |
07:25:55 | livcd | had the worst coffee in my life |
07:26:01 | FromGitter | <zacharycarter> and I just go to work :/ |
07:27:54 | livcd | you dont seem to be excited |
07:28:50 | FromGitter | <zacharycarter> hahaha well I'm looking for a new job for a reason :P |
07:29:07 | Zevv | you know where to find me :) |
07:29:09 | FromGitter | <zacharycarter> I mean, that's not the only reason, life is kind of complicated atm, but it's a reason |
07:29:16 | FromGitter | <zacharycarter> I know but I need to go back to the states haha! |
07:29:28 | FromGitter | <zacharycarter> otherwise I'd do it Zevv |
07:29:34 | livcd | Where are you from zachary ? |
07:29:45 | Zevv | he is all over the place |
07:29:48 | FromGitter | <zacharycarter> Northern Virginia |
07:29:51 | FromGitter | <zacharycarter> but right now I'm in Helsinki |
07:30:10 | FromGitter | <zacharycarter> I'm trying to find a gig in Austin Texas |
07:30:13 | Zevv | I bet the 0.2 hours of daylight also help making life happy and easy ove there |
07:30:16 | livcd | CIA agent confirmed |
07:30:16 | FromGitter | <zacharycarter> or something remote |
07:30:28 | FromGitter | <zacharycarter> :P def not a CIA agent - they'd never accept me haha |
07:30:39 | FromGitter | <zacharycarter> yeah - the daylight thing is kind of a bummer |
07:31:00 | FromGitter | <zacharycarter> but really - I've just figured out that game development is not much different than what I was doing before, and I get paid less and work more hours |
07:31:17 | FromGitter | <zacharycarter> and it's hard to get my significant other over here so I'd rather just go back to the states and earn more |
07:31:20 | livcd | I never visited the US but I am afraid I would regret being born here if I would have visited :? |
07:31:26 | FromGitter | <zacharycarter> and get fat and lazy and liv ethe American dream |
07:31:28 | livcd | also -> offtopic ? |
07:31:44 | FromGitter | <zacharycarter> meh - until there's on topic convos people usually don't care |
07:31:52 | Zevv | My bet is that game dev is just like any dev. *what* you are working on is only 5% of the job, the rest is how |
07:32:14 | Zevv | if you want to do game dev for fun, go indie or make it a hobby |
07:32:32 | FromGitter | <zacharycarter> I think it'd be different if I was like deeply involved in a project and I was super passionate about it. But the likelihood of that happening in a professional studio is tiny |
07:32:34 | FromGitter | <zacharycarter> and yeah - you're right |
07:33:08 | Zevv | I am absolutely 0% personaly excited about the end product of what I'm making now |
07:33:27 | Zevv | but still having loads of fun with all the tech and components |
07:33:40 | FromGitter | <zacharycarter> yeah - none of the games I've worked on so far I would play for an extended period of time |
07:33:42 | Zevv | but cmon, tv and settop boxes and android apps, I could not care less |
07:33:51 | FromGitter | <zacharycarter> mmhmm |
07:34:05 | Zevv | remember in school how the best way to totally ruin your favorite book was to make a report about it? |
07:34:09 | FromGitter | <zacharycarter> it might have changed if I had accepted the offer from creative assembly, but it turned out to be a poop offer |
07:34:15 | FromGitter | <zacharycarter> hahaha yeah |
07:34:26 | FromGitter | <zacharycarter> good analogy |
07:36:00 | livcd | why was it a poop offer ? lol |
07:37:06 | FromGitter | <zacharycarter> they offered me less than I'm making now, benefits weren't great, relocation monies wouldn't have covered my expenses |
07:37:57 | FromGitter | <zacharycarter> and I would have had a commute / had to buy a car when I got over there |
07:38:08 | FromGitter | <zacharycarter> it just didn't make any sense at all to take them up on it |
07:40:58 | FromGitter | <zacharycarter> good news is - I have a phone interview with a company in Austin tonight, and my girlfriends good friend works there so fingers crossed |
07:44:15 | livcd | the US is so huge...it's crazy |
07:45:50 | FromGitter | <zacharycarter> definitely - that's one thing that kind of sucks about the US |
07:46:00 | FromGitter | <zacharycarter> like in Europe it's super easy to go to another country |
07:46:28 | FromGitter | <zacharycarter> from the US it's expensive to travel to anywhere else in the world, unless you're going to Canada / South or Central America |
07:48:39 | livcd | you have other perks :) |
07:50:13 | FromGitter | <zacharycarter> yeah, this is true |
07:51:36 | livcd | If you are from a small country in Europe it feels very foreign wherever you go (in Europe). At least to me |
07:52:00 | FromGitter | <zacharycarter> I can see that - everything in Europe feels foreign to me :P |
07:52:38 | * | solitudesf joined #nim |
08:00:00 | * | gmpreussner quit (Quit: kthxbye) |
08:05:04 | narimiran | livcd: what small country are you from? |
08:05:17 | * | gmpreussner joined #nim |
08:16:47 | * | uu91 joined #nim |
08:16:53 | Zevv | well well https://github.com/sendilkumarn/gopurerc - A pure reference counting garbage collector in Go |
08:19:55 | * | pvn joined #nim |
08:20:18 | Araq | that paper has a bug |
08:20:45 | Araq | in fact, it has at least 2 bugs |
08:22:48 | Araq | and the code uses * so it's simply a prototype of something |
08:22:59 | Araq | (Go's GC'ed pointers) |
08:32:10 | Zevv | go tell'em araq! |
08:32:39 | Araq | nah, it was hard to figure out, cost me 3 months of work |
08:32:53 | Araq | I'll pass and let them have the "fun" on their own |
08:33:39 | FromDiscord | <gingerBill> I'd just say "the paper has bugs in it" |
08:34:52 | * | floppydh joined #nim |
08:43:43 | FromGitter | <Varriount> @zacharycarter and I have met in real life |
08:43:51 | FromGitter | <Varriount> He's cool |
08:44:01 | FromDiscord | <Rika> We need more young people into nim |
08:44:36 | FromDiscord | <Rika> My thought: younger people might make memes of nim, therefore advertise possibly, therefore more popularity :V |
08:45:20 | FromGitter | <zacharycarter> @Varriount is as well :) |
09:04:05 | * | PMunch joined #nim |
09:04:59 | * | marmotini_ joined #nim |
09:11:25 | * | endragor joined #nim |
09:13:22 | * | solitudesf quit (Ping timeout: 268 seconds) |
09:21:07 | * | chenhq2005 joined #nim |
09:22:12 | FromDiscord | <exelotl> In that case we need a Nim anime mascot ;) |
09:24:07 | FromGitter | <sheerluck> @exelotl like this? --> https://i.imgur.com/xdGJRs4.png |
09:25:32 | FromGitter | <zacharycarter> do young people really like anime? |
09:25:45 | FromGitter | <zacharycarter> I've never liked it, and I was young once |
09:26:51 | FromGitter | <zacharycarter> I like the fact that the majority of the Nim community is older / more mature. I have a tough time handling online communities with a lot of young users. |
09:27:25 | PMunch | We do have some young users, but the fact that we're on IRC probably skews our perception of the demographic |
09:27:47 | FromGitter | <zacharycarter> true |
09:28:02 | FromGitter | <zacharycarter> and yeah - we do, Luke is pretty young I think |
09:28:11 | FromGitter | <zacharycarter> but also has written some pretty awesome stuff |
09:28:12 | FromDiscord | <mratsim> depends on the Anime, there are plenty with lots of psychology behind unlike comics |
09:28:51 | FromGitter | <sheerluck> https://i.imgur.com/3FZpk0w.png |
09:30:31 | kungtotte | One thing I really like about the Nim ecosystem is that we don't get Rewrite It In Nim-zealots or The Next Big * As A Service JavaScript Horror-people |
09:30:52 | kungtotte | You know the kind, the ones who go into work every Monday to look up what new framework they should port their code to |
09:33:42 | PMunch | zacharycarter, who's Luke? |
09:33:45 | * | chenhq2005_ joined #nim |
09:34:09 | FromGitter | <zacharycarter> @kayabaNerve |
09:34:29 | PMunch | Ah right, does it show actual names on Gitter? |
09:34:58 | FromGitter | <zacharycarter> yeah - well it allows you to mouse over the user's handle and then it will show a pop up with their github profile info |
09:35:02 | FromGitter | <zacharycarter> and his name is in his github profile |
09:35:12 | PMunch | Aaah right |
09:35:35 | PMunch | I remember my first year at FOSDEM going around saying hi to people and everyone introducing themselves with both their name and IRC handle :P |
09:35:52 | * | chenhq2005 quit (Ping timeout: 265 seconds) |
09:37:15 | * | chenhq2005_ quit (Client Quit) |
09:39:04 | * | chenhq2005 joined #nim |
09:39:23 | Araq | PMunch, which hotel will you stay in? |
09:41:13 | lqdev[m] | @Rika, @zacharycarter I'm another young person using Nim |
09:42:23 | FromGitter | <zacharycarter> niceeeee |
09:44:26 | PMunch | Araq, good question. A friend of mine booked our room |
09:44:28 | PMunch | Just a sec |
09:44:46 | PMunch | zacharycarter, I mean define young |
09:45:43 | PMunch | Araq, this is the one we're staying in. Got a room for four people, but I think we're only three thus far: https://www.booking.com/hotel/be/brussels-louise.no.html |
09:46:04 | FromGitter | <sheerluck> I'm old person using Nim -- will you expel me from here? |
09:51:15 | FromGitter | <zacharycarter> I guess under 25? I don't know... I'm old so my definition of younger keeps changing |
09:51:32 | FromGitter | <zacharycarter> like I'm about to be 35 and I think anyone who is under 30 is young |
09:51:37 | FromGitter | <zacharycarter> when I'm 40 I'll think 30 year olds are young |
09:54:17 | Araq | PMunch, ok, investigating |
10:06:33 | FromGitter | <wibisono> I remember promising to ping @Araq, I asked around and this community funding will be opened in May: https://www.ripe.net/support/cpf |
10:08:10 | * | lritter joined #nim |
10:23:58 | * | pbb joined #nim |
10:33:43 | * | uu91 quit (Ping timeout: 268 seconds) |
10:42:06 | * | natrys joined #nim |
10:48:03 | FromDiscord | <Rika> i'm probably the youngest adult here 😛 |
10:48:14 | * | sz0 joined #nim |
10:53:26 | * | marmotini_ quit (Remote host closed the connection) |
10:53:59 | * | marmotini_ joined #nim |
10:55:21 | * | ng0 joined #nim |
10:58:36 | * | marmotini_ quit (Ping timeout: 258 seconds) |
11:00:33 | * | abm joined #nim |
11:01:47 | * | chenhq2005 quit (Quit: No Ping reply in 180 seconds.) |
11:04:41 | * | chenhq2005 joined #nim |
11:08:46 | * | Guest50399 quit (Quit: leaving) |
11:09:38 | * | marmotini_ joined #nim |
11:11:06 | * | WilhelmVonWeiner joined #nim |
11:14:41 | * | marmotini_ quit (Ping timeout: 272 seconds) |
11:17:03 | * | dcmertens joined #nim |
11:17:09 | * | krux02 joined #nim |
11:18:36 | * | quantumbird joined #nim |
11:23:51 | lqdev[m] | I'm not even an adult :) |
11:29:11 | federico3 | we should create a Signal (or Telegram) group for FOSDEM |
11:29:59 | FromDiscord | <Rika> i mean legally adult |
11:30:36 | * | WilhelmVonWeiner quit (Quit: leaving) |
11:30:52 | * | WilhelmVonWeiner joined #nim |
11:36:42 | * | letto quit (Quit: Konversation terminated!) |
11:36:46 | krux02 | federico3, I am pretty sure that Araq does not have Signal for the same reason that I don't have it. |
11:37:40 | krux02 | federico3, are you aware that you can just create an IRC channel by just entering it. No "create" required. |
11:38:19 | federico3 | I'm well aware, but a lot of people didn't want to use IRC in previous years |
11:39:15 | * | rockcavera joined #nim |
11:42:35 | * | letto joined #nim |
11:44:25 | dom96 | krux02, IRC doesn't work when on the go. |
11:46:06 | * | solitudesf joined #nim |
11:48:24 | krux02 | dom96, well there are mobile IRC clients |
11:48:34 | narimiran | use telegram, don't complicate. |
11:49:10 | krux02 | think so |
11:50:26 | shashlick | Please test the latest choosenim release - https://github.com/dom96/choosenim/releases/tag/v0.5.1 |
11:51:10 | * | NimBot joined #nim |
11:51:14 | PMunch | Yup we do, with 13 members :) |
11:51:39 | PMunch | The one from two years ago has just been repurposed as a general Nim group :P |
11:51:47 | PMunch | Which is surprisingly active |
11:53:24 | Araq | link? |
11:53:29 | Araq | I have telegram... |
11:54:22 | PMunch | https://t.me/NimFOSDEM2019 |
11:58:22 | * | dddddd joined #nim |
12:04:14 | * | hehekuma joined #nim |
12:08:07 | * | quantumbird quit (Ping timeout: 260 seconds) |
12:25:40 | * | hlavaty joined #nim |
12:29:53 | lqdev[m] | @Rika what do you think I was referring to? |
12:33:10 | * | hehekuma quit (Ping timeout: 268 seconds) |
12:34:19 | * | krux02 quit (Remote host closed the connection) |
12:40:32 | * | hehekuma joined #nim |
12:41:28 | * | dcmertens quit (Ping timeout: 272 seconds) |
12:44:47 | * | marmotini_ joined #nim |
12:48:42 | * | endragor quit (Remote host closed the connection) |
12:55:29 | FromDiscord | <Rika> dunno, "over 20" |
13:06:36 | * | oculux quit (Ping timeout: 265 seconds) |
13:10:52 | * | oculux joined #nim |
13:31:28 | * | jholland__ joined #nim |
13:39:28 | Araq | oh look, thread local GCs for Rust, https://docs.rs/gc/0.3.3/gc/ |
13:49:18 | * | chenhq2005 quit (Ping timeout: 260 seconds) |
13:53:18 | shashlick | Araq: I'm working on https://github.com/dom96/choosenim/issues/28 |
13:53:19 | disbot | ➥ Ask the user whether they want Nim added to PATH |
13:53:37 | Araq | steal the code from finish.nim |
13:53:43 | shashlick | started out with pulling the code from finish |
13:53:54 | Araq | good |
13:53:56 | shashlick | but it didn't propagate on my windows machine |
13:54:12 | shashlick | then dabbled with setx which is completely wrong, so am going back to your version |
13:54:23 | * | jwm224 joined #nim |
13:54:54 | shashlick | the value gets set in the registry correctly but new windows don't get the value |
13:55:02 | shashlick | have to reboot for it to take effect |
13:57:09 | livcd | that's a bit weird |
13:58:00 | shashlick | agreed, even simple settled things waste time |
13:58:37 | Araq | all you need to do is to restart cmd.exe |
13:58:45 | Araq | so that it picks up the modified PATH |
13:59:37 | shashlick | must be something weird with my instance of Windows |
14:00:29 | shashlick | Anyway now that some major bugs are fixed in choosenim, am going to work on features |
14:01:07 | Araq | thanks, you're a true gift to the Nim community |
14:01:15 | narimiran | +1 |
14:02:30 | FromDiscord | <Rika> i wish i was motivated enough to work on fixing bugs ;; |
14:03:46 | shashlick | Thanks :) |
14:04:17 | shashlick | I've spent a lot of time on new stuff but bugs are what turn people off so worth the time |
14:04:42 | shashlick | And the easy ones make you feel heroic so good for morale too |
14:04:57 | shashlick | Even if you introduced them in the first place! |
14:08:18 | FromGitter | <kaushalmodi> shashlick: I plus what Araq said |
14:08:32 | FromGitter | <kaushalmodi> *plus 1 |
14:11:10 | livcd | shashlick: could be the way how you start your cmd |
14:12:01 | * | jwm224 quit (Quit: WeeChat 2.8-dev) |
14:12:06 | livcd | i had this issue because i start Cmder via Everything so when I update the PATH I need to restart Everything as well |
14:12:23 | * | jwm224 joined #nim |
14:12:24 | FromDiscord | <Rika> why even use windows /s |
14:16:23 | * | Vladar joined #nim |
14:21:12 | disruptek | i want to export a proc that is operated upon by a custom macro pragma. but because this turns into mymacro: proc somedef*(), i get a compiler error: attempt to export proc not at top-level. 🙁 |
14:22:43 | Araq | mymacro shouldn't open a new scope then |
14:23:16 | disruptek | actually, that's not the problem. |
14:23:38 | disruptek | something i wrote last night. |
14:24:08 | * | sekao joined #nim |
14:24:12 | disruptek | the error i'm getting this morning is that the expression has no type. |
14:24:35 | * | jwm224 quit (Quit: WeeChat 2.8-dev) |
14:24:42 | disruptek | the expression is, of course, the procdef (without an export). |
14:25:03 | FromDiscord | <Clyybber> shashlick: Nice, is the bug that makes executables not executable also fixed? |
14:25:11 | disruptek | clyybber: in theory. |
14:25:27 | disruptek | what happened to the case obj bug in arc? |
14:25:58 | FromDiscord | <Clyybber> Araq fixed it |
14:26:00 | FromDiscord | <Clyybber> properly |
14:26:11 | sekao | when i turn on hotcodereloading i get `could not load: nimhcr.dll`. do i need to build that dll myself? the docs don't mention this |
14:26:24 | disruptek | with an empty line? |
14:26:36 | FromDiscord | <Clyybber> later on when =destroy(dst) gets extracted out of `=` and `=sink` it can be optimized further |
14:26:44 | disruptek | fair enough. |
14:27:01 | disruptek | kick the can down the road. 😛 |
14:28:15 | Araq | Clyybber: the fix is still wrong |
14:28:21 | Araq | I'm working on it |
14:28:21 | FromDiscord | <Clyybber> Oh, is it? |
14:28:38 | Araq | yeah, consider: result = result.kids[0] |
14:28:52 | disruptek | i think my 1bit hack feels a little hacking in the morning light. |
14:28:59 | disruptek | hackish, too. |
14:29:05 | Araq | 1. we turn this into move and produce 'wasMoved(result.kids[0])' # wrong! |
14:29:11 | Araq | (fixed in my branch) |
14:29:25 | Araq | 2. if we produce '=' instead, we start by destroying result |
14:29:33 | * | hlavaty quit (Ping timeout: 260 seconds) |
14:29:34 | Araq | and then we're in limbo |
14:29:52 | FromDiscord | <Clyybber> Hmm, I see |
14:30:05 | FromDiscord | <Clyybber> Araq: Btw, I see you incoporated array access too |
14:30:12 | FromDiscord | <Clyybber> As in ignore runtime array access |
14:30:37 | Araq | yeah, that fix isn't correct either |
14:30:42 | Araq | but much better than it was before |
14:30:44 | FromDiscord | <Clyybber> Yeah, I was about to tell you |
14:30:50 | FromDiscord | <Clyybber> Yeah definitely better |
14:31:03 | FromDiscord | <Clyybber> But it may mess with firstWrite |
14:31:03 | Araq | anyhow, here is what we must do: |
14:31:18 | Araq | let blob {.cursor.} = dest # remembers the old dest.kind |
14:31:24 | Araq | wasMoved(dest) |
14:31:24 | * | jwm224 joined #nim |
14:31:24 | * | noonien quit () |
14:31:29 | Araq | dest.kind = src.kind |
14:31:37 | Araq | for every field (dependent on dest.kind): |
14:31:40 | * | noonien joined #nim |
14:31:45 | Araq | `=` dest.field, src.field |
14:31:50 | Araq | =destroy(blob) |
14:32:00 | Araq | ^ I think. |
14:32:04 | Araq | unless you see a flaw in that |
14:32:12 | disruptek | that sounds way more involved than my hack. |
14:32:30 | FromDiscord | <Clyybber> Araq: Yep |
14:32:31 | * | letto quit (Quit: Konversation terminated!) |
14:32:44 | FromDiscord | <Clyybber> you switched blob and dest around but I think i get it |
14:32:47 | disruptek | when we destroy, we set kind = -kind. now we can recover the type but we know we don't need to free it. |
14:33:54 | * | pvn quit (Quit: Leaving.) |
14:33:56 | FromDiscord | <Clyybber> disruptek: ha, interesting |
14:34:51 | * | sekao quit (Remote host closed the connection) |
14:35:09 | Araq | Clyybber: so, what do you think? |
14:35:15 | Araq | is my solution correct? |
14:36:08 | FromDiscord | <Clyybber> I think so, |
14:36:44 | FromDiscord | <Clyybber> Well, with a =destroy dest at the top at least |
14:37:48 | FromDiscord | <Clyybber> Araq: Tell me if I got it right: |
14:37:57 | FromDiscord | <Clyybber> `=`(dest, src): |
14:38:14 | FromDiscord | <Clyybber> if notZero(dest): |
14:38:16 | * | vsantana quit (Remote host closed the connection) |
14:38:23 | FromDiscord | <Clyybber> =destroy(dest) |
14:38:36 | FromDiscord | <Clyybber> wasMoved(dest) |
14:38:46 | FromDiscord | <Clyybber> dest.kind = src.kind |
14:38:48 | FromDiscord | <Clyybber> and so on |
14:38:54 | FromDiscord | <Clyybber> right? |
14:39:08 | disruptek | that makes no sense to me. |
14:39:18 | Araq | that's not what I wrote :-) |
14:39:24 | FromDiscord | <Clyybber> sorry, discord cut off my indentation |
14:39:46 | FromDiscord | <Clyybber> Araq: I just added the if notZero(dest): destroy(dest) |
14:40:19 | Araq | there are no ifs here |
14:40:31 | FromDiscord | <Clyybber> Araq: I meant to write down the body of `=` |
14:40:40 | FromDiscord | <Clyybber> Araq: But we must destroy dest if its not zero |
14:40:53 | Araq | look again, we do |
14:40:59 | Araq | =destroy(blob) |
14:41:04 | Araq | but at the end |
14:41:21 | FromDiscord | <Clyybber> Ah, I was confused by you calling the source dest |
14:41:25 | FromDiscord | <Clyybber> and the dest blob |
14:41:26 | FromDiscord | <Clyybber> :p |
14:41:35 | FromGitter | <kaushalmodi> narimiran: How will the docs reflect the system breakup in https://github.com/nim-lang/Nim/commit/e708d5de75c0cccba666f19390ee1ac8e3df8a7a ? |
14:41:55 | disruptek | no, he wrote it correctly. |
14:42:00 | Araq | not at all, the docgen follows include files |
14:42:20 | narimiran | @kaushalmodi all that stuff is *included*, so i think there shouldn't be any problem |
14:42:33 | FromGitter | <kaushalmodi> wouldn't this need to update?: https://github.com/nim-lang/Nim/blob/devel/lib/system_overview.rst |
14:42:37 | disruptek | you just reverse the order and the problem solves itself. |
14:42:54 | FromGitter | <kaushalmodi> narimiran: Oh I see.. you said "include"d |
14:43:00 | rockcavera | I made a silly mistake, wrote newSeqOfCap instead of newSeq and got the error on line 5. But the error is on line 7. Wrong or expected behavior? https://pastebin.com/xsGSsJC5 |
14:43:07 | FromGitter | <kaushalmodi> thanks |
14:43:29 | Araq | sekao: I only tested it on Windows where it produces this DLL automatically |
14:43:30 | FromDiscord | <Clyybber> Araq, disruptek: I don't think I get it.. in Araqs snippet we transform `let blob = dest`, right? Or is that supposed to be part of `=`'s body? |
14:43:43 | Araq | part of ='s body |
14:44:07 | FromDiscord | <Clyybber> Aaah |
14:44:13 | FromDiscord | <Clyybber> Ok, then I'll look at it again |
14:44:23 | Araq | proc `=`(dest: var CaseObj, src: CaseObj) = ... |
14:44:49 | Araq | let blob = move(dest) |
14:45:02 | Araq | dest.kind = src.kind |
14:45:20 | Araq | for every field f: `=`(dest.f, src.f) |
14:45:26 | Araq | =destroy(blob) |
14:45:40 | shashlick | Clyybber it is fixed yes |
14:45:50 | FromDiscord | <Clyybber> shashlick: nice |
14:45:55 | FromDiscord | <Clyybber> Araq: Thanks I get it now |
14:46:18 | FromDiscord | <Clyybber> It looks correct to me |
14:46:26 | FromDiscord | <Clyybber> But I wonder if we could make it simpler |
14:46:48 | FromDiscord | <Clyybber> Or without the temporary blob |
14:46:56 | FromDiscord | <Clyybber> disruptek: How would your `=` look? |
14:47:14 | Araq | you can special case 'if dest.kind == src.kind' |
14:47:37 | disruptek | i would just skip the destroy if kind < 0. |
14:47:41 | Araq | but then you need to consider that there can be multiple different nested 'kinds' inside the object |
14:48:21 | Araq | the complexity is frightening, I won't make it even more complex |
14:48:33 | disruptek | araq's solution lacks special-casing, which i like. |
14:48:41 | disruptek | it uses components that we already depend on. |
14:48:42 | FromGitter | <kaushalmodi> Araq: Once you are done with your current discussion, I would like to know if the pragma approach is possible here: https://github.com/nim-lang/Nim/pull/13130#issuecomment-573822349. Using a new pragma like `{.nimDocBackend: cpp.}` would be much cleaner than using a new define. But I do not know how to extract a pragma value in rst docstring and runnableExamples parsing. |
14:48:44 | disbot | ➥ Use Nim config defined backend to eval doc string code blocks |
14:48:47 | disruptek | the way we expect them to work. |
14:48:57 | disruptek | the code won't need to be touched for awhile. |
14:49:10 | disruptek | so, i like it for these reasons. |
14:49:59 | disruptek | but, i like my solution for speed/memory. |
14:50:05 | FromDiscord | <Clyybber> Araq: If we pull out =destroy out of = and =sink then we can do it like this: |
14:50:34 | FromGitter | <alehander92> hmm |
14:51:06 | FromDiscord | <Clyybber> ``` |
14:51:06 | FromDiscord | <Clyybber> proc =(dest: var CaseObj, src: CaseObj) = ... |
14:51:06 | FromDiscord | <Clyybber> dest.kind = src.kind |
14:51:06 | FromDiscord | <Clyybber> for every field f: =(dest.f, src.f) |
14:51:07 | FromDiscord | <Clyybber> ``` |
14:51:23 | FromDiscord | <Clyybber> Where the `=destroy(dest)` is outside of `=` |
14:51:57 | * | nsf quit (Quit: WeeChat 2.7) |
14:53:45 | Araq | kaushalmodi: I think I like |
14:53:54 | Araq | {.backend: "cpp".} |
14:53:56 | Araq | best |
14:54:06 | Araq | it's a bit hard to implement though |
14:54:34 | Araq | we must ensure this pragma is processed before we have decided on a backend pipeline |
14:55:23 | disruptek | feels like a complex solution to a simple problem. |
14:55:25 | Araq | or maybe just |
14:55:30 | Araq | nim doc --backend:cpp foo.nim |
14:55:37 | disruptek | this. |
14:56:19 | Araq | and then for consistency we also support 'nim c --backend:cpp' and 'nim check --backend:cpp' |
14:59:19 | * | letto joined #nim |
15:06:27 | * | PMunch quit (Quit: Leaving) |
15:10:35 | * | marmotini_ quit (Remote host closed the connection) |
15:11:09 | * | marmotini_ joined #nim |
15:14:13 | * | marmotini_ quit (Read error: Connection reset by peer) |
15:14:29 | * | ng0_ joined #nim |
15:14:31 | * | marmotini_ joined #nim |
15:18:00 | * | ng0 quit (Ping timeout: 268 seconds) |
15:33:01 | * | letto quit (Quit: Konversation terminated!) |
15:34:01 | * | marmotini_ quit (Remote host closed the connection) |
15:36:14 | * | marmotini_ joined #nim |
15:38:00 | * | marmotini_ quit (Remote host closed the connection) |
15:38:32 | * | marmotini_ joined #nim |
15:38:55 | * | tane joined #nim |
15:39:12 | FromGitter | <kaushalmodi> Araq: ⏎ ⏎ > nim doc --backend:cpp foo.nim ⏎ ⏎ ok.. let me see how switches are added to doc and how they are parsed in docgen.. need to pass that switch to both `:test:` docstring and runnableExamples eval [https://gitter.im/nim-lang/Nim?at=5e1f321fdf9e137d58eb2766] |
15:39:59 | * | letto joined #nim |
15:43:03 | * | marmotini_ quit (Ping timeout: 260 seconds) |
15:43:03 | * | floppydh quit (Quit: WeeChat 2.7) |
15:51:24 | * | sbr8 joined #nim |
15:52:36 | * | sbr8 quit (Client Quit) |
15:53:39 | disruptek | the pragma macro does not yield pragmas without arguments. 😢 |
15:54:01 | * | ng0_ is now known as ng0 |
15:54:01 | * | marmotini_ joined #nim |
15:56:16 | FromDiscord | <treeform> Why was this change needed? Will it break a ton of code? https://github.com/nim-lang/Nim/issues/13154 |
15:56:19 | disbot | ➥ --gc:arc Error: expression cannot be cast to pointer ; snippet at 12https://play.nim-lang.org/#ix=27tf |
15:56:26 | * | sbr8 joined #nim |
15:57:30 | Araq | well I implemented a better string/seq type |
15:57:36 | FromDiscord | <Clyybber> @treeform Because strings are now a pointer len pair. |
15:57:40 | Araq | but it takes 2 words now |
15:58:19 | FromDiscord | <treeform> how does it know the cap? |
15:59:12 | Araq | the pointer points to payload that contains the cap and the elements |
15:59:53 | FromDiscord | <treeform> is that a big win for the language? |
16:01:32 | FromDiscord | <Clyybber> yes |
16:03:19 | Araq | even if it weren't, we must be allowed to change implementations |
16:03:33 | * | marmotini_ quit (Remote host closed the connection) |
16:04:01 | Araq | cast[pointer](str) happened to work and 'cast' always means "I know what I'm doing" |
16:04:08 | * | marmotini_ joined #nim |
16:09:11 | * | marmotini_ quit (Ping timeout: 272 seconds) |
16:09:15 | FromDiscord | <treeform> I just compiled one of my largest nim projects 34k lines and it worked fine with --gc:arc |
16:10:01 | FromDiscord | <Clyybber> nice |
16:10:58 | FromDiscord | <Rika> tests passed? |
16:13:22 | FromDiscord | <mratsim> You need to change the documentation of cast then :p |
16:13:29 | dom96 | cast[pointer](str[0]) still works right? |
16:13:52 | * | dom96 is waiting patiently for async arc support |
16:14:02 | * | FromGitter quit (Remote host closed the connection) |
16:14:20 | * | FromGitter joined #nim |
16:15:28 | FromDiscord | <treeform> @Rika nope some obscure things changed, like 'x.port' is of type: Port. |
16:16:02 | FromDiscord | <Rika> 😮 |
16:18:24 | Araq | dom96, huh? you cast a 'char' into a pointer? |
16:18:46 | dom96 | oh, sorry, missed an `addr` |
16:19:20 | Araq | sure that's unaffected |
16:19:38 | * | narimiran quit (Ping timeout: 240 seconds) |
16:23:07 | * | sbr8 quit (Ping timeout: 272 seconds) |
16:25:12 | * | marmotini_ joined #nim |
16:28:12 | FromDiscord | <treeform> I found a cool name for a library, not sure what it should do though... The name is `equanimity` it has nim inside of it! |
16:31:28 | WilhelmVonWeiner | some kind of super equality operators |
16:32:49 | Araq | https://github.com/nim-lang/packages/pull/1323/files nice |
16:32:50 | disbot | ➥ barcode library |
16:32:55 | * | narimiran joined #nim |
16:44:18 | * | abm quit (Quit: Leaving) |
16:48:29 | * | Pqzcih5 quit (Remote host closed the connection) |
17:00:58 | * | leorize joined #nim |
17:04:04 | leorize | shashlick: do you still need musl static choosenim builds? |
17:04:44 | rockcavera | I made a silly mistake, wrote newSeqOfCap instead of newSeq and got the error on line 5. But the error is on line 7. Wrong or expected behavior? https://pastebin.com/xsGSsJC5 |
17:06:52 | leorize | https://play.nim-lang.org/#ix=27tC |
17:07:00 | leorize | yup, faulty stacktrace i believe |
17:07:49 | Araq | rockcavera, bug (minor) |
17:10:05 | rockcavera | thanks |
17:15:16 | shashlick | leorize: sure - a v0.5.1 build will be useful |
17:15:20 | * | nsf joined #nim |
17:20:43 | leorize | pm sent |
17:26:34 | * | Trustable joined #nim |
17:30:26 | Zevv | How do .compilerproc. declarations end up in calling C modules? |
17:30:59 | disruptek | wrong turns, gps from 2005, the usual reasons. |
17:31:28 | Zevv | I added the compilerproc pragma to a proc in system.nim, but it gets called from C files that don't see its prototype |
17:32:40 | disruptek | its prototype doesn't make it into the c codegen? |
17:34:00 | Zevv | only in stdlib_system.nim.cpp, but not in my main module |
17:34:07 | Zevv | so I need some kind of trick for that I guess |
17:37:07 | leorize | hmm how do you share data between different processes? |
17:37:55 | Zevv | IPC :) |
17:38:09 | disruptek | uucp |
17:38:15 | Zevv | dude |
17:38:30 | Zevv | ah: the trick is to put a '#' in front of the called symbol. |
17:38:45 | Zevv | leorize: elaborate on what kind of data sharing |
17:38:56 | * | Trustable quit (Remote host closed the connection) |
17:39:30 | Zevv | some options in order of complexity, speed, and flexibility: files, pipes, sockets, shared memory |
17:39:44 | disruptek | i don't see uucp in that list. |
17:39:56 | Zevv | it is kind of an outlier |
17:40:00 | disruptek | fair enough. |
17:40:04 | Zevv | it is slow *and* complicated |
17:40:20 | disruptek | pffbt have you heard about this new thing, `SMTP`? |
17:40:27 | Zevv | I uucp'ed *so* much one time. We had 250 systems on 20 modems |
17:40:41 | Zevv | and in 2020 I still do hayes |
17:40:46 | disruptek | gtfo |
17:40:47 | Zevv | AT+CGDCONT |
17:41:11 | leorize | I'd like to make testament to only request an azure run id (it's an int) when required |
17:41:46 | leorize | but testament launches tests in parallel, so I have to communicate this id that was acquired by one of the child processes somehow |
17:42:14 | Zevv | the dead simple method would be to dump it in a file somewhere, probably |
17:42:15 | leorize | I don't wanna do this in the parent because a child might be spawn but no tests will be run |
17:42:26 | Zevv | do you need/want to inform the parent process, or can it poll? |
17:42:51 | disruptek | on linux you can use fs notification. |
17:42:57 | Zevv | overkill |
17:43:04 | disruptek | rude. |
17:43:10 | leorize | Araq, narimiran: does anyone actually use the azure pipelines tests display? |
17:43:35 | Zevv | leorize: or open a pipe and pass the write side file descriptor by environment variables into the child processes. |
17:43:49 | leorize | that's not portable :p |
17:43:53 | Zevv | the child can do a posix.write(getenv("foobar").int, $id) |
17:43:59 | Zevv | then use a file |
17:44:04 | leorize | testament has to do CI on windows as well |
17:44:36 | Zevv | pff see if I care |
17:44:49 | Zevv | then make a sockepair, that is portable |
17:44:51 | Zevv | socketpair |
17:45:21 | leorize | it appears that Nim CI is choking Azure's REST API |
17:45:41 | disruptek | !repo bluu |
17:45:42 | disbot | https://github.com/disruptek/bluu -- 9bluu: 11Microsoft Azure Cloud (MAC) APIs in Nim 15 0⭐ 0🍴 |
17:46:02 | leorize | I'm interfacing with azure pipelines :P |
17:46:17 | leorize | the API is pretty simple, but apparently it's slow |
17:46:35 | disruptek | i would use the simplest thing that works. |
17:46:43 | Zevv | uucp? |
17:46:58 | disruptek | tried and true. |
17:47:06 | disruptek | trusty uucp. |
17:54:37 | * | arecaceae quit (Remote host closed the connection) |
17:55:00 | * | arecaceae joined #nim |
17:56:22 | Zevv | how relevant is --newruntime today? |
17:56:29 | Zevv | will that go away? |
17:56:34 | disruptek | nah. |
17:56:53 | disruptek | do you mean the switch or the code? |
17:57:30 | disruptek | the switch cannot go away. the code is integral to arc/orc. |
17:58:32 | Zevv | but what is the relation? Does --gc:arc imply --newruntime? What does --runtime do without --gc:arc? |
17:59:44 | disruptek | --newruntime is aka --gc:ownedrefs |
18:00:09 | Araq | Zevv, --newruntime introduce 'owned ref' and it's a big, breaking change |
18:00:33 | Araq | for an improved runtime efficiency that never materialized |
18:00:59 | disruptek | arc is efficient, but the big win is in programmer efficiency, imo. |
18:01:16 | Araq | it does avoid cycles by construction though and has benefits for threading too |
18:01:34 | disruptek | better to let a computer sort these problems out. |
18:02:11 | Araq | and we are "really close now (TM)" to make a proposal which does not break so much code |
18:03:07 | Araq | or if you know C++ well: |
18:03:19 | Araq | --gc:arc ~~ shared_ptr done right |
18:03:29 | Araq | --newruntime ~~ unique_ptr done right |
18:03:57 | Zevv | and best of both worlds? |
18:04:55 | Araq | best of both worlds is "work in progress" |
18:05:19 | Zevv | :) |
18:06:59 | Araq | you can write your own unique_ptr already though, it's just super alien :P |
18:07:38 | disruptek | how can any of the async code be gcsafe when it runs callbacks provided by the user? |
18:08:09 | Zevv | yeaaaah |
18:08:11 | Zevv | tell me that disruptek |
18:08:25 | Zevv | this is my pet peeve: https://github.com/dom96/nim-in-action-code/issues/6 |
18:08:26 | disbot | ➥ not GC-safe ; snippet at 12https://play.nim-lang.org/#ix=26qK |
18:09:47 | disruptek | well, i don't see how it can ever run in arc if we cannot let arc do its magic. |
18:10:24 | Araq | disruptek, easy, the callbacks all have to be .gcsafe too |
18:10:35 | disruptek | lol |
18:10:53 | disruptek | araqlogic ftw |
18:11:00 | Zevv | quoting Zevv: "Also: if the gcsafe restriction really applies to asyncHttpServer, should it not apply to all async? I can now simply create my own async http server without the gcsafe restriction." |
18:12:46 | * | icebattle joined #nim |
18:12:49 | disruptek | i mean, i looked at, like, currying the callbacks so the api doesn't change but we get the future in the cb. |
18:13:29 | * | natrys quit (Quit: natrys) |
18:13:53 | Araq | https://github.com/zevv/withnimble-packages2 sec 623 ms |
18:13:54 | Araq | Error message: |
18:13:54 | Araq | Failure: reBuildFailed |
18:13:54 | Araq | package test failed |
18:13:54 | Araq | $ nimble test |
18:13:55 | Araq | Executing task test in C:\projects\nim\pkgstemp\with\with.nimble |
18:13:56 | Araq | C:\projects\nim\pkgstemp\with\tests\tests.nim(22, 5) Error: low(cond) must be 0 for discriminant |
18:14:00 | Araq | Zevv, ping |
18:14:19 | Zevv | pong |
18:14:31 | Araq | " low(cond) must be 0 for discriminant" ? |
18:14:35 | * | marmotini_ quit (Remote host closed the connection) |
18:14:40 | Araq | did you touch your package today? |
18:14:45 | Zevv | Yeah I merged a PR |
18:14:50 | disruptek | lol |
18:15:01 | Araq | well it's broken |
18:15:04 | Zevv | unmerging |
18:15:48 | Zevv | But I did not release, didn't realize master is in the tests |
18:16:34 | Zevv | fixed |
18:17:20 | disruptek | so the reason to link async cb to its future is purely prevent arc from breaking the subgraph? |
18:17:37 | Zevv | This malloc cleanup is proving a bit of a hassle. Everthing I touch breaks something somewhere. |
18:17:50 | Zevv | I'll have to go refactoring in smaller steps I guess |
18:18:20 | Zevv | a lot of permutations of options to keep in mind |
18:18:37 | disruptek | this is why i want instant ci. |
18:18:47 | disruptek | i don't think it sounds all that hard to get something useful. |
18:21:08 | FromGitter | <kaushalmodi> Zevv: Setting up CI that tests using nim stable and devel is pretty trivial |
18:21:14 | FromGitter | <kaushalmodi> I do it even for my useless projects |
18:21:26 | Zevv | oh that's not the problem, I can run most of the relevant testst on my own computer |
18:21:28 | disruptek | all zevv's projects are useless. |
18:21:40 | Zevv | the problem is that I'm trying to touch some very basic stuff in the compiler and libs |
18:21:41 | FromGitter | <kaushalmodi> heh |
18:22:01 | Zevv | but can't do A without B, and if I do both, something else breaks |
18:22:03 | disruptek | this is why you want to see what breaks, and fast. |
18:22:25 | disruptek | like, 3 seconds would be good. less would be better. |
18:22:50 | Araq | fantasy numbers |
18:23:02 | Zevv | disruptek: some pretty smart people have been working pretty hard on what there is now |
18:23:15 | disruptek | is it so crazy? |
18:23:18 | Zevv | yes |
18:23:46 | disruptek | the objects get reproducable, and we know what built what. so we just link the new assets. |
18:25:04 | Zevv | just fix my mallocs already :) |
18:28:42 | Araq | since you're here |
18:29:11 | * | icebattl1 joined #nim |
18:29:13 | Araq | IMO your change to osalloc.nim is not good |
18:29:27 | Araq | in that it can hide problems |
18:29:41 | Araq | and we still use TLSF even if we don't want to |
18:29:56 | * | matlock quit (Ping timeout: 248 seconds) |
18:30:03 | Araq | so it needs something like hostOS == "any" and not defined(useMalloc) |
18:30:06 | * | msmorgan quit (Ping timeout: 246 seconds) |
18:30:12 | * | sz0 quit (Ping timeout: 260 seconds) |
18:30:46 | * | l1x quit (Ping timeout: 252 seconds) |
18:30:46 | * | matti quit (Ping timeout: 252 seconds) |
18:30:47 | * | MD87 quit (Ping timeout: 260 seconds) |
18:31:30 | * | nimblepoultry quit (Ping timeout: 252 seconds) |
18:32:19 | * | npgm quit (Ping timeout: 272 seconds) |
18:32:22 | * | icebattle quit (Ping timeout: 265 seconds) |
18:32:42 | * | msmorgan joined #nim |
18:32:44 | * | icebattl1 quit (Client Quit) |
18:33:05 | * | icebattle joined #nim |
18:33:53 | * | MD87 joined #nim |
18:34:18 | * | hehekuma quit (Remote host closed the connection) |
18:34:25 | * | npgm joined #nim |
18:35:25 | * | nimblepoultry joined #nim |
18:37:07 | * | rayman22201 quit () |
18:37:13 | * | matlock joined #nim |
18:45:56 | FromDiscord | <exelotl> is there a name for the problem with C preprocessor macros that Nim templates prevent? |
18:46:04 | Zevv | well, alloc and osalloc are not even included now with --gc:arc and -d:useMalloc anway |
18:46:09 | Zevv | so that part can go ou |
18:46:11 | Zevv | t |
18:46:20 | * | silvernode joined #nim |
18:46:28 | FromDiscord | <exelotl> I was trying to explain it to someone and I accidentally said 'safety' and was thoroughly ridiculed |
18:46:29 | Zevv | but that's what I mean, there are too many code paths now to keep track of |
18:46:44 | * | rayman22201 joined #nim |
18:47:50 | rayman22201 | apparently irccloud is down. Yay to finding alternate irc clients :/ |
18:48:05 | rayman22201 | so the iterator double free bug is fixed in arc? |
18:49:07 | rayman22201 | did it magically fix async, or should I start playing with arc async now? |
18:49:21 | * | Jesin quit (Quit: Leaving) |
18:49:42 | disruptek | yes, i'm looking at it, too. |
18:50:56 | * | Jesin joined #nim |
18:51:15 | * | chenhq2005 joined #nim |
18:52:08 | * | marmotini_ joined #nim |
18:53:34 | FromDiscord | <Recruit_main_70007> whats static ownership checking? |
18:53:59 | disruptek | not leaving home without it. |
18:54:21 | Araq | exelotl: "The C preprocessor does not respect C's scoping rules. At all." |
18:57:09 | rayman22201 | Recruit_main_70007: It's the thing all the Rust fan boi's scream about. |
19:00:21 | FromDiscord | <Recruit_main_70007> and in a more objective way?? |
19:00:33 | FromDiscord | <Recruit_main_70007> (although you are pretty right) |
19:01:10 | disruptek | the idea is for the compiler to do some analysis to make sure you don't do something stupid. |
19:01:21 | disruptek | static = at compilation |
19:01:32 | disruptek | statically backed-into the output binary. |
19:01:36 | disruptek | baked, too. |
19:02:03 | disruptek | make sure you get 'em when they are hot outta the oven. |
19:02:27 | FromDiscord | <Recruit_main_70007> thx |
19:02:56 | rayman22201 | "static" means compile time, "ownership checking" means checking that pointers are not used in a way that can crash your program (in simple terms. kind of a complex concept.) |
19:03:51 | rayman22201 | crash your program or other problems.... data races (multithreading), reading from a Null pointer accidentally, etc... that kind of thing |
19:04:08 | FromDiscord | <Recruit_main_70007> ok |
19:04:15 | disruptek | Zevv: i just read that issue and it seems to me that if the compiler can infer .gcsafe, we should remove it. |
19:04:22 | * | sbr8 joined #nim |
19:08:12 | rayman22201 | removing .gcsafe from httpserver or from async? |
19:08:38 | * | sagax quit (Read error: Connection reset by peer) |
19:09:34 | disruptek | async |
19:11:21 | disruptek | the graph isn't going to cross threads because it's got a threadvar in it. |
19:12:55 | disruptek | maybe we need to neuter gcsafe in arc and see what breaks. 😁 |
19:16:04 | Yardanico | Hmm, talked with a guy in Telegram now (in nim group), seems like https://nim-lang.org/donate.html doesn't have patreon link |
19:16:17 | Yardanico | patreon.com/araq I mean |
19:17:04 | * | sagax joined #nim |
19:18:37 | * | nsf quit (Quit: WeeChat 2.7) |
19:19:50 | rayman22201 | I thought .gcsafe was already neutered in arc? |
19:20:10 | rayman22201 | it doesn't really make as much sense in the context of arc |
19:20:37 | Araq | it does make much sense still since the refcounting is "isolated" |
19:21:00 | Araq | the 'A' in ARC does not stand for 'Atomic' |
19:21:09 | Araq | Yardanico, good point |
19:21:22 | disruptek | oh, that makes sense. |
19:21:26 | rayman22201 | yeah. I see |
19:21:34 | rayman22201 | thanks for the clarification Araq |
19:21:36 | disruptek | we can't really trust that nothing else is gonna mess with us. |
19:22:15 | disruptek | ~araq is the A in ARC |
19:22:15 | disbot | araq: 11the A in ARC |
19:22:28 | rayman22201 | makes me now hate the name ".gcsafe". Should be ".isolated" or something... but I'll leave the yak shaving for another day. |
19:22:41 | disruptek | y'know who's great at yak shaving? |
19:22:42 | disruptek | zevv. |
19:23:14 | disruptek | just one german in a sea of naked yaks. |
19:23:18 | rayman22201 | lol |
19:25:33 | Araq | this was terrible https://github.com/nim-lang/Nim/pull/13156 |
19:25:33 | disbot | ➥ ARC: misc bugfixes |
19:25:46 | Araq | I wonder how many bugs are left after it |
19:28:28 | * | sbr8 quit (Quit: leaving) |
19:30:46 | FromDiscord | <treeform> Is there a Nim Job board? |
19:31:07 | livcd | are you hiring?! |
19:31:15 | FromDiscord | <treeform> yes |
19:31:22 | FromDiscord | <Recruit_main_70007> really? |
19:31:24 | FromDiscord | <treeform> are you looking? |
19:31:32 | Araq | post it on the forum please |
19:31:50 | Araq | we have plenty of people here looking for a Nim related job, I think |
19:32:07 | FromDiscord | <Recruit_main_70007> depending, is it legal to work in programming underage? |
19:32:13 | disruptek | treeform: if you're in the us, zacharycarter would be interested. |
19:32:29 | disruptek | i would, too. |
19:32:32 | Yardanico | @Recruit_main_70007 freelance - why not |
19:33:04 | disruptek | 13156 doesn't change the async leak situation. |
19:33:09 | disruptek | in a way, that's good. |
19:33:14 | Yardanico | well, depending on your country you might need to do some legal stuff with your parents/representatives about taxes and stuff |
19:33:23 | Yardanico | but I think you can just ignore this if you don't earn like $10k a month :P |
19:33:26 | Araq | disruptek, async doesn't use case objects |
19:33:28 | FromDiscord | <Recruit_main_70007> well, i am interested, at least to see what can i expect if i try going for nim for living |
19:33:49 | disruptek | yeah, but i pulled from that branch with the X other commits. |
19:34:42 | FromDiscord | <kodkuce> @treeform i want to work for free 🙂 |
19:35:48 | FromDiscord | <kodkuce> job apprenticeship cuz i newb |
19:37:21 | FromDiscord | <kodkuce> or peasant money xD |
19:37:46 | FromDiscord | <kodkuce> or revshare if working on games |
19:39:23 | Araq | rayman22201, async is crash free but leaks memory IME |
19:39:50 | disruptek | needs a when release: turned into release or danger: too. |
19:40:07 | disruptek | stack trace injection also injects most of the memory leak. |
19:40:09 | Araq | needs a new test case in tests/arc so that we notice regressions |
19:40:34 | Araq | ah I know of one bug that I really need to fix now |
19:41:01 | Araq | which could be responsible for the stack trace leaks. hmm not really |
19:41:06 | Araq | but whatever, need to fix it |
19:42:09 | * | Kameleon joined #nim |
19:46:28 | FromDiscord | <kodkuce> hmm so async almost done? just need duck tape those bucket holes ? |
19:46:35 | * | Kameleon quit (Client Quit) |
19:46:47 | * | Kameleon joined #nim |
19:46:53 | * | Pixeli joined #nim |
19:47:50 | * | Pixeli quit (Client Quit) |
19:55:20 | Araq | on Unix. |
19:55:29 | Araq | on Windows it probably still crashes, let me check |
19:55:47 | FromDiscord | <kodkuce> i am a bird i poop on win |
19:57:37 | Araq | yup. crashes |
19:57:46 | Araq | I wonder why though... |
20:00:21 | * | abc_not_cba joined #nim |
20:00:29 | abc_not_cba | hi |
20:01:39 | abc_not_cba | i'm sad |
20:01:45 | abc_not_cba | kuroyasha loose |
20:01:46 | abc_not_cba | lose |
20:01:49 | abc_not_cba | https://www.youtube.com/watch?v=TsDD2gizjuI |
20:03:44 | FromDiscord | <treeform> disruptek, can you PM me on discord some how if you are interested? |
20:05:41 | abc_not_cba | I don't understand what do you want |
20:05:48 | abc_not_cba | sorry |
20:06:02 | abc_not_cba | if my english suck, i'm not english native |
20:11:21 | Zevv | so, there is eight different files in the stdlib directly calling c_malloc |
20:11:27 | disruptek | treeform: i dunno, discord thinks i'm a hacker. |
20:11:40 | abc_not_cba | cause you are |
20:11:41 | FromDiscord | <Recruit_main_70007> wut? |
20:11:55 | abc_not_cba | stop trying to fool us |
20:11:58 | * | Kameleon quit (Read error: Connection reset by peer) |
20:12:03 | abc_not_cba | we all know you are a hacker |
20:12:18 | disruptek | yes, but now discord knows it, too. |
20:12:31 | disruptek | why is chat such a hard thing to get right? |
20:12:49 | FromDiscord | <Recruit_main_70007> wdym, try to DM me |
20:12:58 | abc_not_cba | some people also create malicious compiler |
20:13:14 | abc_not_cba | it automatically inject bad code into your program |
20:13:21 | abc_not_cba | be careful |
20:14:45 | leorize[m] | oooh, a job writing nim? |
20:16:35 | * | abc_not_cba left #nim (#nim) |
20:16:36 | disruptek | https://forum.nim-lang.org/t/5727#36035 |
20:16:51 | disruptek | how come it's 2020 and we still don't have a facepalm emoji? |
20:16:57 | leorize | we do |
20:17:02 | FromDiscord | <Recruit_main_70007> 🤦♂️ |
20:17:05 | disruptek | 🤦 |
20:17:06 | leorize | not easy to type if you're not on phone |
20:17:28 | disruptek | it's `face palm` not `facepalm`. 🤦 |
20:17:45 | rayman22201 | Araq is async still in the same position as last week when I asked then? |
20:18:07 | FromDiscord | <treeform> @Recruit_main_70007 I can't DM you any more. You have blocked me. Maybe its for the better... |
20:18:08 | * | lritter quit (Ping timeout: 268 seconds) |
20:18:09 | rayman22201 | I was under the impression, maybe I'm wrong, that the double free was also related to iterators not just case objects |
20:18:16 | rayman22201 | and that may also have affected it |
20:18:34 | disruptek | that's what i figured, too; seemed like a pattern that'd be used there. |
20:18:34 | Araq | there is no double free according to valgrind |
20:18:42 | disruptek | but, no. it's not that (now). |
20:18:47 | leorize | @treeform: can you post it on the forums? I'm interested |
20:19:11 | rayman22201 | disruptek with this branch yes? https://github.com/nim-lang/Nim/pull/13156 |
20:19:12 | disbot | ➥ ARC: misc bugfixes |
20:19:22 | disruptek | sure. |
20:19:31 | rayman22201 | or does that not matter? |
20:19:41 | disruptek | it might help. |
20:19:41 | rayman22201 | what commit should I start from? |
20:19:43 | FromDiscord | <Recruit_main_70007> @treeform i didnt |
20:19:49 | FromDiscord | <exelotl> I tried to DM a friend just now and it also denied my message. Maybe something's up with Discord. |
20:19:53 | disruptek | that tree is fine. |
20:20:08 | rayman22201 | Araq do you concur? |
20:20:16 | disruptek | discord shut down their network because i created an account. |
20:20:27 | rayman22201 | major haxor alertz |
20:20:32 | Araq | rayman22201, confirmed |
20:20:38 | FromDiscord | <exelotl> ah that sounds reasonable |
20:20:43 | rayman22201 | :+1: thanks |
20:21:10 | disruptek | bbl, let us know what you learn, ray 👍 |
20:21:15 | lqdev[m] | this happens when an user is not in your friends and they didn't enable a setting which allows non-friends from a server to DM them |
20:21:32 | FromDiscord | <treeform> leorize, I'll post it on the forums, need to clarify something with my boss first. |
20:29:29 | FromDiscord | <Recruit_main_70007> url? |
20:31:46 | * | matti joined #nim |
20:32:07 | * | pbb quit (Remote host closed the connection) |
20:33:23 | * | pbb joined #nim |
20:34:41 | * | Trustable joined #nim |
20:37:35 | * | salewski joined #nim |
20:39:16 | * | letto quit (Quit: Konversation terminated!) |
20:39:16 | salewski | Araq, it is only a gcc problem. With clang it works, even basic gtk test! |
20:39:20 | salewski | https://github.com/nim-lang/Nim/issues/13157 |
20:39:22 | disbot | ➥ Arc, finalizer, out of memory ; snippet at 12https://play.nim-lang.org/#ix=27uI |
20:40:13 | salewski | disbot, any news for https://github.com/nim-lang/Nim/issues/13110 |
20:40:15 | disbot | ➥ RTree investigations with valgrind for --gc:arc ; snippet at 12https://play.nim-lang.org/#ix=27uJ |
20:41:21 | Araq | salewski, not sure, gcc bugs are really rare IME |
20:41:38 | Araq | but if valgrind says it's green it usually really is green |
20:42:01 | Araq | esp since we add runtime checks for valgrinds failures (array index bugs) |
20:42:32 | leorize | salewski: I got oom no matter what compiler I use |
20:42:38 | leorize | gentoo also (but with musl libc) |
20:43:28 | leorize | also, sigsegv if -d:useMalloc is defined |
20:44:49 | salewski | leorize: thanks for testing, so it is not only me. |
20:48:15 | * | krux02 joined #nim |
20:49:44 | salewski | Oh, previous issue seems to work now with latest nim compiler: |
20:49:47 | salewski | https://github.com/nim-lang/Nim/issues/13110#issuecomment-573398778 |
20:49:49 | disbot | ➥ RTree investigations with valgrind for --gc:arc ; snippet at 12https://play.nim-lang.org/#ix=27uJ |
20:50:02 | salewski | I will close that then... |
20:50:29 | leorize | you should add a test for it before closing |
20:52:03 | * | narimiran quit (Ping timeout: 265 seconds) |
20:52:03 | salewski | Ok, then I will add a remark that it work to issue and let closing to the devs. |
20:52:51 | leorize | hmm, I'm running your example via gdb |
20:53:01 | leorize | 93824992254642 <- that's the size of the object that were going to be allocated |
20:53:10 | leorize | so yea, out of memory :P |
20:53:34 | salewski | Thanks leorize, and bye for today. |
20:53:37 | * | salewski quit (Quit: WeeChat 2.6) |
20:54:09 | Zevv | leorize: 0x555555559ab2 ? |
20:56:29 | leorize | you're a genius Zevv |
20:56:38 | leorize | that's the address of the finalizer proc |
20:56:51 | Zevv | yw |
20:57:04 | leorize | I guess sometimes C warnings aren't wrong :P |
20:57:10 | Zevv | large random numbers are never just random |
20:57:38 | Zevv | like 0x6b637546 |
20:57:46 | Zevv | oh I mean 1801680198 |
20:58:34 | leorize | Araq: I guess the finalizer transformation was broken? |
20:59:45 | madprops | hmm http://i.imgur.com/aLXh1gM.png |
20:59:47 | * | letto joined #nim |
21:01:00 | leorize | that's false? |
21:01:19 | leorize | the memory model changes were never official or even as a default in devel |
21:01:36 | leorize | well but it's 4chan, I don't expect too much from them |
21:02:05 | solitudesf | you should always assume that everything said on /g/ is false |
21:02:26 | leorize | /g/ tries to hate everything for the sake of hating it |
21:03:03 | solitudesf | i would prefer plain hating, but they spread so much misinformation |
21:03:14 | * | marmotini_ quit (Remote host closed the connection) |
21:03:32 | solitudesf | and gullible teenagers are buying into that shit |
21:03:41 | * | jholland__ quit (Quit: Connection closed for inactivity) |
21:03:46 | * | tane quit (Quit: Leaving) |
21:03:49 | * | marmotini_ joined #nim |
21:08:42 | * | marmotini_ quit (Ping timeout: 268 seconds) |
21:09:54 | Zevv | yeah, and Anonymous is of course a bit of an authority on these matters |
21:11:56 | disruptek | Anonymous called my cell today. I didn't answer. |
21:12:13 | disruptek | rayman22201: any news? |
21:14:39 | FromDiscord | <kodkuce> whats {.base.} for, i type it in nim manual serch didnet got anything |
21:14:50 | leorize | base methods |
21:15:04 | * | pbb_ joined #nim |
21:15:05 | * | pbb quit (Ping timeout: 272 seconds) |
21:17:48 | FromDiscord | <kodkuce> ok found on stack owerflow need to read |
21:19:31 | * | pbb_ quit (Ping timeout: 272 seconds) |
21:23:52 | * | silvernode quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
21:25:13 | * | pbb joined #nim |
21:26:12 | disruptek | why don't we have a .gcunsafe. instead? |
21:26:39 | leorize | gcsafe is a misnomer :P |
21:30:09 | * | voltist joined #nim |
21:30:26 | Araq | .threadsafe ? |
21:31:13 | disruptek | no, i wanna know the graph is safe from outside influences. |
21:31:36 | Araq | .isolated |
21:31:44 | disruptek | that exists? |
21:32:01 | Araq | no, it's what I'm throwing around |
21:32:12 | disruptek | it's probably an effect. |
21:32:40 | Araq | Isolation is not good for me... Isolation, I don't want to sit on the lemon tree. |
21:32:59 | disruptek | but you can move the tree into a neighbor's yard. |
21:33:14 | disruptek | might let you peek in suzy's window. |
21:33:27 | Zevv | naughty boy |
21:33:37 | Zevv | nighty, boys |
21:33:46 | disruptek | how come zevv always shows up when we start talking about porn in the channel? |
21:33:50 | * | Zevv out |
21:33:57 | disruptek | gn zevv |
21:34:01 | Araq | oh my |
21:34:09 | rayman22201 | so dumpNumberofInstances doesn't work with arc? |
21:34:17 | rayman22201 | what debugging tools do we have? |
21:34:25 | rayman22201 | I have to re-learn things lol. sorry |
21:34:32 | Araq | rayman22201, blood sweat and tears. |
21:34:43 | Araq | and poor valgrind |
21:34:51 | rayman22201 | ;( :') |
21:35:01 | disruptek | --debugingo, -d:useMalloc, -d:traceArc, -d:traceCollector=true |
21:35:09 | disruptek | --gc:orc, --exceptions:goto |
21:35:28 | Araq | traceArc? traceCollector? |
21:35:29 | disruptek | -d:futureLogging 🤣 |
21:35:45 | disruptek | -d:toDebug="always" on your compiler. |
21:35:50 | Araq | I don't remember these, let me try them |
21:36:10 | disruptek | they are unlikely to all be useful here. just stuff i tripped over. |
21:36:21 | rayman22201 | gc:orc? is this the World of Warcraft collector. "For the Hoard!" |
21:36:43 | Araq | gc:orc is brutal and stupid |
21:36:47 | disruptek | lol |
21:37:03 | disruptek | slow but robust. |
21:37:06 | Araq | and it crashes |
21:37:10 | disruptek | makes big leaks into small leaks. |
21:37:19 | rayman22201 | gc:Hulk |
21:37:28 | FromDiscord | <kodkuce> just googled sitting on lemon tree, newer head about that referece |
21:38:01 | Araq | if it were stable, I could make it go really fast |
21:38:22 | Araq | but it isn't and "fast but incorrect" isn't appealing |
21:39:50 | FromDiscord | <kodkuce> https://www.youtube.com/watch?v=UqWD383I90s << this lemon tree |
21:41:30 | * | krux02_ joined #nim |
21:46:21 | * | UNIcodeX joined #nim |
21:47:27 | disruptek | this video is pretty amusing. |
21:48:50 | disruptek | i'm sure this is just what he meant by lemon tree. |
21:49:34 | Araq | yeah, it was reference to this song |
21:50:11 | FromDiscord | <kodkuce> duno i really newer heard an expression "Sitting on lemon tree so was wtf need to google this" |
21:50:15 | disruptek | maybe it's not isolate. |
21:50:21 | disruptek | maybe it's a gate. |
21:51:30 | * | noonien quit (Quit: Connection closed for inactivity) |
21:51:59 | disruptek | {.gate: [ui, network, images, queries].} and each gate defines a separation between graphs. |
21:52:15 | disruptek | the graphs have their own memory schemes. |
21:53:12 | disruptek | some can be multithreaded, some single. |
21:53:27 | disruptek | so you can tie them to threads. |
21:54:11 | disruptek | we could even do transition triggers. |
21:54:52 | Araq | tell me more |
21:56:03 | disruptek | how come every thinks i'm crazy? |
21:56:07 | disruptek | ^1 |
21:58:14 | disruptek | what kinda music is this, anyway? |
21:58:20 | * | rayman22201 quit (Remote host closed the connection) |
21:59:13 | * | hlavaty joined #nim |
21:59:35 | disruptek | https://en.wikipedia.org/wiki/Lemon_Tree_(Fool%27s_Garden_song) |
22:04:51 | FromDiscord | <Recruit_main_70007> @treeform I sent you a DM, can you read it? |
22:05:53 | FromDiscord | <treeform> Yes I did |
22:07:47 | disruptek | it gave him shivers. |
22:08:01 | * | Trustable quit (Remote host closed the connection) |
22:08:13 | * | krux02 quit (Remote host closed the connection) |
22:09:38 | * | filcuc joined #nim |
22:11:20 | * | rayman22201 joined #nim |
22:11:27 | disruptek | we should instrument this "deterministic memory handling" and track characteristics of the test suite, maybe even a few large programs. |
22:11:56 | rayman22201 | ugh. lost connection. Fun fact. Valgrind says Futures by themselves are leak free. this is good. |
22:12:40 | disruptek | there's a leak in that the call() doesn't wipe out func pointers. |
22:13:19 | disruptek | oh, i guess that's fine. |
22:13:40 | FromDiscord | <treeform> I like "deterministic memory handling" |
22:13:47 | rayman22201 | I think it's the same leak I had with my dispose experiment. |
22:14:08 | disruptek | it's not really a leak unless the type leaks, right? |
22:14:14 | disruptek | i dunno how we impl that. |
22:14:22 | * | UNIcodeX quit (Quit: Leaving) |
22:15:24 | rayman22201 | there are two closures in the async macro. One gets handled fine, but the other one gets lost / doesn't have an owner. My solution was to add an extra closure pointer to the Future object, so that it doesn't get lost. |
22:15:46 | rayman22201 | the tricky part is that pointer can't get freed until after "last read of" the future. |
22:17:27 | rayman22201 | I will try to re-implement it with arc and see what happens. |
22:19:08 | disruptek | yeah, okay, i think i finally understand what you're saying. |
22:19:16 | disruptek | took me a minute. |
22:19:40 | rayman22201 | it's ok. async is kind of mind bending code at first |
22:19:42 | disruptek | you can use `unowned` to get an unowned view of the object for rc purposes. |
22:19:54 | disruptek | i just learned this on something today. |
22:20:40 | disruptek | i wish i knew german. |
22:20:52 | rayman22201 | The thing is, I know from a research paper that araq gave me, the "last read of thing" is provably the correct thing to do. `unowned` is more of a hack / letting it leak. |
22:21:16 | * | NimBot joined #nim |
22:21:34 | rayman22201 | is his english that bad? lol |
22:21:47 | disruptek | it's pretty bad. |
22:21:50 | rayman22201 | I also <3 zevv, so I understand the frustration |
22:22:02 | disruptek | i usually just smile and nod. |
22:22:14 | disruptek | nod and smile. |
22:22:31 | disruptek | say `yeah` a lot. that helps. |
22:22:33 | rayman22201 | lol. that is what I do with my wife as well :-P |
22:22:51 | disruptek | i just talk like that to everyone. |
22:22:54 | disruptek | makes it easier. |
22:23:16 | * | Vladar quit (Quit: Leaving) |
22:23:48 | disruptek | i meant to agree that you're right about "last read of thing". |
22:23:56 | disruptek | we should be explicit. |
22:24:22 | disruptek | we say the semantics we want and then program the machine to have those semantics. |
22:24:59 | * | rayman22201 nods in agreement |
22:34:45 | disruptek | that's really what we want. the memory handling should go hand-in-hand with the language. |
22:39:26 | FromDiscord | <AGNiMA> hi |
22:42:44 | FromDiscord | <demotomohiro> Hi |
22:48:32 | rayman22201 | uh, suddenly I can't cast procs? |
22:48:40 | rayman22201 | ``callback=`(next_gensym400019, proc() {.closure, gcsafe.}(asyncProcNimAsyncContinue_400016))` |
22:48:55 | rayman22201 | Error: expected: ')', but got: '(' |
22:49:36 | Araq | (proc() {..})(theProc) |
22:49:58 | rayman22201 | so, expandmacro is not producing valid code anymore these days? |
22:50:13 | disruptek | you can cast them, you just can't trust 'em. further than you can cast them. or, that's what momma always tol' me. |
22:50:23 | rayman22201 | yeah that was it. weird. |
22:50:42 | rayman22201 | I used to be able to copy and paste the output of expandmacro and it would just compile, but that seems to no longer be the case. |
22:51:19 | disruptek | oh, that's a smart idea, isn't it. |
22:51:44 | Araq | disruptek, please. A little less noise, some of us are trying to work |
22:52:00 | rayman22201 | this also seems to no longer be accepted? |
22:52:03 | rayman22201 | ` raise var e_gensym400201: owned(ref AssertionError) new(e_gensym400201) e_gensym400201.msg = msg_gensym400020 % "asyncProc" e_gensym400201.parent = nil e_gensym400201` |
22:52:08 | rayman22201 | ahhhh. fail |
22:52:08 | rayman22201 | sorry |
22:52:36 | rayman22201 | https://play.nim-lang.org/#ix=27vv |
22:52:53 | rayman22201 | Error: invalid indentation |
22:53:19 | rayman22201 | It's sometimes useful to take the output of expandMacro and modify that by hand when debugging the macro. |
22:53:38 | disruptek | yeah, it's good idea. |
22:53:41 | rayman22201 | but if expandMacro is broken, just makes life harder... |
22:54:00 | disruptek | what's the lowest leak that you have? |
22:54:10 | rayman22201 | 72 bytes |
22:54:22 | Araq | it's not really "broken", rendering back the AST into something that is guaranteed to be parsable is far from trivial |
22:54:24 | disruptek | wow, that's the smallest? |
22:54:39 | rayman22201 | well, I'm not done yet |
22:54:58 | disruptek | is that good? i don't even know. |
22:55:04 | rayman22201 | It's about as small as it can be given the size of the strings I'm using to test. |
22:55:13 | rayman22201 | I can make it smaller, but I like strings. easy to debug. |
22:55:34 | rayman22201 | Araq point taken about AST rendering |
22:56:25 | rayman22201 | it's just been surprisingly reliable in the past. small developer ux things that bother me. I know it's low priority. |
23:02:20 | Araq | well I made some progress for async on windows |
23:02:38 | Araq | I think I understand IO completion ports once again |
23:03:00 | disruptek | that probably sounded sexy in your head. |
23:03:14 | disruptek | does it merely leak on windows? |
23:03:30 | Araq | nope, it crashes |
23:03:35 | disruptek | oh, nice. |
23:03:38 | Araq | we get the GC_ref/unref calls wrong |
23:03:39 | FromDiscord | <treeform> Araq, nice! |
23:03:49 | disruptek | wow, that's weird. |
23:03:58 | Araq | but I don't understand yet why |
23:04:03 | Araq | time to sleep over it |
23:04:10 | disruptek | gn |
23:04:18 | Araq | bye |
23:04:26 | rayman22201 | gn |
23:09:14 | * | solitudesf quit (Ping timeout: 258 seconds) |
23:11:09 | * | oculux quit (Ping timeout: 258 seconds) |
23:11:54 | * | abm joined #nim |
23:12:07 | dom96 | Araq, let me know if you need some insights from me |
23:13:02 | zedeus | hey dom96, have you ever experienced requests getting sent to the wrong clients with httpbeast? |
23:13:30 | * | oculux joined #nim |
23:13:33 | dom96 | nope |
23:13:40 | rayman22201 | disruptek can you give me an example of unowned usage? |
23:13:44 | zedeus | happens quite often with nitter |
23:14:02 | zedeus | can't reproduce locally, requires lots of traffic |
23:14:11 | disruptek | unowned someref.somefield is like a cursor that won't +rc someref. |
23:14:38 | zedeus | also happens with other instances so it's not some networking mishap |
23:14:40 | dom96 | zedeus, hm, odd. How do you know that is the cause? How does it show up? |
23:14:43 | rayman22201 | undeclared identifier 'unowned' |
23:14:57 | disruptek | sorry, unown |
23:15:30 | zedeus | it's displayed like any other requests, just the wrong content. sometimes you request a profile page, and it gives you an image, or just the wrong page |
23:15:42 | rayman22201 | damn. thanks. that worked, but didn't do what I wanted |
23:15:50 | disruptek | what do you want? |
23:16:22 | rayman22201 | async to work :-P |
23:16:26 | zedeus | i have reproduced it a couple times with a local instance but it's very inconsistent |
23:16:29 | disruptek | heh |
23:16:35 | rayman22201 | I have an alternative I'm trying. no worries |
23:16:40 | disruptek | are you on windows? |
23:17:27 | rayman22201 | I'm on linux atm |
23:17:34 | dom96 | zedeus, can you reproduce with a minimal httpbeast code sample? |
23:17:35 | rayman22201 | I'm still looking at the leak |
23:17:59 | disruptek | somehow i'm infinite-looping on it. |
23:18:55 | zedeus | dom96: no as I said it's incredibly hard to trigger it even with a local nitter instance, I've tried a lot of things but nothing reliably triggers it |
23:19:28 | Yardanico | can it be a bug in the underlying OS implementation of poll and stuff? |
23:19:32 | zedeus | while with nitter.net you can trigger it constantly with a simple apache benchmark |
23:19:52 | rayman22201 | how do you force a destructor to run? |
23:20:09 | disruptek | call it? |
23:20:26 | * | oculux quit (Ping timeout: 265 seconds) |
23:20:32 | dom96 | zedeus, possibly the only way to track it down will be to set up an instance on another server, run the apache benchmark, delete some code, re-run, see if its still reproducible until you find the source. |
23:20:33 | rayman22201 | `destroyy=`? |
23:20:44 | disruptek | =destroy but it takes a var. |
23:20:59 | * | oculux joined #nim |
23:21:01 | dom96 | zedeus, pain in the ass, but there is no way to know where this bug is. It could be in your code for example, maybe you're doing something weird with threads? |
23:21:27 | zedeus | well, I've tried that. running 10 benchmarks hammering it with 20 requests in parallel it doesn't happen |
23:21:29 | zedeus | nope, no threads |
23:21:40 | zedeus | just simple jester routing |
23:21:49 | rayman22201 | `Error: call depth limit reached in a debug build (2000 function calls). You can change it with -d:nimCallDepthLimit=<int> but really try to avoid deep recursions instead.` |
23:21:51 | rayman22201 | :-P |
23:21:59 | dom96 | zedeus, but you're running jester with --threads:on, right? |
23:22:06 | zedeus | no |
23:22:19 | zedeus | i use sqlite with norm so that isn't possible |
23:22:29 | rayman22201 | I also made it infinite recurse lol |
23:22:45 | disruptek | but it only leaks 72 bytes? |
23:23:15 | disruptek | you gotta take the wins with the losses. |
23:24:39 | dom96 | zedeus, then I'm really not able to imagine how this could happen |
23:24:46 | rayman22201 | it's actually more. It's actually 416. |
23:25:00 | rayman22201 | ==4314== LEAK SUMMARY:==4314== definitely lost: 72 bytes in 1 blocks==4314== indirectly lost: 344 bytes in 4 blocks |
23:25:23 | rayman22201 | but that will grow linearly with the number of async chains |
23:25:28 | rayman22201 | so no beno |
23:25:32 | rayman22201 | bueno even |
23:25:38 | disruptek | oh i'm measuring the test. |
23:25:55 | dom96 | zedeus, what you can also try is switching to asynchttpserver instead |
23:26:03 | disruptek | send me your test. |
23:26:06 | dom96 | -d:useStdLib IIRC |
23:26:12 | zedeus | well, i did.. but #12526 |
23:26:14 | disbot | https://github.com/nim-lang/Nim/issues/12526 -- 3asynchttpserver "Bad file descriptor" crashes ; snippet at 12https://play.nim-lang.org/#ix=27vG |
23:27:14 | dom96 | ahh :/ |
23:28:39 | disruptek | i'm measuring tasyncawait from testament. |
23:29:30 | rayman22201 | way too complicated. |
23:30:08 | disruptek | yes, well, it has the advantage of stressing all the parts. |
23:30:59 | rayman22201 | https://play.nim-lang.org/#ix=27vK |
23:31:23 | rayman22201 | lets get the minimal case working before stress testing :-P |
23:31:57 | rayman22201 | I have another version with the async macro expanded manually if you want to play with that. |
23:32:25 | rayman22201 | also, here is my dispose async work: https://github.com/rayman22201/Nim/tree/async-with-dispose |
23:32:30 | disruptek | sure, but lemme chew on this first. |
23:32:51 | rayman22201 | I also have a version of that same example with the asyncmacro expanded if you like |
23:33:11 | disruptek | so this is leak free on orc. |
23:33:28 | disruptek | and the 72 on arc. |
23:33:42 | rayman22201 | what is orc? |
23:34:02 | disruptek | orc is the cycle-detecting version of arc. |
23:34:16 | rayman22201 | dispose was an experimental branch Araq gave me to proof of concept before arc was even started. |
23:34:27 | disruptek | ~orc is arc's slower, dim-witted cousin |
23:34:27 | disbot | orc: 11arc's slower, dim-witted cousin |
23:34:34 | disruptek | ~orc is arc's slower, dim-witted brother |
23:34:35 | disbot | orc: 11arc's slower, dim-witted brother |
23:34:46 | rayman22201 | I haven't checked that. idk if it leaks or not with orc |
23:35:02 | disruptek | right, so that was the --newruntime variant. |
23:35:21 | disruptek | a lot of related code repurposed in arc. |
23:35:25 | rayman22201 | yeah |
23:35:37 | rayman22201 | but earlier primate in the evolutionary chain :-P |
23:35:53 | disruptek | so how well does the dispose branch do in this test? |
23:36:31 | rayman22201 | so, orc does not leak, confirmed |
23:36:39 | rayman22201 | dispose passes the test |
23:36:41 | rayman22201 | no leaks |
23:37:02 | rayman22201 | but I had to write a whole new Future variant that takes an extra closure pointer |
23:37:05 | disruptek | ~orc is arc's slower, dim-witted brother who also detects and breaks memory cycles. |
23:37:05 | disbot | orc: 11arc's slower, dim-witted brother who also detects and breaks memory cycles. |
23:37:26 | disruptek | so this is a very big deal. |
23:37:47 | disruptek | i think you may have just saved christmas. |
23:38:03 | rayman22201 | well, it's a big rewrite of the guts, but it should be transparent to the user |
23:38:10 | rayman22201 | lol. woohoo |
23:38:17 | disruptek | why didn't you say so? |
23:38:22 | rayman22201 | I've been sitting on it for a while. That's why araq keeps poking me |
23:38:34 | disruptek | no one is gonna want to use a transparent api change, even if it doesn't leak. |
23:39:10 | rayman22201 | I've been sort of waiting for arc to stabilize, and see if it would work out another way. |
23:39:46 | disruptek | oh, it's broken on newruntime? |
23:40:02 | rayman22201 | what do you mean? |
23:40:14 | rayman22201 | async never worked on newruntime |
23:40:33 | disruptek | but arc is, as you put it, an evolution of that. |
23:40:46 | disruptek | and you wrote dispose against newruntime, yes? |
23:40:53 | rayman22201 | no |
23:40:56 | disruptek | oh. |
23:42:01 | rayman22201 | dispose is an "experimental" offshoot that I was using because araq had just started on newruntime. |
23:42:35 | rayman22201 | but: https://github.com/rayman22201/Nim/blob/async-with-dispose/basicAsync.nim#L21 |
23:43:45 | rayman22201 | the whole idea being that "dispose" was something I could use to prototype, but can be translated into owned notation. |
23:44:06 | disruptek | hmm, i don't know that GC_disable is a thing. |
23:44:12 | rayman22201 | I promise it is |
23:44:13 | disruptek | comment it out and see what happens. |
23:44:26 | disruptek | i mean on arc, silly. |
23:44:34 | rayman22201 | of course not |
23:44:48 | disruptek | so fine. |
23:44:51 | rayman22201 | lol |
23:45:05 | disruptek | yeah, you did it. great work. |
23:45:24 | rayman22201 | basically. I have an algorithm that I know works. But I have to do the annoying work of translating to arc now :-P |
23:49:24 | * | filcuc quit (Quit: Konversation terminated!) |
23:55:55 | Araq | rayman22201: dispose(x) becomes x = nil |
23:56:08 | Araq | the translation is rather simple, no? |
23:56:32 | disruptek | dispose -> dispose |
23:57:29 | disruptek | it's awesome to debug orc versus arc. |
23:57:38 | disruptek | you see where it adds a dispose, boom. |