<< 27-12-2019 >>

00:11:53FromDiscord<mratsim> master is not supposed to be used
00:11:57FromDiscord<mratsim> it should be deleted
00:14:57FromDiscord<Clyybber> delete master
00:15:01FromDiscord<Clyybber> reinstate shogunate
00:16:53*altarrel joined #nim
00:23:03*altarrel quit (Ping timeout: 260 seconds)
00:25:08Araqhey Clyybber
00:25:21FromDiscord<Fern & Simula (They/Them)> what's supposed to be used then, just the tagged releases?
00:28:14FromDiscord<snluu> semver has one benefit tho, that is to get new minor versions automatically?
00:28:48FromDiscord<snluu> automatically pulls bug fixes and stuff
00:28:58FromDiscord<snluu> commit hashes have no incremental guarantee
00:32:29FromDiscord<Clyybber> Araq: Hey, sup!
00:33:07Araqworking on my alternative exception implementation for fun and profit
00:36:06Araqif only I could do 'jc procReturn' easily in C
00:36:22FromDiscord<Clyybber> lol, nice, based on quirky i expect?
00:36:32Araqyeah
00:38:41disruptekgood. and, thanks (and congrats) for hitting deadline on arc. good story. 😁
00:41:02Araqit's still junk but I'll ensure nimgrep and niminst will work with it
00:41:16Araq(if they don't already)
00:41:23Araqand then it's time for something bigger
00:49:26dwdvA rust-like iterator module? ;)
00:59:07Araqsequtils, zero-functional, sugar.collect
00:59:11Araqdunno
01:01:11disruptekwe should talk about the cyclic import situation.
01:02:54Araqworkarounds: RootObj, var pseudoCallback: proc (...)
01:04:29Araqgood night
01:04:50disruptekpeace
01:06:08*Trustable quit (Quit: Leaving)
01:24:26*gangstacat joined #nim
01:45:30FromDiscord<Zachary Carter> gitter seems down?
01:46:17FromDiscord<Zachary Carter> video now - https://imgur.com/xUUVxfv
02:17:59FromDiscord<Clyybber> @Zachary Carter hey, sup
02:18:30FromDiscord<Zachary Carter> hey bud
02:18:46*uu91 joined #nim
02:18:59FromDiscord<Clyybber> that terrain looks hella nice
02:19:52FromDiscord<Zachary Carter> thanks
02:19:53*altarrel joined #nim
02:20:06FromDiscord<Zachary Carter> need to splat map it now
02:20:28*Hideki joined #nim
02:20:36FromDiscord<Clyybber> btw, are you going to use nulkear or imgui?
02:20:52*Hideki is now known as Guest53989
02:21:33*altarrel quit (Client Quit)
02:21:38FromDiscord<Zachary Carter> probably imgui
02:21:46FromDiscord<Zachary Carter> since I'm already targeting cpp anyway
02:23:45FromDiscord<Clyybber> so not via cimgui?
02:24:57FromDiscord<Zachary Carter> not 100% sure yet
02:25:11*altarrel joined #nim
02:25:13FromDiscord<Zachary Carter> plan is to start on a map editor after I figure out how I want to do this terrain
02:25:24FromDiscord<Zachary Carter> I liked my last approach, but it wasn't performing well with all of the blending I was doing
02:25:29*Guest53989 quit (Ping timeout: 268 seconds)
02:25:45FromDiscord<Zachary Carter> rendering this terrain seems to be quite performant since it's using compute programs and tessellation to produce the terrain geometry
02:25:50blackbeard420neat terrain, thats done in nim?
02:27:41FromDiscord<Zachary Carter> yeah
02:27:51FromDiscord<Zachary Carter> and thanks
02:35:38*altarrel quit (Ping timeout: 240 seconds)
02:43:14*dwdv quit (Ping timeout: 240 seconds)
02:48:53*ofelas quit (Ping timeout: 260 seconds)
03:12:32*muffindrake quit (Ping timeout: 260 seconds)
03:14:42*muffindrake joined #nim
03:17:35*sealmove joined #nim
03:21:36*dddddd quit (Ping timeout: 268 seconds)
03:25:28*seerix quit (Ping timeout: 258 seconds)
03:36:05*seerix joined #nim
03:58:26FromDiscord<potatotot> Hi, is there a way to represent null values for all types of variables in Nim? I'm trying to code something like
03:58:26FromDiscord<potatotot>
03:58:27FromDiscord<potatotot> ```
03:58:27FromDiscord<potatotot> variable = None
03:58:27FromDiscord<potatotot> for i in this_list:
03:58:27FromDiscord<potatotot> if f(i):
03:58:27FromDiscord<potatotot> variable = g(i)
03:58:29FromDiscord<potatotot>
03:58:30FromDiscord<potatotot> if variable:
03:58:32FromDiscord<potatotot> doThis()
03:58:33FromDiscord<potatotot> ```
03:58:37FromDiscord<potatotot> where I need to go through an entire list to check something, and based on some condition, I want to set a variable with scope outside of the loop. Is there an elegant way to do this? I couldn't find a NULL or None equivalent in Nim. Is there a particular reason why such a Null concept is not implemented in Nim?
03:59:29sealmovepotatotot: there is Option
04:00:19sealmoveprimitive types (which include even stuff like seq and I think set) don't have concept of null
04:00:27sealmoveobjects have nil
04:00:41sealmovebut if you want a generic concepts of None, there is options module
04:00:53FromDiscord<potatotot> right, great. Option sounds like exactly what I need
04:00:57FromDiscord<potatotot> thanks!
04:01:38sealmovehttps://nim-lang.org/docs/options.html
04:02:13sealmoveyou're welcome :-]
04:13:02FromDiscord<potatotot> another basic question: how come the division `/` operator for uint / uint types not implemented?
04:13:19aeverr[m]sealmove: ref objects have null
04:13:49FromDiscord<potatotot> for example, when I try to do:
04:13:49FromDiscord<potatotot> ```
04:13:50FromDiscord<potatotot> var tt: uint = 2
04:13:50FromDiscord<potatotot> var ttt: uint = 4
04:13:50FromDiscord<potatotot> echo tt / ttt
04:13:50FromDiscord<potatotot> ```
04:14:00aeverr[m]potatotot use `div`
04:14:18aeverr[m]`echo tt div ttt`
04:14:45aeverr[m]`/` is float division and AFAIK needs one float operator
04:14:51aeverr[m]I mean argument
04:14:54FromDiscord<potatotot> I see
04:15:41FromDiscord<potatotot> It seems it is implemented for int / int operations
04:15:49FromDiscord<potatotot> ```
04:15:49FromDiscord<potatotot> Error: type mismatch: got <uint, uint>
04:15:50FromDiscord<potatotot> but expected one of:
04:15:50FromDiscord<potatotot> proc `/`(x, y: int): float
04:15:50FromDiscord<potatotot> first type mismatch at position: 1
04:15:50FromDiscord<potatotot> required type for x: int
04:15:52FromDiscord<potatotot> but expression 'tt' is of type: uint
04:15:54FromDiscord<potatotot> proc `/`(x, y: float32): float32
04:15:55FromDiscord<potatotot> first type mismatch at position: 1
04:15:57FromDiscord<potatotot> required type for x: float32
04:15:58FromDiscord<potatotot> but expression 'tt' is of type: uint
04:16:00FromDiscord<potatotot> proc `/`(x, y: float): float
04:16:02FromDiscord<potatotot> first type mismatch at position: 1
04:16:02FromDiscord<potatotot> required type for x: float
04:16:03FromDiscord<potatotot> but expression 'tt' is of type: uint
04:16:05FromDiscord<potatotot>
04:16:06FromDiscord<potatotot> expression: tt / ttt
04:16:07FromDiscord<potatotot> ```
04:16:10FromDiscord<potatotot> Do you know why the design choice was made to overload integer types but not uint?
04:17:50aeverr[m]Nope
04:18:19aeverr[m]Maybe it's in the lenientops module
04:19:21aeverr[m]Doesn't seem so
04:22:44*rockcavera quit (Remote host closed the connection)
04:37:15FromDiscord<Zachary Carter> need to add lighting badly
04:37:16FromDiscord<Zachary Carter> but
04:37:19FromDiscord<Zachary Carter> https://imgur.com/IYZDvho
04:43:01*endragor joined #nim
04:47:48*chemist69 quit (Ping timeout: 245 seconds)
04:50:05*chemist69 joined #nim
04:57:56sealmove:O
05:00:17FromDiscord<Zachary Carter> well this looks better
05:00:28FromDiscord<Zachary Carter> https://imgur.com/rljWlrl - textures weren't being sampled correctly in that last screenshot
05:30:30*NimBot joined #nim
05:35:06sealmoveyeah, feels like more depth in last one
05:49:29FromDiscord<Zachary Carter> https://imgur.com/8GMSbRG
05:52:38*uu91 quit (Ping timeout: 260 seconds)
05:54:05*Hideki joined #nim
05:54:28*Hideki is now known as Guest40272
05:57:17*ponyrider quit (Ping timeout: 258 seconds)
06:05:17*sagax quit (Read error: Connection reset by peer)
06:10:37*sagax joined #nim
06:11:02*sagax quit (Remote host closed the connection)
06:15:59*kevinchau joined #nim
06:19:53*kevinchau quit (Client Quit)
06:20:37*kevinchau joined #nim
06:20:50kevinchau👑
06:27:49*sagax joined #nim
06:28:12*judd_ joined #nim
06:28:58*Guest40272 quit (Remote host closed the connection)
06:30:28judd_hello
06:32:37*solitudesf joined #nim
06:35:13*narimiran joined #nim
06:53:46FromDiscord<mfiano> Has anyone gotten another backend besides asyncomplete working with nim.nvim? asyncomplete is much too buggy
06:57:50judd_Visual studio Code + vim plugin + nim plugin, :)
06:59:26FromDiscord<mfiano> No thanks. I prefer working remotely without a GUI
07:00:20sealmoveI don't know, I use ALE plugin
07:00:29sealmoveit works quite nicely
07:00:43sealmovehttps://github.com/dense-analysis/ale
07:01:15FromDiscord<mfiano> I do use ale but I couldn't get it configured for completion with numsuggest
07:01:24FromDiscord<mfiano> I do use ale but I couldn't get it configured for completion with nimsuggest
07:01:27sealmoveit uses nim check
07:01:44sealmoveyeah, I don't know about completion
07:01:55sealmoveI've seen some cool plugins around but didn't try
07:02:02FromDiscord<mfiano> Yes I have that much. I'm looking for completion
07:02:22sealmovethis one worth trying? https://github.com/alaviss/nim.nvim
07:02:35FromDiscord<mfiano> That's what I am using but it's very buggy
07:02:51sealmovei see :|
07:03:10sealmovewell, there is the server
07:03:23sealmovePMunch is working on it
07:03:42sealmovehttps://github.com/PMunch/nimlsp/
07:04:15judd_When will there be a new release?
07:04:31sealmoveno idea
07:04:40sealmovemaybe you should motivate PMunch :D
07:04:56FromDiscord<mfiano> Looks like even that uses asyncomplete for completion
07:05:04FromDiscord<mfiano> That's the unusable/buggy thing of nim.nvim
07:05:13sealmovehmm...
07:05:19FromDiscord<mfiano> Looks like it was only tested with automatic completion, and not completion on trigger key
07:05:26*judd_ quit (Quit: Leaving)
07:05:33FromDiscord<mfiano> Typing 1 character of the word to complete works, but anything more and it does not
07:07:17*Hideki joined #nim
07:07:41*Hideki is now known as Guest42092
07:21:01sealmoveZevv: found a bug in npeg
07:21:56sealmoveI used `myArray[^1]` in a match-block and npeg confused `^1` with something else
07:22:29sealmoveerrors with: `type mismatch: got <seq[int], NimNode>`
07:26:33*Guest42092 quit (Ping timeout: 260 seconds)
07:39:54*sealmove quit (Quit: WeeChat 2.7)
07:44:23*nsf joined #nim
08:00:00*gmpreussner quit (Quit: kthxbye)
08:05:13*gmpreussner joined #nim
08:06:52ZevvAah dang I realized that and forgot to fix it. I think I messed up the if/Else chain logic in doSugar in codegen
08:08:23ZevvI refactored that to add the `@` sugar (which was not even needed in the end), it misses an else case
08:08:45Araqer ... is this a PR friday?
08:09:18Zevv50% of the requirements met
08:35:07*uu91 joined #nim
08:38:33*ng0 quit (Quit: leaving)
08:39:31Araqgotto love modern optimizers, https://godbolt.org/z/VeSnYc
08:40:39*Hideki joined #nim
08:41:03*Hideki is now known as Guest26698
08:41:06*Guest26698 quit (Remote host closed the connection)
08:41:39ZevvI even loved the old fashioned and classic ones
08:43:12Araq2 instructions per loop or per function call
08:43:37Araqresults are worse for ARM though :-/
08:44:50Araqanyway, should be better than our setjmp crap
08:45:30Araqgood thing we have precise exception tracking
09:12:02*NimBot joined #nim
09:58:11*salewski joined #nim
09:59:59salewskiI have still no idea if GC_ref() and GC_unref() will work with --gc:arc. Seems it compiles at least...
10:01:23Araqit's supported
10:01:38Araq(there is a bug though ... ;-) )
10:02:55salewskiOh fine!
10:04:03*narimiran quit (Ping timeout: 260 seconds)
10:04:04salewskiI thought about if I can replace finalizers with destructors and finally remembered that
10:04:28salewskisubclassing widgets like in https://github.com/StefanSalewski/gintro#extending-or-sub-classing-widgets
10:05:17salewskiwould be hardest part. I loose all additional fields of proxy object, its content,
10:05:56salewskiwhen I get back a gtk widget from gtk and then generate a new Nim proxy object.
10:06:44salewskiBut when GC_ref() works and we may perhaps get finalizers again gintro may survive.
10:06:48salewskiBye.
10:07:02*kevinchau quit (Remote host closed the connection)
10:07:46*dwdv joined #nim
10:09:30salewskiAnd for the cdt crash I have condensed it to furum post https://forum.nim-lang.org/t/5746
10:10:47salewskiI guess that is a trivial bug, maybe on my side.
10:10:52*salewski quit (Quit: WeeChat 2.6)
10:16:06Araqplease use the issue tracker...
10:21:24*krux02 joined #nim
10:22:03*salewski joined #nim
10:22:42salewskiYesterday evening I was not really sure that it is a Nim issue...
10:23:10Araqwe can close bugs with "not our bug" too ;-)
10:23:10salewskiWill condense it more and create a github issue then.
10:23:17Araqthank you
10:23:23salewskiBye.
10:23:33*salewski quit (Client Quit)
10:44:01*ofelas joined #nim
10:50:20*nsf quit (Quit: WeeChat 2.6)
11:05:17*Hideki joined #nim
11:05:40*Hideki is now known as Guest75417
11:19:53*ofelas quit (Ping timeout: 245 seconds)
11:28:59*ofelas joined #nim
11:32:27*Connor[m] quit (Quit: killed)
11:32:32*lasso[m] quit (Quit: killed)
11:32:32*macsek1911[m] quit (Quit: killed)
11:32:34*Demos[m] quit (Quit: killed)
11:32:39*nc-x[m] quit (Quit: killed)
11:32:46*planetis[m] quit (Quit: killed)
11:32:46*TheManiac[m] quit (Quit: killed)
11:32:46*yglukhov[m] quit (Quit: killed)
11:32:49*BitPuffin quit (Quit: killed)
11:32:53*nergal[m]1 quit (Quit: killed)
11:32:53*leorize[m] quit (Quit: killed)
11:32:57*k0mpjut0r quit (Quit: killed)
11:32:59*xomachine[m] quit (Quit: killed)
11:32:59*spymasterd[m] quit (Quit: killed)
11:32:59*aeverr[m] quit (Quit: killed)
11:32:59*LEdoian[m] quit (Quit: killed)
11:32:59*watzon[m] quit (Quit: killed)
11:33:00*GitterIntegratio quit (Quit: killed)
11:33:04*pigmej quit (Quit: killed)
11:33:04*Balu[m] quit (Quit: killed)
11:33:07*vycb[m] quit (Quit: killed)
11:33:07*Miguelngel[m] quit (Quit: killed)
11:33:07*d-nice2[m] quit (Quit: killed)
11:33:09*isaac[m]1 quit (Quit: killed)
11:33:09*zielmicha[m]1 quit (Quit: killed)
11:33:09*skrylar[m] quit (Quit: killed)
11:33:11*lqdev[m] quit (Quit: killed)
11:33:11*salotz[m] quit (Quit: killed)
11:33:11*Manny8888 quit (Quit: killed)
11:49:09FromDiscord<tomku> https://play.nim-lang.org/#ix=25B9 i am confused as to why this doesn't work for ref object
11:51:54*rockcavera joined #nim
11:54:00*Trustable joined #nim
11:55:44FromDiscord<Rika> how do i make a template that can use await
11:56:19FromDiscord<Rika> @tomku you need to do `new a` then modify its fields when it's a ref object
11:57:41FromDiscord<Rika> https://play.nim-lang.org/#ix=25Bc
11:58:14FromDiscord<Rika> ah, should be var
11:59:00FromDiscord<Rika> okay, i fixed the code -ish
11:59:05Zevvsealmove: 0.22.1, thanks for reporting
11:59:11FromDiscord<Rika> https://play.nim-lang.org/#ix=25Bd
12:00:15*ng0 joined #nim
12:00:15*ng0 quit (Changing host)
12:00:15*ng0 joined #nim
12:03:26*Vladar joined #nim
12:06:28*Guest75417 quit (Remote host closed the connection)
12:07:05*Hideki joined #nim
12:07:27*Hideki is now known as Guest10302
12:08:28*narimiran joined #nim
12:08:30*Guest10302 quit (Remote host closed the connection)
12:16:22*leorize[m] joined #nim
12:16:23*BitPuffin joined #nim
12:16:23*Connor[m] joined #nim
12:16:23*GitterIntegratio joined #nim
12:16:23*nergal[m]1 joined #nim
12:16:23*lqdev[m] joined #nim
12:16:23*Demos[m] joined #nim
12:16:24*isaac[m]1 joined #nim
12:16:24*k0mpjut0r joined #nim
12:16:29*planetis[m] joined #nim
12:16:29*vycb[m] joined #nim
12:16:29*lasso[m] joined #nim
12:16:29*aurielmp joined #nim
12:16:29*nc-x[m] joined #nim
12:16:29*TheManiac[m] joined #nim
12:16:29*spymasterd[m] joined #nim
12:16:29*xomachine[m] joined #nim
12:16:30*macsek1911[m] joined #nim
12:16:30*zielmicha[m]1 joined #nim
12:16:30*d-nice2[m] joined #nim
12:16:30*Miguelngel[m] joined #nim
12:16:30*watzon[m] joined #nim
12:16:30*LEdoian[m] joined #nim
12:16:30*pigmej joined #nim
12:16:30*aeverr[m] joined #nim
12:16:30*Manny8888 joined #nim
12:16:30*salotz[m] joined #nim
12:16:30*Balu[m] joined #nim
12:16:30*skrylar[m] joined #nim
12:16:31*yglukhov[m] joined #nim
12:17:31FromDiscord<tomku> @Rika it works, thanks! ...what's the difference between explicitly calling new() and modifying the fields vs instantiating object through Animal() and why does it matter in this case?
12:18:55FromDiscord<Rika> i dont know why; maybe someone who knows the internals more does
12:30:16FromDiscord<Solitude> @tomku, new has nothing to with that error. you should just dereference ref object to invoke fieldPairs on it.
12:33:50narimiranZevv: you here?
12:46:07Zevva bit
12:46:09Zevvsup
12:47:20FromDiscord<tomku> @Solitude ah, gotcha. I overlooked the square brackets
12:51:43federico3https://lobste.rs/s/hbkh21/what_do_you_plan_learn_2020 some Nim here?
12:54:26*xet7 quit (Quit: Leaving)
12:55:03Zevvnarimiran: im on mobile at 17% so be quick :)
12:55:34narimiranZevv: nothing urgent, ping me when you're at computer
13:01:27*Hideki joined #nim
13:01:50*Hideki is now known as Guest39279
13:04:11Zevvi am now, found an old mac at the attic
13:04:24Zevvfamily visits, soooo loooongggg
13:12:47narimiranZevv: https://github.com/zevv/npeg/commit/9a2ae34c3ea49ec45d6348692da49128f1ad245e#diff-f84aa6fbd0120ad8b7a25d8bd701865aR40-R41 -- this breaks our testing suite on v1.0.x branch
13:13:04Zevvah lemmeguess - I added a --gc:arc test
13:13:19narimirancan you put it behind some switch which checks that NimVersion >= 1.1 ?
13:13:33ZevvHm can I do that inside the .nimble?
13:13:55Zevvnah nevermind, I'll take it out of the default tests
13:14:03narimiranthanks :)
13:16:16Araqdo this in your .nimble file:
13:16:26Araqwhen (NimMajor, NimMinor) >= (1, 1)
13:16:37AraqNimScript wins once again
13:16:58Araqover declarative TOML stuff where everything requires yet another feature
13:17:34Zevvha
13:19:21FromDiscord<zidsal> Hi guys, I'm trying to get a hello world running on windows however when I run nim compile I get the following error `nim-1.0.4\lib\system.nim(669, 9) Error: cannot open file: system\inclrtl` has anyone seen this before?, I've downloaded nim, ran finish.exe and I can see that mingw is installed, and I've confirmed the additional .dll's are in the bin directory. https://ibb.co/9tD20sV (screenshot of env settings e.t.c)
13:19:36ZevvAh, and I see I just released a new version with the git commit under the name of my deceased father. Amen.
13:19:39Zevv:)
13:20:01Araqzidsal: did you move your nim dir around after finish.exe=
13:20:03Araq?
13:20:23FromDiscord<zidsal> @araq I did not
13:22:34Araqnever seen this error before
13:23:18Araqdo you have the lib\system\inclrtl.nim file?
13:24:20Zevvnarimiran: fixed, sorry for the noise
13:24:37narimiranZevv: np, and thanks for the quick fix!
13:25:18FromDiscord<zidsal> @araq I don't seem to have a system folder atr all in the lib folder!
13:30:53*dddddd joined #nim
13:32:55FromDiscord<zidsal> redownloaded and I now have a system folder ob a dodgy unzip by me
13:36:21Araqalright
13:39:16*muffindrake quit (Quit: muffindrake)
13:39:29*muffindrake joined #nim
13:53:10FromDiscord<zidsal> just writing to confirm its all working ty
13:58:11*xet7 joined #nim
14:13:29Zevvnarimiran: I do appreciate the personal toch and all, but could we not make CI send mail on module failures?
14:14:02narimiranZevv: send to whom?
14:14:18narimirane.g. i receive mail notifications when nightlies fail
14:16:24*nsf joined #nim
14:17:02*endragor quit (Remote host closed the connection)
14:18:14Zevvto the individual module authors
14:18:21Zevvthe info is there, in the .nimble files
14:23:32*PrimHelios joined #nim
14:23:35Araqbbl
14:27:15PrimHeliosanyone know if it's possible to use a custom port with a router closure in jester?
14:27:57narimiranZevv: heh, most of the time it is our fault for breaking some package, and we are the ones who should be notify and fix our end; no need to bother the author
14:29:03PrimHeliosanswered my own question: yes
14:29:08*tane joined #nim
14:30:14*PrimHelios quit (Quit: Leaving)
14:37:39Zevvnarimiran: fair enough
15:05:21skrylar[m]was wondering wrt. the json talk yesterday about if there is merit to just squashing multi-level trees in to a single hash table
15:05:43*sentreen quit (Ping timeout: 250 seconds)
15:06:15*ng0_ joined #nim
15:06:15*ng0_ quit (Changing host)
15:06:15*ng0_ joined #nim
15:08:38*Guest39279 quit (Remote host closed the connection)
15:09:19*ng0 quit (Ping timeout: 265 seconds)
15:09:59*Hideki_ joined #nim
15:13:24*ng0_ is now known as ng0
15:15:05*Hideki_ quit (Ping timeout: 268 seconds)
15:19:10*sentreen joined #nim
15:24:02lqdev[m]anyone has any idea on why ALE for vim reports false positives on `nim check`, but running `nim check` manually does not?
15:24:18*nsf quit (Quit: WeeChat 2.6)
15:25:41FromDiscord<Fern & Simula (They/Them)> alright asking again because i might be doing it wrong, anyone know if it's possible to use a custom port with a router closure in jester? the way i'm trying it is clearly breaking the router macro
15:29:40FromDiscord<Fern & Simula (They/Them)> alright the answer really is yes this time, I just need to use the `settings` macro inside the closure
15:31:58*muffindrake quit (Quit: muffindrake)
15:32:11*muffindrake joined #nim
15:38:02*chemist69 quit (Ping timeout: 260 seconds)
15:39:00*chemist69 joined #nim
15:52:29*sealmove joined #nim
15:53:01sealmoveZevv: today I tried new npeg, it works nicely :)
15:53:53sealmovesmall annoyance: having to specify state (3rd parameter) in generic peg macro
16:11:22*sealmove quit (Ping timeout: 258 seconds)
16:21:01*Hideki_ joined #nim
16:23:01Zevvyeah, but I cant get it to chose either the one or the other
16:23:20Zevvso the make then unambigious I need to make 1, 2 or 3 argument variants
16:24:37Zevvand since this is a rare use case, you'll just have to deal with it :)
16:48:26*Hideki_ quit (Ping timeout: 240 seconds)
16:58:40*marmotini_ joined #nim
17:11:56*endragor joined #nim
17:20:04*ofelas quit (Ping timeout: 248 seconds)
17:28:21*ofelas joined #nim
17:35:12FromDiscord<mratsim> I need to kill nimsuggest every 10 seconds :/
17:44:56*tane quit (Ping timeout: 268 seconds)
17:46:59*endragor quit (Remote host closed the connection)
17:48:05*tane joined #nim
17:49:27*endragor joined #nim
17:56:19*krux02 quit (Remote host closed the connection)
17:59:32*endragor quit (Remote host closed the connection)
18:01:06*endragor joined #nim
18:07:29*sealmove joined #nim
18:07:58FromDiscord<sealmove> Zevv: sure, np
18:14:10*donpdonp joined #nim
18:14:37donpdonpis there a way to suppress the the 'Hint: epoll [processing]' etc msg during compilation?
18:18:01FromDiscord<mratsim> --hints:off
18:20:06*belamenso joined #nim
18:21:13*kahiru joined #nim
18:21:56donpdonpthx!
18:30:55belamensoHi, does anyone know something about the status of zah/nim.vim? The last commit is from March and many important pull requests are not being merged.
18:36:52FromDiscord<Fern & Simula (They/Them)> looks like it might be unmaintained. if you really need those PRs, you could always fork and manually merge them
18:36:57*matic joined #nim
18:41:08*marmotini_ quit (Remote host closed the connection)
18:41:45donpdonphttps://play.nim-lang.org/#ix=25Dp In that example, I would expect "var mvar" to be a shallow copy of m, which means m.things and mvar.things would point to the same memory, but they dont. mvar.things seems to be a new seq[]. why is that?
18:48:15*marmotini_ joined #nim
18:55:39FromDiscord<kodkuce> donpdonp: i think if you want to point to same you have to use a pointer or ref object
18:55:50FromDiscord<kodkuce> tough i am possibly wrong
18:57:37donpdonpkodkuce: ah Thing = ref object seems to do what I expect. thx
18:58:03*endragor quit (Remote host closed the connection)
19:00:24*hexeratops joined #nim
19:04:31*nsf joined #nim
19:09:05*Vladar quit (Quit: Leaving)
19:15:40solitudesfbelamenso, https://github.com/alaviss/nim.nvim is the most maintained vim plugin, i wouldn't expect any other plugin to be supported anymore.
19:16:12*uu91 quit (Ping timeout: 268 seconds)
19:16:45belamensosolitudesf, thanks, I'll check it out!
19:40:25*hexeratops quit (Quit: Leaving)
19:46:55FromDiscord<mfiano> Where can I learn about the up to date "concepts" term? Searching the docs doesn't give anything useful. I came across the term in Nim in Action.
19:50:14lqdev[m]I solved my ALE problem, it wasn't running `nim check`, rather `nimlsp` and I probably had a broken version of that installed
19:50:21lqdev[m]removed `nimlsp` and it works now.
19:53:02*nsf quit (Quit: WeeChat 2.6)
19:58:44FromDiscord<demotomohiro> @mfiano https://github.com/nim-lang/Nim/blob/devel/doc/manual_experimental.rst#concepts
20:01:55*Hideki_ joined #nim
20:06:34*Hideki_ quit (Ping timeout: 265 seconds)
20:16:13*marmotini_ quit (Remote host closed the connection)
20:19:53*ofelas quit (Ping timeout: 245 seconds)
20:29:06*ofelas joined #nim
20:40:51FromDiscord<mratsim> @Araq, interesting piece on the meaning and the composability of "sync" http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2012/n3409.pdf (something I've been struggling with to provide nestable barriers)
20:41:03FromDiscord<mratsim> i.e. restrict sync semantics to the immediate children
20:42:17disruptekmake software great again.
20:44:52FromDiscord<mratsim> oftware will eat the world;)
20:54:31FromDiscord<mratsim> and an accompanying thread on the semantics of concurrency and parallelism: http://www.open-std.org/pipermail/cplex/2014-January/000317.html
21:03:39FromDiscord<mratsim> (cplex is the mailing list for ISO C Parallel Extension but it seems like it's dead)
21:04:23*narimiran quit (Ping timeout: 260 seconds)
21:05:03*belamenso quit (Ping timeout: 265 seconds)
21:10:58*donpdonp quit (Quit: ZNC 1.7.1 - https://znc.in)
21:36:07*donpdonp joined #nim
21:44:30*Hideki_ joined #nim
21:49:50*donpdonp left #nim ("WeeChat 2.6")
21:49:56*ofelas quit (Ping timeout: 248 seconds)
21:53:07*nsf joined #nim
21:53:43*leorize joined #nim
21:54:34*Hideki_ quit (Remote host closed the connection)
21:55:10*Hideki_ joined #nim
21:58:20*ofelas joined #nim
21:59:03*adeohluwa joined #nim
21:59:14*Hideki_ quit (Ping timeout: 240 seconds)
22:04:14stefantalpalaru"In May 2018, GCC 8.1 was released with Cilk Plus support removed." - It's dead, Jim!
22:05:40stefantalpalaruSuperseded by OpenMP, probably.
22:08:04*adeohluwa left #nim (#nim)
22:08:25*adeohluwa joined #nim
22:08:32*adeohluwa quit (Remote host closed the connection)
22:08:56*letto joined #nim
22:09:20*letto_ quit (Ping timeout: 265 seconds)
22:16:00lqdev[m]do methods in Nim use some sort of RTTI?
22:17:36disruptekruntime dispatch, yes.
22:18:38lqdev[m]where can I read up on that? I wanted to implement something similar for rod.
22:21:59leorizeisn't newruntime is gonna do away with RTTI?
22:22:21disrupteki don't know. i found almost zero docs on methods and dispatch based upon inheritance. it was a huge stumbling block for me when i started with nim.
22:22:45leorizelqdev[m]: iirc Araq said that vtables could be a better solution compared to the current tree-dispatching method
22:23:33lqdev[m]yeah, but how could I implement them for a dynamic language? do I need to annotate each value with a type field, then?
22:23:42disrupteki can't remember if arc deprecates rtti fully or if it is just NYI.
22:23:58*sealmove quit (Ping timeout: 258 seconds)
22:24:43FromDiscord<Clyybber> it has a new form or rtti
22:24:45FromDiscord<Clyybber> tinyRtti
22:24:54FromDiscord<Clyybber> lqdev[m]: Yes
22:24:57leorizelqdev[m]: well yea? even in a dynamic lang you'd still need the current types :P
22:25:13FromDiscord<mratsim> @stefantalpalaru, no, it's not superceded, OpenMP task support is veeeerryyyy slow with GCC
22:25:57FromDiscord<mratsim> You can use LLVM: https://gitlab.com/wustl-pctg-pub/llvm-cilk
22:26:11FromDiscord<Clyybber> @mratsim Do you have a comparision curve for weave with lastvictim vs randomvictim?
22:26:19FromDiscord<Clyybber> and if so, where is the pivot point?
22:26:27FromDiscord<mratsim> it's in the PR
22:26:31FromDiscord<Clyybber> oh
22:26:32FromDiscord<mratsim> 35 microseconds
22:27:08FromDiscord<mratsim> Fibonacci takes a 8% perf hit but who in his right mind parallelizing fibonacci 😉
22:27:18FromDiscord<mratsim> depth first search also
22:27:28FromDiscord<mratsim> but black scholes has 3~4% perf improvement
22:27:33FromDiscord<mratsim> and matrix multiplication 15%
22:27:50FromDiscord<Clyybber> so perf decrease for long runners and perf increase for short runners
22:28:17FromDiscord<mratsim> no, perf increase for long tasks and decrease for short tasks
22:28:28FromDiscord<Clyybber> Oh
22:28:46FromDiscord<Clyybber> yeah
22:28:52FromDiscord<Clyybber> lol
22:28:53FromDiscord<mratsim> the reason is that when a worker is stuck in a long task it can answer steal requests, so it's better if the steal requests land directly in the correct queue
22:29:17FromDiscord<mratsim> in the case of parallel loop, and in many cases you have a single producer of tasks
22:29:29FromDiscord<mratsim> so targeting it repeatedly is beneficial
22:30:00FromDiscord<mratsim> Steal last thief is 15% perf decrease on GEMM btw 😉
22:30:06FromDiscord<Clyybber> hmm, so perf increase for wide task trees and perf decrease for narrow ones, is that right?
22:30:12FromDiscord<mratsim> yes
22:30:13*Hideki joined #nim
22:30:36lqdev[m]leorize: not if it's statically typed.
22:30:37*Hideki is now known as Guest64990
22:30:40FromDiscord<mratsim> but AFAIK due to my use of lock-free structure, the gap may be lower than 32us
22:31:01leorizelqdev[m]: ?
22:31:08FromDiscord<mratsim> plus my memory pools already increased fine-grained task perf by 10%+
22:31:42FromDiscord<mratsim> I have yet to run the SPC and BPC bench which are very good at stressing load balancing
22:32:47FromDiscord<Clyybber> lqdev[m]: wdym with "dynamic" language then?
22:33:37FromDiscord<Clyybber> of course you don't need dynamic dispatch, and not rtti if you don't support runtime inheritance
22:34:15FromDiscord<Clyybber> but IF you support stuff like storing a button in a widget array you will need it
22:34:41FromDiscord<mratsim> 22% perf hit on the bouncing producer-consumer bench and 2~3% perf increase on the single task producer-consumer bench
22:34:49FromDiscord<Clyybber> hmm
22:34:56disruptekbuttons are overrated. we're moving to switches everywhere.
22:35:09FromDiscord<mratsim> (bouncing producer-consumer is very hard and kill all runtimes)
22:35:16*ofelas quit (Ping timeout: 248 seconds)
22:36:42FromDiscord<Clyybber> @mratsim last steal is an heuristic right? So the optimum is somewhere inbetween (theoretically? discarding the time it takes to compute that optimum)?
22:36:43FromDiscord<mratsim> and it's with 1microsecond tasks
22:37:50FromDiscord<Clyybber> disruptek: switches are overrated.
22:38:04FromDiscord<Clyybber> just replace the circuit/code/product
22:38:20FromDiscord<mratsim> for message passing-based runtime, victim selection is hard. In classic runtime you can snoop around potential victims queue to see if you can steal before initiating costly steal operations (which need synchronization between thief and victim)
22:38:41FromDiscord<mratsim> but even then randomized victim selection is optimal
22:39:00FromDiscord<mratsim> in my case, I do last thief/victim and fallback to randomized
22:39:13FromDiscord<mratsim> or randomized from scratch
22:39:24FromDiscord<mratsim> (which was the default until the PR that is pending)
22:39:25*sealmove joined #nim
22:39:38FromDiscord<Clyybber> how do you think weighted randomized would fare? (bigger weight to the last victims?
22:39:57FromDiscord<mratsim> I have no space to remember more than one victim
22:40:21FromDiscord<mratsim> it requires a field in the task object
22:40:38FromDiscord<mratsim> also just hitting the last victim is probably enough
22:40:56*Guest64990 quit (Ping timeout: 268 seconds)
22:40:56lqdev[m]leorize, Clyybber: I mean, interpreted.
22:41:20sealmoverod is interpreted?
22:42:37FromDiscord<mratsim> right now my main focus is reaching OpenMP perf on plain big loops. OpenMP cannot beat me when the loops are too small because it will parallelized for naught, but when the loops are big, it spends all its time doing actual work while in my case I still have work-stealing overhead in the background.
22:43:01lqdev[m]sealmove: yeah, it is
22:43:15lqdev[m]it's a scripting language after all
22:46:01sealmovei'd love a nim-like shell, similar to xonsh/python
22:47:05lqdev[m]rod isn't exactly Nim, but I might change the current brace syntax to an indentation based one before release
22:47:18lqdev[m]also, `nim secret` is a thing
22:47:36*ofelas joined #nim
22:48:06leorizelqdev[m]: nim secret is no where near xonsh :)
22:48:08sealmoveoh I was wondering about braces, nice
22:48:32sealmovewell, nim secret is not even a shell, it's an interpreter
22:48:42sealmovexonsh is both
22:49:08FromDiscord<mratsim> what's the difference between a turing complete interpreter and a turing complete shell
22:49:13leorizelqdev[m]: so your language is a statically-typed but intepreted language?
22:49:29leorize@mratsim: a shell has better dsls for launching external apps :p
22:49:31lqdev[m]exactly
22:49:54lqdev[m]I wanted static typing because of its readability and potential speed benefits
22:50:04leorizeah, ok
22:50:28leorizeso does it have inheritance?
22:50:42lqdev[m]it likely will, but not right away
22:50:57lqdev[m]I want it to execute some code first
22:51:24lqdev[m]right now it only compiles some bytecode, but it's highly unfinished
22:51:36leorizelqdev[m]: so this is kinda how the vtable would be: https://nim-lang.org/docs/streams.html#StreamObj
22:51:42lqdev[m]and I'm not touching the VM before it can do procs
22:51:45sealmovehmm, statically-typed + interpreted, does any other language like this pop in mind?
22:51:45leorizeyour datatypes will have a pointer to it
22:52:12lqdev[m]sealmove: there's shine, but it's fairly obscure
22:52:25lqdev[m]there's also angelscript afaik
22:52:36FromDiscord<mratsim> Seems like an interesting DSL to build on top of npeg: https://github.com/tlack/xxl
22:52:36lqdev[m]and of course, there's java ;)
22:53:48sealmoveis java considered interpreted?
22:54:02FromDiscord<mratsim> JIT
22:54:18leorizejava is still compiled
22:54:20lqdev[m]technically is has a VM
22:54:36lqdev[m]but yeah, it's compiled
22:54:41sealmovei think as soon as a language has types, there must be some compilation, no?
22:55:05leorizeit has an interpreter for its bytecode so maybe?
22:55:22leorizebut technically CPUs are just instruction interpreters
22:55:27leorizedoes that make everything interpreted? :P
22:55:29lqdev[m]even most dynamically typed langs compile down to bytecode
22:55:41lqdev[m]:thinking:
22:55:51sealmoveyeah, the lines are blur
22:56:29sealmovei guess only languages like bash are trully interpreted
22:56:36sealmoveno bytecode
22:57:33lqdev[m]yeah
22:57:40*solitudesf quit (Ping timeout: 265 seconds)
22:57:40*ofelas quit (Ping timeout: 248 seconds)
22:58:59lqdev[m]I usually just call these languages dynamic and static, dynamic are ones that compile to memory, static are ones that compile to executables. but my naming's likely inaccurate
23:01:43*leorize quit (Ping timeout: 240 seconds)
23:05:34*leorize joined #nim
23:09:07*ofelas joined #nim
23:12:22skrylar[m]people will assume you are talking about dynamic typing if you call a language that
23:14:28*ofelas quit (Ping timeout: 245 seconds)
23:18:01*leorize_ joined #nim
23:20:03*leorize quit (Ping timeout: 240 seconds)
23:20:17*leorize_ is now known as leorize
23:28:30lqdev[m]so, what would be a shorter name for a statically-typed bytecode interpreted language?
23:30:41leorizestatically-typed interpreted language
23:30:52leorizebytecode is more or less implementation info
23:31:55skrylar[m]ruby was interpreted for a long while
23:32:54sealmovelanguages with types that use VM are usually ones like java, C# etc
23:33:06sealmovethese language all implement some kind of JIT for performance
23:33:35sealmoveso ppl usually categorize statically-typed languages who run on VM as "JITed languages"
23:36:23sealmovebut of course there are dynamically-typed languages who use JIT, so this convention is bad
23:44:34*nsf quit (Quit: WeeChat 2.6)
23:44:47*matic quit (Read error: Connection reset by peer)
23:49:56FromDiscord<Clyybber> Araq: Hey, are goto-exceptions faster than set/longjmp ?
23:50:40*ng0 quit (Quit: leaving)
23:57:11sealmovehey, have anyone used flex/bison with Nim?
23:58:21disruptekmadness.
23:58:39disruptekis no one using nimph?
23:59:30disruptekposted on the forum and looks like 400 views but i only got one tiny bug out of it, trivially fixed. 🤷‍♂️