<<13-01-2020>>

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:09disruptek~motd
00:52:10disbot9motd: 11do a lot of people choose a language for the wrong reasons? -- 7disruptek
00:53:01*ptdel joined #nim
00:53:59*dcmertens joined #nim
00:54:24dcmertenshello, the executables installed by choosenim do not have the execute permission set
00:54:25dcmertensany ideas?
00:54:33disruptekadd the missing permissions.
00:55:53dcmertensdisruptek, well yes
00:55:59dcmertensbut it seems like a broken install to me
00:56:05disruptekyes, it does.
00:56:11dcmertensand I worry that executables in other directories would not have permissions
00:56:24dcmertensDo you know if there are there any other folders that may contain executables?
00:56:47disrupteki 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:09dcmertensdisruptek, thanks
00:57:17dcmertensnim -v works now. :-)
00:57:21disrupteknice.
01:21:10*demotomohiro joined #nim
01:24:53FromDiscord<treeform> Is there a mechanism in nim to monkey patch/override/replace/inject code deep into system modules like nativesockets?
01:25:16FromDiscord<treeform> When I search for nim monkey patch I get articles about the Ape named Nim LOL.
01:26:00disruptekwhat have you tried?
01:26:38disruptekanother argument in favor of weak refs.
01:26:57disruptekyou could preload, i guess.
01:27:09FromDiscord<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:01disruptekwhat 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:17disruptekit seems to me i may want to move stuff instead of sinking it, etc.
01:31:38FromDiscord<treeform> well it can't? So it uses the ref counting?
01:39:23disrupteksupposed to be automatic; the annotations are only supposed to aid optimization.
01:45:59FromDiscord<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:47FromDiscord<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:08disruptekbut... i/o.
01:48:35disrupteki think most of the time, fibers will be easier to reason about.
01:49:01FromDiscord<treeform> I though so too. The more I experiment with them the less I am convinced.
01:49:27disruptekwell, the monkey patch doesn't sound great to me, honestly.
01:50:11FromDiscord<treeform> With Fibers, you would not need to put Future[..] {.await.} ... async everywhere, but they will be practically equivalent to Async model.
01:50:26disrupteki 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:14disruptekso we can use nim to what-color-is-your-function.
01:51:25disruptekbut, we just let people color them their own way.
01:51:45disruptekin the same way that async works, fibers could work. via a layer over the language.
01:52:22FromDiscord<treeform> I am not sure its worth it. Async is probably already good enough.
01:52:28FromDiscord<treeform> But its neat to play around with
01:52:47disruptekdepends on the use-case, i think.
01:57:42FromDiscord<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:54disruptekexceptions in async are the main problem, imo.
01:59:07disrupteki don't think anyone wants to fix it, though.
01:59:44disruptekdepending on who you ask, it's "a feature working as intended" or "a feature working as implemented, and unfixable".
02:07:39FromDiscord<treeform> strange
02:08:04FromDiscord<treeform> what I did in my fiber lib, is when a fiber is created with spawn i grab the current stack trace
02:08:11FromDiscord<treeform> if a stack trace happens inside a fiber
02:08:28FromDiscord<treeform> I remove the fiber library gunk from the trace
02:08:37FromDiscord<treeform> and glue it to the trace that started the fiber
02:08:51FromDiscord<treeform> and comes out very clear exception traceback
02:10:11disruptekah, that makes sense.
02:10:34disruptekseems like that would work.
02:10:57FromDiscord<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:22disruptekright. have you tested this with goto yet?
02:11:35FromDiscord<treeform> no
02:11:39FromDiscord<treeform> nim has goto?
02:11:45disruptek--exceptions:goto
02:12:01FromDiscord<treeform> isn't that the default with --gc:arc ?
02:12:07disruptekyeah.
02:12:19FromDiscord<treeform> my fibers only support --gc:arc ... so yes?
02:12:46disrupteknice.
02:13:02FromDiscord<treeform> but not directly, real unit tests will be required
02:13:56disrupteki 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:48FromDiscord<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:07disruptekyeah, that's what i like about the design. it's simple.
02:30:22disruptekoh, move is permitted in arc.
02:30:44disruptekmove() is not merely performance-annotation.
02:31:13FromDiscord<treeform> You right, what-color-is-your-function is a problem with async code that fibers hopefully will not have.
02:31:41FromDiscord<treeform> That is the biggest issue they might solve.
02:31:54disruptekyes, well it's not a small issue. 😉
02:32:00FromDiscord<treeform> async stack traces could probably be solved
02:32:06*demotomohiro quit (Quit: Leaving)
02:32:24disruptekthose docs will help.
02:33:53disrupteki 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:51voltistWith 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:15FromGitter<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:32leorize@mratsim: ^
02:52:49leorizesilvernode: wrong channel :p
02:53:09FromGitter<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:02FromGitter<matrixbot> `silvernode` I even had Guitarix virtual amplifier working so I could have distortion
02:54:46FromGitter<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:10FromGitter<matrixbot> `silvernode` skrylar, yeah I noticed that about DNF, I blame the fact that dnf is Python
02:57:55FromGitter<matrixbot> `silvernode` If Windows 10 didn't have all that telemetry and adware I would say it's a pretty solid OS
02:59:27shashlickdisruptek, dcmertens: permissions issue is fixed, will be shipped in next minor release
02:59:41disrupteknice.
03:02:26shashlickBy the way, $NIMBLE_DIR works well
03:02:38shashlickThe problem is if a user uses the and line
03:02:51disruptekit works for me, but it's more work than it should be.
03:02:54shashlickNo way to tell so I cannot propagate it
03:03:02shashlickAnd = command
03:03:17disrupteki know.
03:03:18shashlickCfg and env auto propagate to child processes
03:03:27disruptekso this is exactly what env vars are for.
03:03:34disruptekpassing global state between executables.
03:03:41disruptekand yet, here we are, not doing it.
03:04:21disruptekit would be better if $NIMBLE_DIR didn't exist, simply because it'd make the whole thing simpler.
03:05:09shashlickThose two statements are opposites
03:05:26disruptekhow do you figure?
03:05:48disruptekif we didn't have $NIMBLE_DIR, i wouldn't need to worry about it.
03:07:20FromGitter<matrixbot> `silvernode` disruptek, added you to the project on Github
03:07:33disruptekcool.
03:08:02shashlickBut you just said env vars are good for it
03:08:17shashlickMore features are more headaches though
03:08:35disruptekthey 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:30disruptekboy, 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:01rockcaveraDestructors.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:32leorizewell it's a documentation for "advanced" ppl :P
04:32:51disruptekit's way better than just jumping into the code, let me tell you.
04:33:07disrupteki thought move was only an optimization.
04:33:14rockcaveraleorize unfortunately. Nothing democratic ;(
04:33:16disrupteknow the whole thing sounds more workable.
04:34:45disruptekthere are examples in there. maybe they were added more recently.
04:35:12rockcaveraEspecially 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:06rockcaveradisruptek I believe trite examples are more viable because they show that red is red.
04:36:37disrupteki agree that this isn't something nim frequently succeeds at in examples.
04:36:55rockcaveraRust is easier to understand lately than the new runtime Nim
04:36:57rockcavera;D
04:37:38leorizerockcavera: tbh you don't need to understand it atm
04:37:43FromDiscord<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:44disruptekit's actually not that bad, i just never bothered to look into it too deeply. i had other problems.
04:38:00leorizeit's for when you are knees deep into resources management
04:38:09leorizewhich is not something you'll do when you're a beginner
04:38:36FromDiscord<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:29rockcaverahum
04:45:07rockcaveraSo I'll try not to worry about Nim's course, but only when everything is officially released.
04:47:17rockcaveraI hope that until the launch of the new runtime have made new tutorials, books and examples ...
04:47:52leorizedon't worry, what new runtime bring will be new features
04:47:53rockcaveraAbout rust was an irony. I do not know if it was possible to understand, because I am not native with English.
04:47:56leorizeyour code will stay the same
04:48:43*nsf joined #nim
04:52:36FromDiscord<Fern & Simula (They/Them)> If I understand it correctly, the ownership semantics aren't too dissimilar to rust, actually
04:52:44FromDiscord<Fern & Simula (They/Them)> Someone correct me if I'm wrong
04:53:00leorizethat newruntime is kinda on revision rn :P
04:53:08leorizeI wouldn't pay too much attention into it
04:53:33FromDiscord<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:17leorizeref takes a reference
04:55:22leorizevar means modifiable
04:56:00FromDiscord<yewpad> Do they have substantial effect on memory consumption if I use one or the other?
04:56:06FromDiscord<yewpad> I can't tell the difference.
04:56:27leorizewell it depends on your MyType
04:56:31FromDiscord<Fern & Simula (They/Them)> It's negligible
04:56:45leorizebut basically: ref is for reference semantic :P
04:57:31FromDiscord<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:46FromDiscord<yewpad> Hm, okay.
04:58:35leorizeuhmm it's the same if you use var
04:58:53FromDiscord<Fern & Simula (They/Them)> Is it?
04:59:16leorizevar parameters take a reference :P
04:59:26leorizeso they could modify the argument
04:59:34FromDiscord<Fern & Simula (They/Them)> Til, thank you for the correction
05:00:04leorizealso, nim don't copy objects if their size > 3 * float
05:00:21FromDiscord<yewpad> _Var parameters are implemented as hidden pointers_ - But why do 'ref's exist in the first place then?
05:00:24leorizethey are passed by reference, so you don't have to micro-optimize your code
05:00:32leorizeref is for reference semantic
05:00:37leorizelemme draft up an example
05:00:44FromDiscord<yewpad> Yes please. Thank you!
05:00:45FromDiscord<Fern & Simula (They/Them)> Refs are also on the heap, right?
05:02:27*ltriant joined #nim
05:03:59FromDiscord<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:59leorizehttps://play.nim-lang.org/#ix=27hD
05:05:06leorizethis should be a good enough primer
05:08:11FromDiscord<yewpad> Hm, okay. Thank you.
05:10:00FromDiscord<yewpad> Is there a good reason to use pointer arithmetic in Nim, except for low-level operations like with hardware?
05:10:06leorizeno
05:10:32FromDiscord<yewpad> Yeah, why would you. Just wanted to ask out of curiosity.
05:10:34leorizeeven for low-level we have UncheckedArray :P
05:18:53silvernodeRemind 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:15leorizeyou sent them on gitter btw :P
05:22:26leorizenot the irc bridge
05:23:37leorizejoin #freenode_#nim:matrix.org for the actual irc bridge
05:28:28*narimiran joined #nim
05:30:37*marmotini_ joined #nim
05:32:53silvernodeleorize: 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:04silvernode[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:06Zevvleorize: here?
07:08:55ZevvI 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:59Zevvnothing happens for me then
07:09:31Zevvooh 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:24PMunchHmm, 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:48FromGitter<alehander92> mornin
09:24:05*ng0_ joined #nim
09:24:12*ng0 quit (Ping timeout: 268 seconds)
09:24:19Araqhi
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:31lqdev[m]hello
09:43:12PMunchHi
09:43:51PMunchHmm, asyncCheck uses `callback=` instead of `addCallback`. Why is this?
09:50:07*lritter joined #nim
10:06:53FromGitter<alehander92> btw is `and`
10:07:06FromGitter<alehander92> supposed to work "parallely" for async futures
10:07:59FromGitter<alehander92> like, await (asyncFunction1() and asyncFunction2()) => run them interminently yielding to the event loop
10:08:18FromGitter<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:26AraqPMunch, I've complained about this design a lot too
10:44:35*dcmertens joined #nim
10:46:46*krux02 joined #nim
10:50:45FromGitter<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:55FromGitter<timotheecour> (in https://github.com/nim-lang/Nim/pull/13123#discussion_r365735721)
10:50:56disbot➥ 3fix #13100 nim doc now treats `export localSymbol` correctly
10:51:44*lxbarbosa joined #nim
10:52:58AraqTDocumentator 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:35FromGitter<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:25Araqseems straight-foward to do, copy how the other "passes" do it
11:27:00Araqping 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:12Araqnever mind, it was something else
12:12:36*floppydh quit (Quit: WeeChat 2.6)
12:16:48PMunchAraq, 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:52FromDiscord<Clyybber> 'Sup
12:47:54*floppydh joined #nim
12:48:23PMunchClyybber, quiet day here today :)
12:48:38*ng0 quit (Ping timeout: 258 seconds)
12:52:37*dcmertens joined #nim
12:56:17Zevvwork work
12:56:23*ng0 joined #nim
12:59:21*jwm224 joined #nim
12:59:25AraqClyyber: https://github.com/nim-lang/Nim/issues/13105
12:59:25disbot➥ 3codegen bug with arc
13:00:37Araqwe 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:25FromGitter<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:27PerkolIs there a way to statically link openssl on windows?
13:38:30FromGitter<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:57FromGitter<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:53FromDiscord<Clyybber> Araq: Hmm, I wonder too
13:41:40*xace quit (Ping timeout: 252 seconds)
13:42:17Araqkaushalmodi: I think that's currently not supported at all
13:42:22AraqPRs are welcome
13:42:41FromGitter<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:56FromGitter<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:06FromGitter<kaushalmodi> where is that onTestSnippet proc called?
14:05:27FromGitter<kaushalmodi> I cannot find where the `cmd` is forced to a `c` backend right now
14:07:29FromGitter<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:29FromDiscord<treeform> its down for me: https://nimble.directory/
14:46:24shashlick@kaushalmodi - in your hello_musl project, are you statically linking openssl? https://github.com/kaushalmodi/hello_musl/blob/master/config.nims#L168
14:46:32shashlickcc @Perkol ^^
14:46:44PMunchHmm, 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:24PMunchJust 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:38FromGitter<kaushalmodi> shashlick: yes
14:58:53*lxbarbosa quit (Ping timeout: 246 seconds)
14:59:11FromGitter<kaushalmodi> at the time, I had experimented statically linking both libressl and openssl
15:01:00shashlickcool 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:30FromDiscord<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:18FromDiscord<Rika> what does the error "cannot instantiate" mean
15:28:10FromDiscord<Rika> oh
15:28:19FromDiscord<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:15FromDiscord<treeform> I am getting really odd errors with threads:
15:36:17FromDiscord<treeform> * createThread then seq.add -> crash
15:36:17FromDiscord<treeform> * seq.add then createThread -> some threads dont run
15:36:17FromDiscord<treeform> * pre seq.add all threads -> works 100%
15:36:28FromDiscord<treeform> https://gist.github.com/treeform/b8abfeae9038ba64af35724e7b1a0386
15:38:44*quantumbird quit (Read error: Connection reset by peer)
15:39:26FromDiscord<treeform> I think its related to them being copied from var to seq.
15:43:37FromDiscord<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:17FromDiscord<demotomohiro> Can `Thread[T]` type be copied or moved safely?
15:51:38*Hideki_ quit (Ping timeout: 240 seconds)
15:56:01FromDiscord<kodkuce> async arc soon ?
15:57:38FromDiscord<treeform> @demotomohiro my tests demonstrate that's a No.
15:57:52FromDiscord<demotomohiro> `thr.add t` before `createThread` seems bug because first parameter of `createThread` is `t: var Thread[TArg]`.
15:58:16FromDiscord<treeform> its not deterministic it works some times in some cases though.
16:00:12FromDiscord<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:44disruptekAraq: the issue is that we are missing a move, so we get two destroys.
16:26:15disrupteki think probably temp vars in loops need extra logic.
16:27:07Araqkodkuce: soon (TM)
16:27:56disrupteki 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:48Zevvhow would I call deallocShared from C codegen, now the symbol is mangled
17:06:13leorizeAraq: 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:47leorizeZevv?
17:07:23*ltriant joined #nim
17:07:26disruptekcan'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:29disrupteka defect is a crash. the old behavior was a mistake, but at least it's one that isn't ambiguous to fix.
17:14:29leorizeyea, but people wouldn't expect so when they inherit from Exception
17:14:39leorizeit wasn't based on Defect before
17:14:55leorizeguess we should put a deprecation notice on Exception?
17:15:20*dcmertens quit (Ping timeout: 265 seconds)
17:15:25disruptekjust fix the docs.
17:16:11leorizeold code won't fix itself
17:16:27leorizeneed actual big notice to inform people
17:16:43leorizehttps://forum.nim-lang.org/t/5734#35919
17:16:43disruptekyou need new compilers to break old code, though.
17:17:02leorizeyea, but better a message than silent behavior change
17:17:04disruptekgate the compiler behind a big red switch that says, "I RTFM"
17:17:09leorizegood for the devs
17:17:23disruptekit's job security for the 3 people employed to write nim.
17:25:51*Perkol quit (Quit: Leaving)
17:26:55disruptekmind my heart, people; mind my heart.
17:27:34disruptekZevv: tell me again why shared-ci is a bad idea.
17:28:06Zevvwho me what why?
17:28:46disrupteki wanna do ci across the whole ecosystem.
17:29:01Zevvand is that bad?
17:29:09disruptekchange my mind.
17:29:14disruptekneed devil's advocate.
17:29:34leorizeci across the whole ecosystem?
17:29:34disrupteki wouldn't turn down a couple devils, too, know what i'm sayin'?
17:29:41leorizewhat does that mean?
17:29:42kungtottedisruptek: you mean packages in nimble etc. too?
17:29:47disruptekeverything.
17:29:51disruptekanything in git.
17:29:55Zevve-ve-ry-thing
17:30:00Zevv100% code coverage
17:30:04disruptekyeah.
17:30:04Zevvon all architectures
17:30:07disruptekright.
17:30:11Zevvand all possible combinations of compiler flags
17:30:17disruptekno.
17:30:28disruptekyou get whatever is in the environment.
17:30:29Zevvso one CI run in, let's say, 1240 years, should be feasible
17:30:46Zevvyeah but you want to test it all. So you test it all with the GC and all with arc
17:30:54kungtotteThe 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:00Zevvyou test it all with i386 and amd64 and arm and mips and arm and h8 and powerpc
17:31:11Zevvwith -d:useMalloc and without
17:31:19Zevvcombinatorial explosion, BOOM, you're dead
17:31:20Zevvbad idea
17:31:21disruptekyou only need to test it for one compiler combination, though.
17:31:36disruptekok, here's the key concept:
17:31:37Zevvhttps://i.imgur.com/vV39zSv.gif
17:31:42disruptekyou only test with members of the network.
17:31:46disruptekyou save all the results.
17:32:18disruptekyou 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:00Zevvah *that* project
17:38:04disrupteki can think of lots of issues, but they all have simple solutions.
17:38:11*Hideki_ joined #nim
17:39:18Zevvso basically you test and your results get stored somewhere
17:39:28Zevvand then what
17:40:00disruptekthen whenever you trigger a test, the network fills any holes with heat.
17:40:31disruptekthere could be a currency, but it's not critical. just for tuning purposes.
17:40:56Zevvwhat problem are you trying to solve here
17:41:41disrupteki believe we have the space to store permutations, the processor to spend on it. i think the data could be useful.
17:42:11Zevvbut what data are we talking abou? tests failed/succeeded?
17:42:27*onionhammer quit (Ping timeout: 260 seconds)
17:42:28disrupteksure, what would you like to know?
17:42:29Zevvthus my question, what is the problem you're trying to solve
17:42:31leorizedisruptek: how are you gonna host this CI?
17:42:53*Hideki_ quit (Ping timeout: 265 seconds)
17:43:06disruptekp2p of daemons run on desktops, maybe a small number of cloud supernodes.
17:43:45Zevvanswer my queston
17:43:46disruptekit's not so much about what problem we're solving.
17:45:15disruptekit's about whether we can provide an amplifying value to a nim user.
17:46:01disruptekknowing what software you need to support and what software you don't seems like pretty useful information to me.
17:47:01kungtotteWhat'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:05Zevvto 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:25disruptekwhat needs fixing now?
17:48:14*drewr quit (Quit: ERC (IRC client for Emacs 26.3))
17:48:17kungtotteI 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:06Zevvdisruptek: 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:07disruptekright, 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:44kungtotteWouldn't they just start with the build errors and fix those? What if it never built on their platform?
17:50:21disruptekyes, in the absence of other data, that's what they'd do.
17:50:57disruptekZevv: there have been 1200-1400 issues ever since i started following nim.
17:51:08Zevvso, what are you waiting for then!
17:51:20disruptekthere have also been about 200 new stars.
17:51:24Zevvthree a day and you're done in about a year! :)
17:51:25disruptekand the same 300 watchers.
17:51:57ZevvI do get the gist of what you're saying, but I'm simply not sure if it is worth the effort.
17:52:02kungtotteSo 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:12Zevvif a CI job breaks, it should simple report a broken build.
17:52:27Zevvotherwise we are testing tens or hundreds of builds, the data goes into the cloud, and noone might ever look at it
17:52:39Zevvpersonally I'd rather see golden running
17:52:51disruptekthis is part of that.
17:52:56ZevvI'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:12disruptekwe wouldn't run ci the way it's run now in the cloud.
17:53:21disruptekwe would run it in the environment of a real user.
17:53:39disruptekthat's the idea. the daemon serves as a node in a ci farm where other users are participants.
17:54:02disruptekgolden can serve as the local database.
17:54:40*drewr joined #nim
17:57:00Zevvyeah but if you run it on different machines, time and performance statistics are worthless anyway
17:57:27Zevvor you can help me clean up the allocators so we can get to 0 overhead
17:57:31disrupteksure, 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:34Zevvbecause I'm stuck in the mud
17:57:46disruptekare you?
17:58:07Zevva bit
17:58:17Zevvbut still, these are my arguments why it is a bad idea. Are those good enough?
17:58:41*Trustable joined #nim
17:58:43disruptekhere's the thing.
17:58:51disruptek~motd
17:58:52disbot9motd: 11do a lot of people choose a language for the wrong reasons? -- 7disruptek
17:59:06FromGitter<alehander92> what is motd
17:59:07disrupteknim isn't winning, and it's not because it's technically inferior.
17:59:17FromDiscord<Rika> that's one long day
17:59:19disruptekso... 1464 issues. poof.
17:59:39FromGitter<alehander92> i really think its mostly about shiny tools/libs
17:59:40disruptek~motd is nim isn't winning, and it's not because it's technically inferior.
17:59:41disbot9motd: 11nim isn't winning, and it's not because it's technically inferior.
17:59:48FromGitter<alehander92> but very debatable
18:00:19Zevvit'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:37disruptekbut is that due to luck, really?
18:00:48disruptekbutterfly wings?
18:00:58Zevvand people are stupid
18:01:00Zevvthat also
18:01:26FromGitter<alehander92> i really dont think its because of the last reason
18:01:29disruptekwhen do you reach the event horizon where luck is so integral to your success that you give up trying to influence outcome?
18:01:33FromGitter<alehander92> there is good competition
18:01:45kungtotteThe 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:22disrupteki dunno, i don't remember reading that in the last community surveys.
18:03:52Zevvpeople are stupid, trust me. It is hard to think for yourself, it is easy to follow others
18:04:24Zevvso if X gets a head start, it has a higher chance of more followers so it grows bigger
18:05:03ZevvI dare guess the nim community also has a high percentage of fans of unpopular music
18:05:07Zevvto just pick one thing
18:06:12disruptekyou think that the idea of focussing on developer experience is misplaced because the problem of momentum is self-righting?
18:06:44Zevvno, but persevering might help. Also it seems that the communities #1 issue is still documentation
18:06:47Zevvfair enough
18:07:11ZevvI'm not sure how many people who filled in the recent polls checked the lack of distributed CI as a acute problem
18:07:30disruptekagain, it's not problem. it's opportunity.
18:07:53Zevvagain, if you feel you want to spent time to help Nim and the community, put the bandages where it hurts
18:08:13disruptekand where is that?
18:08:16disruptekdocumentation?
18:08:19Zevvdocumentation!
18:08:36Zevvalso, remember, I'm still sitting on the "bad idea" chair here, right
18:08:42Zevvtell me when I need to get off
18:08:46disrupteklol
18:08:52disruptekhow very diplomatic.
18:09:00Zevvyou asked me to. I enjoy that role usually
18:09:10disruptekyeah, it's fun.
18:09:29disrupteki mean, don't disagree wrt documentation.
18:12:04disruptekit's hard to get excited about docs.
18:12:23disrupteki'm really trying, but i just don't see that as a major story that sells newspapers.
18:12:41Zevvit's the top complaint I understood
18:14:50*jax joined #nim
18:15:05jaxhi
18:15:12Zevvhey jax
18:15:13*drewr quit (Quit: ERC (IRC client for Emacs 26.3))
18:15:25jaxZevv How are you ?
18:15:31disruptekwe 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:34Zevvfine thanks :)
18:15:51*drewr joined #nim
18:15:52Zevvdisruptek: imagine compiling nimsuggest to js and use that to navigate the docs
18:15:58jaxSuperb !
18:16:06jaxIs it better to put cordova.js at the end of the body or inside head ?
18:16:25disruptekZevv: wow, that's an awesome idea.
18:16:37jaxWhy Nim is better than D ?
18:16:49Zevvjax, I don't know. Is it?
18:18:00jaxD as not stable Gui
18:20:02disruptekhmm, zevv, this idea has some serious legs.
18:20:23jaxor better
18:20:33jaxcompile nim to ruby
18:21:00jaxany solution to kill Python is welcome
18:21:12Zevvdisruptek: I bet Robert Crumb would agree
18:34:44jaxOOP distroy my life. Forget OOP.
18:36:58disruptekso we use nimsuggest to generate some json that catalogs symbols, constructs, etc.
18:38:40disruptekthen 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:02Zevvbut does that make better documentation, though?
18:39:12ZevvBecause what I think is needed is good prose
18:39:28disruptekwell, it was /your/ suggestion.
18:39:28Zevvthe runnableexamples are usually terse and crappy
18:39:35ZevvI'm just rambling
18:39:45disruptekhmm.
18:40:17disruptekso you think we need more words.
18:40:37ZevvI 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:46Zevvlike that nim-memory writup thingy
18:40:53Zevvnever finished it
18:40:59disruptekyeah, i remember that.
18:41:10disruptekit's linked somewhere, though, isn't it?
18:41:16disrupteki think it is.
18:41:42kungtotte100% the docs need better prose and examples.
18:42:08Zevvit's on the nim 'learn' pag
18:42:28disruptekthe 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:53FromGitter<alehander92> Zevv unpopular music isn't really related to smartness
18:43:06Zevvok, that was bad phrasing.
18:43:15FromGitter<alehander92> i did listen to very unpopular music and i did think this makes me smart
18:43:18disrupteki dunno, i think it was a good example.
18:43:19Zevvbut it's related to daring to think your own thoughts and make your own decisions
18:43:36FromGitter<alehander92> this is a spectrum of course
18:43:42disruptekhe's really talking about different-drummer here.
18:43:45FromGitter<alehander92> its good to be able to do this
18:44:09FromGitter<alehander92> but its easy to go into the other extreme
18:44:13Zevvsure
18:44:22disruptekmaybe it's really just a diversity of taste.
18:44:28FromGitter<alehander92> drumming is hard but it looks easier than the other hard things :P
18:44:36disrupteklol
18:44:39FromDiscord<Rika> OrderedTable key reordering when
18:45:08disruptekif there's sort, maybe.
18:45:18FromGitter<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:33FromDiscord<Rika> no i mean moving keys to ends of the table
18:45:38FromGitter<alehander92> and one just says "i am going to do a similar thing now"
18:45:47FromDiscord<Rika> i had to implement my own type just to add that
18:45:52disruptekyou can only delete them and then add them again.
18:46:12FromDiscord<Rika> and if i want it at the start? ;;
18:46:40disruptekwrite a new orderedtable object, starting with unit X.
18:47:16kungtotteI 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:19disruptekas araq says, how could it be otherwise?
18:47:28*nixfreak joined #nim
18:48:31FromDiscord<Rika> disruptek i literally did
18:48:50disruptekbecause there is no alternative.
18:48:58disruptekaraqlogic be like that sometime
18:49:07FromDiscord<Rika> is there a reason ordered table doesnt have it?
18:49:15disruptekwhat?
18:49:17disrupteklogic?
18:49:26disruptekit has its own brand:
18:49:28disruptekaraqlogic
18:49:55disruptekaraqlogic isn't defined so much by what it is,
18:50:00disruptekit's more about what it isn't:
18:50:00FromDiscord<Rika> i mean the movetoend
18:50:17disruptek"well, it isn't /wrong/ ..." is the basic tenet.
18:50:56disruptekrika: you should pr that feature. i think it makes sense.
18:51:46Araqleorize, we don't map 'Defect' to quit(), we map sysFatal
18:51:49FromDiscord<Rika> I AINT TOUCHING SYSTEM/RTL NO WAY
18:51:51disruptekfor that matter, it should have movetobeginning.
18:52:32FromDiscord<Rika> movetoend means either end (just like in python) but i agree a better name is needed
18:52:36Araqunfortunately, sysFatal vs Defect is not documented well enough I guess
18:53:01FromDiscord<Rika> is there a reason sysfatal and defect are separate?
18:53:32disruptekoktoberfest
18:53:39Araqyeah, if you do: if idx >= x.len: raise newException(IndexError)
18:53:55Araqthen IndexError inherits from Defect but the compiler doesn't map the 'raise' to 'quit'
18:54:52Araqand if you do: assert idx < x.len
18:55:13Araqthen the compiler compiles that to quit and doesn't assume your proc can raise
18:55:33disruptekoh, that's interesting.
18:56:32disruptekzevv doesn't think we have enough engineering resources to build something challenging.
18:56:33FromGitter<alehander92> sorry zevv
18:56:48Zevvabout what?
18:57:03disruptekzevv 'bout to get kicked off the balcony.
18:57:12FromGitter<alehander92> i wanted to argue about music and offloaded
18:57:23FromGitter<alehander92> disruptek well resources are relative
18:57:56disrupteki don't know what to say to that.
18:58:01disruptekit seems like you want a reply, though.
18:58:03leorizeAraq: yea it'd need more explaination
18:58:07Zevvalehander92 oh no problem :)
18:58:58Zevvbbl
18:59:10disruptekeasy things... are they worth building?
18:59:28disrupteksure, but their value isn't great enough to afford real economy of scale.
18:59:38disruptekbecause they don't gather users.
19:00:12disruptekso more ambitious projects have a greater chance of success.
19:00:25disruptekuntil you overreach.
19:00:41disruptekso you have to convince me that it's an overreach.
19:01:14Araqwhy not help treeform with his awesome UI library that frees us from the browser dependence?
19:01:27Araqlooks "worth building" to me
19:01:45disrupteki liked what i saw but i don't know it well.
19:02:04FromGitter<Varriount> UI Library? Where?
19:02:15disruptek!repo figet
19:02:17disbot12https://github.com/sheng-z/figet -- 9figet: 11Fine-grained Entity Typing / Fine-grained Entity Classification 15 10⭐ 3🍴 7& 5 more...
19:02:23disruptek!repo fidget
19:02:24disbot12https://github.com/treeform/fidget -- 9fidget: 11Figma based UI library for nim, with HTML and OpenGL backends. 15 67⭐ 4🍴
19:02:32disruptekthat one.
19:03:03FromGitter<Varriount> I like the sound of multiple backends
19:05:06disrupteki still like it, but it's not like there aren't tens of gui products in the ecosystem.
19:05:16disruptekwhy is this the thing worth building?
19:07:06FromGitter<Varriount> Something similar: https://sciter.com/
19:08:38*pbb_ quit (Ping timeout: 245 seconds)
19:08:48*ltriant joined #nim
19:09:30Araqdisruptek, because the traditional, native UIs are dead
19:10:10AraqI know it's sad, but it's what I've experienced myself.
19:10:26disrupteki'm okay with that.
19:10:38Araqif you develop a web based frontend, you only have to develop it once and it runs everywhere
19:12:02disruptekyou 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:21FromGitter<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:53disruptekit's like we're just guessing about what they want.
19:13:57disruptekwe know what they want.
19:14:04disruptekthey want a stable language with a great ux.
19:14:50disruptekworldwide ci means we can take greater risks than we would otherwise. it lets the language move more adeptly within the ecosystem.
19:15:10disruptekit 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:42AraqVarriount: we have that, use Karax to get it
19:17:23*pbb joined #nim
19:17:55Araqit 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:56leorizethey seem to be moving to typescript et al
19:23:13leorizenot sure if just hype, but types is something they do care about
19:23:19Araqfair enough
19:23:36disruptekthey just didn't know they wanted them.
19:24:18leorizeto be fair a macro system was never something I ever pay attention into
19:24:27leorizeuntil I saw those awesome DSLs :P
19:24:46disrupteki pay attention to it because c macros are such a nightmare.
19:25:15leorizeI wrote free pascal :) I don't even have macros
19:25:29leorizeit's a pain when I have to repeat code
19:25:44rayman22201Counter 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:32disruptekZevv: 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:15FromDiscord<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:50Araqwell congrats, NOW BLOG ABOUT IT!
19:27:54Araqplease
19:27:58disruptekthe few, the proud.
19:28:16FromDiscord<treeform> I am just saying don't throw us JS devs under the bus.
19:28:48FromDiscord<Rika> Ok, now blog about it
19:29:10stefantalpalaru"I love macros" - ah, to be young and foolish...
19:29:25FromDiscord<treeform> well I think I love templates more
19:29:42FromDiscord<treeform> nim templates are macros in other languages
19:29:42FromDiscord<Rika> I love writing macros. I hate reading macros by other people
19:29:58FromDiscord<Rika> I start crying blood when it's a huge macro
19:30:20FromGitter<Albus70007> can i get into the discord? ⏎ gitter is not really good imo
19:30:39stefantalpalaruIRC is the future
19:30:55FromGitter<Albus70007> X to `doubt`
19:31:20disruptekleorize: will you put coverage gutters into nim.nvim? i could provide any format you want.
19:31:38FromDiscord<treeform> Albus70007, https://discord.gg/nDafPz
19:31:53leorizedisruptek: what is that?
19:32:00disruptekfor test coverage reports.
19:32:05FromGitter<Albus70007> thx
19:32:14disruptekand/or results.
19:32:21leorizedisruptek: is there anything in vimscript that already does this?
19:32:24*xet7 joined #nim
19:32:37leorizeany vim plugin in particular
19:32:39disruptekleorize: i dunno; can it be your problem? 😁
19:33:09leorizeI consider supporting coverage out of nim.nvim scope, but I'll be happy to add nim support to existing tools :P
19:33:29disruptekcool, just let me know what the format is.
19:40:29leorizedisruptek: do you have example for how this coverage displaying thingy would look like?
19:40:44disruptekno, you can make it work any way you want.
19:41:04leorizewell what do you want the plugin to do?
19:41:09leorizelike highlight some lines or smt?
19:41:13disruptekwhatever you want to see wrt coverage and/or test results. yeah.
19:41:37disruptekgutter, probably.
19:42:09leorizethis one looks the best afaict: https://github.com/ruanyl/coverage.vim
19:44:24disruptekso https://github.com/gotwarlost/istanbul/blob/master/coverage.json.md is my target format.
19:44:30Araqtreeform: we don't remove the JS backend but it also receives little love currently
19:44:52Araqwell I'm looking into right now because with my bugfixes something in there broke
19:48:17nixfreakI 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:29nixfreakwhat should I be looking at it ?
19:48:47disrupteknre module?
19:49:17nixfreakalso I would like to create an option menu to help others load a file
19:50:06disruptek!repo nim-prompt
19:50:06disbot12https://github.com/icyphox/nicy -- 9nicy: 11:snowflake: a nice and icy ZSH prompt in Nim 15 120⭐ 7🍴 7& 2 more...
19:50:08disruptekno, not that one.
19:50:12disruptek!repo surf1b1rd/nim-prompt
19:50:12disbotno results 😢
19:50:24disruptek!repo surf1nb1rd/nim-prompt
19:50:24disbot12https://github.com/surf1nb1rd/nim-prompt -- 9nim-prompt: 11Building powerful interactive prompts in Nim, inspired by python-prompt-toolkit. 15 12⭐ 4🍴
19:56:03disruptekso why is an implicit copy in arc merely a performance issue?
19:56:38leorizebecause if you don't want something to copy you can deny it?
19:57:25leorizeif you remove the `=` proc by making one with {.error.}, then copying is no longer allowed
19:57:41leorizeso yea, shouldn't affect more than just performance
19:58:01disruptekyes, but if you copy it, you could have a double free down the road.
19:58:54leorizethen I guess the double free is the bug and not the copy?
19:59:02leorizeI don't understand the issue much
19:59:12disrupteki mean, i don't know that i understand it either.
19:59:30disruptekthe way i understand the code as it's written, the bug is clear.
19:59:43disrupteki just don't know if it's not a design decision.
19:59:48leorizedo you have the example somewhere?
20:00:00leorizealso, https://github.com/Jauler/vim-auto-gcov-marker <- might be something you'd be interested in
20:00:16leorizeit supports gcov, which I believe is the more popular format
20:00:41disruptekcoco didn't work for me.
20:00:55disruptekjust, as an aside.
20:01:18disruptekso you wouldn't want it in that istanbul format?
20:01:38disruptekthis is the problem i'm working on: #13102
20:01:40disbot12https://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:19disruptekwe 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:34Zevvaraq, how would I call deallocShared from the codegen, it is now mangled. Never been in that area before...
20:04:05leorizedisruptek: I'm just finding prebuilt tools that might help you :P
20:05:01leorizeapparantly all coverage plugins in vim is language-dependant, sans for some gcov/lcov based ones
20:05:51disruptekwe could do the coverage on the c. i dunno if that is helpful.
20:06:15leorizeif 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:44disruptekokay, i'll try to document my play a little better.
20:06:53disrupteki did have something kinda working but it was pretty janky.
20:07:42disruptektest coverage is something i want. maybe i'm in the minority, though.
20:09:57*vsantana joined #nim
20:16:38shashlick4 PRs on choosenim - appreciate some code reviews - https://github.com/dom96/choosenim/pulls
20:18:28FromDiscord<Recruit_main_70007> this installs latest version of nim x64-86?
20:19:24*jax quit (Remote host closed the connection)
20:19:33disruptekdo we have a flags() test in the ast that is recursive?
20:29:29disrupteki think i finally get it.
20:29:34disruptekit's a cfg bug, i think.
20:29:49disruptekholy shit that was hard.
20:29:55nixfreakI 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:32disruptekwhen we =copy but we don't want to move the destructor, we need the copy to die a quiet death. no destroy.
20:51:11disruptekso how do we do that? make it fail for hasDestructor?
20:53:55*NimBot joined #nim
21:02:05*luis_ joined #nim
21:02:05AraqZevv, make it a .compilerproc
21:02:44luis_guys, how do I add instructions to build with ssl when building with nimble?
21:03:15leorizeadd -d:ssl to nim.cfg in your package
21:03:26leorizeor --d:ssl to config.nims
21:05:10*xet7 quit (Remote host closed the connection)
21:06:19*xet7 joined #nim
21:06:22luis_thanks leorize... nim.cfg should go on root or on src?
21:06:31leorizesrc
21:06:39luis_thanks
21:07:01FromDiscord<kodkuce> i feel like i am retarded bee in this beehive
21:07:03disruptekno, put it in project.nim.cfg, please.
21:07:26disruptekpm expects to blow away nim.cfg from time to time.
21:07:49luis_but it should be also on src?
21:08:01disruptekadjacent to project.nim, yes.
21:09:10*ltriant joined #nim
21:09:45disruptekast flags are always propogated? or we trigger those ourselves?
21:10:20disruptekoh, 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:24sschwarzerJust saw that the "latest version" in the channel topic is given as "1.0.0". Let's upgrade. ;)
21:16:54FromDiscord<Recruit_main_70007> which one is it now?
21:17:11sschwarzerRecruit_main_70007: at least 1.0.4
21:17:51FromDiscord<Recruit_main_70007> at least?
21:18:12sschwarzerIn case I missed an announcement :)
21:18:27sschwarzerI checked the download page, it's version 1.0.4
21:18:59FromDiscord<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:41leorizedom96: can you update the latest version?
21:19:42sschwarzerNim development versions are a mystery :)
21:20:03leorizeRecruit_main_70007: meaning that the next major will be 1.1 :P
21:20:07leorizethere used to be a proper versioning scheme
21:20:21leorizeI don't know what happened to it though
21:20:21*donpdonp joined #nim
21:20:46FromDiscord<Recruit_main_70007> ok, thanks for the explanation
21:20:49sschwarzerleorize: So the next stable release has a _lower_ version number than the development release? ;-)
21:21:18zedeusAraq doesn't believe in virsion numbers
21:21:22zedeusversion*
21:21:37sschwarzerdom96: thanks!
21:21:50sschwarzerzedeus: Apparently :-D
21:22:01donpdonpwhy is it that type Thing = name: string, let t = thing(); echo fmt("{t}"); works fine but type Thing = ref object does not?
21:22:32donpdonp(fails at the fmt statement)
21:22:34zedeusthere's no default `$` for ref objects, deref it with []
21:23:11donpdonpzedeus: well that was an easy fix. thanks! :)
21:23:18leorize!eval type Thing = name: string; let t = Thing(); echo fmt"{t[]}"
21:23:21NimBotCompile failed: /usercode/in.nim(1, 18) Error: invalid indentation
21:24:11donpdonpand how would i print the hex memory address of 't' ?
21:25:42leorizeecho repr t
21:25:49sschwarzerdonpdonp: If you're only interested in the hex address and not a specific format, you can use `repr(t)`
21:26:16leorize!eval echo repr RootRef()
21:26:16donpdonpthat works great. thx leorize, sschwarzer
21:26:19NimBotref 0x7f82bf0b2048 --> []↵
21:26:54sschwarzerOh, NimBot was faster than me :)
21:27:04sschwarzerWanted to give an example
21:32:39sschwarzerDo I understand the Neovim website right that they're going to build an LSP client into the editor?
21:32:54sschwarzerSeems to be planned for 0.5
21:33:02leorizemaybe, not sure
21:33:13leorizeprobably would just be as an "integrated plugin" :P
21:33:34leorizeI can benefit from the infrastructure added though :)
21:33:44sschwarzerleorize: For me it's completely fine if it's included in the release and works flawlessly. ;-)
21:34:35sschwarzerleorize: Having it a separate plugin (but included in the release) would also be better for modularity.
21:35:52leorizeif 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:05sschwarzerleorize: 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:21sschwarzerWho 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:41sschwarzerAraq too?
21:52:46FromDiscord<mratsim> I
21:52:57FromDiscord<mratsim> and most of the Status team as well
21:55:11FromDiscord<Recruit_main_70007> Fosdem?
21:55:34sschwarzerhttps://fosdem.org/2020
21:55:51dom96mratsim: who's coming from Status?
21:56:25leorize[m]https://fosdem.org/2020/schedule/track/minimalistic_experimental_and_emerging_languages/
21:57:02leorize[m]over an hour of nim talks, nice
21:57:16sschwarzerleorize: nice indeed
21:57:32FromDiscord<Recruit_main_70007> is it being streamed or recorded?
21:57:34sschwarzerI guess I'm too lazy to come ;-/
21:57:52sschwarzerI'm surprised to see a talk on Forth :)
21:58:46leorize[m]Recuit_main_70007: both
21:58:54*Trustable quit (Remote host closed the connection)
21:59:23FromDiscord<Recruit_main_70007> then somebody @ me when they do
21:59:34FromDiscord<Recruit_main_70007> nvm, all of them are in school time
21:59:40sschwarzerOk, Araq will be there. He's giving a talk. :)
21:59:48FromDiscord<Recruit_main_70007> oh 🙂
22:00:56*vesper joined #nim
22:01:33FromDiscord<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:39sschwarzerMaybe I'll be there in 2021 :)
22:08:37FromGitter<alehander92> i wanted to go
22:08:48FromGitter<alehander92> but this year there is more important stuff <3
22:09:03FromGitter<alehander92> hope there ae videos tho
22:10:05salotz[m]that likes an awesome track
22:10:11salotz[m]I was wondering if XL was still alive
22:12:54*livcd quit (Ping timeout: 258 seconds)
22:13:15sschwarzer.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:47FromDiscord<mratsim> @dom96 I think everyone in Europe
22:27:29FromDiscord<treeform> sschwarzer, ill try to be there
22:29:53*neceve quit (Read error: Connection reset by peer)
22:37:59luis_What is your opinion on the V language? It is so similar to nim, whats is its purpose?
22:38:22disruptekto dupe unwarey travelers.
22:38:30disruptekso to speak.
22:39:31*ltriant quit (Ping timeout: 268 seconds)
22:42:02leorizeV has shown us the power of marketing :P
22:42:30*ltriant joined #nim
22:42:41luis_leroize: why so? is it popular? Just heard of it today...
22:42:50lqdev[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:39luis_Hey, are there plans for memory safety without GC in Nim? like rust or something equivalent?
22:43:54leorizeluis_: it was a hit on HN sometime ago, promising things that sound unrealistic
22:44:08leorizelike a C translator that can translate sqlite, doom
22:44:17leorizeand all the buzzword features
22:44:38luis_oh, ok
22:44:42leorizewithout a single release, amassed over $600 dollars on patreon
22:44:49disruptek~arc
22:44:50disbot9arc: 11a new memory manager for Nim; see https://forum.nim-lang.org/t/5734 -- 7disruptek
22:44:52lqdev[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:31leorizeit promised that it could compile 1M lines in 0.9 sec iirc
22:45:47leorizeon release they added a ton of asterisks onto their claims
22:45:48lqdev[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:16disruptekit's a moving target.
22:46:24lqdev[m]leorize: yeah, that too. some time before release the author just added these "wip" plaques everywhere
22:46:36luis_wow
22:46:52Araqluis_: "memory safety without GC" doesn't mean all that much
22:47:16Araqin Rust you frequently have to use refcounting instead
22:47:37AraqNim is getting something similar with --gc:arc
22:47:54luis_Araq: thanks, I understand little of the underpinnings... Arc seems interesting...
22:49:38lqdev[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:45FromDiscord<gingerBill> V originally started out as pretty much fraudulent vaporware.
22:55:05FromDiscord<gingerBill> Claiming some many things, which contradicted each other without any proof.
22:55:14FromDiscord<gingerBill> Some of the claims were impossible too.
22:55:34FromDiscord<gingerBill> I don't think it was actually malicious, per se, just naïve.
22:56:12FromDiscord<gingerBill> He added the WIP symbols after I said none of it added up and he was pretty much lying.
22:56:50FromDiscord<gingerBill> The compiler has only recently got an AST, because he didn't know what one was or what it was for.
22:57:23FromDiscord<gingerBill> Well, I say no AST, it must had some forms but he kept advertising "no AST".
22:57:34disruptekast is the biggest part of toast.
22:58:22FromDiscord<gingerBill> Hahahaha
22:58:29disrupteki mean, its been measured in toast everywhere.
22:59:06FromDiscord<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:23disruptekwell, it came out on april 1st, too, which didn't help.
22:59:29disrupteker, it was announced then.
22:59:39Araqluis_: 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:32FromDiscord<gingerBill> It was announced well before that.
23:01:16FromDiscord<gingerBill> Someone even made a website as a reference to my infamous GitHub issue on the V GitHub: http://issue35.com
23:01:40disruptekyou must have a lot of time on your hands.
23:02:24FromDiscord<gingerBill> I didn't write that website
23:02:41luis_haha
23:02:48FromDiscord<gingerBill> https://github.com/vlang/v/issues/35
23:02:51disbot➥ 5This language is not as advertised ; snippet at 12https://play.nim-lang.org/#ix=27la
23:04:05luis_which linter you recommend? nimfmt?
23:04:20luis_I am looking for an auto fixer....
23:04:56Araqthere is nimpretty
23:05:08FromDiscord<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:04FromDiscord<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:21FromDiscord<gingerBill> Maybe I does need to be at both levels.
23:10:28leorizekeywords are not style insensitive :P
23:10:43leorize!eval DISCARD "hello"
23:10:45NimBotCompile failed: /usercode/in.nim(1, 1) Error: undeclared identifier: 'DISCARD'
23:10:57rayman22201personal goal for this week: Make time to work on arc async
23:11:10FromDiscord<gingerBill> notin = notIn = not_in
23:11:20FromDiscord<gingerBill> That is mostly style insensitive
23:11:27FromDiscord<gingerBill> Except for the first letter
23:11:28leorizenotin is not a keyword :P
23:11:28disruptekrayman22201: this iterator issue needs fixing first.
23:11:35rayman22201Question, are you THE gingerBill? as in Odin Ginger Bill?
23:11:38blackbeard420WOW 4 nim talks at FOSSDEM! awesome!
23:11:39disruptekthen async might magically work.
23:11:43leorize!eval dISCARD "hello"
23:11:46NimBot<no output>
23:11:50dom96!eval dIScArD "hello"
23:11:54NimBot<no output>
23:12:02dom96keywords are not special
23:12:08leorizedamn, now I'll have to implement this matching style for the entirety of nim.nvim =="
23:12:28leorizeor I'll just leave it as it and hope that no one ever try to write code like that
23:12:30FromDiscord<gingerBill> rayman22201: I am.
23:12:49rayman22201awesome. I'm a big fan :-)
23:13:00FromDiscord<gingerBill> Thank you.
23:13:08FromDiscord<gingerBill> Nim is a great language too!
23:13:36FromDiscord<gingerBill> The Pascal family makes me feel at home.
23:13:53leorizewell I think style-insensitivity was introduced so Araq don't have to write snake_case :P
23:14:15leorizeI believe at first it was fully case-insensitive like pascal
23:14:36rayman22201The style-insensitivity is very much rooted in Araq's personal tastes.
23:14:43leorizethen the typeA: TypeA pattern was too popular that the "first char case-sensitive" rule was introduced
23:14:59rayman22201@disruptek what iterator issue?
23:15:14leorizethe first character rule wasn't Araq :P
23:15:17FromDiscord<treeform> dom96, I replied to your font issue. Fonts are complex bests.
23:15:18FromDiscord<gingerBill> It clearly a personal taste thing. Personally, I'm not a fan but it's only a minor thing.
23:15:20leorizethe community requested it iirc
23:15:25FromDiscord<gingerBill> Ah....
23:15:44leorizethere used to be a --cs (case-sensitivity) switch
23:15:51FromDiscord<gingerBill> I was wondering about the first letter thing.
23:15:51Araqin retrospect we could as well have gone for full CS when we did the switch
23:16:16disruptekrayman22201: yielding a var from enclosing scope causes it not to move (fine) but also to get a destructor run twice (not fine).
23:16:42Araqbut now we have --styleCheck:error to please most people who complained
23:16:45FromDiscord<treeform> I think nim does gets a ton of flack for "style-insensitivity" but after using the language its not a problem.
23:16:53leorizehttps://forum.nim-lang.org/t/191
23:16:59rayman22201@disruptek oh yikes. That is indeed no good.
23:17:02leorizehistory :)
23:17:23disrupteki think the insensitivity is more useful than it is problematic, so it's a no-brainer.
23:17:56rayman22201maybe I'm glad I haven't had time to do anything lol. I'm giving Araq more time to stabilize arc :-P
23:18:10FromDiscord<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:52FromDiscord<treeform> @gingerBill what are your thoughts on Bel language? http://www.paulgraham.com/bel.html
23:19:33leorizebe happy that this rule never made it to the lang:
23:19:36leorizeThat 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:43leorize^ that's a quote from Araq :P
23:20:04leorizehttps://forum.nim-lang.org/t/523#2798
23:20:27disruptekaraqlogic
23:20:42Araqhey, old quotes don't count
23:20:59leorizealso 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:09AraqI'm not sure I still have the same opinion now
23:21:14FromDiscord<gingerBill> @treeform not a huge LISP fan. But looks interesting.
23:21:47FromGitter<zetashift> oh nice the gingerbill from odin fame :O, I like your work!
23:22:08FromDiscord<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:14FromDiscord<gingerBill> I didn't realise I was that well known 😝
23:22:43FromDiscord<treeform> @gingerBill why did you stop posting youtube vids about your language?
23:23:22FromDiscord<treeform> I remember jonathan blow did language vids, then you did them, then you stopped, but he did not.
23:24:07FromDiscord<gingerBill> Recording them requires a bit of time, that's all.
23:24:18FromDiscord<gingerBill> And I rarely have uninterrupted timem
23:24:35FromDiscord<treeform> Do you think you the vids don't give you the exposure you need?
23:24:37FromDiscord<gingerBill> So I don't think having to stop for a phone call or something is always great.
23:25:02FromDiscord<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:40FromDiscord<gingerBill> Maybe people watched them. Issue was most people wanted the written word instead
23:26:00FromDiscord<gingerBill> Even if sometimes that is a lot more time consuming in practice to consume.
23:26:07FromDiscord<treeform> Araq, was also on a roll with vids, but then he also stopped... vids are hard.
23:26:14FromDiscord<gingerBill> I guess people like to skim and go back to particular sections
23:26:27*voltist joined #nim
23:26:40FromDiscord<gingerBill> I might go back go some videos if I can.
23:26:45Araqactually I only need to upload my latest vid
23:26:59FromDiscord<treeform> Araq, doo ittt!
23:27:03FromGitter<zetashift> I don't know you from the vids but I checkout Odin from time to time
23:28:01FromDiscord<treeform> I only know gingerBill because his vids where recommended by youtube algo after jonathan blow vids.
23:28:13FromDiscord<gingerBill> Ha. Wonderful algorithm
23:28:40FromDiscord<gingerBill> Jai is an interesting language but I do worry about some aspects of it.
23:29:14FromDiscord<gingerBill> Mainly the type system and compile time execution. It's mainly a design thing more than anything.
23:29:23FromDiscord<treeform> Jai, appears very spartan in some aspects and then extremely deep in others.
23:29:26FromDiscord<Recruit_main_70007> Like not giving the community a compiler
23:29:40FromDiscord<gingerBill> I understand that bit.
23:29:40disruptektimes are tough.
23:30:17FromDiscord<treeform> Will Jai be the next V? Super overhyped but does not deliver...
23:30:23FromDiscord<treeform> I hope not.
23:30:23FromDiscord<gingerBill> No
23:30:29FromDiscord<gingerBill> Jai has proof it works.
23:30:40disruptekyeah, jb knows what's up.
23:30:44FromDiscord<gingerBill> And Jon will deliver
23:30:44FromDiscord<treeform> But it has like x100 of V hype
23:31:03FromDiscord<gingerBill> But even he doesn't, the language was for him originally
23:31:18FromDiscord<gingerBill> It's made him more productive already
23:31:25FromDiscord<gingerBill> Which is wonderful!
23:32:05FromDiscord<gingerBill> Odin has made me productive too.
23:32:18FromDiscord<gingerBill> It has also spoilt me in what the type system offers.
23:32:19FromDiscord<Recruit_main_70007> But I don’t understand why can’t he give a compiler
23:32:41FromDiscord<gingerBill> Because he doesn't want to deal with all the requests and nonsense.
23:32:46FromDiscord<gingerBill> I completely understand.
23:32:57FromDiscord<treeform> I think it's because JB wants to ship a thing that is "ready"?
23:33:02FromDiscord<gingerBill> Yep
23:33:13FromDiscord<treeform> He has game shipping mentality. Ship once don't update often.
23:33:24FromGitter<zetashift> He's gonna be overrun with issues/feature requests
23:33:33FromDiscord<treeform> Which he said he will mostly ignore.
23:34:03FromDiscord<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:04FromDiscord<gingerBill> I get a few feature requests all the time and I just have to say no.
23:34:37FromDiscord<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:43FromDiscord<gingerBill> *its
23:34:48FromDiscord<treeform> @gingerBill can you add a time rewinding debugger to Odin?
23:35:12FromDiscord<gingerBill> No
23:35:19FromDiscord<treeform> 👌
23:35:24FromDiscord<Recruit_main_70007> See, simple XD
23:36:58rayman22201Lol. Nim still gets lots of silly feature requests, even with it's awesome meta programming
23:37:01FromDiscord<gingerBill> I don't think I'm adding any new features any time soon if any.
23:37:09FromDiscord<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:19FromDiscord<mratsim> I think it's because of, not even with 😛
23:37:32FromDiscord<gingerBill> Most complex OOP? Why?
23:37:37leorizenim never advertised those meta programming stuff well :(
23:37:39*mmm_v_mmm joined #nim
23:37:47FromDiscord<mratsim> people don't usually do OOP in Nim
23:38:28Araqleorize: PRs for the website are accepted
23:38:28FromDiscord<Recruit_main_70007> I don’t know what’s its limit, also I am doing rl bots so OOP is rather necessary
23:38:53leorizemaybe not
23:38:57FromDiscord<Recruit_main_70007> And I come from python and like OOP by nature
23:38:57AraqI don't know how to "advertise" anything I guess
23:38:59leorizethe easier way is to just do it
23:39:09FromDiscord<mratsim> Closures can replace OOP
23:39:28leorizeAraq: :P I'm terrible at marketing
23:39:31FromDiscord<mratsim> but basically you can have multidispatch if you want, which is quite rare
23:39:55Araqmratsim: we removed the 'multi' part
23:40:03FromDiscord<mratsim> it's still hidden
23:40:03Araqdon't you remember? :P
23:40:19FromDiscord<Recruit_main_70007> Idk what any of those are 🙃, can you explain me?
23:40:21FromDiscord<mratsim> gimme VTable and i'll forget it :p
23:40:23leorizebut I think people would rather see example of metaprogramming that make an actual difference than writing all those code by hand
23:40:47leorizeRecruit_main_70007: short answer is try Nim :p
23:40:49FromDiscord<gingerBill> OOP is a dodgy term anyway. Usually people mean they want a vtable or normal methods or some form of subtyping.
23:41:01FromDiscord<gingerBill> And Nim supports these well
23:41:10FromDiscord<mratsim> I think Synthesis (a state machine generator) is a pretty nice example
23:41:33FromDiscord<gingerBill> Nim's UFCS means that most "methods" are not needed.
23:42:27*mmm_v_mmm quit (Ping timeout: 260 seconds)
23:42:31FromDiscord<Recruit_main_70007> Where can I find Synthesis?
23:42:40leorize!repo synthesis
23:42:40disbot12https://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:51leorizehere are some other examples:
23:42:53leorize!repo npeg
23:42:54disbot12https://github.com/zevv/npeg -- 9npeg: 11PEGs for Nim, another take 15 82⭐ 4🍴
23:42:58leorize!repo karax
23:42:59disbot12https://github.com/pragmagic/karax -- 9karax: 11Karax. Single page applications for Nim. 15 473⭐ 41🍴 7& 11 more...
23:43:03leorize!repo patty
23:43:04disbot12https://github.com/andreaferretti/patty -- 9patty: 11A pattern matching library for Nim 15 162⭐ 9🍴
23:43:21FromDiscord<Recruit_main_70007> Thanks
23:43:28leorize!repo gara
23:43:30disbot12https://github.com/alehander92/gara -- 9gara: 11 15 59⭐ 4🍴
23:43:37leorize^ patty is pretty much deprecated by this one :P
23:47:02leorize~mcs is method call syntax, or UFCS in popular lingo; see https://nim-lang.org/docs/manual.html#procedures-method-call-syntax
23:47:03disbot9mcs: 11method call syntax, or UFCS in popular lingo; see https://nim-lang.org/docs/manual.html#procedures-method-call-syntax
23:53:19FromDiscord<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:36FromDiscord<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:42leorizeI don't know why you would need c++ style oop...
23:58:19leorizeso what are you trying to do that require this "advanced" oop?
23:58:23rayman22201I don't understand the question. Nim has oop. You have to be more specific about what features you are looking for.
23:58:55leorizethey are writing a rocket league bot and they need oop
23:59:08FromDiscord<Recruit_main_70007> I just like it, and don’t know how would I do things like onelonecoder does without classes
23:59:23leorizealso they came from python so the oop mentality is huge
23:59:42rayman22201Regular oop in Nim should be sufficient
23:59:45leorizecan you give us code example of what you're trying to achieve?
23:59:52rayman22201Look at the tutorial on the website