00:09:13 | * | demotomohiro quit (Ping timeout: 265 seconds) |
00:11:19 | * | krux02_ joined #nim |
00:13:38 | * | krux02 quit (Ping timeout: 245 seconds) |
00:15:23 | * | luis_ quit (Quit: luis_) |
00:15:24 | * | ltriant joined #nim |
00:20:18 | * | ltriant quit (Ping timeout: 260 seconds) |
00:40:04 | * | krux02_ quit (Remote host closed the connection) |
00:52:07 | * | ptdel quit (Ping timeout: 260 seconds) |
00:52:09 | disruptek | ~motd |
00:52:10 | disbot | motd: 11do a lot of people choose a language for the wrong reasons? -- disruptek |
00:53:01 | * | ptdel joined #nim |
00:53:59 | * | dcmertens joined #nim |
00:54:24 | dcmertens | hello, the executables installed by choosenim do not have the execute permission set |
00:54:25 | dcmertens | any ideas? |
00:54:33 | disruptek | add the missing permissions. |
00:55:53 | dcmertens | disruptek, well yes |
00:55:59 | dcmertens | but it seems like a broken install to me |
00:56:05 | disruptek | yes, it does. |
00:56:11 | dcmertens | and I worry that executables in other directories would not have permissions |
00:56:24 | dcmertens | Do you know if there are there any other folders that may contain executables? |
00:56:47 | disruptek | i don't use choosenim, but i'm aware that there seems to've been an issue with some distributions of binaries without the execute bits. |
00:57:09 | dcmertens | disruptek, thanks |
00:57:17 | dcmertens | nim -v works now. :-) |
00:57:21 | disruptek | nice. |
01:21:10 | * | demotomohiro joined #nim |
01:24:53 | FromDiscord | <treeform> Is there a mechanism in nim to monkey patch/override/replace/inject code deep into system modules like nativesockets? |
01:25:16 | FromDiscord | <treeform> When I search for nim monkey patch I get articles about the Ape named Nim LOL. |
01:26:00 | disruptek | what have you tried? |
01:26:38 | disruptek | another argument in favor of weak refs. |
01:26:57 | disruptek | you could preload, i guess. |
01:27:09 | FromDiscord | <treeform> looks like there is https://nim-lang.org/docs/nimscript.html#patchFile%2Cstring%2Cstring%2Cstring but its part of nim script only |
01:30:43 | * | leorize joined #nim |
01:31:01 | disruptek | what i don't understand about arc is, i don't see how the compiler can make a definitive decision about move/sink 100% of the time. |
01:31:17 | disruptek | it seems to me i may want to move stuff instead of sinking it, etc. |
01:31:38 | FromDiscord | <treeform> well it can't? So it uses the ref counting? |
01:39:23 | disruptek | supposed to be automatic; the annotations are only supposed to aid optimization. |
01:45:59 | FromDiscord | <treeform> I made some progress on my fiber things, I can now start two fibers and then can make a socket request in parallel: https://gist.github.com/treeform/bc8ad527148d692a870f7956c5cf0e95 ... Async can do this easily ... but this uses a different stack switching model. |
01:46:47 | FromDiscord | <treeform> Now I am thinking if its possible to just "import fibers" and have fibers monkey patch the socket stuff so that code written without knowing about fibers can just work in side fibers. |
01:47:08 | disruptek | but... i/o. |
01:48:35 | disruptek | i think most of the time, fibers will be easier to reason about. |
01:49:01 | FromDiscord | <treeform> I though so too. The more I experiment with them the less I am convinced. |
01:49:27 | disruptek | well, the monkey patch doesn't sound great to me, honestly. |
01:50:11 | FromDiscord | <treeform> With Fibers, you would not need to put Future[..] {.await.} ... async everywhere, but they will be practically equivalent to Async model. |
01:50:26 | disruptek | i really believe that we can do better with high-level constructs over a fast subsystem. i think fibers can be that, for single threads. |
01:51:14 | disruptek | so we can use nim to what-color-is-your-function. |
01:51:25 | disruptek | but, we just let people color them their own way. |
01:51:45 | disruptek | in the same way that async works, fibers could work. via a layer over the language. |
01:52:22 | FromDiscord | <treeform> I am not sure its worth it. Async is probably already good enough. |
01:52:28 | FromDiscord | <treeform> But its neat to play around with |
01:52:47 | disruptek | depends on the use-case, i think. |
01:57:42 | FromDiscord | <treeform> One big problem I have with Async is that exceptions are really hard to read. One thing I did with my fiber library is that I reformat the stack trace where it makes more sense... maybe that can be done with Async as well. |
01:58:54 | disruptek | exceptions in async are the main problem, imo. |
01:59:07 | disruptek | i don't think anyone wants to fix it, though. |
01:59:44 | disruptek | depending on who you ask, it's "a feature working as intended" or "a feature working as implemented, and unfixable". |
02:07:39 | FromDiscord | <treeform> strange |
02:08:04 | FromDiscord | <treeform> what I did in my fiber lib, is when a fiber is created with spawn i grab the current stack trace |
02:08:11 | FromDiscord | <treeform> if a stack trace happens inside a fiber |
02:08:28 | FromDiscord | <treeform> I remove the fiber library gunk from the trace |
02:08:37 | FromDiscord | <treeform> and glue it to the trace that started the fiber |
02:08:51 | FromDiscord | <treeform> and comes out very clear exception traceback |
02:10:11 | disruptek | ah, that makes sense. |
02:10:34 | disruptek | seems like that would work. |
02:10:57 | FromDiscord | <treeform> I have not done the case where a fiber is started from a fiber, you got to do that one the same way, append the parent fiber part |
02:11:22 | disruptek | right. have you tested this with goto yet? |
02:11:35 | FromDiscord | <treeform> no |
02:11:39 | FromDiscord | <treeform> nim has goto? |
02:11:45 | disruptek | --exceptions:goto |
02:12:01 | FromDiscord | <treeform> isn't that the default with --gc:arc ? |
02:12:07 | disruptek | yeah. |
02:12:19 | FromDiscord | <treeform> my fibers only support --gc:arc ... so yes? |
02:12:46 | disruptek | nice. |
02:13:02 | FromDiscord | <treeform> but not directly, real unit tests will be required |
02:13:56 | disruptek | i was thinking maybe openapi should just rename .call() to (). |
02:16:15 | * | ltriant joined #nim |
02:21:30 | * | ltriant quit (Ping timeout: 258 seconds) |
02:22:37 | * | rockcavera joined #nim |
02:28:48 | FromDiscord | <treeform> Ok got fiber in fiber in fiber stack trace working. Its easy if each fiber carries their own exception "start" with them from the place they where created. |
02:29:07 | disruptek | yeah, that's what i like about the design. it's simple. |
02:30:22 | disruptek | oh, move is permitted in arc. |
02:30:44 | disruptek | move() is not merely performance-annotation. |
02:31:13 | FromDiscord | <treeform> You right, what-color-is-your-function is a problem with async code that fibers hopefully will not have. |
02:31:41 | FromDiscord | <treeform> That is the biggest issue they might solve. |
02:31:54 | disruptek | yes, well it's not a small issue. 😉 |
02:32:00 | FromDiscord | <treeform> async stack traces could probably be solved |
02:32:06 | * | demotomohiro quit (Quit: Leaving) |
02:32:24 | disruptek | those docs will help. |
02:33:53 | disruptek | i dunno if the exceptions could be fixed. if i said they could, that'd be a third person with a third opinion. |
02:34:44 | * | voltist joined #nim |
02:46:51 | voltist | With arraymancer's Tensors, is there a way to access values by an array of indicies? So instead of having to type out 'tensor[loc[0], loc[1], loc[2]' I could just use loc as an argument to get that value? |
02:51:15 | FromGitter | <matrixbot> `silvernode` Last summer I wanted to hook up my guitar to a Thinkpad T420 I have which is running Fedora. I went so far as to find a repository with a Realtime kernel and got qjackctl to manage jack. After all that I still had latency. |
02:52:32 | leorize | @mratsim: ^ |
02:52:49 | leorize | silvernode: wrong channel :p |
02:53:09 | FromGitter | <matrixbot> `silvernode` Turns out all didn't have to get a Realtime kernel because almost all of those features are built into the mainline kernels these days. All I had to do was change one small setting in Qjackctl and vala! No latency |
02:54:02 | FromGitter | <matrixbot> `silvernode` I even had Guitarix virtual amplifier working so I could have distortion |
02:54:46 | FromGitter | <matrixbot> `silvernode` > <@gitter_fromirc:matrix.org> *<Araq>* when I ran opensuse its package manager would easily run for hours, super slow ⏎ ⏎ I have never had a good experince with Suse |
02:54:53 | * | dcmertens quit (Ping timeout: 260 seconds) |
02:57:10 | FromGitter | <matrixbot> `silvernode` skrylar, yeah I noticed that about DNF, I blame the fact that dnf is Python |
02:57:55 | FromGitter | <matrixbot> `silvernode` If Windows 10 didn't have all that telemetry and adware I would say it's a pretty solid OS |
02:59:27 | shashlick | disruptek, dcmertens: permissions issue is fixed, will be shipped in next minor release |
02:59:41 | disruptek | nice. |
03:02:26 | shashlick | By the way, $NIMBLE_DIR works well |
03:02:38 | shashlick | The problem is if a user uses the and line |
03:02:51 | disruptek | it works for me, but it's more work than it should be. |
03:02:54 | shashlick | No way to tell so I cannot propagate it |
03:03:02 | shashlick | And = command |
03:03:17 | disruptek | i know. |
03:03:18 | shashlick | Cfg and env auto propagate to child processes |
03:03:27 | disruptek | so this is exactly what env vars are for. |
03:03:34 | disruptek | passing global state between executables. |
03:03:41 | disruptek | and yet, here we are, not doing it. |
03:04:21 | disruptek | it would be better if $NIMBLE_DIR didn't exist, simply because it'd make the whole thing simpler. |
03:05:09 | shashlick | Those two statements are opposites |
03:05:26 | disruptek | how do you figure? |
03:05:48 | disruptek | if we didn't have $NIMBLE_DIR, i wouldn't need to worry about it. |
03:07:20 | FromGitter | <matrixbot> `silvernode` disruptek, added you to the project on Github |
03:07:33 | disruptek | cool. |
03:08:02 | shashlick | But you just said env vars are good for it |
03:08:17 | shashlick | More features are more headaches though |
03:08:35 | disruptek | they are. i would rather there was only one way to specify $NIMBLE_DIR though. |
03:12:43 | * | dddddd quit (Remote host closed the connection) |
03:32:30 | disruptek | boy, i wish i'd read destructors.rst first. |
03:52:04 | * | muffindrake quit (Ping timeout: 248 seconds) |
03:54:14 | * | muffindrake joined #nim |
04:17:04 | * | ltriant joined #nim |
04:18:24 | * | jwm224 quit (Quit: WeeChat 2.8-dev) |
04:22:02 | * | ltriant quit (Ping timeout: 240 seconds) |
04:31:01 | rockcavera | Destructors.rst is very complicated for me as a lawyer and not a programmer. I see no example, but only theory. Didactic lack. Until today I could not understand and it seems that will be the pillar of the new "gc" arc. |
04:32:32 | leorize | well it's a documentation for "advanced" ppl :P |
04:32:51 | disruptek | it's way better than just jumping into the code, let me tell you. |
04:33:07 | disruptek | i thought move was only an optimization. |
04:33:14 | rockcavera | leorize unfortunately. Nothing democratic ;( |
04:33:16 | disruptek | now the whole thing sounds more workable. |
04:34:45 | disruptek | there are examples in there. maybe they were added more recently. |
04:35:12 | rockcavera | Especially me who do not have much time for programming, I need something more direct and didactic. As I bet on learning Nim, this new runtime scares me, because so far I can't understand it. |
04:36:06 | rockcavera | disruptek I believe trite examples are more viable because they show that red is red. |
04:36:37 | disruptek | i agree that this isn't something nim frequently succeeds at in examples. |
04:36:55 | rockcavera | Rust is easier to understand lately than the new runtime Nim |
04:36:57 | rockcavera | ;D |
04:37:38 | leorize | rockcavera: tbh you don't need to understand it atm |
04:37:43 | FromDiscord | <Fern & Simula (They/Them)> I would focus on learning Nim first, then move semantics before trying to wrap your head around the new runtime features |
04:37:44 | disruptek | it's actually not that bad, i just never bothered to look into it too deeply. i had other problems. |
04:38:00 | leorize | it's for when you are knees deep into resources management |
04:38:09 | leorize | which is not something you'll do when you're a beginner |
04:38:36 | FromDiscord | <Fern & Simula (They/Them)> It's something you probably won't do ever, unless you're working with very complex code |
04:41:48 | * | rockcavera is now known as Guest29258 |
04:41:48 | * | Guest29258 quit (Killed (livingstone.freenode.net (Nickname regained by services))) |
04:42:13 | * | rockcavera joined #nim |
04:43:29 | rockcavera | hum |
04:45:07 | rockcavera | So I'll try not to worry about Nim's course, but only when everything is officially released. |
04:47:17 | rockcavera | I hope that until the launch of the new runtime have made new tutorials, books and examples ... |
04:47:52 | leorize | don't worry, what new runtime bring will be new features |
04:47:53 | rockcavera | About rust was an irony. I do not know if it was possible to understand, because I am not native with English. |
04:47:56 | leorize | your code will stay the same |
04:48:43 | * | nsf joined #nim |
04:52:36 | FromDiscord | <Fern & Simula (They/Them)> If I understand it correctly, the ownership semantics aren't too dissimilar to rust, actually |
04:52:44 | FromDiscord | <Fern & Simula (They/Them)> Someone correct me if I'm wrong |
04:53:00 | leorize | that newruntime is kinda on revision rn :P |
04:53:08 | leorize | I wouldn't pay too much attention into it |
04:53:33 | FromDiscord | <yewpad> Can somebody elaborate on what the difference between `proc foo(myType: var MyType)` and `proc foo(myType: ref MyType)` is? They seem to have the same effect? |
04:55:17 | leorize | ref takes a reference |
04:55:22 | leorize | var means modifiable |
04:56:00 | FromDiscord | <yewpad> Do they have substantial effect on memory consumption if I use one or the other? |
04:56:06 | FromDiscord | <yewpad> I can't tell the difference. |
04:56:27 | leorize | well it depends on your MyType |
04:56:31 | FromDiscord | <Fern & Simula (They/Them)> It's negligible |
04:56:45 | leorize | but basically: ref is for reference semantic :P |
04:57:31 | FromDiscord | <Fern & Simula (They/Them)> Using a ref type should have less copying overhead since it's just copying a reference instead of the entire object |
04:57:46 | FromDiscord | <yewpad> Hm, okay. |
04:58:35 | leorize | uhmm it's the same if you use var |
04:58:53 | FromDiscord | <Fern & Simula (They/Them)> Is it? |
04:59:16 | leorize | var parameters take a reference :P |
04:59:26 | leorize | so they could modify the argument |
04:59:34 | FromDiscord | <Fern & Simula (They/Them)> Til, thank you for the correction |
05:00:04 | leorize | also, nim don't copy objects if their size > 3 * float |
05:00:21 | FromDiscord | <yewpad> _Var parameters are implemented as hidden pointers_ - But why do 'ref's exist in the first place then? |
05:00:24 | leorize | they are passed by reference, so you don't have to micro-optimize your code |
05:00:32 | leorize | ref is for reference semantic |
05:00:37 | leorize | lemme draft up an example |
05:00:44 | FromDiscord | <yewpad> Yes please. Thank you! |
05:00:45 | FromDiscord | <Fern & Simula (They/Them)> Refs are also on the heap, right? |
05:02:27 | * | ltriant joined #nim |
05:03:59 | FromDiscord | <Fern & Simula (They/Them)> Refs are also useful in async if you want to modify a parameter, since async can't take var parameters |
05:04:59 | leorize | https://play.nim-lang.org/#ix=27hD |
05:05:06 | leorize | this should be a good enough primer |
05:08:11 | FromDiscord | <yewpad> Hm, okay. Thank you. |
05:10:00 | FromDiscord | <yewpad> Is there a good reason to use pointer arithmetic in Nim, except for low-level operations like with hardware? |
05:10:06 | leorize | no |
05:10:32 | FromDiscord | <yewpad> Yeah, why would you. Just wanted to ask out of curiosity. |
05:10:34 | leorize | even for low-level we have UncheckedArray :P |
05:18:53 | silvernode | Remind me not to use matrix irc bridges anymore. I sent messages 5 hours ago and they finally showed up and spammed the chat. |
05:22:03 | * | ltriant quit (Ping timeout: 258 seconds) |
05:22:15 | leorize | you sent them on gitter btw :P |
05:22:26 | leorize | not the irc bridge |
05:23:37 | leorize | join #freenode_#nim:matrix.org for the actual irc bridge |
05:28:28 | * | narimiran joined #nim |
05:30:37 | * | marmotini_ joined #nim |
05:32:53 | silvernode | leorize: you're right, I was wondering why it said gitter. I don't use Riot much and probably joined the wrong channel |
05:54:42 | * | ltriant joined #nim |
05:59:37 | * | ltriant quit (Ping timeout: 258 seconds) |
06:09:37 | * | silvernode[m] joined #nim |
06:10:04 | silvernode[m] | Hopefully this is better using the actual irc bridge |
06:14:34 | * | martinium joined #nim |
06:29:17 | * | martinium quit (Quit: Textual IRC Client: www.textualapp.com) |
06:30:14 | * | ltriant joined #nim |
06:31:01 | * | martinium joined #nim |
06:34:50 | * | ltriant quit (Ping timeout: 240 seconds) |
06:45:48 | * | chenhq2005 joined #nim |
06:51:38 | * | xet7 quit (Ping timeout: 240 seconds) |
06:53:19 | * | xet7 joined #nim |
06:55:54 | * | ltriant joined #nim |
07:02:37 | * | chenhq2005_ joined #nim |
07:04:50 | * | ltriant quit (Ping timeout: 268 seconds) |
07:05:38 | * | chenhq2005 quit (Ping timeout: 240 seconds) |
07:07:28 | * | Hideki_ joined #nim |
07:08:06 | Zevv | leorize: here? |
07:08:55 | Zevv | I have sporadic lookup issues with nim.nvim. For example, open nim system/sysstr.nim, goto line 25, stand on "NimString" and do <Plug>NimGoToDefBuf |
07:08:59 | Zevv | nothing happens for me then |
07:09:31 | Zevv | ooh right wait, the `when` is false of course - I knew that, I knew that |
07:21:02 | * | Hideki__ joined #nim |
07:21:48 | * | xet7 quit (Ping timeout: 265 seconds) |
07:22:33 | * | xet7 joined #nim |
07:23:38 | * | Hideki_ quit (Ping timeout: 240 seconds) |
07:25:36 | * | ng0 quit (Quit: leaving) |
07:25:37 | * | Hideki_ joined #nim |
07:25:52 | * | solitudesf joined #nim |
07:26:37 | * | marmotini_ quit (Remote host closed the connection) |
07:27:11 | * | marmotini_ joined #nim |
07:29:38 | * | Hideki__ quit (Ping timeout: 260 seconds) |
07:31:57 | * | marmotini_ quit (Ping timeout: 265 seconds) |
07:32:27 | * | ltriant joined #nim |
07:36:25 | * | marmotini_ joined #nim |
07:37:33 | * | ltriant quit (Ping timeout: 265 seconds) |
07:41:45 | * | martinium quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
07:48:39 | * | ptdel quit (Remote host closed the connection) |
07:49:18 | * | PMunch joined #nim |
07:50:18 | * | Hideki__ joined #nim |
07:53:37 | * | natrys joined #nim |
07:54:24 | PMunch | Hmm, the links in the "export" section of documentation is broken. It links to the correct module, but the fragment part is wrong so it doesn't automatically jump to the correct procedure |
07:54:36 | * | Hideki_ quit (Ping timeout: 268 seconds) |
07:59:58 | * | Hideki_ joined #nim |
08:00:00 | * | gmpreussner quit (Quit: kthxbye) |
08:03:00 | * | letto quit (Quit: Konversation terminated!) |
08:03:38 | * | Hideki__ quit (Ping timeout: 240 seconds) |
08:04:47 | * | Hideki__ joined #nim |
08:04:53 | * | gmpreussner joined #nim |
08:05:04 | * | letto joined #nim |
08:05:05 | * | xet7 quit (Ping timeout: 268 seconds) |
08:05:49 | * | voltist_ joined #nim |
08:06:25 | * | Hideki___ joined #nim |
08:06:46 | * | xet7 joined #nim |
08:06:46 | * | Hideki___ quit (Read error: Connection reset by peer) |
08:07:11 | * | Hideki_ quit (Read error: No route to host) |
08:07:17 | * | Hideki___ joined #nim |
08:07:23 | * | solitudesf- joined #nim |
08:08:27 | * | Hideki__ quit (Read error: No route to host) |
08:08:38 | * | ltriant joined #nim |
08:08:41 | * | voltist quit (Ping timeout: 265 seconds) |
08:08:50 | * | Hideki_ joined #nim |
08:09:38 | * | Hideki___ quit (Read error: No route to host) |
08:10:08 | * | solitudesf quit (Ping timeout: 265 seconds) |
08:10:09 | * | Hideki__ joined #nim |
08:13:24 | * | Hideki_ quit (Ping timeout: 258 seconds) |
08:13:55 | * | ltriant quit (Ping timeout: 268 seconds) |
08:14:25 | * | voltist_ quit (Quit: Leaving) |
08:19:47 | * | Hideki_ joined #nim |
08:20:22 | * | Hideki__ quit (Read error: Connection reset by peer) |
08:20:44 | * | Hideki__ joined #nim |
08:20:56 | * | Hideki_ quit (Read error: Connection reset by peer) |
08:21:30 | * | Hideki_ joined #nim |
08:23:21 | * | Hideki__ quit (Read error: Connection reset by peer) |
08:23:39 | * | Hideki__ joined #nim |
08:25:48 | * | Hideki_ quit (Read error: No route to host) |
08:26:13 | * | Hideki_ joined #nim |
08:26:37 | * | Hideki__ quit (Read error: Connection reset by peer) |
08:26:50 | * | Hideki__ joined #nim |
08:28:30 | * | Hideki___ joined #nim |
08:29:12 | * | Hideki_ quit (Read error: No route to host) |
08:31:47 | * | Hideki__ quit (Ping timeout: 268 seconds) |
08:40:32 | * | marmotini_ quit (Remote host closed the connection) |
08:40:55 | * | Hideki___ quit (Remote host closed the connection) |
08:41:04 | * | marmotini_ joined #nim |
08:41:41 | * | NimBot joined #nim |
08:45:58 | * | marmotini_ quit (Ping timeout: 268 seconds) |
08:50:36 | * | floppydh joined #nim |
09:03:58 | * | ltriant joined #nim |
09:05:51 | * | ng0 joined #nim |
09:05:51 | * | ng0 quit (Changing host) |
09:05:51 | * | ng0 joined #nim |
09:09:24 | * | ltriant quit (Ping timeout: 268 seconds) |
09:10:31 | * | xet7 quit (Ping timeout: 258 seconds) |
09:17:31 | * | hlavaty joined #nim |
09:23:48 | FromGitter | <alehander92> mornin |
09:24:05 | * | ng0_ joined #nim |
09:24:12 | * | ng0 quit (Ping timeout: 268 seconds) |
09:24:19 | Araq | hi |
09:25:37 | * | ng0_ is now known as ng0 |
09:30:07 | * | neceve joined #nim |
09:33:37 | * | luis_ joined #nim |
09:34:50 | * | beatmox quit (Ping timeout: 240 seconds) |
09:37:02 | * | beatmox joined #nim |
09:42:31 | lqdev[m] | hello |
09:43:12 | PMunch | Hi |
09:43:51 | PMunch | Hmm, asyncCheck uses `callback=` instead of `addCallback`. Why is this? |
09:50:07 | * | lritter joined #nim |
10:06:53 | FromGitter | <alehander92> btw is `and` |
10:07:06 | FromGitter | <alehander92> supposed to work "parallely" for async futures |
10:07:59 | FromGitter | <alehander92> like, await (asyncFunction1() and asyncFunction2()) => run them interminently yielding to the event loop |
10:08:18 | FromGitter | <alehander92> what i see in my logs seems like calling asyncFunction1, and calling asyncFunction2 after first end |
10:13:42 | * | Hideki_ joined #nim |
10:14:02 | * | luis_ quit (Remote host closed the connection) |
10:16:11 | * | Hideki__ joined #nim |
10:16:12 | * | Hideki_ quit (Remote host closed the connection) |
10:17:25 | * | Hideki_ joined #nim |
10:20:56 | * | Hideki__ quit (Ping timeout: 268 seconds) |
10:26:18 | * | chenhq2005_ quit (Ping timeout: 268 seconds) |
10:27:53 | * | Hideki_ quit (Remote host closed the connection) |
10:30:23 | * | Hideki_ joined #nim |
10:34:51 | * | Hideki_ quit (Ping timeout: 258 seconds) |
10:40:26 | Araq | PMunch, I've complained about this design a lot too |
10:44:35 | * | dcmertens joined #nim |
10:46:46 | * | krux02 joined #nim |
10:50:45 | FromGitter | <timotheecour> hi @araq ⏎ ⏎ > No, but close. Check the it.sym.owner field instead. ⏎ ⏎ that was my 1st attempt but didn’t know how to access the current module PSym to compare against it.sym.owner ? [https://gitter.im/nim-lang/Nim?at=5e1c4b850e65654fa0d64f49] |
10:50:55 | FromGitter | <timotheecour> (in https://github.com/nim-lang/Nim/pull/13123#discussion_r365735721) |
10:50:56 | disbot | ➥ fix #13100 nim doc now treats `export localSymbol` correctly |
10:51:44 | * | lxbarbosa joined #nim |
10:52:58 | Araq | TDocumentator should get a 'module: PSym' field |
10:55:23 | * | chenhq2005 joined #nim |
11:02:08 | * | Hideki_ joined #nim |
11:04:50 | * | ltriant joined #nim |
11:09:35 | FromGitter | <timotheecour> not seeing an easy way to do that without adding a bunch of new dependencies on modules / modulegraphs, and creating a `newModuleGraph` ; exposing private `newModule` + maybe other changes; is the way i wrote incorrect? (tested on simple examples and worked) |
11:09:56 | * | ltriant quit (Ping timeout: 265 seconds) |
11:23:25 | Araq | seems straight-foward to do, copy how the other "passes" do it |
11:27:00 | Araq | ping Clyybber |
11:28:54 | * | dddddd joined #nim |
11:54:53 | * | Hideki_ quit (Ping timeout: 265 seconds) |
12:02:37 | * | nsf quit (Quit: WeeChat 2.7) |
12:04:12 | Araq | never mind, it was something else |
12:12:36 | * | floppydh quit (Quit: WeeChat 2.6) |
12:16:48 | PMunch | Araq, ah okay so it is actually on purpose then |
12:19:41 | * | rokups joined #nim |
12:21:48 | * | dcmertens quit (Ping timeout: 268 seconds) |
12:44:52 | FromDiscord | <Clyybber> 'Sup |
12:47:54 | * | floppydh joined #nim |
12:48:23 | PMunch | Clyybber, quiet day here today :) |
12:48:38 | * | ng0 quit (Ping timeout: 258 seconds) |
12:52:37 | * | dcmertens joined #nim |
12:56:17 | Zevv | work work |
12:56:23 | * | ng0 joined #nim |
12:59:21 | * | jwm224 joined #nim |
12:59:25 | Araq | Clyyber: https://github.com/nim-lang/Nim/issues/13105 |
12:59:25 | disbot | ➥ codegen bug with arc |
13:00:37 | Araq | we produce '=' rather then nimMemCopy but that's a C codegen bug, not hard to fix. however we also produce a destructor call for the temporary, I wonder what's really going on here |
13:05:24 | * | silvernode quit (Quit: https://quassel-irc.org - Chat comfortably. Anywhere.) |
13:05:39 | * | ltriant joined #nim |
13:10:46 | * | ltriant quit (Ping timeout: 265 seconds) |
13:25:35 | * | Hideki_ joined #nim |
13:29:53 | * | hlavaty quit (Remote host closed the connection) |
13:37:25 | FromGitter | <kaushalmodi> How do I make `nim doc` use cpp backend for the `:test:` code blocks in the doc strings? |
13:38:04 | * | Perkol joined #nim |
13:38:27 | Perkol | Is there a way to statically link openssl on windows? |
13:38:30 | FromGitter | <kaushalmodi> I am writing doc strings for a Nim wrapper for the C++ vector lib, but `nim doc` always uses `nim c ..` to eval the example code blocks in doc strings |
13:38:57 | FromGitter | <kaushalmodi> I tried adding this to the config.nims, but that did not help: ⏎ ⏎ ```if getCommand() == "c": ⏎ setCommand("cpp")``` [https://gitter.im/nim-lang/Nim?at=5e1c72f165badf754d7f08c9] |
13:39:53 | FromDiscord | <Clyybber> Araq: Hmm, I wonder too |
13:41:40 | * | xace quit (Ping timeout: 252 seconds) |
13:42:17 | Araq | kaushalmodi: I think that's currently not supported at all |
13:42:22 | Araq | PRs are welcome |
13:42:41 | FromGitter | <kaushalmodi> hmm, I will open an issue |
13:46:15 | * | Hideki_ quit (Remote host closed the connection) |
13:47:13 | * | Hideki_ joined #nim |
13:56:41 | * | Hideki_ quit (Ping timeout: 265 seconds) |
14:04:56 | FromGitter | <kaushalmodi> Araq: I was looking into the code.. but I am confused with this code: https://github.com/nim-lang/Nim/blob/abea80376a113fb218c22b6474727c279e694cd3/compiler/docgen.nim#L147-L148 |
14:05:06 | FromGitter | <kaushalmodi> where is that onTestSnippet proc called? |
14:05:27 | FromGitter | <kaushalmodi> I cannot find where the `cmd` is forced to a `c` backend right now |
14:07:29 | FromGitter | <kaushalmodi> pinged too soon.. found it: https://github.com/nim-lang/Nim/blob/abea80376a113fb218c22b6474727c279e694cd3/lib/packages/docutils/rstgen.nim#L865-L868 |
14:08:29 | * | xace joined #nim |
14:25:41 | * | chenhq2005 quit (Ping timeout: 265 seconds) |
14:31:24 | * | Hideki_ joined #nim |
14:33:51 | * | Perkol quit (Remote host closed the connection) |
14:42:29 | FromDiscord | <treeform> its down for me: https://nimble.directory/ |
14:46:24 | shashlick | @kaushalmodi - in your hello_musl project, are you statically linking openssl? https://github.com/kaushalmodi/hello_musl/blob/master/config.nims#L168 |
14:46:32 | shashlick | cc @Perkol ^^ |
14:46:44 | PMunch | Hmm, when using AsyncHttpClient and the connection is closed by the remote, will it open it again for the next request? Or is that request just dead? |
14:52:24 | PMunch | Just did a test and it seems to open it again |
14:52:34 | * | marmotini_ joined #nim |
14:52:57 | * | nsf joined #nim |
14:55:07 | * | lxbarbos` joined #nim |
14:55:18 | * | Hideki_ quit (Ping timeout: 260 seconds) |
14:58:38 | FromGitter | <kaushalmodi> shashlick: yes |
14:58:53 | * | lxbarbosa quit (Ping timeout: 246 seconds) |
14:59:11 | FromGitter | <kaushalmodi> at the time, I had experimented statically linking both libressl and openssl |
15:01:00 | shashlick | cool thanks |
15:02:05 | * | PMunch quit (Quit: Leaving) |
15:03:26 | * | Vladar joined #nim |
15:06:32 | * | ltriant joined #nim |
15:07:43 | * | quantumbird joined #nim |
15:10:14 | * | quantumbird quit (Read error: Connection reset by peer) |
15:10:44 | * | quantumbird joined #nim |
15:11:33 | * | ltriant quit (Ping timeout: 245 seconds) |
15:13:43 | * | ng0_ joined #nim |
15:13:43 | * | ng0_ quit (Changing host) |
15:13:43 | * | ng0_ joined #nim |
15:16:53 | * | ng0 quit (Ping timeout: 260 seconds) |
15:16:56 | * | rokups quit (Quit: Connection closed for inactivity) |
15:16:57 | * | sekao joined #nim |
15:17:30 | FromDiscord | <treeform> Is there a way to set `--gc:arc` in nim.cfg. Just putting that there does not seem to work. |
15:19:30 | * | ng0_ is now known as ng0 |
15:20:54 | * | Hideki_ joined #nim |
15:21:03 | * | sekao quit (Remote host closed the connection) |
15:24:18 | * | quantumbird quit (Read error: Connection reset by peer) |
15:24:45 | * | quantumbird joined #nim |
15:26:00 | * | Hideki_ quit (Ping timeout: 268 seconds) |
15:27:18 | FromDiscord | <Rika> what does the error "cannot instantiate" mean |
15:28:10 | FromDiscord | <Rika> oh |
15:28:19 | FromDiscord | <Rika> i misread, it was erroring out on the wrong line |
15:29:45 | * | Vladar quit (Quit: Leaving) |
15:34:36 | * | quantumbird quit (Read error: Connection reset by peer) |
15:35:11 | * | quantumbird joined #nim |
15:36:15 | FromDiscord | <treeform> I am getting really odd errors with threads: |
15:36:17 | FromDiscord | <treeform> * createThread then seq.add -> crash |
15:36:17 | FromDiscord | <treeform> * seq.add then createThread -> some threads dont run |
15:36:17 | FromDiscord | <treeform> * pre seq.add all threads -> works 100% |
15:36:28 | FromDiscord | <treeform> https://gist.github.com/treeform/b8abfeae9038ba64af35724e7b1a0386 |
15:38:44 | * | quantumbird quit (Read error: Connection reset by peer) |
15:39:26 | FromDiscord | <treeform> I think its related to them being copied from var to seq. |
15:43:37 | FromDiscord | <treeform> I think that is so.. if I create ref object to wrap the threads it works no problem: https://gist.github.com/treeform/56ca19868d8756b714769eca6d8fcc34 |
15:47:25 | * | Hideki_ joined #nim |
15:51:17 | FromDiscord | <demotomohiro> Can `Thread[T]` type be copied or moved safely? |
15:51:38 | * | Hideki_ quit (Ping timeout: 240 seconds) |
15:56:01 | FromDiscord | <kodkuce> async arc soon ? |
15:57:38 | FromDiscord | <treeform> @demotomohiro my tests demonstrate that's a No. |
15:57:52 | FromDiscord | <demotomohiro> `thr.add t` before `createThread` seems bug because first parameter of `createThread` is `t: var Thread[TArg]`. |
15:58:16 | FromDiscord | <treeform> its not deterministic it works some times in some cases though. |
16:00:12 | FromDiscord | <treeform> Yes. I think the main problem is that `t: var Thread` it strange that it works some times though. |
16:17:49 | * | dcmertens quit (Ping timeout: 265 seconds) |
16:19:51 | * | Perkol joined #nim |
16:20:14 | * | icebattle joined #nim |
16:24:44 | disruptek | Araq: the issue is that we are missing a move, so we get two destroys. |
16:26:15 | disruptek | i think probably temp vars in loops need extra logic. |
16:27:07 | Araq | kodkuce: soon (TM) |
16:27:56 | disruptek | i guess i'm just not yet convinced that we can always choose the right behavior without input from the user. |
16:34:30 | * | theelous3 joined #nim |
16:40:51 | * | Hideki_ joined #nim |
16:44:02 | * | icebattle quit (Ping timeout: 240 seconds) |
16:45:33 | * | Hideki_ quit (Ping timeout: 268 seconds) |
16:50:10 | * | icebattle joined #nim |
16:56:02 | * | dcmertens joined #nim |
17:05:05 | * | icebattle quit (Ping timeout: 258 seconds) |
17:05:48 | Zevv | how would I call deallocShared from C codegen, now the symbol is mangled |
17:06:13 | leorize | Araq: there is a fair amount of third party code using Exception as a base, so if --exception:goto crash on Defect, all those third party code will no longer work correctly |
17:06:47 | leorize | Zevv? |
17:07:23 | * | ltriant joined #nim |
17:07:26 | disruptek | can't we say that iterator yields that aren't vars are lents? |
17:08:09 | * | floppydh quit (Quit: WeeChat 2.6) |
17:09:02 | * | nsf quit (Quit: WeeChat 2.7) |
17:12:26 | * | ltriant quit (Ping timeout: 265 seconds) |
17:13:29 | disruptek | a defect is a crash. the old behavior was a mistake, but at least it's one that isn't ambiguous to fix. |
17:14:29 | leorize | yea, but people wouldn't expect so when they inherit from Exception |
17:14:39 | leorize | it wasn't based on Defect before |
17:14:55 | leorize | guess we should put a deprecation notice on Exception? |
17:15:20 | * | dcmertens quit (Ping timeout: 265 seconds) |
17:15:25 | disruptek | just fix the docs. |
17:16:11 | leorize | old code won't fix itself |
17:16:27 | leorize | need actual big notice to inform people |
17:16:43 | leorize | https://forum.nim-lang.org/t/5734#35919 |
17:16:43 | disruptek | you need new compilers to break old code, though. |
17:17:02 | leorize | yea, but better a message than silent behavior change |
17:17:04 | disruptek | gate the compiler behind a big red switch that says, "I RTFM" |
17:17:09 | leorize | good for the devs |
17:17:23 | disruptek | it's job security for the 3 people employed to write nim. |
17:25:51 | * | Perkol quit (Quit: Leaving) |
17:26:55 | disruptek | mind my heart, people; mind my heart. |
17:27:34 | disruptek | Zevv: tell me again why shared-ci is a bad idea. |
17:28:06 | Zevv | who me what why? |
17:28:46 | disruptek | i wanna do ci across the whole ecosystem. |
17:29:01 | Zevv | and is that bad? |
17:29:09 | disruptek | change my mind. |
17:29:14 | disruptek | need devil's advocate. |
17:29:34 | leorize | ci across the whole ecosystem? |
17:29:34 | disruptek | i wouldn't turn down a couple devils, too, know what i'm sayin'? |
17:29:41 | leorize | what does that mean? |
17:29:42 | kungtotte | disruptek: you mean packages in nimble etc. too? |
17:29:47 | disruptek | everything. |
17:29:51 | disruptek | anything in git. |
17:29:55 | Zevv | e-ve-ry-thing |
17:30:00 | Zevv | 100% code coverage |
17:30:04 | disruptek | yeah. |
17:30:04 | Zevv | on all architectures |
17:30:07 | disruptek | right. |
17:30:11 | Zevv | and all possible combinations of compiler flags |
17:30:17 | disruptek | no. |
17:30:28 | disruptek | you get whatever is in the environment. |
17:30:29 | Zevv | so one CI run in, let's say, 1240 years, should be feasible |
17:30:46 | Zevv | yeah but you want to test it all. So you test it all with the GC and all with arc |
17:30:54 | kungtotte | The problem with nimble is that the packages aren't all hosted in the same place, so you'd have a hefty cost of pulling down each package from at least three different sources (github, gitlab, sourcehut) to chuck it into CI |
17:31:00 | Zevv | you test it all with i386 and amd64 and arm and mips and arm and h8 and powerpc |
17:31:11 | Zevv | with -d:useMalloc and without |
17:31:19 | Zevv | combinatorial explosion, BOOM, you're dead |
17:31:20 | Zevv | bad idea |
17:31:21 | disruptek | you only need to test it for one compiler combination, though. |
17:31:36 | disruptek | ok, here's the key concept: |
17:31:37 | Zevv | https://i.imgur.com/vV39zSv.gif |
17:31:42 | disruptek | you only test with members of the network. |
17:31:46 | disruptek | you save all the results. |
17:32:18 | disruptek | you only test what you can: if no one has nim-0.17 in the test pool, you won't get results for it. |
17:37:00 | Zevv | ah *that* project |
17:38:04 | disruptek | i can think of lots of issues, but they all have simple solutions. |
17:38:11 | * | Hideki_ joined #nim |
17:39:18 | Zevv | so basically you test and your results get stored somewhere |
17:39:28 | Zevv | and then what |
17:40:00 | disruptek | then whenever you trigger a test, the network fills any holes with heat. |
17:40:31 | disruptek | there could be a currency, but it's not critical. just for tuning purposes. |
17:40:56 | Zevv | what problem are you trying to solve here |
17:41:41 | disruptek | i believe we have the space to store permutations, the processor to spend on it. i think the data could be useful. |
17:42:11 | Zevv | but what data are we talking abou? tests failed/succeeded? |
17:42:27 | * | onionhammer quit (Ping timeout: 260 seconds) |
17:42:28 | disruptek | sure, what would you like to know? |
17:42:29 | Zevv | thus my question, what is the problem you're trying to solve |
17:42:31 | leorize | disruptek: how are you gonna host this CI? |
17:42:53 | * | Hideki_ quit (Ping timeout: 265 seconds) |
17:43:06 | disruptek | p2p of daemons run on desktops, maybe a small number of cloud supernodes. |
17:43:45 | Zevv | answer my queston |
17:43:46 | disruptek | it's not so much about what problem we're solving. |
17:45:15 | disruptek | it's about whether we can provide an amplifying value to a nim user. |
17:46:01 | disruptek | knowing what software you need to support and what software you don't seems like pretty useful information to me. |
17:47:01 | kungtotte | What's the value added for me though, as a user? When I look at new nimble packages I look at whether or not their build passes and what Nim version they target as minimum. |
17:47:05 | Zevv | to be honest: it sounds a bit ambitious, and given the limited engineering resources in the Nim community - yes, also talking to you disruptek - I feel the time is better spent on fixing things that need fixing now |
17:47:25 | disruptek | what needs fixing now? |
17:48:14 | * | drewr quit (Quit: ERC (IRC client for Emacs 26.3)) |
17:48:17 | kungtotte | I write code that tries to be platform agnostic, I can cross compile binaries for some platforms, but outside of that I release my code under GPL and leave it up to people to build it themselves. |
17:49:06 | Zevv | disruptek: that probably depends on who you ask. There is 1,464 open issues, I'm sure there are a few that can be picked up. |
17:49:07 | disruptek | right, but when someone comes along who wants to get your code to build on their device, they can ask the network and find out which commit broke it. |
17:49:44 | kungtotte | Wouldn't they just start with the build errors and fix those? What if it never built on their platform? |
17:50:21 | disruptek | yes, in the absence of other data, that's what they'd do. |
17:50:57 | disruptek | Zevv: there have been 1200-1400 issues ever since i started following nim. |
17:51:08 | Zevv | so, what are you waiting for then! |
17:51:20 | disruptek | there have also been about 200 new stars. |
17:51:24 | Zevv | three a day and you're done in about a year! :) |
17:51:25 | disruptek | and the same 300 watchers. |
17:51:57 | Zevv | I do get the gist of what you're saying, but I'm simply not sure if it is worth the effort. |
17:52:02 | kungtotte | So you want a db of what commits they can revert to in order to get their package(s) to build, so they can run multiple outdated packages on their chosen platform instead of fixing build errors manually? |
17:52:12 | Zevv | if a CI job breaks, it should simple report a broken build. |
17:52:27 | Zevv | otherwise we are testing tens or hundreds of builds, the data goes into the cloud, and noone might ever look at it |
17:52:39 | Zevv | personally I'd rather see golden running |
17:52:51 | disruptek | this is part of that. |
17:52:56 | Zevv | I'd like a nice graph of the build time, memory and I/O usage of building all nim revisions of the last year |
17:53:12 | disruptek | we wouldn't run ci the way it's run now in the cloud. |
17:53:21 | disruptek | we would run it in the environment of a real user. |
17:53:39 | disruptek | that's the idea. the daemon serves as a node in a ci farm where other users are participants. |
17:54:02 | disruptek | golden can serve as the local database. |
17:54:40 | * | drewr joined #nim |
17:57:00 | Zevv | yeah but if you run it on different machines, time and performance statistics are worthless anyway |
17:57:27 | Zevv | or you can help me clean up the allocators so we can get to 0 overhead |
17:57:31 | disruptek | sure, but arguing that some of the data will be valueless in some cases is not a very good argument against the value of the remaining data. |
17:57:34 | Zevv | because I'm stuck in the mud |
17:57:46 | disruptek | are you? |
17:58:07 | Zevv | a bit |
17:58:17 | Zevv | but still, these are my arguments why it is a bad idea. Are those good enough? |
17:58:41 | * | Trustable joined #nim |
17:58:43 | disruptek | here's the thing. |
17:58:51 | disruptek | ~motd |
17:58:52 | disbot | motd: 11do a lot of people choose a language for the wrong reasons? -- disruptek |
17:59:06 | FromGitter | <alehander92> what is motd |
17:59:07 | disruptek | nim isn't winning, and it's not because it's technically inferior. |
17:59:17 | FromDiscord | <Rika> that's one long day |
17:59:19 | disruptek | so... 1464 issues. poof. |
17:59:39 | FromGitter | <alehander92> i really think its mostly about shiny tools/libs |
17:59:40 | disruptek | ~motd is nim isn't winning, and it's not because it's technically inferior. |
17:59:41 | disbot | motd: 11nim isn't winning, and it's not because it's technically inferior. |
17:59:48 | FromGitter | <alehander92> but very debatable |
18:00:19 | Zevv | it's also largely about being lucky. Tons of things in life are good and don't make it, ton's of things suck and people use it. |
18:00:37 | disruptek | but is that due to luck, really? |
18:00:48 | disruptek | butterfly wings? |
18:00:58 | Zevv | and people are stupid |
18:01:00 | Zevv | that also |
18:01:26 | FromGitter | <alehander92> i really dont think its because of the last reason |
18:01:29 | disruptek | when do you reach the event horizon where luck is so integral to your success that you give up trying to influence outcome? |
18:01:33 | FromGitter | <alehander92> there is good competition |
18:01:45 | kungtotte | The primary non-superficial reason I've seen for not using nim is library availability, at least since it hit 1.0. Prior to that some cited that as the other main reason. |
18:02:17 | * | abm joined #nim |
18:02:22 | disruptek | i dunno, i don't remember reading that in the last community surveys. |
18:03:52 | Zevv | people are stupid, trust me. It is hard to think for yourself, it is easy to follow others |
18:04:24 | Zevv | so if X gets a head start, it has a higher chance of more followers so it grows bigger |
18:05:03 | Zevv | I dare guess the nim community also has a high percentage of fans of unpopular music |
18:05:07 | Zevv | to just pick one thing |
18:06:12 | disruptek | you think that the idea of focussing on developer experience is misplaced because the problem of momentum is self-righting? |
18:06:44 | Zevv | no, but persevering might help. Also it seems that the communities #1 issue is still documentation |
18:06:47 | Zevv | fair enough |
18:07:11 | Zevv | I'm not sure how many people who filled in the recent polls checked the lack of distributed CI as a acute problem |
18:07:30 | disruptek | again, it's not problem. it's opportunity. |
18:07:53 | Zevv | again, if you feel you want to spent time to help Nim and the community, put the bandages where it hurts |
18:08:13 | disruptek | and where is that? |
18:08:16 | disruptek | documentation? |
18:08:19 | Zevv | documentation! |
18:08:36 | Zevv | also, remember, I'm still sitting on the "bad idea" chair here, right |
18:08:42 | Zevv | tell me when I need to get off |
18:08:46 | disruptek | lol |
18:08:52 | disruptek | how very diplomatic. |
18:09:00 | Zevv | you asked me to. I enjoy that role usually |
18:09:10 | disruptek | yeah, it's fun. |
18:09:29 | disruptek | i mean, don't disagree wrt documentation. |
18:12:04 | disruptek | it's hard to get excited about docs. |
18:12:23 | disruptek | i'm really trying, but i just don't see that as a major story that sells newspapers. |
18:12:41 | Zevv | it's the top complaint I understood |
18:14:50 | * | jax joined #nim |
18:15:05 | jax | hi |
18:15:12 | Zevv | hey jax |
18:15:13 | * | drewr quit (Quit: ERC (IRC client for Emacs 26.3)) |
18:15:25 | jax | Zevv How are you ? |
18:15:31 | disruptek | we could do better, especially if we put some work into the generator. maybe we can connect the footnotes data into the docs system for tagging, etc. |
18:15:34 | Zevv | fine thanks :) |
18:15:51 | * | drewr joined #nim |
18:15:52 | Zevv | disruptek: imagine compiling nimsuggest to js and use that to navigate the docs |
18:15:58 | jax | Superb ! |
18:16:06 | jax | Is it better to put cordova.js at the end of the body or inside head ? |
18:16:25 | disruptek | Zevv: wow, that's an awesome idea. |
18:16:37 | jax | Why Nim is better than D ? |
18:16:49 | Zevv | jax, I don't know. Is it? |
18:18:00 | jax | D as not stable Gui |
18:20:02 | disruptek | hmm, zevv, this idea has some serious legs. |
18:20:23 | jax | or better |
18:20:33 | jax | compile nim to ruby |
18:21:00 | jax | any solution to kill Python is welcome |
18:21:12 | Zevv | disruptek: I bet Robert Crumb would agree |
18:34:44 | jax | OOP distroy my life. Forget OOP. |
18:36:58 | disruptek | so we use nimsuggest to generate some json that catalogs symbols, constructs, etc. |
18:38:40 | disruptek | then we have a program with a macro that slurps the json and turns it into nim. we compile this program to js backend; now we have tight native js. we smarten runnableExamples: with these js functions. then we just write more runnableExamples that link all over stdlib. |
18:39:02 | Zevv | but does that make better documentation, though? |
18:39:12 | Zevv | Because what I think is needed is good prose |
18:39:28 | disruptek | well, it was /your/ suggestion. |
18:39:28 | Zevv | the runnableexamples are usually terse and crappy |
18:39:35 | Zevv | I'm just rambling |
18:39:45 | disruptek | hmm. |
18:40:17 | disruptek | so you think we need more words. |
18:40:37 | Zevv | I usually hate writing documentation. Every now and then I get in a flow where suddenly I can write, and then I lose the motivation again. |
18:40:46 | Zevv | like that nim-memory writup thingy |
18:40:53 | Zevv | never finished it |
18:40:59 | disruptek | yeah, i remember that. |
18:41:10 | disruptek | it's linked somewhere, though, isn't it? |
18:41:16 | disruptek | i think it is. |
18:41:42 | kungtotte | 100% the docs need better prose and examples. |
18:42:08 | Zevv | it's on the nim 'learn' pag |
18:42:28 | disruptek | the program can just take some of the output of nimsuggest; it doesn't need a separate step. we just build it into the compiler. whatever. |
18:42:53 | FromGitter | <alehander92> Zevv unpopular music isn't really related to smartness |
18:43:06 | Zevv | ok, that was bad phrasing. |
18:43:15 | FromGitter | <alehander92> i did listen to very unpopular music and i did think this makes me smart |
18:43:18 | disruptek | i dunno, i think it was a good example. |
18:43:19 | Zevv | but it's related to daring to think your own thoughts and make your own decisions |
18:43:36 | FromGitter | <alehander92> this is a spectrum of course |
18:43:42 | disruptek | he's really talking about different-drummer here. |
18:43:45 | FromGitter | <alehander92> its good to be able to do this |
18:44:09 | FromGitter | <alehander92> but its easy to go into the other extreme |
18:44:13 | Zevv | sure |
18:44:22 | disruptek | maybe it's really just a diversity of taste. |
18:44:28 | FromGitter | <alehander92> drumming is hard but it looks easier than the other hard things :P |
18:44:36 | disruptek | lol |
18:44:39 | FromDiscord | <Rika> OrderedTable key reordering when |
18:45:08 | disruptek | if there's sort, maybe. |
18:45:18 | FromGitter | <alehander92> i really think its about tools/libs: i remember so many cool hn posts about average sized shiny projects and so often you look and see "go" "rust" "python" |
18:45:33 | FromDiscord | <Rika> no i mean moving keys to ends of the table |
18:45:38 | FromGitter | <alehander92> and one just says "i am going to do a similar thing now" |
18:45:47 | FromDiscord | <Rika> i had to implement my own type just to add that |
18:45:52 | disruptek | you can only delete them and then add them again. |
18:46:12 | FromDiscord | <Rika> and if i want it at the start? ;; |
18:46:40 | disruptek | write a new orderedtable object, starting with unit X. |
18:47:16 | kungtotte | I programmed pretty much exclusively in Python before. I picked it up because it was easy to learn (syntax-wise), I kept using it because the stdlib had everything under the sun. Making something usable was always just a few imports and 10 lines of glue. |
18:47:19 | disruptek | as araq says, how could it be otherwise? |
18:47:28 | * | nixfreak joined #nim |
18:48:31 | FromDiscord | <Rika> disruptek i literally did |
18:48:50 | disruptek | because there is no alternative. |
18:48:58 | disruptek | araqlogic be like that sometime |
18:49:07 | FromDiscord | <Rika> is there a reason ordered table doesnt have it? |
18:49:15 | disruptek | what? |
18:49:17 | disruptek | logic? |
18:49:26 | disruptek | it has its own brand: |
18:49:28 | disruptek | araqlogic |
18:49:55 | disruptek | araqlogic isn't defined so much by what it is, |
18:50:00 | disruptek | it's more about what it isn't: |
18:50:00 | FromDiscord | <Rika> i mean the movetoend |
18:50:17 | disruptek | "well, it isn't /wrong/ ..." is the basic tenet. |
18:50:56 | disruptek | rika: you should pr that feature. i think it makes sense. |
18:51:46 | Araq | leorize, we don't map 'Defect' to quit(), we map sysFatal |
18:51:49 | FromDiscord | <Rika> I AINT TOUCHING SYSTEM/RTL NO WAY |
18:51:51 | disruptek | for that matter, it should have movetobeginning. |
18:52:32 | FromDiscord | <Rika> movetoend means either end (just like in python) but i agree a better name is needed |
18:52:36 | Araq | unfortunately, sysFatal vs Defect is not documented well enough I guess |
18:53:01 | FromDiscord | <Rika> is there a reason sysfatal and defect are separate? |
18:53:32 | disruptek | oktoberfest |
18:53:39 | Araq | yeah, if you do: if idx >= x.len: raise newException(IndexError) |
18:53:55 | Araq | then IndexError inherits from Defect but the compiler doesn't map the 'raise' to 'quit' |
18:54:52 | Araq | and if you do: assert idx < x.len |
18:55:13 | Araq | then the compiler compiles that to quit and doesn't assume your proc can raise |
18:55:33 | disruptek | oh, that's interesting. |
18:56:32 | disruptek | zevv doesn't think we have enough engineering resources to build something challenging. |
18:56:33 | FromGitter | <alehander92> sorry zevv |
18:56:48 | Zevv | about what? |
18:57:03 | disruptek | zevv 'bout to get kicked off the balcony. |
18:57:12 | FromGitter | <alehander92> i wanted to argue about music and offloaded |
18:57:23 | FromGitter | <alehander92> disruptek well resources are relative |
18:57:56 | disruptek | i don't know what to say to that. |
18:58:01 | disruptek | it seems like you want a reply, though. |
18:58:03 | leorize | Araq: yea it'd need more explaination |
18:58:07 | Zevv | alehander92 oh no problem :) |
18:58:58 | Zevv | bbl |
18:59:10 | disruptek | easy things... are they worth building? |
18:59:28 | disruptek | sure, but their value isn't great enough to afford real economy of scale. |
18:59:38 | disruptek | because they don't gather users. |
19:00:12 | disruptek | so more ambitious projects have a greater chance of success. |
19:00:25 | disruptek | until you overreach. |
19:00:41 | disruptek | so you have to convince me that it's an overreach. |
19:01:14 | Araq | why not help treeform with his awesome UI library that frees us from the browser dependence? |
19:01:27 | Araq | looks "worth building" to me |
19:01:45 | disruptek | i liked what i saw but i don't know it well. |
19:02:04 | FromGitter | <Varriount> UI Library? Where? |
19:02:15 | disruptek | !repo figet |
19:02:17 | disbot | https://github.com/sheng-z/figet -- 9figet: 11Fine-grained Entity Typing / Fine-grained Entity Classification 15 10⭐ 3🍴 7& 5 more... |
19:02:23 | disruptek | !repo fidget |
19:02:24 | disbot | https://github.com/treeform/fidget -- 9fidget: 11Figma based UI library for nim, with HTML and OpenGL backends. 15 67⭐ 4🍴 |
19:02:32 | disruptek | that one. |
19:03:03 | FromGitter | <Varriount> I like the sound of multiple backends |
19:05:06 | disruptek | i still like it, but it's not like there aren't tens of gui products in the ecosystem. |
19:05:16 | disruptek | why is this the thing worth building? |
19:07:06 | FromGitter | <Varriount> Something similar: https://sciter.com/ |
19:08:38 | * | pbb_ quit (Ping timeout: 245 seconds) |
19:08:48 | * | ltriant joined #nim |
19:09:30 | Araq | disruptek, because the traditional, native UIs are dead |
19:10:10 | Araq | I know it's sad, but it's what I've experienced myself. |
19:10:26 | disruptek | i'm okay with that. |
19:10:38 | Araq | if you develop a web based frontend, you only have to develop it once and it runs everywhere |
19:12:02 | disruptek | you don't need to convince me on the merits of the approach; i just don't know that it's the ambitious ux that sells. |
19:12:50 | * | ltriant quit (Ping timeout: 240 seconds) |
19:13:21 | FromGitter | <Varriount> Perhaps the better thing to do is go with the crowd and develop some integration with Electron, since that's what everyone else is using. |
19:13:53 | disruptek | it's like we're just guessing about what they want. |
19:13:57 | disruptek | we know what they want. |
19:14:04 | disruptek | they want a stable language with a great ux. |
19:14:50 | disruptek | worldwide ci means we can take greater risks than we would otherwise. it lets the language move more adeptly within the ecosystem. |
19:15:10 | disruptek | it gives people a peace-of-mind that they might not have otherwise. |
19:15:35 | * | marmotini_ quit (Remote host closed the connection) |
19:16:11 | * | marmotini_ joined #nim |
19:16:42 | Araq | Varriount: we have that, use Karax to get it |
19:17:23 | * | pbb joined #nim |
19:17:55 | Araq | it doesn't fit our user base well IMO, the JS based stuff will always be crappy and JS devs do not understand why they would ever need something like a macro system or a type system |
19:20:26 | * | marmotini_ quit (Ping timeout: 240 seconds) |
19:22:56 | leorize | they seem to be moving to typescript et al |
19:23:13 | leorize | not sure if just hype, but types is something they do care about |
19:23:19 | Araq | fair enough |
19:23:36 | disruptek | they just didn't know they wanted them. |
19:24:18 | leorize | to be fair a macro system was never something I ever pay attention into |
19:24:27 | leorize | until I saw those awesome DSLs :P |
19:24:46 | disruptek | i pay attention to it because c macros are such a nightmare. |
19:25:15 | leorize | I wrote free pascal :) I don't even have macros |
19:25:29 | leorize | it's a pain when I have to repeat code |
19:25:44 | rayman22201 | Counter point is typescript. Hard for Nim to complete there. Nim would need much better js code generation. Web asm is a better Target considering the current make up and desires of Nim community. Imo |
19:26:32 | disruptek | Zevv: you're right. we start with golden. get get test i/o working. then we integrate it with nimph and let you share data. |
19:27:15 | FromDiscord | <treeform> Araq, I get paid to work on Nim JS app full time. I love macros. I was a JS (CoffeeScript) dev before. |
19:27:50 | Araq | well congrats, NOW BLOG ABOUT IT! |
19:27:54 | Araq | please |
19:27:58 | disruptek | the few, the proud. |
19:28:16 | FromDiscord | <treeform> I am just saying don't throw us JS devs under the bus. |
19:28:48 | FromDiscord | <Rika> Ok, now blog about it |
19:29:10 | stefantalpalaru | "I love macros" - ah, to be young and foolish... |
19:29:25 | FromDiscord | <treeform> well I think I love templates more |
19:29:42 | FromDiscord | <treeform> nim templates are macros in other languages |
19:29:42 | FromDiscord | <Rika> I love writing macros. I hate reading macros by other people |
19:29:58 | FromDiscord | <Rika> I start crying blood when it's a huge macro |
19:30:20 | FromGitter | <Albus70007> can i get into the discord? ⏎ gitter is not really good imo |
19:30:39 | stefantalpalaru | IRC is the future |
19:30:55 | FromGitter | <Albus70007> X to `doubt` |
19:31:20 | disruptek | leorize: will you put coverage gutters into nim.nvim? i could provide any format you want. |
19:31:38 | FromDiscord | <treeform> Albus70007, https://discord.gg/nDafPz |
19:31:53 | leorize | disruptek: what is that? |
19:32:00 | disruptek | for test coverage reports. |
19:32:05 | FromGitter | <Albus70007> thx |
19:32:14 | disruptek | and/or results. |
19:32:21 | leorize | disruptek: is there anything in vimscript that already does this? |
19:32:24 | * | xet7 joined #nim |
19:32:37 | leorize | any vim plugin in particular |
19:32:39 | disruptek | leorize: i dunno; can it be your problem? 😁 |
19:33:09 | leorize | I consider supporting coverage out of nim.nvim scope, but I'll be happy to add nim support to existing tools :P |
19:33:29 | disruptek | cool, just let me know what the format is. |
19:40:29 | leorize | disruptek: do you have example for how this coverage displaying thingy would look like? |
19:40:44 | disruptek | no, you can make it work any way you want. |
19:41:04 | leorize | well what do you want the plugin to do? |
19:41:09 | leorize | like highlight some lines or smt? |
19:41:13 | disruptek | whatever you want to see wrt coverage and/or test results. yeah. |
19:41:37 | disruptek | gutter, probably. |
19:42:09 | leorize | this one looks the best afaict: https://github.com/ruanyl/coverage.vim |
19:44:24 | disruptek | so https://github.com/gotwarlost/istanbul/blob/master/coverage.json.md is my target format. |
19:44:30 | Araq | treeform: we don't remove the JS backend but it also receives little love currently |
19:44:52 | Araq | well I'm looking into right now because with my bugfixes something in there broke |
19:48:17 | nixfreak | I like using find and grep to search for strings and to compare to other files , but I was thinking about trying this out in nim , I I know I can list string by just using a for loop and echo the file but how can I search and compare strings found in the files ? |
19:48:29 | nixfreak | what should I be looking at it ? |
19:48:47 | disruptek | nre module? |
19:49:17 | nixfreak | also I would like to create an option menu to help others load a file |
19:50:06 | disruptek | !repo nim-prompt |
19:50:06 | disbot | https://github.com/icyphox/nicy -- 9nicy: 11:snowflake: a nice and icy ZSH prompt in Nim 15 120⭐ 7🍴 7& 2 more... |
19:50:08 | disruptek | no, not that one. |
19:50:12 | disruptek | !repo surf1b1rd/nim-prompt |
19:50:12 | disbot | no results 😢 |
19:50:24 | disruptek | !repo surf1nb1rd/nim-prompt |
19:50:24 | disbot | https://github.com/surf1nb1rd/nim-prompt -- 9nim-prompt: 11Building powerful interactive prompts in Nim, inspired by python-prompt-toolkit. 15 12⭐ 4🍴 |
19:56:03 | disruptek | so why is an implicit copy in arc merely a performance issue? |
19:56:38 | leorize | because if you don't want something to copy you can deny it? |
19:57:25 | leorize | if you remove the `=` proc by making one with {.error.}, then copying is no longer allowed |
19:57:41 | leorize | so yea, shouldn't affect more than just performance |
19:58:01 | disruptek | yes, but if you copy it, you could have a double free down the road. |
19:58:54 | leorize | then I guess the double free is the bug and not the copy? |
19:59:02 | leorize | I don't understand the issue much |
19:59:12 | disruptek | i mean, i don't know that i understand it either. |
19:59:30 | disruptek | the way i understand the code as it's written, the bug is clear. |
19:59:43 | disruptek | i just don't know if it's not a design decision. |
19:59:48 | leorize | do you have the example somewhere? |
20:00:00 | leorize | also, https://github.com/Jauler/vim-auto-gcov-marker <- might be something you'd be interested in |
20:00:16 | leorize | it supports gcov, which I believe is the more popular format |
20:00:41 | disruptek | coco didn't work for me. |
20:00:55 | disruptek | just, as an aside. |
20:01:18 | disruptek | so you wouldn't want it in that istanbul format? |
20:01:38 | disruptek | this is the problem i'm working on: #13102 |
20:01:40 | disbot | https://github.com/nim-lang/Nim/issues/13102 -- 3double free bug with arc, Result type, object refs, and iterators ; snippet at 12https://play.nim-lang.org/#ix=27kh |
20:02:19 | disruptek | we lift the var from interior of the loop, but this means that it's ambiguous as to whether the user destroys the var or we do. |
20:03:34 | Zevv | araq, how would I call deallocShared from the codegen, it is now mangled. Never been in that area before... |
20:04:05 | leorize | disruptek: I'm just finding prebuilt tools that might help you :P |
20:05:01 | leorize | apparantly all coverage plugins in vim is language-dependant, sans for some gcov/lcov based ones |
20:05:51 | disruptek | we could do the coverage on the c. i dunno if that is helpful. |
20:06:15 | leorize | if those plugins don't work well with nim file, let me know and give me the format that you consider the easiest to work with, I might consider adding this coverage display thing to nim.nvim |
20:06:44 | disruptek | okay, i'll try to document my play a little better. |
20:06:53 | disruptek | i did have something kinda working but it was pretty janky. |
20:07:42 | disruptek | test coverage is something i want. maybe i'm in the minority, though. |
20:09:57 | * | vsantana joined #nim |
20:16:38 | shashlick | 4 PRs on choosenim - appreciate some code reviews - https://github.com/dom96/choosenim/pulls |
20:18:28 | FromDiscord | <Recruit_main_70007> this installs latest version of nim x64-86? |
20:19:24 | * | jax quit (Remote host closed the connection) |
20:19:33 | disruptek | do we have a flags() test in the ast that is recursive? |
20:29:29 | disruptek | i think i finally get it. |
20:29:34 | disruptek | it's a cfg bug, i think. |
20:29:49 | disruptek | holy shit that was hard. |
20:29:55 | nixfreak | I like using find and grep to search for strings and to compare to other files , but I was thinking about trying this out in nim , I I know I can list string by just using a for loop and echo the file but how can I search and compare strings found in the files ? |
20:34:23 | * | krux02 quit (Remote host closed the connection) |
20:41:36 | * | nixfreak quit (Remote host closed the connection) |
20:47:32 | disruptek | when we =copy but we don't want to move the destructor, we need the copy to die a quiet death. no destroy. |
20:51:11 | disruptek | so how do we do that? make it fail for hasDestructor? |
20:53:55 | * | NimBot joined #nim |
21:02:05 | * | luis_ joined #nim |
21:02:05 | Araq | Zevv, make it a .compilerproc |
21:02:44 | luis_ | guys, how do I add instructions to build with ssl when building with nimble? |
21:03:15 | leorize | add -d:ssl to nim.cfg in your package |
21:03:26 | leorize | or --d:ssl to config.nims |
21:05:10 | * | xet7 quit (Remote host closed the connection) |
21:06:19 | * | xet7 joined #nim |
21:06:22 | luis_ | thanks leorize... nim.cfg should go on root or on src? |
21:06:31 | leorize | src |
21:06:39 | luis_ | thanks |
21:07:01 | FromDiscord | <kodkuce> i feel like i am retarded bee in this beehive |
21:07:03 | disruptek | no, put it in project.nim.cfg, please. |
21:07:26 | disruptek | pm expects to blow away nim.cfg from time to time. |
21:07:49 | luis_ | but it should be also on src? |
21:08:01 | disruptek | adjacent to project.nim, yes. |
21:09:10 | * | ltriant joined #nim |
21:09:45 | disruptek | ast flags are always propogated? or we trigger those ourselves? |
21:10:20 | disruptek | oh, i see. different names. |
21:10:50 | * | sschwarzer joined #nim |
21:14:25 | * | ltriant quit (Ping timeout: 268 seconds) |
21:15:20 | * | ltriant joined #nim |
21:16:24 | sschwarzer | Just saw that the "latest version" in the channel topic is given as "1.0.0". Let's upgrade. ;) |
21:16:54 | FromDiscord | <Recruit_main_70007> which one is it now? |
21:17:11 | sschwarzer | Recruit_main_70007: at least 1.0.4 |
21:17:51 | FromDiscord | <Recruit_main_70007> at least? |
21:18:12 | sschwarzer | In case I missed an announcement :) |
21:18:27 | sschwarzer | I checked the download page, it's version 1.0.4 |
21:18:59 | FromDiscord | <Recruit_main_70007> the one you download its 1.0.4, but this night builds or something are on 1.1.1, why? |
21:19:41 | leorize | dom96: can you update the latest version? |
21:19:42 | sschwarzer | Nim development versions are a mystery :) |
21:20:03 | leorize | Recruit_main_70007: meaning that the next major will be 1.1 :P |
21:20:07 | leorize | there used to be a proper versioning scheme |
21:20:21 | leorize | I don't know what happened to it though |
21:20:21 | * | donpdonp joined #nim |
21:20:46 | FromDiscord | <Recruit_main_70007> ok, thanks for the explanation |
21:20:49 | sschwarzer | leorize: So the next stable release has a _lower_ version number than the development release? ;-) |
21:21:18 | zedeus | Araq doesn't believe in virsion numbers |
21:21:22 | zedeus | version* |
21:21:37 | sschwarzer | dom96: thanks! |
21:21:50 | sschwarzer | zedeus: Apparently :-D |
21:22:01 | donpdonp | why is it that type Thing = name: string, let t = thing(); echo fmt("{t}"); works fine but type Thing = ref object does not? |
21:22:32 | donpdonp | (fails at the fmt statement) |
21:22:34 | zedeus | there's no default `$` for ref objects, deref it with [] |
21:23:11 | donpdonp | zedeus: well that was an easy fix. thanks! :) |
21:23:18 | leorize | !eval type Thing = name: string; let t = Thing(); echo fmt"{t[]}" |
21:23:21 | NimBot | Compile failed: /usercode/in.nim(1, 18) Error: invalid indentation |
21:24:11 | donpdonp | and how would i print the hex memory address of 't' ? |
21:25:42 | leorize | echo repr t |
21:25:49 | sschwarzer | donpdonp: If you're only interested in the hex address and not a specific format, you can use `repr(t)` |
21:26:16 | leorize | !eval echo repr RootRef() |
21:26:16 | donpdonp | that works great. thx leorize, sschwarzer |
21:26:19 | NimBot | ref 0x7f82bf0b2048 --> []↵ |
21:26:54 | sschwarzer | Oh, NimBot was faster than me :) |
21:27:04 | sschwarzer | Wanted to give an example |
21:32:39 | sschwarzer | Do I understand the Neovim website right that they're going to build an LSP client into the editor? |
21:32:54 | sschwarzer | Seems to be planned for 0.5 |
21:33:02 | leorize | maybe, not sure |
21:33:13 | leorize | probably would just be as an "integrated plugin" :P |
21:33:34 | leorize | I can benefit from the infrastructure added though :) |
21:33:44 | sschwarzer | leorize: For me it's completely fine if it's included in the release and works flawlessly. ;-) |
21:34:35 | sschwarzer | leorize: Having it a separate plugin (but included in the release) would also be better for modularity. |
21:35:52 | leorize | if I understand their goals right, they will also make async completion an integrated thing and I'll no longer have to depend on third parties like asyncomplete.vim (it's great but less deps/config is good in plugin making) |
21:36:05 | sschwarzer | leorize: yep |
21:41:33 | * | narimiran quit (Ping timeout: 268 seconds) |
21:44:38 | * | luis_ quit (Quit: luis_) |
21:45:11 | * | luis_ joined #nim |
21:46:21 | sschwarzer | Who of you is going to Fosdem? |
21:49:33 | * | luis_ quit (Client Quit) |
21:49:59 | * | dom96 is |
21:50:03 | * | luis_ joined #nim |
21:52:41 | sschwarzer | Araq too? |
21:52:46 | FromDiscord | <mratsim> I |
21:52:57 | FromDiscord | <mratsim> and most of the Status team as well |
21:55:11 | FromDiscord | <Recruit_main_70007> Fosdem? |
21:55:34 | sschwarzer | https://fosdem.org/2020 |
21:55:51 | dom96 | mratsim: who's coming from Status? |
21:56:25 | leorize[m] | https://fosdem.org/2020/schedule/track/minimalistic_experimental_and_emerging_languages/ |
21:57:02 | leorize[m] | over an hour of nim talks, nice |
21:57:16 | sschwarzer | leorize: nice indeed |
21:57:32 | FromDiscord | <Recruit_main_70007> is it being streamed or recorded? |
21:57:34 | sschwarzer | I guess I'm too lazy to come ;-/ |
21:57:52 | sschwarzer | I'm surprised to see a talk on Forth :) |
21:58:46 | leorize[m] | Recuit_main_70007: both |
21:58:54 | * | Trustable quit (Remote host closed the connection) |
21:59:23 | FromDiscord | <Recruit_main_70007> then somebody @ me when they do |
21:59:34 | FromDiscord | <Recruit_main_70007> nvm, all of them are in school time |
21:59:40 | sschwarzer | Ok, Araq will be there. He's giving a talk. :) |
21:59:48 | FromDiscord | <Recruit_main_70007> oh 🙂 |
22:00:56 | * | vesper joined #nim |
22:01:33 | FromDiscord | <Recruit_main_70007> i have been wondering how complex can you get OOP in Nim, is there a good example of that? |
22:01:43 | * | vesper11 quit (Ping timeout: 260 seconds) |
22:04:39 | sschwarzer | Maybe I'll be there in 2021 :) |
22:08:37 | FromGitter | <alehander92> i wanted to go |
22:08:48 | FromGitter | <alehander92> but this year there is more important stuff <3 |
22:09:03 | FromGitter | <alehander92> hope there ae videos tho |
22:10:05 | salotz[m] | that likes an awesome track |
22:10:11 | salotz[m] | I was wondering if XL was still alive |
22:12:54 | * | livcd quit (Ping timeout: 258 seconds) |
22:13:15 | sschwarzer | .oO(Why am I checking hotel and train prices now?) |
22:13:32 | * | livcd joined #nim |
22:18:12 | * | sschwarzer quit (Quit: leaving) |
22:26:47 | FromDiscord | <mratsim> @dom96 I think everyone in Europe |
22:27:29 | FromDiscord | <treeform> sschwarzer, ill try to be there |
22:29:53 | * | neceve quit (Read error: Connection reset by peer) |
22:37:59 | luis_ | What is your opinion on the V language? It is so similar to nim, whats is its purpose? |
22:38:22 | disruptek | to dupe unwarey travelers. |
22:38:30 | disruptek | so to speak. |
22:39:31 | * | ltriant quit (Ping timeout: 268 seconds) |
22:42:02 | leorize | V has shown us the power of marketing :P |
22:42:30 | * | ltriant joined #nim |
22:42:41 | luis_ | leroize: why so? is it popular? Just heard of it today... |
22:42:50 | lqdev[m] | marketing aside, yeah it's a programming language. it has nothing special about it, which is why I don't use it. |
22:43:39 | luis_ | Hey, are there plans for memory safety without GC in Nim? like rust or something equivalent? |
22:43:54 | leorize | luis_: it was a hit on HN sometime ago, promising things that sound unrealistic |
22:44:08 | leorize | like a C translator that can translate sqlite, doom |
22:44:17 | leorize | and all the buzzword features |
22:44:38 | luis_ | oh, ok |
22:44:42 | leorize | without a single release, amassed over $600 dollars on patreon |
22:44:49 | disruptek | ~arc |
22:44:50 | disbot | arc: 11a new memory manager for Nim; see https://forum.nim-lang.org/t/5734 -- disruptek |
22:44:52 | lqdev[m] | luis_: well, V's story is quite an interesting one. it all started with vlang.io, and the promises Medvednikov made here. he set a deadline for the release, and over time the language gained on popularity. then the deadline was moved at least twice, until it was finally shipped as a buggy, unfinished mess |
22:45:31 | leorize | it promised that it could compile 1M lines in 0.9 sec iirc |
22:45:47 | leorize | on release they added a ton of asterisks onto their claims |
22:45:48 | lqdev[m] | right now it's quite stable but just by looking at its changelogs I'm kind of afraid that the developers really don't know what a compiler should be responsible for |
22:46:16 | disruptek | it's a moving target. |
22:46:24 | lqdev[m] | leorize: yeah, that too. some time before release the author just added these "wip" plaques everywhere |
22:46:36 | luis_ | wow |
22:46:52 | Araq | luis_: "memory safety without GC" doesn't mean all that much |
22:47:16 | Araq | in Rust you frequently have to use refcounting instead |
22:47:37 | Araq | Nim is getting something similar with --gc:arc |
22:47:54 | luis_ | Araq: thanks, I understand little of the underpinnings... Arc seems interesting... |
22:49:38 | lqdev[m] | imo V is just another language. a language that inherits its features from the most popular languages today. it feeds on buzzwords like "fast compilation", "no GC", "generics", "monads", "no null", etc. but we're yet to see what will come out of it |
22:54:45 | FromDiscord | <gingerBill> V originally started out as pretty much fraudulent vaporware. |
22:55:05 | FromDiscord | <gingerBill> Claiming some many things, which contradicted each other without any proof. |
22:55:14 | FromDiscord | <gingerBill> Some of the claims were impossible too. |
22:55:34 | FromDiscord | <gingerBill> I don't think it was actually malicious, per se, just naïve. |
22:56:12 | FromDiscord | <gingerBill> He added the WIP symbols after I said none of it added up and he was pretty much lying. |
22:56:50 | FromDiscord | <gingerBill> The compiler has only recently got an AST, because he didn't know what one was or what it was for. |
22:57:23 | FromDiscord | <gingerBill> Well, I say no AST, it must had some forms but he kept advertising "no AST". |
22:57:34 | disruptek | ast is the biggest part of toast. |
22:58:22 | FromDiscord | <gingerBill> Hahahaha |
22:58:29 | disruptek | i mean, its been measured in toast everywhere. |
22:59:06 | FromDiscord | <gingerBill> I'm just kind of sad that so many people have been fooled by the claims, even the ones that make no sense. |
22:59:23 | disruptek | well, it came out on april 1st, too, which didn't help. |
22:59:29 | disruptek | er, it was announced then. |
22:59:39 | Araq | luis_: original Pascal from the 70ies was "memory safe without a GC" (ok, ok, you have to remove 'case in records' for this to get it, not a big deal) |
23:00:32 | FromDiscord | <gingerBill> It was announced well before that. |
23:01:16 | FromDiscord | <gingerBill> Someone even made a website as a reference to my infamous GitHub issue on the V GitHub: http://issue35.com |
23:01:40 | disruptek | you must have a lot of time on your hands. |
23:02:24 | FromDiscord | <gingerBill> I didn't write that website |
23:02:41 | luis_ | haha |
23:02:48 | FromDiscord | <gingerBill> https://github.com/vlang/v/issues/35 |
23:02:51 | disbot | ➥ This language is not as advertised ; snippet at 12https://play.nim-lang.org/#ix=27la |
23:04:05 | luis_ | which linter you recommend? nimfmt? |
23:04:20 | luis_ | I am looking for an auto fixer.... |
23:04:56 | Araq | there is nimpretty |
23:05:08 | FromDiscord | <gingerBill> nimpretty is good |
23:07:43 | * | ptdel joined #nim |
23:09:33 | * | livcd quit (Remote host closed the connection) |
23:09:44 | * | natrys quit (Ping timeout: 268 seconds) |
23:10:04 | FromDiscord | <gingerBill> Minor question about Nim, why are identifiers and keywords case/style insensitive? I have read the official argument but it's a little confusing to me as to why that's at the language level and not the IDE level. It seems more like an argument to up the game of IDEs. Don't get me wrong, if you wanted that, the rule seems good enough. |
23:10:21 | FromDiscord | <gingerBill> Maybe I does need to be at both levels. |
23:10:28 | leorize | keywords are not style insensitive :P |
23:10:43 | leorize | !eval DISCARD "hello" |
23:10:45 | NimBot | Compile failed: /usercode/in.nim(1, 1) Error: undeclared identifier: 'DISCARD' |
23:10:57 | rayman22201 | personal goal for this week: Make time to work on arc async |
23:11:10 | FromDiscord | <gingerBill> notin = notIn = not_in |
23:11:20 | FromDiscord | <gingerBill> That is mostly style insensitive |
23:11:27 | FromDiscord | <gingerBill> Except for the first letter |
23:11:28 | leorize | notin is not a keyword :P |
23:11:28 | disruptek | rayman22201: this iterator issue needs fixing first. |
23:11:35 | rayman22201 | Question, are you THE gingerBill? as in Odin Ginger Bill? |
23:11:38 | blackbeard420 | WOW 4 nim talks at FOSSDEM! awesome! |
23:11:39 | disruptek | then async might magically work. |
23:11:43 | leorize | !eval dISCARD "hello" |
23:11:46 | NimBot | <no output> |
23:11:50 | dom96 | !eval dIScArD "hello" |
23:11:54 | NimBot | <no output> |
23:12:02 | dom96 | keywords are not special |
23:12:08 | leorize | damn, now I'll have to implement this matching style for the entirety of nim.nvim ==" |
23:12:28 | leorize | or I'll just leave it as it and hope that no one ever try to write code like that |
23:12:30 | FromDiscord | <gingerBill> rayman22201: I am. |
23:12:49 | rayman22201 | awesome. I'm a big fan :-) |
23:13:00 | FromDiscord | <gingerBill> Thank you. |
23:13:08 | FromDiscord | <gingerBill> Nim is a great language too! |
23:13:36 | FromDiscord | <gingerBill> The Pascal family makes me feel at home. |
23:13:53 | leorize | well I think style-insensitivity was introduced so Araq don't have to write snake_case :P |
23:14:15 | leorize | I believe at first it was fully case-insensitive like pascal |
23:14:36 | rayman22201 | The style-insensitivity is very much rooted in Araq's personal tastes. |
23:14:43 | leorize | then the typeA: TypeA pattern was too popular that the "first char case-sensitive" rule was introduced |
23:14:59 | rayman22201 | @disruptek what iterator issue? |
23:15:14 | leorize | the first character rule wasn't Araq :P |
23:15:17 | FromDiscord | <treeform> dom96, I replied to your font issue. Fonts are complex bests. |
23:15:18 | FromDiscord | <gingerBill> It clearly a personal taste thing. Personally, I'm not a fan but it's only a minor thing. |
23:15:20 | leorize | the community requested it iirc |
23:15:25 | FromDiscord | <gingerBill> Ah.... |
23:15:44 | leorize | there used to be a --cs (case-sensitivity) switch |
23:15:51 | FromDiscord | <gingerBill> I was wondering about the first letter thing. |
23:15:51 | Araq | in retrospect we could as well have gone for full CS when we did the switch |
23:16:16 | disruptek | rayman22201: yielding a var from enclosing scope causes it not to move (fine) but also to get a destructor run twice (not fine). |
23:16:42 | Araq | but now we have --styleCheck:error to please most people who complained |
23:16:45 | FromDiscord | <treeform> I think nim does gets a ton of flack for "style-insensitivity" but after using the language its not a problem. |
23:16:53 | leorize | https://forum.nim-lang.org/t/191 |
23:16:59 | rayman22201 | @disruptek oh yikes. That is indeed no good. |
23:17:02 | leorize | history :) |
23:17:23 | disruptek | i think the insensitivity is more useful than it is problematic, so it's a no-brainer. |
23:17:56 | rayman22201 | maybe I'm glad I haven't had time to do anything lol. I'm giving Araq more time to stabilize arc :-P |
23:18:10 | FromDiscord | <gingerBill> I don't think it would be much of a problem in practice, just a little queer to see in a "contemporary" language. |
23:18:27 | * | luis_ quit (Ping timeout: 260 seconds) |
23:18:43 | * | solitudesf- quit (Ping timeout: 260 seconds) |
23:18:52 | FromDiscord | <treeform> @gingerBill what are your thoughts on Bel language? http://www.paulgraham.com/bel.html |
23:19:33 | leorize | be happy that this rule never made it to the lang: |
23:19:36 | leorize | That said, I'm not that happy with --cs:partial. I'd like to further distinguish FULLCAPS from fullcaps for better C interop. (And I really want --cs:none when hacking debugging code into the compiler or working in a REPL. ;-) ) |
23:19:43 | leorize | ^ that's a quote from Araq :P |
23:20:04 | leorize | https://forum.nim-lang.org/t/523#2798 |
23:20:27 | disruptek | araqlogic |
23:20:42 | Araq | hey, old quotes don't count |
23:20:59 | leorize | also this is the start of style-insensitivity :) https://forum.nim-lang.org/t/528 |
23:21:08 | * | oculuxe quit (Ping timeout: 245 seconds) |
23:21:09 | Araq | I'm not sure I still have the same opinion now |
23:21:14 | FromDiscord | <gingerBill> @treeform not a huge LISP fan. But looks interesting. |
23:21:47 | FromGitter | <zetashift> oh nice the gingerbill from odin fame :O, I like your work! |
23:22:08 | FromDiscord | <Recruit_main_70007> I would also like cs none, but as default,because i would be too lazy to use it, but it’s not harmful, but maybe a bit useless. |
23:22:10 | * | oculux joined #nim |
23:22:14 | FromDiscord | <gingerBill> I didn't realise I was that well known 😝 |
23:22:43 | FromDiscord | <treeform> @gingerBill why did you stop posting youtube vids about your language? |
23:23:22 | FromDiscord | <treeform> I remember jonathan blow did language vids, then you did them, then you stopped, but he did not. |
23:24:07 | FromDiscord | <gingerBill> Recording them requires a bit of time, that's all. |
23:24:18 | FromDiscord | <gingerBill> And I rarely have uninterrupted timem |
23:24:35 | FromDiscord | <treeform> Do you think you the vids don't give you the exposure you need? |
23:24:37 | FromDiscord | <gingerBill> So I don't think having to stop for a phone call or something is always great. |
23:25:02 | FromDiscord | <treeform> Like, "It's not worth it to make language vids because not enough people watch them?" |
23:25:05 | * | ltriant quit (Ping timeout: 265 seconds) |
23:25:40 | FromDiscord | <gingerBill> Maybe people watched them. Issue was most people wanted the written word instead |
23:26:00 | FromDiscord | <gingerBill> Even if sometimes that is a lot more time consuming in practice to consume. |
23:26:07 | FromDiscord | <treeform> Araq, was also on a roll with vids, but then he also stopped... vids are hard. |
23:26:14 | FromDiscord | <gingerBill> I guess people like to skim and go back to particular sections |
23:26:27 | * | voltist joined #nim |
23:26:40 | FromDiscord | <gingerBill> I might go back go some videos if I can. |
23:26:45 | Araq | actually I only need to upload my latest vid |
23:26:59 | FromDiscord | <treeform> Araq, doo ittt! |
23:27:03 | FromGitter | <zetashift> I don't know you from the vids but I checkout Odin from time to time |
23:28:01 | FromDiscord | <treeform> I only know gingerBill because his vids where recommended by youtube algo after jonathan blow vids. |
23:28:13 | FromDiscord | <gingerBill> Ha. Wonderful algorithm |
23:28:40 | FromDiscord | <gingerBill> Jai is an interesting language but I do worry about some aspects of it. |
23:29:14 | FromDiscord | <gingerBill> Mainly the type system and compile time execution. It's mainly a design thing more than anything. |
23:29:23 | FromDiscord | <treeform> Jai, appears very spartan in some aspects and then extremely deep in others. |
23:29:26 | FromDiscord | <Recruit_main_70007> Like not giving the community a compiler |
23:29:40 | FromDiscord | <gingerBill> I understand that bit. |
23:29:40 | disruptek | times are tough. |
23:30:17 | FromDiscord | <treeform> Will Jai be the next V? Super overhyped but does not deliver... |
23:30:23 | FromDiscord | <treeform> I hope not. |
23:30:23 | FromDiscord | <gingerBill> No |
23:30:29 | FromDiscord | <gingerBill> Jai has proof it works. |
23:30:40 | disruptek | yeah, jb knows what's up. |
23:30:44 | FromDiscord | <gingerBill> And Jon will deliver |
23:30:44 | FromDiscord | <treeform> But it has like x100 of V hype |
23:31:03 | FromDiscord | <gingerBill> But even he doesn't, the language was for him originally |
23:31:18 | FromDiscord | <gingerBill> It's made him more productive already |
23:31:25 | FromDiscord | <gingerBill> Which is wonderful! |
23:32:05 | FromDiscord | <gingerBill> Odin has made me productive too. |
23:32:18 | FromDiscord | <gingerBill> It has also spoilt me in what the type system offers. |
23:32:19 | FromDiscord | <Recruit_main_70007> But I don’t understand why can’t he give a compiler |
23:32:41 | FromDiscord | <gingerBill> Because he doesn't want to deal with all the requests and nonsense. |
23:32:46 | FromDiscord | <gingerBill> I completely understand. |
23:32:57 | FromDiscord | <treeform> I think it's because JB wants to ship a thing that is "ready"? |
23:33:02 | FromDiscord | <gingerBill> Yep |
23:33:13 | FromDiscord | <treeform> He has game shipping mentality. Ship once don't update often. |
23:33:24 | FromGitter | <zetashift> He's gonna be overrun with issues/feature requests |
23:33:33 | FromDiscord | <treeform> Which he said he will mostly ignore. |
23:34:03 | FromDiscord | <Recruit_main_70007> Just make it clear in a first place, and if he is developing a game engine on it, I would consider it as at least, functioning |
23:34:04 | FromDiscord | <gingerBill> I get a few feature requests all the time and I just have to say no. |
23:34:37 | FromDiscord | <gingerBill> I guess Nim used to get loads, but it's feature set is pretty good, especially the metaprogramming, that you can just add anything yourself. |
23:34:43 | FromDiscord | <gingerBill> *its |
23:34:48 | FromDiscord | <treeform> @gingerBill can you add a time rewinding debugger to Odin? |
23:35:12 | FromDiscord | <gingerBill> No |
23:35:19 | FromDiscord | <treeform> 👌 |
23:35:24 | FromDiscord | <Recruit_main_70007> See, simple XD |
23:36:58 | rayman22201 | Lol. Nim still gets lots of silly feature requests, even with it's awesome meta programming |
23:37:01 | FromDiscord | <gingerBill> I don't think I'm adding any new features any time soon if any. |
23:37:09 | FromDiscord | <Recruit_main_70007> Btw, I would need some references for metaprogramming and the most complex OOP you can reach in Nim, do you guys know something? |
23:37:19 | FromDiscord | <mratsim> I think it's because of, not even with 😛 |
23:37:32 | FromDiscord | <gingerBill> Most complex OOP? Why? |
23:37:37 | leorize | nim never advertised those meta programming stuff well :( |
23:37:39 | * | mmm_v_mmm joined #nim |
23:37:47 | FromDiscord | <mratsim> people don't usually do OOP in Nim |
23:38:28 | Araq | leorize: PRs for the website are accepted |
23:38:28 | FromDiscord | <Recruit_main_70007> I don’t know what’s its limit, also I am doing rl bots so OOP is rather necessary |
23:38:53 | leorize | maybe not |
23:38:57 | FromDiscord | <Recruit_main_70007> And I come from python and like OOP by nature |
23:38:57 | Araq | I don't know how to "advertise" anything I guess |
23:38:59 | leorize | the easier way is to just do it |
23:39:09 | FromDiscord | <mratsim> Closures can replace OOP |
23:39:28 | leorize | Araq: :P I'm terrible at marketing |
23:39:31 | FromDiscord | <mratsim> but basically you can have multidispatch if you want, which is quite rare |
23:39:55 | Araq | mratsim: we removed the 'multi' part |
23:40:03 | FromDiscord | <mratsim> it's still hidden |
23:40:03 | Araq | don't you remember? :P |
23:40:19 | FromDiscord | <Recruit_main_70007> Idk what any of those are 🙃, can you explain me? |
23:40:21 | FromDiscord | <mratsim> gimme VTable and i'll forget it :p |
23:40:23 | leorize | but I think people would rather see example of metaprogramming that make an actual difference than writing all those code by hand |
23:40:47 | leorize | Recruit_main_70007: short answer is try Nim :p |
23:40:49 | FromDiscord | <gingerBill> OOP is a dodgy term anyway. Usually people mean they want a vtable or normal methods or some form of subtyping. |
23:41:01 | FromDiscord | <gingerBill> And Nim supports these well |
23:41:10 | FromDiscord | <mratsim> I think Synthesis (a state machine generator) is a pretty nice example |
23:41:33 | FromDiscord | <gingerBill> Nim's UFCS means that most "methods" are not needed. |
23:42:27 | * | mmm_v_mmm quit (Ping timeout: 260 seconds) |
23:42:31 | FromDiscord | <Recruit_main_70007> Where can I find Synthesis? |
23:42:40 | leorize | !repo synthesis |
23:42:40 | disbot | https://github.com/mratsim/Synthesis -- 9Synthesis: 11Synthesis is a compiletime, procedure-based, low-overhead, no-allocation, state-machine generator optimized for communicating processes and threads 15 30⭐ 2🍴 7& 1 more... |
23:42:51 | leorize | here are some other examples: |
23:42:53 | leorize | !repo npeg |
23:42:54 | disbot | https://github.com/zevv/npeg -- 9npeg: 11PEGs for Nim, another take 15 82⭐ 4🍴 |
23:42:58 | leorize | !repo karax |
23:42:59 | disbot | https://github.com/pragmagic/karax -- 9karax: 11Karax. Single page applications for Nim. 15 473⭐ 41🍴 7& 11 more... |
23:43:03 | leorize | !repo patty |
23:43:04 | disbot | https://github.com/andreaferretti/patty -- 9patty: 11A pattern matching library for Nim 15 162⭐ 9🍴 |
23:43:21 | FromDiscord | <Recruit_main_70007> Thanks |
23:43:28 | leorize | !repo gara |
23:43:30 | disbot | https://github.com/alehander92/gara -- 9gara: 11 15 59⭐ 4🍴 |
23:43:37 | leorize | ^ patty is pretty much deprecated by this one :P |
23:47:02 | leorize | ~mcs is method call syntax, or UFCS in popular lingo; see https://nim-lang.org/docs/manual.html#procedures-method-call-syntax |
23:47:03 | disbot | mcs: 11method call syntax, or UFCS in popular lingo; see https://nim-lang.org/docs/manual.html#procedures-method-call-syntax |
23:53:19 | FromDiscord | <yewpad> There is this discussion about syntax skins for Nim and there was a pretty interesting proposal for those people who're having problems with figuring out where a block starts and ends. This proposal would look like this: https://imgur.com/PiIhbSC - Now, this is using comments and I think for readability purposes, this is actually pretty good. I need a second or third opinion regarding this style, whether or not you think this is discouraged |
23:55:36 | FromDiscord | <Recruit_main_70007> I still have my OOP question, Nim’s OOP is reduced to a type which might hold variables (some kind of __init__) and then functions that take that type as one of its arguments and does something, I guess it would be too big of a change, but will we ever see OOP as c++ does it? And if not, could I use a header file to make more advanced classes in Nim? |
23:57:42 | leorize | I don't know why you would need c++ style oop... |
23:58:19 | leorize | so what are you trying to do that require this "advanced" oop? |
23:58:23 | rayman22201 | I don't understand the question. Nim has oop. You have to be more specific about what features you are looking for. |
23:58:55 | leorize | they are writing a rocket league bot and they need oop |
23:59:08 | FromDiscord | <Recruit_main_70007> I just like it, and don’t know how would I do things like onelonecoder does without classes |
23:59:23 | leorize | also they came from python so the oop mentality is huge |
23:59:42 | rayman22201 | Regular oop in Nim should be sufficient |
23:59:45 | leorize | can you give us code example of what you're trying to achieve? |
23:59:52 | rayman22201 | Look at the tutorial on the website |