<< 03-07-2019 >>

00:24:31*m712 quit (Ping timeout: 264 seconds)
00:25:26*m712 joined #nim
00:38:01*ertp07 quit (Read error: Connection reset by peer)
00:38:35*ertp07 joined #nim
01:10:23*vlad1777d__ quit (Ping timeout: 268 seconds)
01:10:49*vlad1777d__ joined #nim
01:12:15*onionhammer1 joined #nim
01:13:55*onionhammer quit (Ping timeout: 246 seconds)
01:41:10*apeiro joined #nim
01:48:47*lf-araujo quit (Ping timeout: 245 seconds)
01:57:19*gmpreussner quit (Ping timeout: 246 seconds)
01:57:36*gmpreussner joined #nim
02:13:07*arecaceae quit (Remote host closed the connection)
02:13:27*arecaceae joined #nim
02:15:25*apeiro quit (Ping timeout: 244 seconds)
02:45:20*laaron quit (Quit: ZNC 1.7.1 - https://znc.in)
02:49:34*laaron joined #nim
02:58:41*jfoutaise quit (Ping timeout: 248 seconds)
03:00:28*jfoutaise joined #nim
03:45:29*dddddd quit (Remote host closed the connection)
04:07:44*Snircle quit (Quit: Textual IRC Client: www.textualapp.com)
04:09:32*UNIcodeX_ joined #nim
04:12:33*UNIcodeX quit (Ping timeout: 245 seconds)
04:12:45FromGitter<zacharycarter> PR for sdl2 - https://github.com/nim-lang/sdl2/pull/117
04:33:13*brakmic joined #nim
04:39:10*nsf joined #nim
04:40:02*brakmic_ joined #nim
04:40:55*brakmic quit (Ping timeout: 258 seconds)
05:05:20*narimiran joined #nim
05:09:46*laaron quit (Quit: ZNC 1.7.1 - https://znc.in)
05:10:22*laaron joined #nim
05:16:22*brakmic_ quit (Remote host closed the connection)
05:21:56*Jjp137 quit (Ping timeout: 244 seconds)
05:30:15*laaron quit (Quit: ZNC 1.7.1 - https://znc.in)
05:30:55*laaron joined #nim
05:31:30*solitudesf joined #nim
05:42:06*Jjp137 joined #nim
05:44:35*absolutejam1 joined #nim
06:28:49*tribly quit (Ping timeout: 248 seconds)
06:29:12TangerHey folks, is there much point in specifically importing procs and exports? Or does nim cut out all the dead code well enough?
06:29:40*tribly joined #nim
06:32:04FromGitter<alehander42> it does
06:32:07FromGitter<alehander42> afaik
06:32:12FromGitter<alehander42> dead code elimination
06:32:25TangerDo you reckon it's better for readability to only include the stuff you use?
06:33:01FromGitter<alehander42> not really
06:33:10FromGitter<alehander42> at least its not typical nim style iirc
06:33:34FromGitter<alehander42> but it might be ok if you find out it helps you
06:33:41FromGitter<alehander42> read your code
06:33:47*solitudesf quit (Ping timeout: 245 seconds)
06:33:51narimiranTanger: it depends, but mostly no. see: https://narimiran.github.io/2019/07/01/nim-import.html
06:34:39FromGitter<alehander42> yeah the method thing is a good argument
06:35:16*leorize quit (Ping timeout: 260 seconds)
06:36:41TangerNice read narimiran , cheers. I think my problem is that I haven't got nimsuggest and my goto-definitions working in bim
06:36:43Tanger*vim
06:37:16FromGitter<alehander42> actually i dont use nimsuggest iirc
06:37:21Zevvtanger: what read?
06:37:22FromGitter<alehander42> probably i am missing out
06:37:32*absolutejam1 quit (Ping timeout: 245 seconds)
06:38:32TangerZevv: https://narimiran.github.io/2019/07/01/nim-import.html
06:38:44Zevvthanks!
06:40:00*leorize joined #nim
06:40:00narimiranTanger: i can only recommend neovim and leorize[m]'s plugin (https://github.com/alaviss/nim.nvim). it works like a charm!
06:40:49TangerGot neovim. Was running with zah/nim's plugin
06:42:01Zevvgood'ole vim users are left behind, lonely and suffering
06:42:22Tanger:(
06:45:00FromGitter<alehander42> neovim vs olevim
06:45:10FromGitter<alehander42> what about sublime users
06:46:08Zevvif you use sublime it is your own fault :)
06:46:20FromGitter<alehander42> its great
06:46:44FromGitter<alehander42> only thing i dont like is they dont produce more software
06:47:07FromGitter<rokups> so which editor has best nim support? using vscode now, but nimsuggest is confused at times there
06:47:07FromGitter<alehander42> but sublime merge is a good beginning
06:47:41TangerNimsuggest wasn't working cos my neovim is behind
06:50:03TangerI mean, VSCode probably has the best out of the box setup for nim
06:51:07FromGitter<rokups> thought so
06:52:44narimiran@rokups i used vscode before, and i find my experience in neovim better, YMMV
06:52:46*ertp07 quit (Ping timeout: 252 seconds)
06:54:33TangerI always prefer vim. Using vim may have ruined my capacity to quickly type out an email with normal keybindings, but it's probably worth it
06:57:09FromGitter<rokups> ill rather stick with vscode... ;)
06:57:15Tanger:P
06:58:59*krux02 joined #nim
07:00:00*gmpreussner quit (Quit: kthxbye)
07:00:16*PMunch joined #nim
07:04:19*gmpreussner joined #nim
07:08:43FromGitter<zacharycarter> Araq: I decided to simplify the engine I'm working on and build a Nim port of a RTS engine I found written in C - with some modifications
07:08:49FromGitter<zacharycarter> so RTS engine incoming
07:08:55PMunchCol
07:08:58PMunchCool*
07:09:21FromGitter<zacharycarter> I can add a PBR rendering pipeline later - but porting a large complex C++ engine to Nim is just too much work atm
07:09:27FromGitter<zacharycarter> I'd rather get something simple up and running and then add on top of it
07:10:14FromGitter<zacharycarter> as opposed to spend months writing code and keeping my fingers crossed that everything will work when I finish adding all of the needed functionality
07:10:52FromGitter<rokups> > porting a large complex C++ engine to Nim is just too much work atm ⏎ wrap that engine instead
07:13:45FromGitter<zacharycarter> nah - it's a moving target
07:14:12FromGitter<zacharycarter> plus having something written in pure Nim IMO is better than wrapping a large project like that - the Urho3d Nim stuff is a good example of that
07:16:21Araqyay!
07:17:27FromGitter<rokups> search for "game engine" in github and count how many dead project from one guy you find :]
07:17:46FromGitter<rokups> we call it "cemetery of dead game engines" for a reason :D
07:18:18FromGitter<rokups> forking any project would already give you a leg up because you can pull from upstream
07:18:25FromGitter<arnetheduck> some things you need to discover through personal journeys ;)
07:19:34FromGitter<rokups> hah well yeah you are very right. this reminds me that i constantly keep reminding myself to not try to save other people from their own failures :trollface:
07:23:22*floppydh joined #nim
07:23:25FromGitter<arnetheduck> don't think they need saving usually, specially if the journey itself
07:23:32FromGitter<arnetheduck> is enjoyable or fruitful
07:25:04FromGitter<rokups> i can hardly say same about the time when i wasted 4-5 months of work on something i threw away for an opensource solution all because i was lazy to learn a bit
07:31:50*ertp07 joined #nim
07:42:12Araqzacharycarter: the only remaining problem is that you shouldn't write an engine, you should write a game ;-)
07:42:35Araqyou can extract the useful parts into an engine later.
07:44:06*ertp07 quit (Read error: Connection reset by peer)
07:44:44*ertp07 joined #nim
07:59:47FromGitter<alehander42> what is the one lib/project you'd love to see in nim btw guys
07:59:54*brakmic joined #nim
08:02:49FromGitter<zacharycarter> Araq: well that's pretty much what I'm doing
08:03:17*brakmic quit (Read error: Connection reset by peer)
08:04:04*brakmic joined #nim
08:06:08FromGitter<zacharycarter> but games require lots of plumbing code if you're not going to use Unity / UE4 / CryEngine / Godot etc
08:06:14FromGitter<zacharycarter> or SDL2 with SDL2's renderer
08:07:15FromGitter<rokups> lots of plumbing code is already written
08:11:11FromGitter<rokups> tbh too bad urho3d wrapper died
08:13:22*fredrik92 is now known as couven92
08:13:40*absolutejam1 joined #nim
08:15:05vegaihttps://openmymind.net/Interfaces-In-Nim/
08:15:14vegaiis this still the way to do interfaces?
08:16:56Araqyeah but --newruntime makes a strong point for adding interfaces to Nim... *cough*
08:17:09Araqwe'll see
08:18:20FromGitter<alehander42> hm newruntime?
08:19:08Araqmaybe I'm wrong
08:21:24FromGitter<alehander42> but why does it make a point
08:25:02Araqthe 'owned' environment pointer that is duplicated can't work out
08:26:00*tdc joined #nim
08:35:53*absolutejam1 quit (Ping timeout: 258 seconds)
08:43:13livcdvegai: how do you find these obscure articles?!
08:45:02*absolutejam1 joined #nim
08:45:53FromGitter<alehander42> hm is this tuple of closures method giving too much overhead
08:50:19Araqdefine "too much", interfaces are slow everywhere
08:50:32Araqexcept on the JVM/LuaJIT
08:54:13*purebadger joined #nim
09:01:10*laaron quit (Remote host closed the connection)
09:01:34*laaron joined #nim
09:02:58*laaron quit (Client Quit)
09:03:20*laaron joined #nim
09:06:44*laaron quit (Remote host closed the connection)
09:07:42*ertp07 quit (Ping timeout: 252 seconds)
09:11:46*Shoozza quit (Quit: Bye)
09:12:14PMunchHmm, what was the parser library for Nim that could generate graphs?
09:20:56*NimBot joined #nim
09:22:21PMunchHmm, .uint8 has changed meaning..
09:23:34vegailivcd: I searched for "nim interfaces" :)
09:23:59*dwdv joined #nim
09:24:13*absolutejam1 quit (Ping timeout: 245 seconds)
09:24:21FromGitter<alehander42> https://github.com/zevv/npeg
09:24:24FromGitter<alehander42> PMunch
09:24:43FromGitter<alehander42> Araq: arent they relatively slow on JVM as well
09:25:39*ertp07 joined #nim
09:27:45Araqalehander42: usually it's inlined and specialized
09:28:09Araqa JIT can do it quite easily, it has the information because it works at runtime
09:28:36FromGitter<alehander42> but why cant we specialize based on callsites
09:28:42FromGitter<alehander42> which pass a concrete type
09:28:47ehmryif I get FiledError exceptions for discriminant assignment, is that something I should fix in application code, or just used -d:nimOldCaseObjects ?
09:29:49PMunchalehander42, thanks :) Why isn't that mentioned in the highlights at the top though? It's a pretty awesome feature
09:29:52*ertp07 quit (Ping timeout: 246 seconds)
09:32:33Araqehmry, fix it in your application code, at least try to
09:32:43Araqusually it's easy to fix
09:32:54ZevvPMunch: it's part of "various methods for tracign, optimizing and debugging your parser" :)
09:33:02Araqobj.kind = val; obj.field = a
09:33:06Araqbecomes
09:33:15Araqobj = ObjType(kind: val, field: a)
09:33:17FromGitter<alehander42> PMunch i think its in the docs, Zevv, people like the graph debug
09:33:26FromGitter<alehander42> oh youre here
09:35:55Zevveverybody loves graphs
09:36:00PMunchZevv, it's AFAIK a pretty unique feature though, would be nice to highlight it a bit better :)
09:36:36PMunchI mean many tools exists to generate graphs for various grammars, but this generates it on compile-time from the actual code, which is actually really cool :)
09:37:16PMunchToo bad dot doesn't have an easy way to generate railroad diagrams though..
09:37:17Zevvok, I'll make a little tiny fuzzy cuddly graph and put it on the top of the page
09:37:29*Zevv wikipedias "railroad diagram"
09:37:39PMunchIt's the kind that's in the JSON spec
09:37:58PMunchwww.json.org
09:38:03PMunchThis stuff
09:38:47PMunchI've written a JSON parser just based off those diagrams
09:39:03ehmryAraq: should the standard library be assumed to work in this regard?
09:39:23*ertp07 joined #nim
09:39:23ZevvPMunch: well, graphviz is at fault here
09:39:31PMunchYeah I know
09:41:56Araqehmry, yeah
09:42:57vegaiRust's traits are rather cheap though
09:43:05ehmryAraq: ok, ty
09:43:31FromGitter<mratsim> Cheap?
09:44:45vegaimratsim: they like to say "zero cost" everywhere
09:44:50vegaibut I don't like that term
09:47:22FromGitter<mratsim> Nim equivalent/superset would be concept. At runtime it's the same zero-cost but at compile-time it's probably a bit more compute. But Rust compilation times are several order of magnitudes slower than Nim
09:50:07FromGitter<alehander42> but concept would lead to vtables
09:50:13FromGitter<alehander42> which is not zero-cost usually
09:50:46vegaiI guess concepts aren't documented :/
09:50:51FromGitter<rokups> vtables would be cheaper if table was embedded into the object instead of placing a pointer to table
09:50:59FromGitter<alehander42> but concepts are generic on the other hand
09:51:22FromGitter<alehander42> so you're right, it will just instatiate some functions based on the concrete type in some cases
09:51:39FromGitter<alehander42> so vtables remain for in the cases where runtime polymorphism is needed
09:52:11vegaioh, the docs are on the experimental side: https://nim-lang.org/docs/manual_experimental.html#concepts
09:52:22vegaithanks for that, I had forgotten these things totally
09:52:30FromGitter<mohamedmoussa89> Are these called union types? ⏎ `Vector = RowVector | ColVector`
09:52:32FromGitter<alehander42> they are https://nim-lang.org/docs/manual_experimental.html
09:53:18vegaiyeah, I think this might be perfect for what I need, we'll see
09:53:55FromGitter<alehander42> @mohamedmoussa89 i think sometimes people call algebraic types union types in nim
09:54:12FromGitter<alehander42> but those are union types in a more haskell-y sense afaik
09:54:25FromGitter<mratsim> I'm pretty sure for collection of trait object Rust also uses VTables
09:55:05FromGitter<alehander42> they are generic types as well btw, this confused me several times (so you cant just have a int | string field in a nongeneric obj)
09:55:22FromGitter<alehander42> iirc
09:55:29FromGitter<mohamedmoussa89> Is there anywhere I can read about them? they are not mentioned in the manual as far as I can tell
09:56:23FromGitter<mratsim> Yep see details here: https://alschwalm.com/blog/static/2017/03/07/exploring-dynamic-dispatch-in-rust/
09:56:30FromGitter<mohamedmoussa89> If I have a function `proc f(v: Vector)` and I call `f( newColVector(..))`, does it basically generate a new function that specalises on `ColVector`?
09:56:48FromGitter<mratsim> yes
09:57:31*absolutejam1 joined #nim
09:57:56Araq"This works without newruntime and worked with newruntime in 0.19.4" yay 0.19.4 had newruntime users
09:58:45FromGitter<alehander42> such an oldruntime
09:59:15Araqtime to change the name
10:00:10FromGitter<mratsim> runtimeV2 :P
10:00:47FromGitter<alehander42> interesting is it possible to use
10:00:52FromGitter<alehander42> hm how are called fat pointers
10:00:59FromGitter<alehander42> which store stuff inside the pointer itself
10:01:17Zevv"unportable dirty hacks"
10:01:30FromGitter<alehander42> amazing
10:01:30Araqmratsim: internally it's called optNimV2
10:01:32FromGitter<alehander42> technology
10:01:36FromGitter<mratsim> smart pointers? Intrusive pointers?
10:02:12FromGitter<alehander42> so you just put in several bits hints to which the vtables are
10:02:32FromGitter<alehander42> this doesnt make sense
10:03:45FromGitter<alehander42> but e.g. still i suppose usually you dont have so many vtables in most programs, so you somehow can use less bits to address them and combine this with other data
10:04:08*absolutejam1 quit (Ping timeout: 272 seconds)
10:04:15FromGitter<alehander42> but probably doesnt really help a lot, you still have the indirection which is slow, not the several bytes of size which needs to be aligned anyway
10:05:28FromGitter<mratsim> btw @Araq, I finished my proof-of-concept phase for my Embedded Tensor DSL compiler. ⏎ ⏎ Now as you see int he issues, I encountered a lot of issues for my compile-time backend (I also want a JT in the future). ⏎ ⏎ Do you know how much would be needed to enable compiler plugins as DLLs? ... [https://gitter.im/nim-lang/Nim?at=5d1c7de8be7a4666445eac59]
10:06:06*solitudesf joined #nim
10:06:44Araqnot sure, can't be hard, DLL support improved quite a lot thanks to hotcodereloading
10:13:32FromGitter<mohamedmoussa89> Following on from my previous question, does anybody know why the following doesnt work? ⏎ https://play.nim-lang.org/#ix=1NAK
10:14:48FromGitter<mohamedmoussa89> Basically it looks like `fooN,T (a:Vector[N,T]; b:Vector[N,T])` only works if `a` and `b` are exactly the same type, but I expected to be able to pass different types in. Is this possible?
10:15:19FromGitter<alehander42> i think they are unified indeed
10:15:19FromGitter<mohamedmoussa89> (where `Vector = RowVector | ColVector`)
10:16:17Araqiirc use a 'p: distinct Vector[N, T]'
10:16:42FromGitter<mratsim> Use [V, W: Vector] and a: V[N, T], b: W[N, T]
10:17:05Araqmratsim: sure this works?
10:17:15FromGitter<mratsim> On mobile at the moment so can't give you a file
10:17:15FromGitter<mohamedmoussa89> No generic parameters allowed for V
10:17:23FromGitter<mohamedmoussa89> I have tried that before
10:18:01FromGitter<mratsim> Define type Vector[N, T] = RowVector[N, T] or ColVector[N, T]
10:18:12FromGitter<alehander42> you can define a Vector2
10:18:16FromGitter<alehander42> which is the same
10:18:21FromGitter<alehander42> and pass it for the second arg, this works
10:18:24FromGitter<alehander42> but its a big hack
10:18:26vegaihmm, I cannot seem to create a sequence of things where things are concepts
10:18:30FromGitter<mratsim> If you don't had the generics to your typeclass it will not accept them in that situation
10:18:36FromGitter<alehander42> vegai yeah thats the vtable thing needed
10:18:44vegaialehander42: ah, right
10:18:46FromGitter<mratsim> @vegai it's not implemented yet
10:18:56vegaiok, thanks
10:19:03FromGitter<mohamedmoussa89> @mratsim sorry I wasn't specific enough in the chat but that is indeed what I did in my nimplayground link
10:20:09FromGitter<mratsim> Ah indeed, mmmh strange, I'm pretty sure I found a way 2 years ago when I was playing with such issues
10:20:45FromGitter<mratsim> Especially with "SomeInteger"
10:20:53FromGitter<mohamedmoussa89> I think you mentioned before, you moved away from using dimensions in type signature
10:22:02FromGitter<mohamedmoussa89> or maybe i am thinking of somebody else
10:23:01FromGitter<mratsim> Alternatively, use plain Vector as input, and in the body you can access N and T via a.N and a.T
10:23:20FromGitter<mohamedmoussa89> what I really wanted though, was two vectors with different T
10:23:22FromGitter<mratsim> And you can do static: assert to enforce properties at compile-time
10:23:28FromGitter<mohamedmoussa89> ah
10:23:34FromGitter<mohamedmoussa89> yes, i have used that trick before
10:23:46FromGitter<mohamedmoussa89> I guess I will have to use it again
10:24:20FromGitter<alehander42> on thing i try is
10:24:21FromGitter<alehander42> template vector(N: untyped, T: untyped): untyped = ⏎ ColVector[N,T] | RowVector[N,T]
10:24:27FromGitter<alehander42> and use vector(N, T)
10:24:29FromGitter<alehander42> in type args
10:24:39FromGitter<alehander42> but for some reason this doesnt work
10:24:48FromGitter<alehander42> proc foo*N,T (v: ColVector[N,T] | RowVector[N,T]; p: ColVector[N,T] | RowVector[N,T]): string = ⏎ "foo" ⏎ works
10:25:00FromGitter<alehander42> but not proc foo*N,T (v: vector(N, T); p: vector(N, T)): string = ⏎ "foo"
10:25:37*purebadger quit (Ping timeout: 248 seconds)
10:25:51Araqhttp://ix.io/1NAP/nim works
10:26:28vegaiso I think the tuple as interface things will work the best after all :)
10:26:35vegaiit's kinda neat, actually
10:26:43FromGitter<mohamedmoussa89> @Araq what is the difference between that and the template version?
10:26:56FromGitter<mohamedmoussa89> sorry, not an expert on templates
10:27:30Araqwell the type alias to the | type confuses the compiler
10:27:39Araqso I don't use it, and tada, it compiles
10:27:52Araqnot sure yet if it's a bug :P
10:28:28FromGitter<alehander42> Araq i have a better solution
10:28:29FromGitter<alehander42> imo
10:28:29FromGitter<mohamedmoussa89> using `or` instead of `|` gives a different error
10:29:03vegaiand seems like I can use generics in these tuple/interfaces too, nice
10:29:35Araqvegai, whatever you do, always mix runtime polymorphism with compiletime polymorphism
10:29:52Araq:P
10:30:23vegai:D
10:30:33vegaiI am bound to make many many mistakes
10:31:25FromGitter<alehander42> Araq why is https://play.nim-lang.org/#ix=1NAQ
10:31:28FromGitter<alehander42> not working :(
10:31:33FromGitter<mohamedmoussa89> @alehander42 what was the first thing you wrote? it didnt seem to come through correctly
10:31:50FromGitter<alehander42> similar thing to Araq's solution
10:31:56FromGitter<mohamedmoussa89> ah
10:33:20Araqv: (type section here) is not valid
10:33:31FromGitter<alehander42> but it is not that
10:33:38FromGitter<alehander42> it's type a .. ; a
10:33:40FromGitter<alehander42> and i know this works
10:33:42*absolutejam1 joined #nim
10:33:46FromGitter<alehander42> because i use it *a lot*
10:33:55FromGitter<alehander42> in my js backend with jsobject(a=int, b=..)
10:33:56FromGitter<alehander42> :D
10:35:01Araqnot sure, sem'checking for types is really broken
10:37:24FromGitter<alehander42> fair
10:38:23*absolutejam1 quit (Ping timeout: 245 seconds)
10:38:41*synshroud quit (Quit: ZNC 1.7.4 - https://znc.in)
10:40:16FromGitter<alehander42> oh this is good https://github.com/nim-lang/Nim/pull/11642
10:40:50FromGitter<alehander42> its very annoying to try to compile a debug version of nim and put manually statements just to find out where in your own code you need to workaround the crash
10:43:14*synshroud joined #nim
10:45:52*abm joined #nim
10:49:23*purebadger joined #nim
10:51:48Araqwhy not fix the crashes instead?
11:01:23*ertp07 quit (Ping timeout: 244 seconds)
11:05:14*gangstacat quit (Quit: Ĝis!)
11:14:06leorizeZevv: well I can add vim8 support
11:14:22leorizebut then pretty sure you'll already have neovim in your distro repo
11:14:27leorizeso may as well just use that :)
11:15:37narimiranleorize: IIRC Zevv mentioned he uses Vi, not Vim :) the king of hipsters :D
11:22:04Zevvno its vim, but not neovim
11:22:23Zevvvi is pure masochism, vim is bearable
11:22:43Zevvleorize: \o/ hooray!
11:22:51Zevvfor vim8 support
11:22:52narimiransorry, then i misremembered. it might have been somebody else
11:23:10Zevvdo vim7 and vim6 as well :)
11:23:17ZevvI can live with sync
11:25:43*ertp07 joined #nim
11:26:34leorizezah/vim with a bit of fixing up will get you vim6/7 support :p
11:26:44leorizezah/nim.vim*
11:26:54*absolutejam1 joined #nim
11:31:50*absolutejam1 quit (Ping timeout: 258 seconds)
11:41:43*sealmove joined #nim
11:43:17*Vladar joined #nim
11:43:30*stefanos82 joined #nim
11:45:05PMunchHmm, trying to uncompress something I get this error:
11:45:09PMunchError: unhandled exception: zlib version mismatch! [ZlibStreamError]
11:45:24PMunchFrom the zip package: .nimble/pkgs/zip-0.2.1/zip/zlib.nim(311) uncompress
11:51:08*dddddd joined #nim
12:00:13*absolutejam1 joined #nim
12:02:48*gangstacat joined #nim
12:05:17*absolutejam1 quit (Ping timeout: 268 seconds)
12:10:44*absolutejam1 joined #nim
12:18:53*absolutejam1 quit (Ping timeout: 244 seconds)
12:20:40*tdc quit (Ping timeout: 246 seconds)
12:20:50*tdc joined #nim
12:23:39FromGitter<alehander42> Araq, because users are not compiler devs
12:24:15FromGitter<alehander42> if a user hits such a bug, he might open an issue and he just wants to workaround it somehow, which usually can be done if you see which of your macro/etc doe crashes
12:24:16Araqsurely they can report "internal compiler errors"
12:24:28FromGitter<alehander42> but why on earth should it be so hard for them
12:24:42Araqbbl
12:24:51FromGitter<alehander42> its much easier to report if you can see immediately which part of your own code led to the error
12:25:40FromGitter<alehander42> and often you need to fix your current code/task first and later fix the language you use
12:26:07FromGitter<alehander42> (of course you're right that in principle we should try to fix those errors when we can, sorry)
12:31:48*Snircle joined #nim
12:39:05PMunchHmm, echo zlibVersion() says it's 1.2.11, and according to pacman that is the installed version..
12:48:03FromGitter<zetashift> @PMunch related perhaps? https://github.com/nim-lang/zip/issues/39
12:48:17FromGitter<zetashift> ah I just saw comment
12:48:18FromGitter<zetashift> lmao
12:48:22PMunchYeah I just found and commented on that :P
12:57:18Araqpatch it to use .compile: "zip.c"
12:57:29Araqand forget about the dynlib version check altogether :P
13:11:01AraqWorst push time: 301_341ns vs 356_106ns
13:11:17Araqnew runtime vs realtime GC
13:11:31Araqbut these numbers are so noisy that it's meaningless
13:11:52FromGitter<alehander42> what is push time
13:12:37Araqit's the gc_latency benchmark
13:13:01Araqbut I think I'm benchmarking OS context switches :P
13:13:20*Vladar quit (Remote host closed the connection)
13:15:10Araqsilly benchmarks...
13:17:50Araq-d:useMalloc is twice as slow though
13:17:59Araqso Nim's allocator is doing some things right
13:26:30*PMunch quit (Remote host closed the connection)
13:36:40*nsf quit (Quit: WeeChat 2.4)
13:36:54*Sencatsu quit (Ping timeout: 244 seconds)
13:47:45*vlad1777d__ quit (Ping timeout: 248 seconds)
13:55:01*absolutejam1 joined #nim
13:59:06*Sencatsu joined #nim
14:00:33*vlad1777d__ joined #nim
14:01:24*lritter joined #nim
14:05:33*brakmic quit (Remote host closed the connection)
14:09:05*absolutejam1 quit (Ping timeout: 248 seconds)
14:32:59FromGitter<alehander42> @dom96 as part of my web framework i have https://gist.github.com/alehander42/4c704744738aee6eab49ba561d018aa8
14:33:07FromGitter<alehander42> this is the karax "render" component
14:33:17*leorize quit (Remote host closed the connection)
14:33:20FromGitter<alehander42> i remember you asked for it before but i suspect you had something else in mind
14:33:36FromGitter<alehander42> as i just include the code inside my view
14:33:50FromGitter<alehander42> and use the karax builtin html generation
14:35:10*leorize joined #nim
14:37:03FromGitter<mratsim> Btw, I think a Karax tutorial to create a webapp (say a TODO ;)) would be valuable.
14:37:32*purebadger quit (Ping timeout: 245 seconds)
14:45:11*absolutejam1 joined #nim
14:49:38*absolutejam1 quit (Ping timeout: 258 seconds)
14:52:01*floppydh quit (Quit: WeeChat 2.5)
15:03:38FromGitter<alehander42> does nim support alloca (like in some nim-ish way except for directly calling it)
15:09:55leorizewhy would you want something like alloca?
15:10:10FromGitter<rokups> @mratsim karas has todo example
15:16:58FromGitter<mratsim> @alehander42 I think we have it somewhere in status-im/nim-ranges
15:17:52FromGitter<mratsim> also see: https://github.com/bpr/vla
15:21:14*absolutejam1 joined #nim
15:23:27FromGitter<juancarlospaco> Hi
15:26:19*absolutejam1 quit (Ping timeout: 268 seconds)
15:27:43*dwdv quit (Quit: quit)
15:33:34*absolutejam1 joined #nim
15:38:32*absolutejam1 quit (Ping timeout: 272 seconds)
15:49:08lmariscalhttps://github.com/ocornut/imgui/issues/2529#issuecomment-507971615 a quick chip-8 emulator written in Nim by @kraptor
16:01:06FromGitter<mratsim> Nice, there is no link to his repo though :/
16:01:55*couven92 quit (Quit: Client disconnecting)
16:04:51lmariscalIt seems he works from his private gitea :/
16:07:40FromGitter<kdheepak> I upgraded to the latest nim and latest nimble and am getting issues with my .nimble file. ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5d1cd2ccb1b66b7203cc4562]
16:08:21FromGitter<kdheepak> This seems similar to this: https://github.com/nim-lang/nimble/issues/616
16:08:42FromGitter<kdheepak> But I don't see a solution posted there, it appears that the problem just went away.
16:08:53FromGitter<kdheepak> Any suggestions on what has to be changed for this to work?
16:10:55lmariscalHave you tried uninstalling and installing again the package?
16:11:07lmariscalAnd, are you using the latest version of glm?
16:11:52FromGitter<kdheepak> I'm the author of the glm package here.
16:11:59FromGitter<kdheepak> I'm trying to add a new feature
16:12:14FromGitter<kdheepak> I've upgraded my nim using choosenim to v0.20.0
16:12:15FromGitter<alehander42> imgui looks great
16:12:27FromGitter<kdheepak> and now I'm unable to build
16:12:36lmariscal:v oh
16:12:56FromGitter<alehander42> but i wonder if there is something similar that can work with retained mode easily
16:12:57FromGitter<kdheepak> I even tried a fresh package using nimble init and still the same issue.
16:14:20FromGitter<kdheepak> Trying choosenim devel to see what happen
16:15:00lmariscalIt seems there's some invalid syntax in the file, but it's weird that it happens too with a fresh package
16:15:19lmariscalHave you changed your cfg file?
16:17:09FromGitter<kdheepak> I don't have a cfg file
16:19:33lmariscalIs glm the only package that you are unable to compile or other packages stopped working as well like in the issue?
16:21:25FromGitter<kdheepak> I think everything didn't work.
16:21:42FromGitter<kdheepak> I switched to devel and back to stable and now I don't get the error anymore.
16:22:44lmariscalThat's weird, but if everything is "fixed" now it would be great if you could document how you made it work in the issue
16:41:43*couven92 joined #nim
16:45:30*krux02 quit (Remote host closed the connection)
16:50:27FromGitter<zacharycarter> Does anyone have write access to - https://github.com/nim-lang/sdl2 ? Wondering whether - https://github.com/nim-lang/sdl2/pull/117 - could be merged.
16:56:06*Trustable joined #nim
16:59:10FromGitter<kdheepak> oof it's back
16:59:16FromGitter<kdheepak> I'm getting the same error now
16:59:29FromGitter<kdheepak> and switching back and forth from devel doesn't make it go away.
17:01:14FromGitter<alehander42> var a = "123"
17:01:19FromGitter<alehander42> "123" is actually on the heap
17:01:25FromGitter<alehander42> i cant believe i didnt think of that
17:08:05FromGitter<kdheepak> Yeah this is not a local issue as well: https://travis-ci.com/NREL/glm/jobs/213036343#L467
17:08:26FromGitter<kdheepak> The same thing happens on Travis @lmariscal
17:09:47*krux02 joined #nim
17:12:42*brakmic joined #nim
17:15:13*nsf joined #nim
17:15:58FromGitter<kdheepak> It's extremely inconsistent
17:16:36FromGitter<kdheepak> I switched to devel and got the error. Then deleted ~/.nimble/pkgs/ and still got the error. Then switched back to stable and the error went away.
17:18:31*brakmic_ joined #nim
17:20:25shashlick_@kdheepak can you check contents of ini file generated in /tmp/nimblecache
17:21:00shashlick_Also can you share your nimble file and any cfg file
17:21:46*brakmic quit (Ping timeout: 272 seconds)
17:22:10FromGitter<kdheepak> Sure @shashlick_, everything that I'm working on is in this repository: https://github.com/NREL/glm
17:23:14FromGitter<kdheepak> /tmp/nimblecache/glm_4338518342434582321/glm.ini ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5d1ce48207bf5635af1fd243]
17:23:14disrupteked is masochism, vi is bearable. :-P
17:26:52*Trustable quit (Remote host closed the connection)
17:32:32*absolutejam1 joined #nim
17:34:24FromGitter<rokups> nano anyone?
17:36:00FromGitter<kdheepak> I think it might be because I'm going something funny like this: https://github.com/NREL/glm/blob/9b28be831825713994a23297e7bc4139d0994760/glm.nimble#L7
17:37:37*absolutejam1 quit (Ping timeout: 248 seconds)
17:39:34FromGitter<kdheepak> I think I figured out the problem, atleast for me.
17:40:01FromGitter<kdheepak> It was the echo function I had in the config.nims file, which ended up in the .ini file
17:41:02FromGitter<kdheepak> https://github.com/NREL/glm/commit/5634c8d63d5bb70247dca3432858cf2c0a6cae4e
17:47:00FromGitter<JasperJenkins> Try updating nimble to the latest, it should be fixed. https://github.com/nim-lang/nimble/issues/665
17:49:12FromGitter<kdheepak> Hmm. Okay, I've just removed the echo for now.
17:53:27FromGitter<genotrance> Ya I already fixed that but it's in head
18:01:11FromGitter<zacharycarter> got an event system working in the engine - going to start working on graphics now
18:01:12*ertp07 quit (Read error: Connection reset by peer)
18:01:50FromGitter<zacharycarter> https://github.com/zacharycarter/zeal/blob/master/src/zealpkg/event.nim
18:02:03*ertp07 joined #nim
18:03:13*jjido joined #nim
18:04:07*sealmove quit (Quit: WeeChat 2.5)
18:05:14FromGitter<zacharycarter> I'l start calling it "the game" since everyone hates the concepts of game engines here :P
18:07:07*absolutejam1 joined #nim
18:08:04*purebadger joined #nim
18:10:35*ertp07 quit (Ping timeout: 250 seconds)
18:11:30*ertp07 joined #nim
18:17:36FromGitter<kdheepak> Thanks for all the help!
18:31:38*narimiran quit (Remote host closed the connection)
18:33:48*UNIcodeX_ quit (Quit: Leaving)
18:34:57*narimiran joined #nim
18:38:36Araqzacharycarter: call it "SpaceCraft"
18:39:59FromGitter<zacharycarter> haha
18:41:08FromGitter<zacharycarter> I'm sure I'll be using a lot of placeholder 3d assets until I can attract an artist, but if I can find some decent sci-fi models then definitely
18:41:19*gangstacat quit (Quit: Ĝis!)
18:44:33*gangstacat joined #nim
19:08:26*kungtotte quit (Remote host closed the connection)
19:09:34*jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:13:24FromGitter<juancarlospaco> "FortNim: Player Unknown's BugGrounds" :P
19:14:07FromGitter<juancarlospaco> Theres a dev documentation app named Zeal tho.
19:16:24FromGitter<mratsim> 3rd engine's the charm
19:16:51ldleworki always say that
19:17:17FromGitter<mratsim> AFAIK @zacharycarter had zengine, and I don't remember the name of the first one
19:17:33*jjido joined #nim
19:17:35FromGitter<zacharycarter> frag
19:17:54FromGitter<alehander42> always love looking at those
19:18:40FromGitter<zacharycarter> I think I learned enough through those two projects to make something that might actually be useful this time around
19:19:11FromGitter<mratsim> game engine seems like such a huge task: Programming + Graphics + Sound + Physics + Networking + Some NP-complete problems like pathfinding
19:19:50FromGitter<mratsim> neural networks are easier
19:19:55FromGitter<zacharycarter> there are already a lot of libraries written for those things though
19:20:08FromGitter<zacharycarter> the work is really gluing them all together
19:20:19FromGitter<zacharycarter> but yeah - it is quite a bit of work, but IMO worth the learning experience
19:20:34FromGitter<zacharycarter> plus, you don't have to learn someone else's engine when you're done, you hopefully know how yours works
19:20:50FromGitter<zacharycarter> this is the first engine I'm building an integrated map editor for
19:20:54FromGitter<zacharycarter> which will be fun
19:21:39AraqI wrote an RTS "engine" once, in Pascal. Never ported the code to Nim
19:22:04Araqgot units to run around on a map
19:22:17Araqwith minimap, scrolling, animation
19:22:26Araqand a map editor.
19:22:36ldleworkI forget, does Nim have runtime reflection?
19:22:52Araqno.
19:23:20ldleworkHas anyone written a DI container for Nim yet (if anyone knows off hand) ?
19:23:59Araqdunno, using runtime polymorphism for testing of code is a bloody stupid idea
19:25:11*gangstacat quit (Ping timeout: 252 seconds)
19:27:26*gangstacat joined #nim
19:30:16Araqyou separate code from data and then you construct some data for testing your code. It works well.
19:32:04ldleworkwhat
19:32:37*absolutejam2 joined #nim
19:33:46*brakmic joined #nim
19:34:25*absolutejam1 quit (Ping timeout: 248 seconds)
19:34:59ldleworkAraq, what does data have to do with dependency injection?
19:35:50lmariscaldoes openArray take into account UncheckedArray?
19:36:08lmariscaland if not, can I safely transform from an array to an UncheckedArray?
19:36:32FromGitter<mratsim> no it doesn't, it needs a length
19:36:33*brakmic quit (Read error: Connection reset by peer)
19:36:43*brakmic_ quit (Ping timeout: 245 seconds)
19:36:51*brakmic joined #nim
19:37:08FromGitter<mratsim> castptr UncheckedArray[int (myArray[0].unsafeAddr)
19:37:25FromGitter<mratsim> cast\ptr UncheckedArray\[int\ (myArray[0].unsafeAddr)
19:37:32lmariscalthanks, will better be asking for a ptr instead for the wrapper
19:37:56Araqldlework: ever wondered why Java code is full of DI and C code isn't?
19:38:31AraqC separates data from code and Java doesn't. this has consequences like that.
19:38:32ldleworkBecause the Java runtime has enough faculties to support creating a DI container and C doesn't
19:39:14Araqwhat does that mean? C doesn't lack function pointers.
19:39:43Araqwow, nimpretty is getting pretty good, https://github.com/nim-lang/Nim/pull/11646
19:39:45ldleworkYes, but you'll be building the underlying faculties needed for DI using function pointers, and its reasonable to understand why many people wouldn't do that
19:40:11ldlework"separates data from code" doesn't mean much to me unless you're just talking about "objects" in which case I am not sure how it applies to this conversation
19:40:12*ertp07 quit (Ping timeout: 252 seconds)
19:40:37*ertp07 joined #nim
19:41:07ldleworkor how c's "separation of data and code" allots it complete avoidance of all the issues revolving around a program's objects graph, late binding, testing, and so on
19:41:15ldlework(it doesn't of course)
19:42:17ldleworkanyway, looks like the answer is no, there's no containers out there, was just curious.
19:43:05AraqI think you know what I mean, but you like DI, so any argument like "you don't need it" doesn't convince you.
19:43:17*tdc_ joined #nim
19:43:58ldleworki don't "like" DI insofar a i recognize well-studied properties of programs, and object-graphs in statically typed languages and that DI containers are a well-studied solution to that problem
19:44:36ldleworkyou also say "DI" like the DI containers/frameworks that work to facilitate automated DI are DI -- but all programming languages involve DI, such that all functions require having their parameters passed to them
19:44:47ldleworkand someone must create the instances of those arguments in order to pass them
19:45:18ldleworkit's a general principle of inversion of control that has nothing to do with containers or frameworks or reflection or anything like that... how to solve an interface's dependencies is a universal property of programs
19:45:28*tdc quit (Ping timeout: 245 seconds)
19:47:16ldleworkyou indeed, don't need any help doing DI in your programs, but there are well known benefits to having loosely coupled code with consistent inversion of control - consistent inversion of control leads to the a problem of the bubbling callsite where all object creation floats to the entrypoint. someone at some point said, gee this looks ridiculous I wonder if there's an obvious API here to automate this, and DI
19:47:18ldleworkis the result
19:47:58ldlework"separating data and code" does not address this domain of concepts whatsoever and is a non-answer. has nothing to do with my bad-faith preventing me from seeing the hard-hitting truths in your non-answer.
19:48:32AraqYou don't need "inversion of control" to create test object graphs.
19:48:55ldleworktesting units is a singular value add of inversion of control
19:49:26ldleworkand yes, people wrote and tested software before they formalized the properties of static type dependencies
19:50:45Araqyeah and now people use FP and don't need DI anymore. "After" they formalized the properties it turned out they were fed with bullshit for a couple of decades.
19:51:45Araqand I don't care if you consider it a "non-answer", there is no such thing. There are only answers that you really don't like.
19:52:25ldleworkNo, in the FP world like haskell, dependency injection is so fundamental to alegbraically typed languages they simply don't talk about it the same way that ecosystems that are more object oriented have to frame it
19:52:28ldleworkthe problem doesn't go away
19:52:32ldleworkit is a complete non-answer
19:55:13*purebadger quit (Ping timeout: 248 seconds)
19:55:24Araqhttps://stackoverflow.com/questions/14327327/dependency-injection-in-haskell-solving-the-task-idiomatically
19:56:08ldleworkYes
19:56:10ldleworkRead the comment section
19:56:27ldleworkThey are simply passing the logger as a dependency
19:56:30ldleworkmisses the whole point
19:56:35ldleworkit doesn't address the question whatsoever
19:56:59ldleworkconstructing a dependency and passing it to a dependent is exactly what I meant by "all programming languages deal with DI" as an intrinsic property
19:57:16lmariscalargDefault = argDefault.replace("(((ImU32)(255)<<24)|((ImU32)(255)<<16)|((ImU32)(255)<<8)|((ImU32)(255)<<0))", "high(uint32)") I love this replace
19:57:23ldleworkwhen the type satisfying the logger interface should change, this implementation must change
19:57:34ldleworkmultiplied by refactor points across the program
19:57:43ldleworkyes, you can write programs this way, but you don't have to
19:57:49ldleworkand even in haskell you can solve this problem automatically
19:58:44Araqif DI means "first class functions passed around", then sure, Haskell is full of DI.
19:58:46ldleworkdo you have to use computers and automation to make an intrinsic part of your program, object graph construction, automatic and declarative? no you don't, and people got by before they started doing that.
19:59:00ldleworkits not just functions, but literally any dependency
19:59:18ldleworkand yes haskell, but every other programming languages, is also full of DI, because, yes that's what "injecting a dependency" means
20:00:32*abm quit (Quit: Leaving)
20:03:07ldleworkif B depends on A and B creates A and therefore must pass A its dependencies, then B must also create A's dependencies. If those have dependencies too, it can get heavy for B. So maybe you have some of those dependencies passed into B, but now you've just moved the problem to C. It's a formalizable problem, and if you extrapolate than object-graph construction moves all the way up into the entrypoint where the
20:03:09ldleworkwhole graph is constructed at once. You can do this in any language including an FP one. You now avoid the problem of having dependency-type-refactor points all over your program, but now you have this crazy entrypoint. So all the containers and frameworks do is give you an API for describing the relations between dependencies such that, your entrypoint becomes more declarative than imperative. This all still
20:03:12ldleworkapplies to languages like Haskell or any other language.
20:03:49ldleworkThe only question is whether the language runtime has the faculties for making writing that API easy on the API writers, and the API to be egrominic enough for users to bother using.
20:04:03ldlework"separating code and data" has nothing to do with anything
20:05:39Araqhttps://www.reddit.com/r/haskell/comments/8m9y91/how_does_one_do_dependency_injection_manually_in/dzlx8l7/ well some Haskell user disagrees and says it's actually rather inconvenient to do in Haskell.
20:07:53Araqthis indicates that 'DI' is not a well defined term.
20:09:13ldleworkThey also missed the point of the question, it seems they're no authority
20:09:19ldleworkI use haskell.
20:09:22ldleworkAnd I've just laid the case.
20:09:29Araqand yeah, when you separate code and data there is much less desire to "patch" your code for testing. so you need less "dynamic dispatch" and no matter how you define DI, dynamic dispatch is an essential idea of it.
20:09:30ldlework"separate data and code" is not a case.
20:09:43ldleworkdata has nothing to do with testing a unit with dependencies
20:10:24ldleworkand again unit testing is a single thing that benefits from consistent inversion of control with interfaces
20:10:52ldleworkyou're not patching anything either.
20:11:17ldleworkyou're literally utilizing interfaces for their intrinsic purpose, to alter the implementation of a typed dependency
20:12:17Araqok, so your definition of DI doesn't touch on "dynamic dispatch", got it.
20:13:31ldleworkit's not dynamic dispatch though
20:13:38ldleworkthere's no vtable...
20:13:45ldleworkthere's nothing magical about a container
20:13:55ldleworka simple mapping of types to types, or interfaces to types
20:14:04ldleworkyou ask the container for an instance of a given type
20:14:20ldleworkif it's registered, it creates an instance, first creating instances of it's dependencies and their dependencies and so on
20:14:25ldleworkthen it returns the instance
20:14:28ldleworkthis isn't "dynamic dispatch"
20:14:39ldleworkwhy do you seem to only care to flippantly dismiss out-of-hand?
20:15:15ldleworkit's not like i personally invented this domain, you shouldn't let your urge to disagree with me personally overwhelm :|
20:15:44*purebadger joined #nim
20:15:50*brakmic quit (Read error: Connection reset by peer)
20:15:56Araqwell I think I know what DI means and I've almost never seen DI work without some form of dynamic dispatch
20:16:07ldleworkyou just had it laid out
20:16:13ldleworklol
20:16:17*brakmic joined #nim
20:16:25ldleworkwhere's the dynamic dispatch?
20:16:47ldleworkit's funny you accuse me of having bad-faith and being concretely set in my position
20:17:02ldleworkyou should try reasoned arguments instead of meta-discourse
20:20:22*purebadger quit (Ping timeout: 272 seconds)
20:20:39*jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
20:20:40*Kaivo quit (Quit: WeeChat 2.5)
20:20:48AraqI am unable to find a reply that wouldn't involve bad words, so I shall be silent.
20:25:33*Kaivo joined #nim
20:28:52dom96Araq: Regarding nimpretty, any chance I can convince you of this: https://gist.github.com/dom96/ea123cbdb3f7580bac27c7c6883af2fe
20:29:45Araqbah, that's uglier
20:31:04AraqI don't like this style. what we can do is to make nimpretty recognize it and use it if it's already used in the same file. but it shouldn't be used in the stdlib
20:34:42dom96Adding so many of these rules to nimpretty sounds like it'll be a maintenance nightmare
20:35:21dom96The purpose of having a consistent format is to make things readable, having even slight variations breaks that
20:36:17*narimiran quit (Ping timeout: 248 seconds)
20:38:52FromGitter<awr1> i wish {.importc.} were a bit more flexible. i would like to have to be able to call compile time functions in the importc but it seems as if it won't work. i'd use macros, but meh
20:39:03*nsf quit (Quit: WeeChat 2.4)
20:39:58FromGitter<awr1> like i'd like to do a bit of processing on a Nim identifier name, say `GenericReply`, convert it to snake_case, add a prefix and suffix, to get the importc string `xcb_generic_reply_t`
20:41:00FromGitter<awr1> but `{.importc: "xcb_" & "$1".toSnakeCase() & "_t".}` unfortunately doesn't seem to call `toSnakeCase()`
20:45:27FromGitter<awr1> ideally i would prefer it if i could do something like `{.importc: toXCBTypeName.}`where `toXCBTypeName` would be a compile time pure unary function operating on a single string
20:45:31FromGitter<awr1> and returning a string
20:45:52FromGitter<alehander42> idlework honestly you seemed a bit more flippant in this discussion imho, please dont assume bad faith/etc
20:46:38FromGitter<alehander42> i think people just have different experiences of "DI"/other ideas and many of those discussions are just lost on semantic level anyway
20:48:46ldleworkalehander42, sorry the tone was set from my perspective by having something I was looking into called bloody stupid which is a bit distinct than just having a different experience about a thing
20:49:10ldleworkand then summarily dismissed without much effort along the way. but you're free to interpret it however i guess.
20:49:28FromGitter<alehander42> but its about "runtime polymorphism .."
20:50:09FromGitter<alehander42> thats exactly my point, thats not even dismissal of your thesis, but of concrete materializations of the idea the other person saw before
20:51:57FromGitter<alehander42> most people have an opinion based on experience with certain usecases/aspects of things and its not always easy to change it immediately even if its based on incorrect foundations
20:52:02FromGitter<alehander42> hypothetically
20:52:57FromGitter<alehander42> otherwise can you give an example of well working DI containers in other lang?
20:54:52Araqawr1: I think we can count that one as a bug, please report it
20:56:16Araqdom96: well exactly.
20:56:56Araqnimpretty should be simple and format according to the one style we agreed upon
20:57:17Araqbtw fun fact: nimpretty doesn't understand Nim's indentation :D
20:57:43Araqbut it "guesses" correctly, almost always.
20:58:00Araq(we will fix that one though)
20:59:01ldleworkalehander42, they literally accused me of not caring about any reply and being already set in my position. your characterization couldn't hope to convince anyone who played my role in it, not sure why you wasted your breath.
21:01:07dom96Araq, what is the one style we agreed upon?
21:01:23Araqthe one nimpretty uses.
21:02:23dom96Who's "we" in this context?
21:03:24Araqnep1.rst
21:03:47*tdog joined #nim
21:03:59Araqyeah yeah I know, it lists
21:04:01Araq proc lotsOfArguments(argOne: string, argTwo: int, argThree: float
21:04:01Araq argFour: proc(), argFive: bool): int
21:04:02Araq {.heyLookALongPragma.} =
21:04:19dom96lol
21:04:20Araqhowever, that's closer to nimpretty's formating than your suggested style is
21:04:42dom96sure, just don't split on pragmas
21:05:12dom96and stop changing commas to semicolons everywhere
21:05:16dom96and I'll be 90% happy :P
21:06:17*tdc_ quit (Ping timeout: 245 seconds)
21:09:35Araqldlework: I'm a single person and I didn't mean to "accuse" you of anything.
21:10:05ldlework<@Araq> I think you know what I mean, but you like DI, so any argument like "you don't need it" doesn't convince you.
21:10:33ldleworkYou accuse me of bad-faith, of purposefully not taking or misinterpreting your point. Then you say it doesn't matter because I've already decided anyway and can't be moved by reasoned argument.
21:10:40FromGitter<awr1> @Araq https://github.com/nim-lang/Nim/issues/11649 done.
21:10:51ldleworkI have no idea what being a single person has to do with anything. I'm a single person too. Is that relevant?
21:11:14Araq"they literally accused me ..."
21:11:23ldleworkYes, you literally accused me of those things with that comment.
21:11:52ldleworkMaybe don't engage in this kind of thing at all since I'm not your enemy and such things don't need to be clarified.
21:15:25*shadowbane quit (Quit: Konversation terminated!)
21:15:48Araqwell I'm glad to hear that.
21:18:27FromGitter<awr1> a few friends of mine asked me about nim and i like briefly described it as "the language c++ wishes it was" but in retrospect i wonder if that's a good thing, lol
21:20:43*absolutejam3 joined #nim
21:20:54*absolutejam2 quit (Ping timeout: 268 seconds)
21:21:24*ertp07 quit (Ping timeout: 252 seconds)
21:23:17Araqwell the next time please use more words.
21:25:15FromGitter<awr1> i mean i did, ultimately
21:25:38*ertp07 joined #nim
21:30:20*couven92 quit (Quit: Client Disconnecting)
21:36:16Araqhuh?
21:36:40Araqhttps://github.com/nim-lang/Nim/issues/11649 well you apply toLowerASCII to $1
21:36:50Araqwhich results in $1
21:37:10AraqI thought the issue is that 'importc' cannot do compile-time evaluations
21:39:05FromGitter<awr1> nvm
21:40:46FromGitter<awr1> oh uhhh
21:41:22FromGitter<awr1> yeah i don't really know how to go about this, maybe this should be moved to RFC
21:41:39FromGitter<awr1> b/c as-is you can't really do anything complicated in importc
21:41:55FromGitter<awr1> besides prefixes and suffixes
21:42:23*Jesin quit (Quit: Leaving)
21:43:31lmariscalrewrote the generator for ImGui bindings to fix some issues: https://github.com/nimgl/imgui
21:44:14FromGitter<awr1> if you want i'll close that issue and write up an RFC for the other idea i had
21:47:24*Jesin joined #nim
21:50:35FromGitter<awr1> @lmariscal also that's awesome! i've been pining for imgui bindings for a while
21:51:57lmariscalthanks, in this new version enums are enums and ImVector is a generic type to comply with the c++ source
21:52:13lmariscalalso want to create some helper procs for it
21:58:45Araqawr1: use c2nim, it does support #mangle rules
21:59:04*stefanos82 quit (Quit: Quitting for now...)
21:59:28Araqdom96: https://github.com/nim-lang/Nim/pull/11650 ... why is async so big... :-(
22:01:14*lf-araujo joined #nim
22:04:38*solitudesf quit (Ping timeout: 245 seconds)
22:07:21dom96That's not that big
22:07:33dom96Why is `owned` even a thing when most things are `owned`?
22:08:54Araqmost things are not.
22:10:00Araqbut once it works we can evaluate it precisely
22:10:20Araqand change the default. I'm pretty sure we got it right though
22:11:06Araqwe could also 'infer' it quite easily but I hesitate to do that
22:12:45*ertp07 quit (Read error: Connection reset by peer)
22:13:21*ertp07 joined #nim
22:13:57*brakmic quit ()
22:19:46*krux02 quit (Remote host closed the connection)
22:39:39*lf-araujo quit (Ping timeout: 264 seconds)
23:00:49*absolutejam3 quit (Ping timeout: 248 seconds)
23:04:40*lf-araujo joined #nim
23:29:02*ertp07 quit (Read error: Connection reset by peer)
23:30:18*ertp07 joined #nim
23:50:50*xet7 quit (Remote host closed the connection)
23:52:15*xet7 joined #nim