00:00:01 | rockcavera | Windows works normally |
00:02:32 | dom96 | This isn't a Nim issue, it's a limitation imposed by Linux |
00:02:56 | dom96 | You need to change the max number of FDs your Linux system allows |
00:04:15 | rockcavera | thanks |
00:04:16 | rockcavera | ;) |
00:05:19 | * | rnrwashere joined #nim |
00:07:08 | * | deech_ quit (Ping timeout: 245 seconds) |
00:07:28 | * | deech quit (Ping timeout: 272 seconds) |
00:07:33 | * | envoyt quit (Ping timeout: 245 seconds) |
00:09:36 | * | envoyt joined #nim |
00:10:04 | * | rnrwashere quit (Ping timeout: 252 seconds) |
00:11:25 | * | deech joined #nim |
00:12:57 | * | deech_ joined #nim |
00:14:16 | * | deech_ quit (Read error: Connection reset by peer) |
00:15:45 | * | deech_ joined #nim |
00:16:49 | * | deech_ quit (Read error: Connection reset by peer) |
00:17:42 | * | deech_ joined #nim |
00:17:49 | * | deech_ quit (Read error: Connection reset by peer) |
00:20:24 | * | deech_ joined #nim |
00:29:24 | * | Jesin quit (Quit: Leaving) |
00:33:41 | * | Jesin joined #nim |
00:36:22 | * | rnrwashere joined #nim |
00:41:03 | * | rnrwashere quit (Ping timeout: 252 seconds) |
00:41:41 | * | Tyresc quit (Quit: WeeChat 2.5-dev) |
00:53:38 | * | uptime quit (Quit: It's been a pleasure working with some of you, and I will not forget those of you soon. But remember, while today it is me, we all shall fall. In other words, I'm quitting.) |
00:56:19 | * | rnrwashere joined #nim |
00:59:29 | * | ng0 quit (Quit: Alexa, when is the end of world?) |
01:00:48 | * | rnrwashere quit (Ping timeout: 248 seconds) |
01:03:56 | * | uptime joined #nim |
01:10:12 | FromDiscord_ | <nothing to no one> I just want to thank everyone here. This is the nicest, most welcoming programming community I've ever been in. You guys are super helpful and awesome, thanks a bunch :) |
01:12:32 | * | deech_ quit (Ping timeout: 248 seconds) |
01:12:43 | shashlick | 👍 |
01:13:16 | FromDiscord_ | <Avatarfighter> ngl I'm in the same boat, this community is what really got me into nim |
01:19:02 | FromDiscord_ | <nothing to no one> Definitely. "There are bad apples in every community", but I've never met anyone into Nim that was anything less than incredibly polite and helpful |
01:20:08 | FromDiscord_ | <Avatarfighter> ^ |
01:20:41 | * | NimBot joined #nim |
01:20:49 | * | rockcavera quit (Remote host closed the connection) |
01:22:23 | * | Hexeratops left #nim ("Goodbye for now!") |
01:26:13 | * | dddddd quit (Read error: Connection reset by peer) |
01:41:31 | * | rockcavera joined #nim |
01:43:06 | deech | What does this {.partial.} pragma do? |
01:46:09 | * | rockcavera quit (Remote host closed the connection) |
01:52:02 | * | rockcavera joined #nim |
01:52:30 | * | envoyt quit (Quit: Bye) |
01:55:16 | * | arecaceae quit (Remote host closed the connection) |
01:55:36 | * | arecaceae joined #nim |
02:00:42 | * | uptime quit (Quit: Downsizing? I have no problem with that. I have been recommending downsizing since I first got here. I even brought it up in my interview. I say, bring it on.) |
02:10:09 | * | uptime joined #nim |
02:21:09 | * | deech quit (Ping timeout: 244 seconds) |
02:33:54 | * | deech joined #nim |
02:38:21 | * | rayman22201 quit (Quit: Connection closed for inactivity) |
02:42:08 | * | deech quit (Ping timeout: 245 seconds) |
03:16:49 | * | chemist69 quit (Ping timeout: 250 seconds) |
03:18:59 | * | chemist69 joined #nim |
03:41:03 | * | vlad1777d quit (Ping timeout: 268 seconds) |
03:55:12 | FromGitter | <Varriount> deech: Where did you see it? |
04:14:14 | * | arecaceae quit (Remote host closed the connection) |
04:14:33 | * | arecaceae joined #nim |
04:28:12 | * | surma quit (Ping timeout: 252 seconds) |
04:31:43 | * | r4vi quit (Ping timeout: 276 seconds) |
04:32:46 | * | rnrwashere joined #nim |
04:33:50 | * | rnrwashere quit (Read error: Connection reset by peer) |
04:34:36 | * | rnrwashere joined #nim |
04:36:57 | * | vlad1777d joined #nim |
04:54:38 | * | r4vi joined #nim |
04:56:51 | * | surma joined #nim |
05:01:44 | * | rnrwashere quit (Remote host closed the connection) |
05:02:16 | * | rnrwashere joined #nim |
05:03:07 | * | rnrwashere quit (Remote host closed the connection) |
05:03:20 | * | hoijui joined #nim |
05:03:20 | * | rnrwashere joined #nim |
05:19:19 | * | nsf joined #nim |
05:23:45 | * | Jesin quit (Quit: Leaving) |
05:26:23 | * | Jesin joined #nim |
05:43:57 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
05:44:27 | * | laaron joined #nim |
05:48:58 | * | laaron quit (Remote host closed the connection) |
05:49:40 | * | laaron joined #nim |
06:00:47 | * | solitudesf joined #nim |
06:11:53 | * | rnrwashere quit (Remote host closed the connection) |
06:12:30 | * | rnrwashere joined #nim |
06:15:52 | * | hoijui quit (Quit: Leaving) |
06:16:00 | * | hoijui joined #nim |
06:17:00 | * | rnrwashere quit (Ping timeout: 258 seconds) |
06:32:01 | * | narimiran joined #nim |
06:39:56 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
06:40:30 | * | laaron joined #nim |
06:53:20 | * | rayman22201 joined #nim |
07:00:00 | * | gmpreussner quit (Quit: kthxbye) |
07:04:36 | * | gmpreussner joined #nim |
07:24:18 | * | laaron quit (Remote host closed the connection) |
07:26:06 | * | laaron joined #nim |
07:29:01 | * | hoijui quit (Ping timeout: 250 seconds) |
07:38:42 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
07:39:29 | * | laaron joined #nim |
07:40:13 | * | laaron quit (Client Quit) |
07:43:43 | * | laaron joined #nim |
07:46:21 | * | laaron quit (Client Quit) |
07:46:40 | * | laaron joined #nim |
07:57:18 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
07:57:40 | * | laaron joined #nim |
08:00:07 | * | narimiran quit (Ping timeout: 258 seconds) |
08:05:01 | * | hoijui joined #nim |
08:23:47 | * | vlad1777d quit (Ping timeout: 252 seconds) |
08:29:21 | * | leorize quit (Ping timeout: 256 seconds) |
08:29:22 | * | vlad1777d joined #nim |
08:34:03 | * | vlad1777d quit (Ping timeout: 252 seconds) |
08:35:42 | * | hoijui quit (Ping timeout: 252 seconds) |
08:36:45 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
08:37:07 | * | laaron joined #nim |
08:37:56 | * | solitudesf quit (Ping timeout: 272 seconds) |
09:02:13 | * | rayman22201 quit (Quit: Connection closed for inactivity) |
09:13:38 | * | neceve joined #nim |
09:22:06 | * | dddddd joined #nim |
09:23:23 | * | neceve quit (Ping timeout: 245 seconds) |
09:24:02 | * | leorize joined #nim |
09:24:45 | * | neceve joined #nim |
09:58:05 | * | neceve quit (Read error: Connection reset by peer) |
10:00:24 | * | deech_ joined #nim |
10:03:40 | * | tiorock joined #nim |
10:03:40 | * | tiorock quit (Changing host) |
10:03:40 | * | tiorock joined #nim |
10:03:40 | * | rockcavera quit (Killed (barjavel.freenode.net (Nickname regained by services))) |
10:03:40 | * | tiorock is now known as rockcavera |
10:18:21 | * | stefanos82 joined #nim |
10:33:13 | * | sealmove joined #nim |
10:34:39 | * | deech_ quit (Ping timeout: 248 seconds) |
10:37:08 | * | matt-m joined #nim |
10:37:12 | * | Vladar joined #nim |
10:38:58 | * | matt-m quit (Remote host closed the connection) |
10:41:46 | * | matt-m joined #nim |
10:50:41 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
10:51:02 | * | laaron joined #nim |
10:51:10 | * | al_ joined #nim |
10:52:28 | livcd | shashlick: |
10:56:15 | * | envoyt joined #nim |
10:58:38 | * | deech_ joined #nim |
11:03:37 | * | elrood joined #nim |
11:20:28 | * | envoyt quit (Ping timeout: 245 seconds) |
11:22:18 | * | neceve joined #nim |
11:23:59 | * | envoyt joined #nim |
11:24:47 | * | matt-m quit (Ping timeout: 248 seconds) |
11:33:23 | * | matt-m joined #nim |
11:37:51 | * | deech_ quit (Ping timeout: 258 seconds) |
11:40:30 | * | envoyt quit (Read error: Connection reset by peer) |
11:50:12 | * | deech_ joined #nim |
11:56:17 | * | solitudesf joined #nim |
12:41:40 | FromDiscord_ | <nothing to no one> say i have two files: `main_library.nim` and `helper_functions.nim`. I'd like to expose some functions in `helper_functions.nim` so my `main_library.nim` can access them, but I don't want anybody else to be able to import them. what's the best way to accomplish that? |
12:47:11 | Araq | use the export marker and write a doc comment to say ## internal API. |
12:49:16 | Araq | it might surprise you but nobody ever quantified the costs vs benefits of this "Information hiding" principle, so relax and focus on your actual problems |
12:53:08 | Araq | IME bugs are very rarely of the form "oh damn, I shouldn't have called this insufficiently hidden proc". |
12:54:30 | Zevv | although I've heard rumours of people shouting "Where the hell does this symbol come from, and why the hell is it cluttering my namespace" |
12:57:27 | Araq | https://github.com/nim-lang/Nim/wiki/Destructors,-2nd-edition anyway, a new spec arrived |
12:58:25 | Zevv | weren't you supposed to be on holidays for a few days? |
12:58:43 | Zevv | or is this the output of your train ride? |
12:59:52 | Araq | it's what I did in the train. |
13:00:13 | Zevv | sweet |
13:00:51 | * | rnrwashere joined #nim |
13:02:02 | Araq | I also wanted to implement it but the train went faster than expected |
13:02:13 | Zevv | haha |
13:02:33 | Zevv | I bet the community can scrape together another ticket for you if that is what it takes |
13:05:01 | * | rnrwashere quit (Ping timeout: 252 seconds) |
13:06:36 | * | lritter joined #nim |
13:08:33 | deech_ | What does the {.partial.} pragma do? https://github.com/nim-lang/Nim/blob/devel/tests/fields/tfields.nim#L83-L88 |
13:10:24 | Araq | it means "fill it in the proc body via the var obj.field syntax" |
13:11:01 | Araq | it's undocumented, the beginnings of how to write closures with fewer builtin language features |
13:13:26 | deech_ | Araq, so the fields names are completely dynamic? Is it possible to know what fields an object supports statically? |
13:13:49 | Araq | no they are not dynamic at all |
13:14:57 | Araq | they are filled in later, but not at runtime |
13:15:17 | Araq | the feature works in combination with the also undocumented {.liftLocals: t.} |
13:15:26 | Araq | transformation. |
13:16:05 | deech_ | Araq, so in the example linked if there was another function below `my` that added the 'bar' field does that mean 'Foo' now has 'foo','other' and 'bar' or just 'bar' within the scope of that function? |
13:16:26 | Araq | foo, other and bar. |
13:17:52 | deech_ | So fields are statically added in the order in which the compiler sees the procs? So presumably if 'Foo.foo' was redefined to a string later it would be a type error? |
13:18:17 | Araq | it should be, but please ignore that it exists, it's not production ready, it's a sketch how to do closures and closure iterators without baking the memory managment regime into the design |
13:19:16 | Araq | actually, there should be no redefinition error the language scoping rules are still active |
13:19:25 | Araq | you would get 2 different foo fields |
13:19:27 | deech_ | It's just that it's difficult to know what to do in the following case 'let f.foo {.compileTime.} = ...' |
13:19:53 | deech_ | I'm working on ironing out issues in let/var compile time bindings. |
13:20:05 | Araq | nice. |
13:20:46 | Araq | well 'let f.foo {.compileTime.} = ...' is the same as 'let f {.compileTime.}' |
13:21:03 | Araq | maybe. |
13:22:07 | deech_ | Can we just make that illegal? I can't think of a compile time case 'let f.foo = ...' that couldn't go in a static block instead, that's if partial objects are even supported by the vm. |
13:26:07 | Araq | well the syntax is one thing, the other is that this is used internally for closures |
13:26:16 | Araq | consider this: |
13:26:21 | Araq | proc outer = |
13:26:32 | Araq | let x {.compileTime.} = ... |
13:26:40 | Araq | proc inner = use(x) |
13:26:56 | * | narimiran joined #nim |
13:27:09 | Araq | you have to ensure that 'inner' can use 'x' without being turned into a .closure |
13:28:00 | * | lritter quit (Ping timeout: 272 seconds) |
13:28:19 | deech_ | proc outer = |
13:28:27 | deech_ | let x {.compileTime.} = ... |
13:28:37 | deech_ | const X = x |
13:28:50 | deech_ | proc inner = use(X) |
13:29:36 | * | apodo joined #nim |
13:29:43 | deech_ | The way I'm working out the issues all runtime access to compile time variables has to mediated by 'const'. |
13:29:46 | dom96 | Araq, do the new object variant changes result in a runtime error? |
13:30:41 | Araq | dom96: yup |
13:30:57 | dom96 | why? This will break a lot of programs at runtime |
13:32:48 | deech_ | Araq, also your example is currently pretty brittle in 'dev', there's lots of illegal storage errors that happen if you assign to anything more complex than an 'int' or something like that ... |
13:32:50 | * | lritter joined #nim |
13:33:08 | Araq | deech_: :-) |
13:33:54 | Araq | dom96: I didn't find a better solution and it's an old loophole in Nim's memory safety that must be closed for v1 |
13:34:08 | deech_ | I've fixed a lot of them but corner cases like partial objects keep popping up. |
13:34:27 | dom96 | Araq, why not disallow assignments to 'kind' etc? |
13:35:00 | Araq | dom96: that would break even more code, but it's nice for a 'linter' |
13:35:57 | dom96 | Why would it? From what I see the code breaks as soon as an assignment happens, when is it allowed? |
13:36:32 | Araq | it is allowed when the assignments do not trigger an "object branch switch" |
13:37:39 | dom96 | so disallow only assignments that cause a object branch switch? |
13:37:48 | Araq | exactly. |
13:37:49 | * | nsf quit (Quit: WeeChat 2.4) |
13:38:02 | dom96 | can't you determine this statically and error? |
13:38:11 | Araq | nope. |
13:38:52 | Araq | I considered a static analysis for a subset but it makes the spec terrible |
13:40:17 | Araq | the good solution forward here is to disallow these assignments altogether |
13:40:24 | dom96 | Could we at least have a "transition" state for fields that change the object branch? |
13:40:36 | dom96 | So that doing: result.kind = Foo; isn't a problem? |
13:40:48 | * | hoijui joined #nim |
13:41:01 | Araq | what do you mean by "transition state"? |
13:42:35 | Araq | you can compile your code with -d:nimv019 for a transition period, but I doubt that's what you mean |
13:43:02 | dom96 | I mean that you're allowed to switch the branch as long as it wasn't set before |
13:43:21 | dom96 | I guess by default it gets the "default" state |
13:43:42 | dom96 | a "transition" state would allow us to at least set it once |
13:43:54 | dom96 | but meh, I guess that would be too complex |
13:44:03 | Araq | that would change the object layouts in memory and would have been more work and more complexity |
13:45:09 | Araq | and in the end, 'case objects' didn't age well, I'd rather have ML-styled sum types nowadays |
13:45:59 | Araq | and syntax aside, in ML/Rust/Haskell you cannot assign the discriminator field at all |
13:46:13 | Araq | so that's what we should do IMO. |
13:47:52 | * | vlad1777d joined #nim |
13:49:44 | lqdev[m] | is there any serial library for Nim? |
13:51:49 | * | SenasOzys joined #nim |
13:52:15 | Zevv | lqdev[m]: yes, and its called serial |
13:52:37 | Zevv | lmnstfy: Let Me "nimble search" That For You :) |
13:52:47 | lqdev[m] | Zevv: nice |
13:57:49 | * | vlad1777d quit (Ping timeout: 252 seconds) |
14:04:06 | * | lqdev[m] sent a long message: < https://matrix.org/_matrix/media/v1/download/matrix.org/zVvHuangMbwtvacNQPEIMMxB > |
14:04:10 | lqdev[m] | not nice |
14:09:46 | * | SenasOzys quit (Read error: Connection reset by peer) |
14:16:35 | * | rnrwashere joined #nim |
14:24:13 | * | al_ quit (Quit: al_) |
14:40:21 | * | solitudesf quit (Ping timeout: 252 seconds) |
14:44:44 | * | sealmove quit (Quit: WeeChat 2.4) |
14:53:02 | deech_ | Which function can I use in the compiler to generate a temporary symbol? |
14:55:15 | * | rnrwashere quit (Remote host closed the connection) |
14:56:35 | zestyr | maybe this https://nim-lang.org/docs/macros.html#genSym%2CNimSymKind%2Cstring |
14:57:34 | * | rnrwashere joined #nim |
14:59:07 | * | PMunch joined #nim |
15:00:41 | leorize | Araq: I think windows CI should use the mingw @ nim-lang.org, no? |
15:01:22 | Araq | true |
15:03:16 | leorize | narimiran: the boxes for featured projects on nim-lang.org doesn't have any gaps between them |
15:04:04 | leorize | and shouldn't css grid be used instead of flex here? |
15:04:22 | leorize | nvm that last statement :P |
15:05:42 | FromDiscord_ | <Stuffe> Maybe a silly question, but if I declare variables in a function using "let", will the memory be allocated on each function call or only once? |
15:06:17 | leorize | if it's a stack-based var, then it's definitely created every function call |
15:06:38 | leorize | well but the stack is insanely fast anw so you shouldn't have to care |
15:06:54 | * | smitop joined #nim |
15:07:22 | smitop | Why is there a 0.19.4 and 0.19.6, but no 0.19.5? |
15:07:35 | leorize | 0.19.5 is the dev version |
15:07:38 | FromDiscord_ | <Stuffe> its a table[sting: int], its really long though |
15:08:02 | leorize | odd versions are development ones, stable ones are even |
15:08:58 | leorize | @Stuffe: well the stack works by moving the stack pointer (afaik), which is fast, so you don't have to care about that |
15:08:58 | deech_ | zestyr, That looks promising, I'd like to get the generated symbol as a string, do you know how to do that? |
15:09:19 | leorize | you can't |
15:12:54 | * | rnrwashere quit (Remote host closed the connection) |
15:25:49 | * | deech_ quit (Ping timeout: 252 seconds) |
15:34:04 | Araq | deech: search for 'proc getTemp' or something |
15:43:02 | * | solitudesf joined #nim |
15:43:33 | FromDiscord_ | <Avatarfighter> Would anyone happened to know who is the creator of the nim discord server? |
15:44:03 | * | rnrwashere joined #nim |
15:48:33 | * | rnrwashere quit (Ping timeout: 258 seconds) |
15:51:47 | * | deech_ joined #nim |
16:07:01 | * | laaron quit (Remote host closed the connection) |
16:07:51 | * | laaron joined #nim |
16:16:53 | * | Vladar quit (Remote host closed the connection) |
16:17:04 | * | rnrwashere joined #nim |
16:19:17 | * | ng0 joined #nim |
16:33:39 | * | neceve quit (Ping timeout: 244 seconds) |
16:42:14 | skrylar[m] | @zacharycarter i have heard great things of vuejs as well |
16:45:02 | Araq | vuejs is terrible. |
16:49:10 | Araq | maybe it's good if you think HTML+CSS+JS is a good way to develop web apps, but I know HTML is bad, CSS is worse and JS a cancer, so no thanks. |
16:50:43 | Araq | disclaimer: I did use vue.js extensively, got paid for it and would love to erase my memories about it. |
16:55:13 | * | nsf joined #nim |
16:57:56 | * | PMunch quit (Remote host closed the connection) |
17:03:48 | FromDiscord_ | <exelotl> I don't get it, the web *is* HTML+CSS+JS and those are the three languages that everyone knows |
17:04:40 | Zevv | but that doesn't mean they're any good |
17:06:56 | leorize | anyone have windows here? |
17:07:00 | Araq | exelotl: that's why you compile real programs to this crapfest |
17:07:07 | Araq | you don't use it directly. |
17:11:21 | shashlick | @livcd what's up |
17:12:17 | leorize | anyone have a working windows console with mingw that I can borrow? |
17:13:31 | * | rnrwashere quit (Remote host closed the connection) |
17:13:35 | skrylar[m] | i think what he's trying to say is vuejs is fine unless you're still wishing to write BASIC on a C64. 8) |
17:14:07 | shashlick | @leorize I can test for you |
17:14:44 | skrylar[m] | (actually i'm not a super fan of the html/css/js stack but i'm still a retained mode derp so my hate for it is less) |
17:14:55 | leorize | shashlick: can you give me the output for `uname`? |
17:14:56 | shashlick | @Araq - failing at runtime for the object variant case is very pythonish |
17:15:02 | shashlick | Hate that it fails only on use |
17:15:12 | shashlick | But sounds like it is too hard to detect at compile time |
17:15:13 | FromDiscord_ | <exelotl> Araq: sure I would probably do that if I was starting a new personal project, but I don't think people should be expected to do that. I think Vue leverages what people already know in a particularly clean and intuitive way |
17:15:53 | Araq | shashlick: will give you a better switch |
17:16:36 | * | smitop quit (Quit: Connection closed for inactivity) |
17:17:33 | shashlick | I haven't used object variants anywhere yet so wasn't impacted but nimble was |
17:17:43 | Araq | I noticed |
17:18:25 | shashlick | @leorize - check out the choosenim init.sh script |
17:18:34 | shashlick | but I get MSYS_NT-10.0-WOW |
17:19:06 | shashlick | in mingw console I get MINGW64_NT-10.0-WOW |
17:19:28 | shashlick | in gitbash i get MINGW64_NT-10.0 |
17:20:16 | leorize | alright, so capturing mingw* and msys* is the way to go |
17:21:03 | leorize | I'm gonna make the csources makefile aware of windows |
17:21:16 | leorize | the batch file took like 1m just to done building csources |
17:21:55 | Araq | exelotl: well I cannot argue against success but vue.js's design has inherent problems. |
17:22:44 | Araq | like for instance, not actually being able to work... https://vuejs.org/v2/guide/reactivity.html#Change-Detection-Caveats |
17:23:11 | Araq | this one affect me all the time. |
17:23:15 | Araq | *affected |
17:23:51 | leorize | Araq: would you like testing MSVC on CI? |
17:24:07 | shashlick | @leorize what you working on |
17:24:16 | FromDiscord_ | <Stuffe> Why doesn't nim compile to webassembly instead of javascript? |
17:24:21 | leorize | shashlick: azure pipelines |
17:24:38 | skrylar[m] | eeh. how does one fail on object variants at compile time |
17:24:51 | skrylar[m] | pascal also fails at runtime if i remember |
17:25:14 | skrylar[m] | i mean sure if you have haske/rust algebra types you could carry the type field statically |
17:25:59 | leorize | Stuffe: webasm doesn't exist when the js backend was around |
17:26:23 | skrylar[m] | is webasm a good idea for regular logic tho |
17:26:29 | leorize | also iirc DOM operations from webasm is slow |
17:26:50 | leorize | I heard ppl are gonna make servers with webassembly |
17:27:02 | FromDiscord_ | <Stuffe> I dont think you can do DOM operations directly yet, you would have to wrap it in JS until they get around to it |
17:27:04 | * | skrylar[m] slits wrists |
17:27:38 | * | xet7 joined #nim |
17:27:42 | FromDiscord_ | <Stuffe> But it just seems easier and less bug prone to compile to webassembly than javascript |
17:27:43 | skrylar[m] | anyhoo. the bmessage stuff is a thing. still have to name that framework and then do the plumbing for the non-threaded version.. but eh. |
17:35:48 | * | ng0 quit (Quit: Alexa, when is the end of world?) |
17:38:05 | skrylar[m] | at least once the plumbing is done the actual gui code can start |
17:43:27 | * | narimiran quit (Ping timeout: 248 seconds) |
17:44:16 | skrylar[m] | somewhat strange is that where VCL has canvas objects that are attached to forms and whatnot, [BView](https://www.haiku-os.org/docs/api/classBView.html)s *are* the canvases and then buttons or whatnot are just built off of those |
17:44:37 | * | rnrwashere joined #nim |
17:49:01 | * | rnrwashere quit (Ping timeout: 246 seconds) |
17:58:48 | * | xet7 quit (Remote host closed the connection) |
18:00:00 | lqdev[m] | omg `-d:release` is so amazing, my frame time was about 5ms and it dropped about 10× when I compiled with `-d:release` |
18:02:15 | * | xet7 joined #nim |
18:02:43 | lqdev[m] | ah wait, it's `--opt:speed` that does the trick |
18:03:07 | lqdev[m] | I can debug with quick startup times and stack traces! |
18:03:56 | leorize | or just do -d:release --stacktrace:on :p |
18:04:30 | lqdev[m] | does `--opt:speed` disable all checks? |
18:04:35 | leorize | nope |
18:04:53 | lqdev[m] | I know `-d:release` does |
18:05:07 | leorize | https://github.com/nim-lang/Nim/blob/devel/config/nim.cfg#L55 |
18:05:25 | leorize | --opt:speed only instruct the C compiler to optimize |
18:05:59 | Araq | it should always be active IMO. |
18:06:08 | lqdev[m] | my game is a tiny bit slower on just `--opt:speed` (1ms frame time) than on `-d:release`, but it's blazing fast nonetheless |
18:06:14 | Araq | we need to change these setings |
18:06:29 | lqdev[m] | launching took about a second with the default config, now it's instant |
18:06:55 | FromDiscord_ | <DeltaPHC> Yeah, compilers are quite smart at optimization |
18:06:55 | lqdev[m] | I'm setting `--opt:speed` as the default in my `run_debug` task, as I value fasr prototyping. |
18:07:09 | Araq | at least -O1 should be our default |
18:07:14 | lqdev[m] | fast* |
18:07:25 | lqdev[m] | is it -O0 now? |
18:07:34 | FromDiscord_ | <DeltaPHC> The main worry is optimizations getting in the way of debugging |
18:07:38 | leorize | or just go for -O2 and use -Og when --debugger:native is passed |
18:07:43 | Zevv | Araq: even when debugging? |
18:07:59 | Araq | sure, even for debugging. |
18:08:00 | Zevv | ^ |
18:08:03 | Zevv | why |
18:08:22 | FromDiscord_ | <Marrakezh> Hi |
18:08:27 | Zevv | hi |
18:08:31 | lqdev[m] | hello! |
18:08:32 | Araq | because it's the compiler's job to not lose line informations when optimizing |
18:08:50 | leorize | Araq: -Og for debugging please, or else inlining will occur |
18:09:03 | Zevv | some linese might not exist, and I'm here waiting for my breakpoint |
18:09:10 | Araq | the optimizations that Nim does itself cannot even be turned off |
18:09:34 | Zevv | Og as leorize says, thhats why it exists |
18:09:54 | leorize | also on clang -O2 try to vectorize loops |
18:10:00 | leorize | not really nice for debugging |
18:10:19 | Araq | what's the problem with inlining? if inlining loses debug info, file a bug report |
18:11:09 | leorize | just that you can't break on a function when you should be able to |
18:11:20 | Araq | I mean ok, being practical and all that we can make -Og the default |
18:11:26 | Zevv | ghehe |
18:11:44 | Zevv | I was already typing ramblings |
18:11:52 | * | xet7 quit (Quit: Leaving) |
18:12:09 | Araq | but please note that you're effectively describing compiler/debugger bugs to me |
18:12:21 | leorize | 22m for a osx build on azure pipelines |
18:12:24 | leorize | pretty impressive |
18:12:30 | FromDiscord_ | <Marrakezh> Whats is the bot doing |
18:12:48 | Zevv | leorize: who pays for these CI's or is azure for free? |
18:13:00 | leorize | !eval echo "Hi! @Marrakezh" |
18:13:01 | FromDiscord_ | <Avatarfighter> The bot is relaying messages from discord to the IRC chats and the IRC chats to discord @Marrakezh |
18:13:03 | NimBot | Hi! @Marrakezh |
18:13:17 | FromDiscord_ | <Marrakezh> ohhhh |
18:13:17 | leorize | oh, thought they were talking about nimbot :p |
18:13:19 | FromDiscord_ | <Avatarfighter> It also has eval which is pretty awesome! |
18:13:27 | leorize | Zevv: azure is free |
18:13:40 | FromDiscord_ | <Avatarfighter> Its always good to show NimBot, it's awesome, leorize |
18:13:41 | lqdev[m] | by the way, why doesn't choosenim cache the Nim git repo/C sources, but rather re-downloads everything every time you do `nim update devel`? |
18:13:58 | Zevv | leorize: ah sweet |
18:14:15 | * | xet7 joined #nim |
18:14:20 | leorize | also 25m for a windows packages testing build |
18:14:30 | FromDiscord_ | <Marrakezh> So, Iam trying use Nim to gamedev, anyone recommend any framework? |
18:14:59 | Araq | the JVM inlines aggressively and doesn't produce misleading stack traces. maybe one day gcc+gdb can replicate this feature in the upcoming decades |
18:15:06 | Zevv | how low do you want to go? nim_sld2 is ok |
18:15:23 | FromDiscord_ | <Marrakezh> I just want make some 2d games |
18:15:42 | leorize | godot-nim |
18:15:50 | leorize | never tried, but I heard that godot is a decent engine |
18:16:05 | FromDiscord_ | <Marrakezh> I go see it |
18:16:26 | skrylar[m] | godot is nice yes |
18:16:39 | Zevv | problem with sdl2 is that it is not nimmish, its a thin C wrapper so you need to addr and ptr your way around |
18:18:41 | lqdev[m] | Marrakezh: afaik there's nimgame by Vladar https://vladar4.github.io/nimgame2/, I'm also working on a game engine but it's far from complete https://github.com/liquid600pgm/rapid |
18:19:01 | FromDiscord_ | <Marrakezh> I go see it |
18:19:28 | shashlick | @Araq what remains for 0.20 |
18:19:44 | lqdev[m] | Nimgame uses SDL2, my engine uses Glad, GLFW and FreeType |
18:20:21 | lqdev[m] | I'm thinking about making a WebGL backend for rapid, that would be fun |
18:20:43 | * | hoijui quit (Ping timeout: 252 seconds) |
18:20:47 | leorize | shashlick: showstopper bugs :p |
18:21:12 | FromDiscord_ | <Avatarfighter> this might be a bad question but currently I have a wrapper in which I have to do ptr and addr for my procs and I was wondering is there anything I can do to avoid using ptr and addr? |
18:22:04 | lqdev[m] | wrap the wrapper in a type-safe wrapper |
18:22:20 | skrylar[m] | depending on what you are handling, `distinct pointer` is nice |
18:23:01 | leorize | I usually use `ptr object` |
18:23:10 | FromDiscord_ | <Avatarfighter> uhhh |
18:23:32 | leorize | Avatarfighter: make a wrapper that use `var` |
18:23:44 | FromDiscord_ | <Avatarfighter> just var? |
18:23:56 | leorize | `var` is passed to C as pointer, but it's an implementation thing |
18:24:07 | leorize | Araq: can we rely on that ^ |
18:24:09 | leorize | ? |
18:24:23 | FromDiscord_ | <Avatarfighter> I can do that, I'm not going to lie I'm interested in seeing an example for what lqdev and skrylar said |
18:24:29 | FromDiscord_ | <Avatarfighter> sounds interested |
18:24:37 | Araq | leorize: yeah. it sucks a bit, but yes |
18:24:39 | FromDiscord_ | <Avatarfighter> sounds interesting |
18:24:53 | skrylar[m] | @AvatarFighter well i don't know what your code looks like? |
18:25:13 | lqdev[m] | Avatarfighter: here's a type-safe wrapper example https://github.com/jackmott/easygl/blob/master/src/easygl.nim |
18:25:38 | skrylar[m] | in a binding, opaque pointers can be implemented as `type OpaqueBagel = distinct pointer` and your wrappers can typecast from pointers to the distinct, and the nim side will type check that you don't mix up the pointer types |
18:26:37 | skrylar[m] | if you are just trying to hide `ptr foo`, then `type BagelHandle = object secret*: ptr Bagel` will seal the pointer up in an object of identical size and you can slap procs on the handle type that wrap around the pointer stuff |
18:27:08 | FromDiscord_ | <Avatarfighter> skrylar: that's really, really cool I'll try and cook up something that uses that wow that's awesome |
18:27:13 | skrylar[m] | i think you can say foo = distinct ptr bar but i've never tried that |
18:27:21 | skrylar[m] | yes distinct is great |
18:27:36 | FromDiscord_ | <Avatarfighter> lqdev: thank you for the example you guys are helping me grow my knowledge of this language 😃 |
18:28:08 | skrylar[m] | ex. distinct strings too, so you can have the type system treat sanitized strings separate from untrusted ones etc |
18:28:49 | FromDiscord_ | <Avatarfighter> That's actually nuts wow |
18:28:50 | lqdev[m] | ^ Nim has this built-in for input from files, it's called taint mode |
18:29:07 | skrylar[m] | yes but thats a specific case |
18:29:11 | skrylar[m] | distinct doesn't require magic |
18:29:48 | FromGitter | <alehander42> araq |
18:29:54 | FromGitter | <alehander42> we have slower trains |
18:30:05 | FromGitter | <alehander42> with very nice views |
18:30:06 | skrylar[m] | ex. if you're in unicode hell you can make distinct strings for each normalization type so an ex. string->NFKC proc tests for correctness, then returns a string that can be handed to ex. sorting procs that only want normalized input |
18:30:18 | FromGitter | <alehander42> you can come and work in them :) |
18:30:34 | FromDiscord_ | <Avatarfighter> Hello alehander 👋 |
18:30:45 | skrylar[m] | or distinct floats to represent degrees and rads :) |
18:30:48 | FromGitter | <alehander42> trains are nice for prototyping indeed |
18:31:17 | skrylar[m] | actually has anyone abused distincts for math yet |
18:31:36 | skrylar[m] | it occurs to me that you could use the implicit converters to make it so degrees(45) gets implicitly converted to radians |
18:31:58 | lqdev[m] | this is a brilliant idea |
18:32:26 | lqdev[m] | I wonder why this isn't a thing in `math` yet |
18:32:45 | skrylar[m] | its a little bit magic |
18:33:19 | FromGitter | <alehander42> araq |
18:33:27 | FromGitter | <alehander42> btw what do you think about svelte |
18:33:48 | lqdev[m] | ah of course, it imports those functions from `<math.h>` |
18:33:53 | lqdev[m] | so it's not that simple |
18:34:08 | lqdev[m] | I don't think it would cause problems with the FFI tho |
18:34:10 | FromGitter | <alehander42> it has different approach than most diff based frameqwork it generates syncing reactive code on "compile" time or something |
18:34:14 | FromGitter | <alehander42> have to read more |
18:34:21 | FromGitter | <alehander42> hello avatarfigther |
18:38:28 | shashlick | Maybe some of this should go into nimterop |
18:38:40 | shashlick | Instead of pointers |
18:42:36 | * | xet7 quit (Quit: Leaving) |
18:43:29 | leorize | Araq: I've just tried the nim-lang.org mingw on azure, and got a few tests failing |
18:43:41 | FromDiscord_ | <Avatarfighter> Would anyone happen to know who is the owner of the nim discord server? |
18:44:08 | * | smitop joined #nim |
18:44:56 | * | xet7 joined #nim |
18:48:56 | FromDiscord_ | <Avatarfighter> nvm I found them |
18:49:04 | * | rnrwashere joined #nim |
18:50:16 | * | xet7 quit (Quit: Leaving) |
18:50:48 | * | rnrwashere quit (Remote host closed the connection) |
18:52:33 | * | xet7 joined #nim |
18:56:46 | * | rnrwashere joined #nim |
19:00:17 | * | xet7 quit (Quit: Leaving) |
19:01:50 | FromDiscord_ | <Marrakezh> I never see he so idk |
19:02:00 | * | disruptek_ joined #nim |
19:02:52 | * | disruptek quit (Ping timeout: 246 seconds) |
19:03:45 | * | marcazar joined #nim |
19:04:43 | * | solitudesf quit (Ping timeout: 252 seconds) |
19:05:46 | * | xet7 joined #nim |
19:09:01 | leorize | live CI test view: https://dev.azure.com/alaviss/Nim/_build/results?buildId=117&view=ms.vss-test-web.build-test-results-tab |
19:09:01 | Araq | alehander42: I never heard of svelte before |
19:10:49 | shashlick | @Araq anything high priority you want me to take a look at? |
19:11:26 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
19:11:50 | * | laaron joined #nim |
19:12:40 | * | nsf quit (Quit: WeeChat 2.4) |
19:13:59 | Araq | the Nimble issue where 'tests' is an alias for 'test' but doesn't work anymore |
19:14:57 | shashlick | I'll take a look |
19:15:03 | * | xet7 quit (Quit: Leaving) |
19:15:49 | * | stefanos82 quit (Quit: Quitting for now...) |
19:17:20 | * | xet7 joined #nim |
19:27:56 | FromGitter | <kayabaNerve> Namimiran: |
19:28:16 | FromGitter | <kayabaNerve> And I did not mean to send that. Sorry. Gitter mobile sucks. |
19:29:10 | FromGitter | <kayabaNerve> narimiran: https://github.com/nim-lang/Nim/issues/11375 is what I meant to send. |
19:29:39 | FromGitter | <kayabaNerve> Realized I horribly messed up the username, scrolled up to check, and gitter screws me... |
19:31:01 | FromGitter | <kayabaNerve> This is what I was discussing the other day. |
19:31:02 | leorize[m] | narimiran: https://dev.azure.com/alaviss/Nim/_build/results?buildId=118&view=ms.vss-test-web.build-test-results-tab <- that's our current CIs put into one. Any more feature requests? |
19:37:35 | * | xet7 quit (Quit: Leaving) |
19:38:55 | Araq | er ... https://raw.githubusercontent.com/nim-lang/Nim/master/compiler/sigmatch.nim |
19:39:24 | Araq | vs https://github.com/nim-lang/Nim/blob/master/compiler/sigmatch.nim wtf github? |
19:39:42 | * | Marrakezh joined #nim |
19:39:53 | Marrakezh | a |
19:39:58 | FromDiscord_ | <Marrakezh> double me |
19:42:58 | * | Jjp137 quit (Read error: Connection reset by peer) |
19:43:41 | * | Jjp137 joined #nim |
19:46:35 | * | Marrakezh quit (Ping timeout: 256 seconds) |
19:47:31 | * | deech joined #nim |
19:48:08 | deech | Ok, _now_ I've got it ... I think. https://github.com/nim-lang/Nim/pull/11341 |
19:51:42 | FromDiscord_ | <Marrakezh> I trying learn nim, anyone recommend something to I do, like a project |
19:53:32 | shashlick | @Araq - nimble doesn't advertise or implement that test and tests are synonyms |
19:54:58 | lqdev[m] | Marrakezh: creating a simple game isn't bad for a first project |
19:55:04 | * | nsf joined #nim |
19:55:14 | lqdev[m] | it doesn't have to be original, you can make a clone of an existing game if you don't have any idead |
19:55:17 | lqdev[m] | ideas* |
19:55:24 | FromDiscord_ | <Marrakezh> ok |
19:56:00 | shashlick | take an existing small project of yours and reimplement in nim for fun |
19:56:04 | Zevv | Marrakezh: also depends on your experience in other languages of course. I'd pick something where you can learn "the nim way" of doing things |
20:02:24 | FromDiscord_ | <Marrakezh> anyone here use nim-csfml? |
20:13:25 | * | laaron quit (Quit: ZNC 1.7.1 - https://znc.in) |
20:13:46 | * | laaron joined #nim |
20:19:52 | lqdev[m] | Marrakezh: it uses a pretty outdated SFML version |
20:20:50 | lqdev[m] | also, it probably won't run on the latest Nim due to the fact that a) it's made for 0.17.0, we're on 0.19.6 b) it uses the old Nimble package format |
20:21:34 | * | disruptek_ is now known as disruptek |
20:22:22 | Araq | you can always update it |
20:22:47 | lqdev[m] | true |
20:30:09 | skrylar[m] | speaking of version differences |
20:30:16 | skrylar[m] | i was looking at those newfangled CIs people like using these days |
20:33:04 | * | hoijui joined #nim |
20:34:28 | shashlick | @Araq - do you want tests to be a synonym of test? |
20:34:41 | * | jjido joined #nim |
20:40:43 | Araq | shashlick: no, I want that it works as before |
20:40:50 | Araq | as andreaferretti reported |
20:40:56 | shashlick | @dom96 - https://github.com/nim-lang/nimble/pull/661 |
20:41:12 | shashlick | i don't understand Araq - not sure what you are talking about then, do you have a link? |
20:41:40 | shashlick | oh okay, that issue is already fixed |
20:41:57 | shashlick | that was this PR - https://github.com/nim-lang/nimble/pull/659 |
20:44:53 | Araq | ah ok, sorry |
20:45:18 | shashlick | no problem, fixed another problem while i was at it |
20:45:19 | Araq | then you can implement a nice warning for "object field discriminator" assignments |
20:45:56 | Araq | should be rather easy |
20:46:21 | * | noonien joined #nim |
20:46:27 | shashlick | i don't know much about the compiler at all, have carefully avoided it all this time 😄 |
20:46:50 | shashlick | do you have an issue#? i can try |
20:47:10 | * | apodo quit (Ping timeout: 258 seconds) |
20:47:18 | Araq | grep for sfDiscriminant and in the codegen or earlier add a new type of warning: "warning: manual code inspection required about potential object case transitions" |
20:47:27 | Araq | there is no issue for this |
20:47:34 | noonien | hello folks |
20:47:54 | noonien | is it possible to execute a process and only get a pipe to stdin, and not stdout and stderr? |
20:48:08 | noonien | as far as I can tell from the stdlib, it's not. |
20:48:27 | noonien | if so, is there any workaround, apart from reimplementing osproc |
20:48:53 | shashlick | what's missing in osproc? you can get a specific handle |
20:49:13 | shashlick | inputHandle and inputStream? |
20:49:22 | noonien | you can't if you pass poParentStreams |
20:49:44 | shashlick | well then no luck |
20:50:05 | shashlick | i don't even think it is possible |
20:50:14 | noonien | sure it is |
20:50:27 | noonien | it's just that osproc seems to be all or nothing |
20:51:19 | skrylar[m] | doesn't posix work this way too (you get all the pipes) |
20:51:55 | noonien | no, you assign what FDs you want, and can pass a pipe to just what you need |
20:55:07 | Araq | you don't have to use poParentStreams, you know |
20:55:38 | noonien | yes, but in that case, a pipe gets created for stdout and stderr |
20:55:48 | Calinou | Araq: change detection in Vue.js 3 will be strongly improved (since IE11 support will be dropped by default) |
20:56:05 | Calinou | if you wish to support IE11, it's still possible, but you won't fully benefit from these upcoming changes |
20:56:08 | noonien | and printing the output of stdout, and stderr separetely, while reading input and passing it along gets a LOT harder |
20:56:23 | Calinou | https://blog.cloudboost.io/reactivity-in-vue-js-2-vs-vue-js-3-dcdd0728dcdf |
20:56:51 | noonien | unless i'm missing an obvious way to set the FD of stdout/stderr |
20:57:03 | noonien | err, stdin* |
20:57:25 | Calinou | also, it will be written in TypeScript: https://medium.com/the-vue-point/plans-for-the-next-iteration-of-vue-js-777ffea6fabf |
20:57:59 | shashlick | @noonien - will be awesome if you could expand osproc for this |
20:58:05 | shashlick | i know i'll definitely appreciate it |
20:58:30 | Araq | Calinou: ok, so they agree with me, previously it was bad |
20:58:48 | Calinou | of course :) I stumbled upon the same issue during my internship |
20:59:41 | Araq | and afterwards it will still be bad because the very idea of a "component" does suck, HTML still sucks, HTML templates still suck and the 'C' in CSS still is a design bug |
21:01:03 | noonien | shashlick: i would, but it seems there's quite a bit of code in osproc, and doing this might change the API quite a bit |
21:01:07 | Araq | so Vue version 6 will tell me to write TypeScript instead of CSS and version 7 will tell me to write TypeScript instead of HTML templates |
21:01:53 | noonien | hmm, i guess we could hae poParent{Stdin,Stdout,Stderr} and maintain compatibility |
21:02:29 | * | apodo joined #nim |
21:02:40 | noonien | alongside poParentStreams |
21:04:39 | Araq | and then Vue will be like my Karax with my "reactive" extensions which I abandoned because -- guess what -- "reactive" sucks. And reactive programming has nothing to do with React btw... |
21:05:02 | Calinou | you'll still be able to use JavaScript with Vue.js |
21:05:11 | Calinou | they just decided to port it to TypeScript because it's more maintainable for a large library |
21:05:39 | Calinou | and no, in my experience, Vue.js developers care about about keeping the learning curve reasonable |
21:05:56 | Calinou | which is why they don't delve into CSS-in-JS territory and stuff like that |
21:08:31 | Araq | what "learning curve"? you cannot "learn" CSS. CSS is debug-only code, you can learn it for 10 years and only once you threw it away you become productive |
21:09:07 | Calinou | it seems to work well enough for a few million programmers :P |
21:09:13 | federico3 | the only thing to learn is to stay away from it |
21:09:44 | noonien | i completely agree with Araq, "welll enough" is subjective |
21:10:27 | * | rockcavera quit (Remote host closed the connection) |
21:10:40 | noonien | while CSS is the best we have, it's pretty bad |
21:11:04 | noonien | and so is HTML/the dom, hence why there's so many frameworks trying to fix it |
21:14:32 | jjido | Everything sucks? Components do? |
21:15:05 | Araq | vue.js's components surely do. |
21:15:41 | Araq | how do I get data into the component, heck how do I even *create* one component instance for every instance in my list... |
21:16:35 | Araq | how do I get data out of my component? what happened with the idea of using 'functions' in programming? |
21:17:43 | * | rnrwashere quit (Remote host closed the connection) |
21:18:05 | jjido | I was not exposed to their awesomeness ;) |
21:18:13 | Araq | just use Elm if Karax doesn't suit you but everything else is bullshit. |
21:20:12 | * | hoijui quit (Ping timeout: 252 seconds) |
21:23:13 | * | rnrwashere joined #nim |
21:24:18 | Calinou | Svelte doesn't use a virtual DOM, for what it's worth |
21:25:18 | FromGitter | <jrfondren> I've gotten good use out of https://mithril.js.org/ , but I don't shop around much. Last webapp (in Nim) is just a CGI script emitting HTML in strings. |
21:25:41 | Calinou | "Mithril is used by companies like Vimeo and Nike, and open source platforms like Lichess." heh :P |
21:25:44 | Calinou | it's pretty much liblichess in the open source world |
21:31:17 | * | rnrwashere quit (Remote host closed the connection) |
21:38:28 | * | jjido quit (Remote host closed the connection) |
21:48:51 | * | matt-m quit (Remote host closed the connection) |
21:50:11 | * | rnrwashere joined #nim |
21:54:29 | * | rnrwashere quit (Ping timeout: 252 seconds) |
21:55:35 | * | Trustable joined #nim |
22:14:28 | * | Trustable quit (Remote host closed the connection) |
22:17:28 | * | apodo quit (Ping timeout: 272 seconds) |
22:17:58 | Araq | is m68k still a thing? |
22:18:08 | Araq | https://github.com/nim-lang/Nim/pull/11366 |
22:18:51 | FromGitter | <jrfondren> haven't seen one since the PalmOS |
22:20:11 | FromGitter | <jrfondren> http://www.linux-m68k.org/ - 2 Apr 2000 |
22:21:17 | Araq | well I merged it. surely we can support 19 year old OSes |
22:24:36 | Araq | "Historically, the Motorola 680x0 (abbreviated as "m68k") port was the first Free Pascal port to CPU architectures other than i386. During the big refactoring for FPC 2.0, the code left without maintenance and the support broke and was partly removed. The Motorola 680x0 code generator got revived more than 10 years later, before FPC 3.0. " |
22:39:05 | * | xet7 joined #nim |
22:42:20 | * | nsf quit (Quit: WeeChat 2.4) |
22:46:13 | * | xet7 quit (Quit: Leaving) |
22:54:40 | federico3 | any tool to find a definition of a type across multiple files? |
22:58:16 | Araq | nimsuggest/nimgrep/nimfind |
23:13:15 | * | enthus1ast quit (Ping timeout: 250 seconds) |
23:25:29 | * | narimiran joined #nim |
23:27:05 | * | enthus1ast joined #nim |
23:30:51 | * | sealmove joined #nim |
23:37:19 | * | elrood quit (Remote host closed the connection) |
23:38:31 | skrylar[m] | fpc is neat |
23:39:48 | skrylar[m] | are we still supposed to be using supernatural puns for project names |
23:40:28 | Xe | skrylar[m]: why not? |
23:41:19 | sealmove | does Nim have atexit or something similar/ |
23:41:29 | skrylar[m] | i think it does |
23:41:46 | Xe | onquit or something IIRC |
23:43:08 | sealmove | found it, addQuitProc |
23:43:20 | Xe | yes that :D |
23:43:44 | skrylar[m] | Xe: well google threw a fit when nimrod wasn't name changed |
23:43:57 | skrylar[m] | they were like "you named this after a christian how dare you" |
23:44:30 | skrylar[m] | ~~only satanist names are allowed </thread>~~ have to find a suitable supernatural thing to steal the name from |
23:44:31 | Xe | skrylar[m]: i just gave a talk introducing a project of mine named after something from new age woo, so i'm probably a bad comparator here |
23:44:54 | skrylar[m] | daedalus was tempting because he builds more or less every widget in greek mythology |
23:49:06 | sealmove | eh, I get: |
23:49:10 | sealmove | Error: type mismatch: got <proc (){.gcsafe, locks: 0.}> |
23:49:11 | sealmove | but expected one of: |
23:49:13 | sealmove | proc addQuitProc(quitProc: proc () {.noconv.}) |
23:49:28 | Xe | what's your code look like? gist it? |
23:50:11 | skrylar[m] | did you specifically say your procedure is gcsafe or was that inferred |
23:51:06 | sealmove | no |
23:51:22 | sealmove | https://termbin.com/kebz |
23:52:20 | Xe | you know what |
23:52:28 | Xe | try adding a {.noconv.} pragma |
23:52:31 | Xe | let's see where that goes |
23:52:58 | sealmove | -.- wow that worked |
23:54:29 | Xe | ah cool |
23:54:31 | Xe | :D |
23:56:34 | sealmove | is calling conventions inferring asking for too much? :D |
23:59:09 | FromGitter | <jrfondren> sounds like it inferred gcsafe and locks: 0. asking for inference that says "oh, he's only passing it to addQuitProc, so it should probably be noconv" is probably too much. |