00:00:01 | * | junland quit (Quit: %ZNC Disconnected%) |
00:01:41 | * | junland joined #nim |
00:02:21 | * | lritter quit (Quit: Leaving) |
00:05:35 | * | chun quit (Remote host closed the connection) |
02:13:29 | * | lritter_ joined #nim |
02:26:17 | * | lritter_ quit (Quit: Leaving) |
02:28:39 | FromGitter | <awr1> https://github.com/nim-lang/Nim/pull/11667 |
02:29:13 | FromGitter | <awr1> does anyone have an idea of why appveyor screwed up here? |
02:29:47 | FromGitter | <awr1> https://ci.appveyor.com/project/dom96/nim/builds/25790889/job/u36wih34lt82kdor |
02:29:51 | FromGitter | <awr1> all i did was change a string |
02:29:57 | FromGitter | <awr1> it was green before |
02:37:32 | FromGitter | <Varriount> @awr1 Looks like the package nim-chronicles failed to build successfully |
02:44:44 | * | laaron- quit (Quit: ZNC 1.7.1 - https://znc.in) |
02:46:24 | * | laaron joined #nim |
02:46:29 | * | drewr joined #nim |
02:48:04 | FromGitter | <awr1> yeah appveyor seems to be stuck on chronicles for new PRs |
02:48:25 | FromGitter | <awr1> https://ci.appveyor.com/project/Araq/nim/builds/25795637/job/iay3rivnh0eham0n/tests |
02:49:10 | FromGitter | <awr1> https://ci.appveyor.com/project/dom96/nim/builds/25790531/job/329oh7nv70qgca2o |
02:49:43 | FromGitter | <awr1> ¯\_(ツ)_/¯ |
02:54:52 | FromGitter | <awr1> i cloned chronicles and am running the tests, am getting this |
02:54:55 | FromGitter | <awr1> /home/awr/.nimble/pkgs/faststreams-0.1.0/faststreams/output_stream.nim(2, 38) Error: cannot open file: std_shims/strings |
03:08:38 | FromGitter | <awr1> https://github.com/status-im/nim-faststreams/pull/4 |
03:08:49 | FromGitter | <awr1> can anyone @ status merge this when they get the chance? thanks in advance |
04:12:17 | * | Snircle quit (Quit: Textual IRC Client: www.textualapp.com) |
05:00:39 | * | shashlick joined #nim |
05:16:17 | * | narimiran joined #nim |
05:18:04 | * | absolutejam1 joined #nim |
05:22:40 | * | nsf joined #nim |
05:25:21 | * | absolutejam1 quit (Ping timeout: 248 seconds) |
06:08:01 | * | meff[m] quit (*.net *.split) |
06:08:01 | * | planetis[m] quit (*.net *.split) |
06:08:02 | * | k0mpjut0r quit (*.net *.split) |
06:08:02 | * | mattisme quit (*.net *.split) |
06:08:02 | * | sentreen quit (*.net *.split) |
06:08:03 | * | surma quit (*.net *.split) |
06:08:03 | * | zestyr quit (*.net *.split) |
06:08:03 | * | vegai quit (*.net *.split) |
06:12:24 | * | gangstacat quit (*.net *.split) |
06:12:24 | * | uvegbot quit (*.net *.split) |
06:12:25 | * | zeroDotTwenty[m] quit (*.net *.split) |
06:12:25 | * | xomachine[m] quit (*.net *.split) |
06:12:25 | * | zielmicha[m]1 quit (*.net *.split) |
06:12:25 | * | macsek1911[m] quit (*.net *.split) |
06:12:25 | * | gh0st[m] quit (*.net *.split) |
06:12:25 | * | Manny8888 quit (*.net *.split) |
06:12:26 | * | FromGitter quit (*.net *.split) |
06:12:26 | * | nimblepoultry quit (*.net *.split) |
06:12:26 | * | snowolf_ quit (*.net *.split) |
06:14:57 | * | m712 quit (Ping timeout: 248 seconds) |
06:18:06 | * | gangstacat joined #nim |
06:18:06 | * | uvegbot joined #nim |
06:18:06 | * | zeroDotTwenty[m] joined #nim |
06:18:06 | * | xomachine[m] joined #nim |
06:18:06 | * | zielmicha[m]1 joined #nim |
06:18:06 | * | macsek1911[m] joined #nim |
06:18:06 | * | gh0st[m] joined #nim |
06:18:06 | * | Manny8888 joined #nim |
06:18:06 | * | FromGitter joined #nim |
06:18:06 | * | nimblepoultry joined #nim |
06:18:06 | * | snowolf_ joined #nim |
06:18:27 | * | meff[m] joined #nim |
06:18:27 | * | planetis[m] joined #nim |
06:18:27 | * | mattisme joined #nim |
06:18:27 | * | k0mpjut0r joined #nim |
06:18:27 | * | sentreen joined #nim |
06:18:27 | * | surma joined #nim |
06:18:27 | * | zestyr joined #nim |
06:18:27 | * | vegai joined #nim |
06:19:34 | * | m712 joined #nim |
06:35:30 | * | eterps joined #nim |
06:36:40 | * | couven92 joined #nim |
06:37:54 | * | solitudesf joined #nim |
06:38:43 | * | Vladar joined #nim |
06:41:07 | FromGitter | <zacharycarter> kuon: nuklear bindings need updating I think - but there are no circular imports in the bindings I produced |
06:41:35 | FromGitter | <zacharycarter> as they're only one module |
06:41:41 | FromGitter | <zacharycarter> so you're probably not using my bindings |
06:43:55 | FromGitter | <zacharycarter> I plan on using them in my new project - so maybe I'll work on getting them up to date, today |
06:48:14 | kuon | zacharycarter it's because I moved the macro and it broke the module in two, I got that figured out. |
06:49:54 | FromGitter | <zacharycarter> ah okay cool |
06:50:32 | FromGitter | <zacharycarter> yeah - I made those bindings a couple of years ago and didn't keep them up to date, but I will make an effort to do so, if not today then soon |
06:50:53 | kuon | no problem:) |
07:00:00 | * | gmpreussner quit (Quit: kthxbye) |
07:04:42 | * | gmpreussner joined #nim |
07:24:57 | * | narimiran quit (Ping timeout: 258 seconds) |
07:36:59 | * | stefanos82 joined #nim |
07:37:11 | * | Trustable joined #nim |
07:47:00 | * | brakmic joined #nim |
07:50:58 | * | brakmic quit (Read error: Connection reset by peer) |
07:51:28 | * | brakmic joined #nim |
07:52:23 | * | Trustable quit (Remote host closed the connection) |
08:12:06 | * | nergal[m]1 quit (Write error: Connection reset by peer) |
08:12:10 | * | isaac[m] quit (Remote host closed the connection) |
08:12:12 | * | leorize[m] quit (Remote host closed the connection) |
08:12:16 | * | skrylar[m] quit (Read error: Connection reset by peer) |
08:12:16 | * | lqdev[m] quit (Read error: Connection reset by peer) |
08:12:16 | * | BitPuffin quit (Read error: Connection reset by peer) |
08:12:21 | * | mattisme quit (Read error: Connection reset by peer) |
08:12:21 | * | meff[m] quit (Write error: Connection reset by peer) |
08:12:21 | * | k0mpjut0r quit (Write error: Connection reset by peer) |
08:12:21 | * | planetis[m] quit (Remote host closed the connection) |
08:12:22 | * | Swedneck2 quit (Write error: Connection reset by peer) |
08:12:23 | * | yglukhov[m] quit (Remote host closed the connection) |
08:12:23 | * | spymasterd[m] quit (Remote host closed the connection) |
08:12:23 | * | Miguelngel[m] quit (Remote host closed the connection) |
08:12:23 | * | narimiran[m] quit (Remote host closed the connection) |
08:12:23 | * | Demos[m] quit (Remote host closed the connection) |
08:12:24 | * | TheManiac[m] quit (Remote host closed the connection) |
08:12:26 | * | Connor[m] quit (Remote host closed the connection) |
08:12:27 | * | xomachine[m] quit (Remote host closed the connection) |
08:12:27 | * | zeroDotTwenty[m] quit (Remote host closed the connection) |
08:12:28 | * | Manny8888 quit (Remote host closed the connection) |
08:12:28 | * | macsek1911[m] quit (Read error: Connection reset by peer) |
08:12:28 | * | gh0st[m] quit (Read error: Connection reset by peer) |
08:12:28 | * | zielmicha[m]1 quit (Remote host closed the connection) |
08:12:29 | * | cfv[m] quit (Remote host closed the connection) |
08:12:29 | * | GitterIntegratio quit (Write error: Connection reset by peer) |
08:18:50 | * | Connor[m] joined #nim |
08:19:38 | * | eterps quit (Ping timeout: 252 seconds) |
08:23:03 | * | eterps joined #nim |
08:23:52 | * | jjido joined #nim |
08:29:28 | * | eterps quit (Ping timeout: 264 seconds) |
08:31:44 | * | surma quit (Ping timeout: 252 seconds) |
08:32:37 | * | dwdv joined #nim |
08:32:49 | * | surma joined #nim |
08:36:03 | * | chun joined #nim |
08:38:28 | * | eterps joined #nim |
08:40:13 | * | BitPuffin joined #nim |
08:40:13 | * | Manny8888 joined #nim |
08:40:13 | * | TheManiac[m] joined #nim |
08:40:13 | * | Demos[m] joined #nim |
08:40:14 | * | GitterIntegratio joined #nim |
08:40:14 | * | k0mpjut0r joined #nim |
08:40:14 | * | isaac[m] joined #nim |
08:40:14 | * | leorize[m] joined #nim |
08:40:14 | * | Swedneck2 joined #nim |
08:40:14 | * | nergal[m]1 joined #nim |
08:40:14 | * | gh0st[m] joined #nim |
08:40:14 | * | lqdev[m] joined #nim |
08:40:14 | * | mattisme joined #nim |
08:40:20 | * | zeroDotTwenty[m] joined #nim |
08:40:20 | * | Miguelngel[m] joined #nim |
08:40:20 | * | cfv[m] joined #nim |
08:40:21 | * | narimiran[m] joined #nim |
08:40:21 | * | yglukhov[m] joined #nim |
08:40:21 | * | spymasterd[m] joined #nim |
08:40:21 | * | xomachine[m] joined #nim |
08:40:21 | * | meff[m] joined #nim |
08:40:21 | * | planetis[m] joined #nim |
08:40:23 | * | macsek1911[m] joined #nim |
08:40:24 | * | zielmicha[m]1 joined #nim |
08:40:25 | * | skrylar[m] joined #nim |
08:56:40 | * | eterps quit (Ping timeout: 252 seconds) |
09:00:29 | * | jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
09:08:24 | * | uvegbot quit (Ping timeout: 252 seconds) |
09:09:05 | * | uvegbot joined #nim |
09:22:53 | * | chun quit (Quit: Leaving) |
09:30:04 | * | uvegbot quit (Ping timeout: 264 seconds) |
09:36:52 | cfv[m] | I managed to install the latest nightly build on my RPi! ARMv7 version seems to be working well since the ARMv8 processor on the Raspberry supports software built for ARMv7. |
09:40:12 | * | cfv[m] is now known as BaldEagleX02[m] |
10:03:43 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
10:04:50 | * | laaron joined #nim |
10:25:16 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
10:26:44 | * | laaron joined #nim |
10:36:50 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
10:37:00 | * | laaron- joined #nim |
10:51:22 | FromGitter | <zacharycarter> shashlick: is nimnuklear in a working state? could save me the time of bringing my bindings up to date |
11:19:32 | * | uvegbot joined #nim |
11:20:14 | FromGitter | <zacharycarter> I wasn't able to install the project - but I think it might be a problem with nimgen itself |
11:20:28 | * | eterps joined #nim |
12:09:36 | * | jjido joined #nim |
12:16:09 | * | jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
12:22:43 | * | eterps quit (Ping timeout: 246 seconds) |
12:30:22 | * | stefanos82 quit (Quit: Quitting for now...) |
12:37:13 | FromGitter | <arnetheduck> @awr1 we're considering moving faststreams into `stew` given its small size and general utility (to simplify our dependency mgmt) - any thoughts / opinions on this? (see https://github.com/status-im/nim-stew for a bit of background) |
12:39:12 | FromGitter | <arnetheduck> fwiw, chronicles already depends on `stew` indirectly, so roughly it's one less repo to sync / depend on |
12:46:52 | * | jjido joined #nim |
12:51:32 | * | ganderzz joined #nim |
12:53:41 | * | ganderzz quit (Remote host closed the connection) |
12:56:51 | * | clyybber joined #nim |
13:04:03 | clyybber | Araq: What I meant yesterday is that with eqmove we pass a temporary to a var parameter, which is not a problem in the C backend, but with the CPP backend we generate var parameters as references, and CPP doesn't allow one to pass temporaries to them even if theoretically possible. |
13:04:21 | * | NimBot joined #nim |
13:07:25 | * | narimiran joined #nim |
13:07:30 | * | clyybber quit (Quit: WeeChat 2.5) |
13:09:02 | * | jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
13:13:40 | * | solitudesf quit (Ping timeout: 272 seconds) |
13:13:58 | * | Snircle joined #nim |
13:20:48 | FromGitter | <awr1> @arnetheduck makes sense considering stew's scope |
13:24:16 | FromGitter | <awr1> i would put the modules it provides in the readme though or people aren't gonna understand what stew is for |
13:31:13 | * | vlad1777d__ quit (Ping timeout: 248 seconds) |
13:41:02 | * | solitudesf joined #nim |
13:53:57 | FromGitter | <arnetheduck> you mean like https://github.com/status-im/nim-stew#notable-libraries ? :) |
13:56:49 | FromGitter | <arnetheduck> think I might move that higher up though, the rest is sort of admin |
14:00:07 | * | lf-araujo joined #nim |
14:01:27 | FromGitter | <awr1> yeah i didn't see that, you should move it higher |
14:04:36 | * | lf-araujo quit (Ping timeout: 244 seconds) |
14:05:09 | * | lqdev[m] sent a long message: < https://matrix.org/_matrix/media/v1/download/matrix.org/KDsQnRKawFiFGdlBoIgoXrBN > |
14:05:12 | lqdev[m] | what the hell? |
14:09:45 | * | lf-araujo joined #nim |
14:19:43 | * | livcd quit (Ping timeout: 258 seconds) |
14:30:17 | * | dddddd joined #nim |
14:31:47 | * | lf-araujo quit (Remote host closed the connection) |
14:52:40 | * | stefanos82 joined #nim |
14:52:47 | * | clyybber joined #nim |
14:53:55 | Araq | clyybber, but the temporary is produced by Nim too |
14:54:07 | Araq | for C++ it's just another variable that can be passed to 'T&' |
14:59:01 | clyybber | If we patch the compiler to generate that temporary that is. |
14:59:08 | clyybber | But currently it doesn't |
14:59:26 | clyybber | since normally you arent allowed to pass a temporary to a var parameter |
15:00:51 | clyybber | So what I want to argue we should do, is make the C backend generate T* instead of T& |
15:01:03 | clyybber | s/C backend/CPP backend |
15:03:15 | FromGitter | <phrmoy> (https://files.gitter.im/nim-lang/Nim/1z2U/image.png) |
15:03:20 | FromGitter | <phrmoy> This is truly outstanding. |
15:03:41 | FromGitter | <phrmoy> And they chose Swift for their tensorflow frontend |
15:03:48 | FromGitter | <phrmoy> what a joke |
15:04:33 | disruptek | i know, it's obscene that python doesn't have better syntax highlighting by now. |
15:04:41 | * | disruptek runs and hides. |
15:04:47 | FromGitter | <awr1> what types of optimizations can a C++ compiler do with T& vs. T* |
15:05:48 | clyybber | awr1: I don't know, but the fact that C++ doesn't allow modifying a temporary (or passing a temporary to T&) is an ergonomics feature |
15:06:10 | FromGitter | <awr1> https://stackoverflow.com/a/9039469/10444138 |
15:06:11 | FromGitter | <awr1> hm |
15:07:12 | Araq | clyybber, read the spec, a temporary has to be generated |
15:07:15 | clyybber | awr1: I assume it only does that when you are not actually modifiyng the underlying variable |
15:07:25 | clyybber | Araq: But =move doesn't have a sink parameter |
15:07:34 | clyybber | I'm talking about this: "eqmove__jRxUrAfjudolXPsxKTlFXg(result, rawNewString(((NI) 32)));" |
15:08:46 | Araq | I know, =move isn't called by the Nim programmer |
15:08:54 | Araq | it's called by the injectdestructors transformation |
15:09:06 | Araq | and you need to pass a temporary to it |
15:09:30 | Araq | maybe the spec could be clearer |
15:11:49 | clyybber | Araq: Wait, so 'foo = bar()' gets transformed to 'foo; var tmp; `=`(tmp, bar()); `=move`(foo, tmp)' ? |
15:12:18 | Araq | no. |
15:12:27 | Araq | or |
15:13:12 | Araq | more like 'bitwiseCopy(tmp, bar()); =move(foo, tmp) |
15:13:41 | clyybber | yeah, sry I meant that basically |
15:14:31 | clyybber | Araq: But won't that make it impossible to return an owned ref? |
15:14:56 | clyybber | Since at some point both the result of bar() and tmp are pointing to the same location? |
15:14:59 | Araq | how so? |
15:18:43 | Araq | sorry, gotta go, bll |
15:18:45 | Araq | bbl |
15:19:46 | clyybber | bb |
15:20:37 | clyybber | and nevermind the concern with the owned ref |
15:22:08 | clyybber | Araq: Still, technically C (and CPP) allows us to pass a temporary directly to move, and generate `=move`(foo, bar()) |
15:22:23 | clyybber | So I figured why not do that? |
15:23:06 | clyybber | But maybe its not worth it, depending on how the C compiler optimizes the bitwiseCopy away |
15:38:12 | FromGitter | <zacharycarter> how can I fix - `cannot evaluate 'sizeof/alignof' because its type is not defined completely` ? |
15:40:44 | clyybber | zach: What type is it? |
15:41:35 | FromGitter | <zacharycarter> a type imported from C |
15:41:49 | FromGitter | <zacharycarter> but just doing something like - `type nk_window* {.importc: "nk_window", bycopy.} = object` |
15:41:59 | FromGitter | <zacharycarter> will cause this error to be thrown when called with `sizeof` |
15:42:22 | FromGitter | <awr1> you need to fill out the fields to get a proper sizeof from nim probably |
15:43:03 | FromGitter | <zacharycarter> I figured removing fields might make the error go away - but that's not the case |
15:43:08 | FromGitter | <zacharycarter> I've tried with the object having fields and with it not having fields |
15:45:50 | FromGitter | <awr1> add `{.final.}` maybe? |
15:48:00 | FromGitter | <awr1> either that or the types of the fields are not defined in the same respect |
15:48:36 | FromGitter | <awr1> for sizeof to work i believe nim needs to have "the full picture" |
15:49:14 | clyybber | Araq: Nevermind most of what I said above. |
15:49:16 | FromGitter | <zacharycarter> well technically I don't think I need to `importc` these types since I'm using the `{.compile.}` pragma on a `.c` file that includes the header file these types are defined in |
15:49:26 | FromGitter | <zacharycarter> so I'll just grid of the importc pragma - that seems to solve the problem |
15:52:20 | FromGitter | <awr1> for the record you don't need to pass a string to `importc`if you want it to be the same name as the nim identifier |
15:54:32 | FromGitter | <zacharycarter> I know - c2nim generated that stuff |
15:55:14 | FromGitter | <awr1> o ok |
16:14:48 | * | couven92 quit (Ping timeout: 272 seconds) |
16:15:23 | * | shashlick quit (Remote host closed the connection) |
16:16:14 | * | shashlick joined #nim |
16:17:43 | * | brakmic quit (Remote host closed the connection) |
16:17:59 | * | brakmic joined #nim |
16:25:44 | lmariscal | Is @kraptor in here by any chance? |
17:09:54 | * | narimiran quit (Ping timeout: 258 seconds) |
17:25:31 | * | laaron- quit (Remote host closed the connection) |
17:26:02 | * | stefanos82 quit (Quit: Quitting for now...) |
17:40:12 | * | m|b joined #nim |
17:57:51 | * | brakmic quit (Read error: Connection reset by peer) |
17:58:26 | * | brakmic joined #nim |
18:05:36 | * | brakmic quit (Read error: Connection reset by peer) |
18:05:44 | * | brakmic_ joined #nim |
18:10:48 | * | brakmic_ quit () |
18:11:08 | * | brakmic joined #nim |
18:11:13 | FromGitter | <zacharycarter> hmm - if I compile with verbosity 3, the compiler crashes |
18:11:19 | FromGitter | <zacharycarter> if I use 2 or default the compiler just hangs |
18:11:33 | FromGitter | <zacharycarter> I forget how to debug the compilation - will try to googl eit |
18:13:53 | FromGitter | <zacharycarter> I think I figured it out - `./koch temp c /tmp/test.nim` |
18:17:30 | FromGitter | <zacharycarter> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5d22373a9a8a5d3cf4b2c0dd] |
18:18:31 | Zevv | I've seen that before |
18:18:59 | Zevv | https://github.com/nim-lang/Nim/issues/9605? |
18:19:50 | Zevv | hm that doesn't hang on verb lower then 3, but the stack trace tail is similar to yours |
18:21:20 | FromGitter | <zacharycarter> ooph - open since Nov? |
18:22:01 | FromGitter | <zacharycarter> I crash without even using nim temp |
18:23:09 | FromGitter | <zacharycarter> I guess I'm stuck then atm - compilation just hangs and if I try to increase verbosity in an effort to maybe figure out why, it crashes with that error |
18:24:24 | Zevv | can you share some code to reproduce? |
18:27:27 | FromGitter | <zacharycarter> it's a lot of code |
18:27:32 | FromGitter | <zacharycarter> it's the demo for the nuklear Nim bindings |
18:27:51 | FromGitter | <zacharycarter> let me update the repo and I'll give instructions on how to reproduce the erroor |
18:28:45 | Zevv | I probably can't figure it out, but a reproducing example might inspire araq to take a look |
18:29:21 | lmariscal | dom96 any progress on https://github.com/nim-lang/nimble/issues/482 ? I do not like to be pushy, I just want to know if this feature is still in the plans. |
18:30:09 | dom96 | Sure, it's in the plans |
18:30:42 | FromGitter | <zacharycarter> ```code paste, see link``` ⏎ ⏎ NOTE: need to have glfw3.dll installed [https://gitter.im/nim-lang/Nim?at=5d223a5151d87058befba1c8] |
18:31:12 | * | livcd joined #nim |
18:33:00 | Zevv | missing glfw3.nim? |
18:34:04 | Zevv | import glfw3 as glfw, opengl |
18:34:36 | FromGitter | <zacharycarter> I do have the glfw3 nimble package installed |
18:35:00 | Zevv | i can't seem to find that - only glfw, not glfw3 |
18:35:25 | FromGitter | <zacharycarter> try - `nimble install nimrod-glfw` |
18:37:35 | FromGitter | <kayabaNerve> Do you guys remember Nake? |
18:37:38 | FromGitter | <kayabaNerve> I liked it :( |
18:37:40 | Zevv | hm dependency hell - on linux opengl nimble tries import X |
18:37:46 | Zevv | which is not there |
18:38:26 | FromGitter | <zacharycarter> bleh |
18:40:29 | Zevv | ok I got that hacked by local fixes in opengl nimble: import x11/X x11/Xlib instead |
18:40:30 | Zevv | now I get |
18:40:43 | Zevv | http://ix.io/1NXh |
18:40:58 | Zevv | bah |
18:41:48 | FromGitter | <zacharycarter> weird |
18:42:17 | FromGitter | <zacharycarter> you're probably getting further than I am |
18:42:40 | FromGitter | <zacharycarter> mine hangs at the line - CC: glfw3_opengl3.nim |
18:42:53 | Zevv | fixed this by adding #include <stdarg.h> to nuklear.h |
18:42:54 | Zevv | and now I hang |
18:43:02 | FromGitter | <zacharycarter> bleh okay |
18:43:04 | Zevv | reproduced! |
18:43:10 | FromGitter | <zacharycarter> yay! thank you! |
18:44:35 | * | nsf quit (Quit: WeeChat 2.4) |
18:46:54 | Zevv | it looks as if the c compilers stderr is not eaten, so it hangs on a write() |
18:48:02 | FromGitter | <zacharycarter> hmmm |
18:49:05 | * | eterps joined #nim |
18:49:44 | Zevv | nim is waiting for gcc to finish. Gcc is waiting for cc1, and cc1 is blocked because its pipe to stderr is full |
18:49:54 | FromGitter | <zacharycarter> wonderful |
18:50:01 | Zevv | os plumbing galore |
18:50:21 | FromGitter | <zacharycarter> I got some helpful output by killing `cc1.exe` in task explorer |
18:51:00 | FromGitter | <zacharycarter> apparently all of these `@`'s in nuklear.nim are causing issues |
18:51:34 | Zevv | yeah I see something similar in strace |
18:51:38 | Zevv | sanitizng the output for you |
18:51:53 | Zevv | but the root cause of the hanging nim is nasty |
18:52:06 | FromGitter | <zacharycarter> agreed |
18:52:48 | Zevv | http://ix.io/1NXl |
18:52:53 | Zevv | that is what cc1 is saying |
18:52:56 | Zevv | but noone is listening |
18:53:32 | * | laaron joined #nim |
18:54:35 | FromGitter | <zacharycarter> haha ooph - okay thanks! I'll get rid off all these `@`'s and see what happens |
18:54:45 | Zevv | usually the compiler will barf out after so many errors occur |
18:54:47 | Zevv | but this keeps going |
18:55:37 | Zevv | better version: http://ix.io/1NXp |
18:56:57 | * | Snircle quit (Quit: Textual IRC Client: www.textualapp.com) |
18:57:33 | Zevv | I can reproduce with a nim oneliner |
18:57:52 | Zevv | I'll file an issue |
18:59:26 | Zevv | ah known issue |
18:59:29 | Zevv | https://github.com/nim-lang/Nim/issues/8648 |
19:03:02 | FromGitter | <zacharycarter> ah okay well that's good - at least it's been reported |
19:03:24 | FromGitter | <zacharycarter> okay I got to the program actually running - it still crashes but hopefully I can take it from here - thank you for the help Zevv! |
19:03:30 | Zevv | yw |
19:18:31 | * | xace quit (Ping timeout: 246 seconds) |
19:19:51 | Araq | oh nice. I didn't think of that solution, Zevv |
19:20:09 | Zevv | not that nice, actually. Fix is nasty |
19:20:13 | Araq | in my mind fixing osproc was the only way ... but so far we failed |
19:23:09 | Zevv | osproc should probably learn to work with async, although that added complexity is not something you would want to use from the compiler itself I guess |
19:26:14 | * | absolutejam1 joined #nim |
19:34:47 | * | xace joined #nim |
19:48:49 | * | m|b quit (Quit: Connection closed for inactivity) |
20:03:48 | shashlick | There's already https://github.com/cheatfate/asynctools |
20:06:21 | * | abm joined #nim |
20:08:37 | Zevv | whoah |
20:09:45 | Zevv | how is it that there is so much great stuff i never heard about. We really need a curated list of recommended nimbles |
20:12:17 | * | tdog quit (Quit: Leaving) |
20:12:25 | shashlick | Agreed, we need a third party equivalent of https://nim-lang.org/docs/lib.html |
20:12:43 | shashlick | Stuff that is tested in important packages is a good start |
20:12:57 | shashlick | Should include generated docs too |
20:12:59 | rayman22201 | Cheatfate's async package in particular could arguably go in the std lib. It's that useful! |
20:13:49 | rayman22201 | his code is a masterclass in async |
20:14:36 | shashlick | I really wonder what the criteria is for stuff to get pulled into the stdlib |
20:15:06 | shashlick | I haven't seen it happen in all the time I've tracked Nim |
20:16:51 | Zevv | Ive heard rumours that ideally everything not needed by the compiler itself should be moved out |
20:17:00 | rayman22201 | I'm being facetious. I think your idea of an "official important packages" is more inline with the Nim philosophy . |
20:19:51 | * | eterps quit (Ping timeout: 264 seconds) |
20:20:16 | * | lf-araujo joined #nim |
20:21:55 | rayman22201 | Araq had also brought up the idea of creating a special "batteries included" distribution of Nim, with important libraries included, kind of like a "stdlib ++". For those that want it. I kind of like that idea. |
20:24:05 | Zevv | that makes sense. The core devs should not have to bother with that, the effort can be made by others who just use the compiler and a bunch as libs as upstream |
20:24:17 | FromGitter | <awr1> @kayabaNerve nake kinda got repurposed into the nimscript build stuff |
20:25:30 | kungtotte | Wouldn't that distribution basically just be the core Nim distribution and a list of packages for Nimble to install? |
20:25:56 | kungtotte | Or was the idea that it would be a giant installer that packaged everything ready to go? |
20:26:17 | Zevv | the istaller could of course use nimble, but I guess the package should be presented as a whole |
20:26:23 | Zevv | docs, overview, tutorials |
20:26:30 | Zevv | nim starter pack |
20:26:40 | FromGitter | <zetashift> Random question but are concepts still slated for 1.0? |
20:27:12 | rayman22201 | I don't think too much thought was put into it, but "nim starter pack" is the right idea. |
20:27:53 | FromGitter | <awr1> the list of packages could be done itself as just a nimble package with them as dependencies |
20:27:59 | rayman22201 | @zetashift, I don't think so. Too many problems and Araq wanted to completely rework them. IIRC |
20:28:43 | FromGitter | <awr1> i like the way concepts work in theory |
20:29:25 | Calinou | that reminds me, I'm moving a package from docopt to cligen |
20:29:30 | Calinou | or at least trying to :) |
20:30:28 | rayman22201 | Too many people try to use concepts as interfaces, and they don't work well for that use case. |
20:31:28 | Calinou | as for "batteries included", to me, the Nim stdlib already feels quite large to me |
20:31:33 | Calinou | it supports many things other languages' stdlibs don't |
20:31:38 | clyybber | I concur |
20:31:39 | FromGitter | <awr1> thing is i've never personally had to use concepts for much of anything. most of what nim's type system does already seems to suffice for me. to me concepts would be useful in the sense of of programmers, for instance, requiring alternative implementations of things from the stdlib |
20:31:52 | FromGitter | <awr1> or well |
20:32:13 | rayman22201 | awr1: an interface is what you need for that, not a concept |
20:32:15 | FromGitter | <awr1> i'm rambling, but things like openArray |
20:32:21 | rayman22201 | openArray is an interface |
20:32:34 | rayman22201 | a special built in one, but still |
20:32:43 | FromGitter | <awr1> then what would a concept be useful for? |
20:33:04 | * | lf-araujo quit (Ping timeout: 258 seconds) |
20:33:15 | clyybber | rayman22201: How is a concept not an interface? I'm sorry I never really understood that :p |
20:33:45 | rayman22201 | exactly :-P that is why Araq pulled them from 1.0 |
20:34:10 | Calinou | style guide question: do you use 1 or 2 line breaks between procs? |
20:34:19 | Calinou | https://nim-lang.org/docs/nep1.html doesn't seem to mention anything about it |
20:34:28 | * | abm quit (Ping timeout: 272 seconds) |
20:35:07 | rayman22201 | concepts are half way between an affine or structural type and an interface, and they don't do either one very well. |
20:35:26 | FromGitter | <awr1> 1 line break |
20:35:28 | FromGitter | <awr1> https://github.com/nim-lang/Nim/blob/devel/koch.nim#L104 |
20:35:45 | FromGitter | <awr1> unless you're counting the one after the last character of the proc |
20:35:53 | FromGitter | <awr1> then it would be two |
20:35:58 | clyybber | Isn't the only difference between a concept and an interface, that the concept matches without explicitly telling the compiler? |
20:36:53 | clyybber | Or is an interface always checked at runtime, while a concept is checked at compiletime? |
20:37:00 | * | brakmic quit (Ping timeout: 272 seconds) |
20:37:11 | rayman22201 | Concept is compile time, interface is runtime |
20:37:29 | FromGitter | <zetashift> @rayman22201 thanks! Yeah I remember reading about that they needed a rework |
20:37:39 | FromGitter | <zetashift> I thought they were like traits |
20:37:57 | clyybber | rayman22201: And what does an interface effectively allow me to do, that a concept can't? |
20:38:25 | Calinou | @awr1 thanks :) |
20:39:19 | rayman22201 | interface implements a vtable, so you can have a function take two different types even if they are different sizes. |
20:39:26 | * | brakmic joined #nim |
20:39:45 | FromGitter | <awr1> if `concept` is compiletime then it seems to me that openArray should be a concept |
20:40:28 | FromGitter | <awr1> because the programmer at hand should ideally be able to extend openArray past array and seq |
20:41:25 | clyybber | rayman22201: Thanks |
20:41:58 | rayman22201 | The problem is `concepts` are not well defined. |
20:42:16 | Araq | easiest explanation: seq[Iface] is a heterogenous container |
20:42:20 | Araq | seq[Concept] isn't. |
20:42:42 | FromGitter | <mratsim> Iface? |
20:42:52 | rayman22201 | exactly. I was digging through the forum. There was a good example recently: https://forum.nim-lang.org/t/4965 |
20:43:06 | rayman22201 | Iface == Interface |
20:43:59 | FromGitter | <mratsim> yeah but I thought the point of concepts was to be more general than interfaces, and the point of VTable to be able to have heterogeneous containers of types that respect a concept |
20:44:11 | * | narimiran joined #nim |
20:44:49 | FromGitter | <awr1> this person sounds like they want a "thinner" variant |
20:44:50 | FromGitter | <mratsim> also @awr1 there is a feature request to start using Indexable and Iterable concepts in the standard library. If that is done, openarray could arguable also accept those. |
20:45:02 | Araq | argh... the way I implemented 'owned' doesn't allow for type conversions of 'owned' types |
20:45:10 | Araq | epic failure... |
20:45:20 | Araq | hmmm |
20:45:26 | FromGitter | <mratsim> oh and this one too: https://github.com/nim-lang/RFCs/issues/22 |
20:45:50 | Araq | openArray is really nice the way it is |
20:46:14 | Araq | we can extend it later to give us Rust-like borrowing for important cases |
20:46:14 | FromGitter | <ratiotile> Does Nim have static fields, or somewhere to store values in common with all instances of an object? |
20:46:19 | FromGitter | <mratsim> https://github.com/nim-lang/RFCs/issues/50 |
20:46:34 | FromGitter | <awr1> @ratiotile generic params |
20:46:51 | FromGitter | <awr1> wellll |
20:46:55 | FromGitter | <awr1> hm |
20:46:57 | FromGitter | <mratsim> fields on the super type are shared |
20:47:16 | Araq | there are no 'static fields', use a global instead |
20:47:26 | FromGitter | <mratsim> ah for instances, use an initializer proc or global |
20:47:39 | FromGitter | <ratiotile> I was hoping to avoid using prefixes and have the type as a namespace itself |
20:48:19 | Araq | globals now require prefixes? that's news to me |
20:48:51 | FromGitter | <ratiotile> I mean something like Foo.max_size=123 vs foo_max_size=123 |
20:48:56 | FromGitter | <awr1> yeah they all have to start with g_ now :P |
20:49:05 | FromGitter | <mratsim> :D |
20:49:16 | Araq | template maxSize(t: typedesc[Foo]) = 123 |
20:50:08 | FromGitter | <ratiotile> That works for constants |
20:51:05 | Araq | template maxSize(t: typedesc[Foo]) = foo_maxSize |
20:51:05 | FromGitter | <mratsim> proc `maxSize=`(t: typedesc[Foo], size: int) = myHiddenGlobal {.global.} = size |
20:51:13 | FromGitter | <mratsim> mine is better :p |
20:51:28 | Araq | is .global even in the spec? :P |
20:51:44 | FromGitter | <awr1> do templates have a default return type now? |
20:51:50 | FromGitter | <awr1> as `untyped`, assumedly |
20:51:54 | FromGitter | <mratsim> void? |
20:52:12 | FromGitter | <ratiotile> thanks |
20:52:37 | Araq | oh yeah, the default to 'void' and my examples should use 'untyped', mea culpa |
20:53:16 | FromGitter | <awr1> i have long kinda felt templates should default to `untyped` |
20:53:29 | FromGitter | <awr1> that way it would be easier to be able to alias things |
20:53:35 | FromGitter | <ratiotile> why not `auto`? |
20:54:06 | Araq | consistency with 'proc' |
20:54:19 | FromGitter | <awr1> `template xyz: untyped = abc` in the sense of `xyz` being an alias for `abc` could be shortened to `template xyz = abc` |
20:54:39 | Araq | awr1: I agree but now it's kinda too late for that |
20:54:41 | FromGitter | <awr1> yeah but don't macros have default return of `untyped`? |
20:54:52 | Araq | macros don't have a default |
20:55:27 | FromGitter | <mratsim> I'd like an `alias` keyword or something |
20:55:46 | FromGitter | <mratsim> well I can create an alias macro, and put it in sugar |
20:56:50 | Araq | anyway, consistency trumps everything, after all, why should 'template' NOT be exactly the same as 'proc'? I mean, sure, one has expansion semantics and the other one hasn't, 'return' in templates is really different from 'return' in 'proc', but hey! consistency! |
20:58:00 | FromGitter | <awr1> wait can you do `return` in templates with the keyword? |
20:58:04 | * | eterps joined #nim |
20:58:13 | FromGitter | <awr1> everytime i've tried it before with the keyword it doesn't work |
20:58:31 | Araq | template checkBounds() = |
20:58:38 | Araq | if a < 0 or a > 100: return |
20:58:46 | Araq | ^ why wouldn't it work? |
20:58:50 | FromGitter | <awr1> ohhhhhhhhh |
20:58:54 | FromGitter | <awr1> so that would be in the context of a proc |
20:59:00 | Araq | exactly |
20:59:04 | FromGitter | <awr1> gotcha |
20:59:59 | * | lf-araujo joined #nim |
21:00:13 | FromGitter | <ratiotile> Well, I should report that I tried my benchmark with the closure iterators, and in my initial implementation it's 3x slower than using `asyncdispatch`. So async is actually pretty efficient already. |
21:01:08 | Araq | given that async uses closure iterators that's actually quite impossible |
21:03:51 | shashlick | Slowly crawling out of vacation mode |
21:04:05 | FromGitter | <ratiotile> Yeah I expect an optimal version to be about the same. Currently there's some additional indirection going on to allow Tasks to call and wait for other Tasks. I'm working on smoothing it out |
21:04:09 | shashlick | Araq: do you have some time to review https://gist.github.com/genotrance/b835bd9318dadb7541c0db5d9fe45ec7 |
21:06:40 | Araq | please use UpperCased for types |
21:06:58 | Araq | you types need '=' and '=sink' and '=destroy' |
21:07:02 | Araq | *your |
21:08:02 | Araq | if x.len == 0: x.add "foobar" # racy |
21:08:33 | Araq | in other words, shared data structures need much more API design |
21:08:45 | Araq | and most APIs are broken by default |
21:10:57 | Araq | but it depends on your use case, of course |
21:11:36 | Araq | if all you want is a 'shared memory' string, you don't need the locks |
21:13:20 | Calinou | how can I read multiple positional arguments efficiently using cligen? Having to use args: seq[string] looks suboptimal/less safe to me |
21:13:23 | * | lf-araujo quit (Ping timeout: 245 seconds) |
21:13:27 | Calinou | (with different types, that is) |
21:13:35 | Calinou | the first one is a Color, the second one is a float, and I don't expect more than 2 |
21:13:53 | Calinou | I could do validation myself still but it's less fun :P |
21:14:01 | Araq | if you need a 'shared' string where multiple threads can append to, 'proc len' should assert that no other thread is accessing the string anymore |
21:14:48 | shashlick | Thanks Araq - how's the seq looking so far? |
21:15:15 | shashlick | Needs lots of optimization but should allow me complex objects |
21:15:24 | shashlick | More |
21:15:38 | * | narimiran quit (Ping timeout: 272 seconds) |
21:15:55 | shashlick | That's why I was using the locks |
21:16:06 | Calinou | (also, I can't seem to convert a string extracted from a sequence into a float) |
21:16:22 | * | Vladar quit (Remote host closed the connection) |
21:17:13 | * | eterps quit (Ping timeout: 250 seconds) |
21:18:37 | FromGitter | <kayabaNerve> @awr1 I know. Difference is Nimscript is Nimscript and Nim is Nim. |
21:19:20 | shashlick | What do you mean when you say "need more api design" |
21:19:42 | shashlick | I'm attempting to have similar capabilites as standard strings or seqs |
21:19:58 | shashlick | Though the price will be heavy due to copying |
21:20:13 | Araq | shashlick, seq looks too complex, see tcustomseqs.nim for an implementation |
21:20:43 | FromGitter | <awr1> the only reason i've ever needed nake in lieu of nimscript was for a CPU extension detection thing |
21:21:25 | Araq | and the single global lock man ... remove it, it's not necessary |
21:21:54 | Araq | it's much better and easier to push the locking to the clients of your data structure |
21:31:54 | shashlick | The single global lock is ugly, could make one per instance but wondering if there are lock limits |
21:32:22 | shashlick | I agree it would be more sensible to defer that to the client |
21:32:51 | shashlick | But for the lazy who want shared without too much effort |
21:33:55 | * | sagax joined #nim |
21:38:50 | FromGitter | <ratiotile> in other words, a lock-free api |
21:46:43 | Calinou | nevermind for my cligen problem, I redesigned my CLI options and it's now more user-friendly and easier to code |
21:47:04 | Calinou | most importantly, it allows performing multiple operations at once: https://i.imgur.com/ZruNBv2.png |
21:54:25 | * | Sencatsu quit (Quit: WeeChat 2.5) |
21:55:49 | clyybber | Does anyone else experience test case failures on devel with asyncfutures? |
21:59:11 | Araq | CIs are green, so no |
21:59:34 | clyybber | Hmm, so I fucked up somewhere; great \o/ |
21:59:36 | Araq | but these tests are kinda fragile so don't worry |
21:59:56 | clyybber | Cannot instantiate Future does sound really bad tho :p |
22:02:50 | clyybber | Araq: https://github.com/nim-lang/Nim/blob/devel/compiler/injectdestructors.nim#L504 can it really? |
22:03:47 | clyybber | I'm currently dealing with a sigsegv resulting from passing a 'static const NimStringV2' to a sink parameter |
22:03:58 | * | lf-araujo joined #nim |
22:04:53 | clyybber | Or rather: Where does the string implementation handle that? |
22:05:33 | clyybber | Because I think I might need to patch it to handle being passed to a sink parameter too, unless you want me to generate a temporary copy instead, as we do for the seq case. |
22:10:25 | lf-araujo | Hi all! Look, Nim support added to cheat.sh: |
22:10:29 | lf-araujo | https://github.com/chubin/cheat.sh/issues/112 |
22:11:53 | lf-araujo | Could you guys check and chime in in the above thread? Many thanks... I will test it too later this week... |
22:12:42 | FromGitter | <ratiotile> I rewrote my benchmark to only use if statement state machine, and it's only 2x slower than C++. That's pretty good. It's also 140x faster than my prior await implementation. I'll have to revisit that. One issue might be using array of arrays instead of a single array. |
22:13:58 | FromGitter | <ratiotile> 1) with all ref objects, not optimized |
22:17:32 | * | lf-araujo quit (Ping timeout: 245 seconds) |
22:18:49 | Araq | template frees(s) = |
22:18:49 | Araq | if not isLiteral(s): |
22:18:49 | Araq | s.p.allocator.dealloc(s.p.allocator, s.p, contentSize(s.p.cap)) |
22:18:57 | Araq | template isLiteral(s): bool = s.p == nil or s.p.allocator == nil |
22:19:15 | Araq | ^ string literals have no allocator and are never freed not mutated |
22:19:19 | Araq | *nor |
22:19:32 | Araq | proc prepareAdd(s: var NimStringV2; addlen: int) {.compilerRtl.} = |
22:19:32 | Araq | if isLiteral(s) and addlen > 0: |
22:19:32 | Araq | let oldP = s.p |
22:19:32 | Araq | # can't mutate a literal, so we need a fresh copy here: |
22:19:32 | Araq | let allocator = getLocalAllocator() |
22:19:37 | Araq | etc |
22:20:07 | Araq | but maybe a nimMoveStrV2 is required indeed ;-) |
22:20:08 | * | brakmic quit () |
22:21:34 | * | stefanos82 joined #nim |
22:21:47 | Calinou | how do I set up my Nim file so that "nim doc" generates documentation correctly? |
22:22:28 | Calinou | some of my procs already have ## comments |
22:22:46 | Calinou | or I suppose it only generates docs for exported procs? |
22:25:43 | * | sagax quit (Read error: Connection reset by peer) |
22:25:46 | * | solitudesf quit (Ping timeout: 244 seconds) |
22:40:11 | Araq | only for exported procs, yes |
22:44:43 | * | Senketsu joined #nim |
22:54:45 | clyybber | Araq: It looks like a nimMoveStrV2 is required indeed :) |
22:54:57 | clyybber | according to gdb |
23:09:44 | * | dwdv quit (Quit: quit) |
23:21:25 | * | absolutejam1 quit (Ping timeout: 246 seconds) |
23:22:51 | * | sealmove joined #nim |
23:25:45 | clyybber | gn8 |
23:25:46 | * | clyybber quit (Quit: WeeChat 2.5) |
23:28:13 | * | rockcavera joined #nim |
23:43:47 | * | cybj quit (Quit: WeeChat 2.4) |