<< 11-05-2021 >>

00:00:16FromDiscord<ElegantBeef> lol zeta commented on it
00:00:42FromDiscord<checkersai> Oh yeah lol
00:02:11FromDiscord<checkersai> In hindsight `|->` maybe was a bad idea, should have gone with `-->`
00:02:29FromDiscord<ElegantBeef> Eh even then probably wouldnt be accepted
00:02:37FromDiscord<ElegantBeef> `func` should work is what it comes down to
00:02:41FromDiscord<checkersai> yeah
00:02:51FromDiscord<ElegantBeef> You can use a nimble package until that is resolved
00:04:20FromDiscord<zetashift> In reply to @ElegantBeef "lol zeta commented on": I totally forgot about it too!
00:04:54FromDiscord<ElegantBeef> Cmon you dont just remember every issue and PR you read and store the contents in your brain whilst at the same time forgetting basic things like what you ate?
00:06:13FromDiscord<zetashift> I sometimes encounter memory corruption 😦
00:06:16FromDiscord<checkersai> In reply to @ElegantBeef "`func` should work is": I gave it an honest effort but I'm too small-brain
00:06:47FromDiscord<ElegantBeef> Yea join the club, eventually i'm going to try to implement the stronger type inference with my small brain
00:07:04FromDiscord<zetashift> I do remember your PR/RFC about that
00:07:43*azed joined #nim
00:07:45FromDiscord<ElegantBeef> Good it's a good RFC, and questionable PR πŸ˜›
00:08:23FromDiscord<ElegantBeef> Comes down to making pure enums mostly useless unless you want to be overly verbose at every step
00:09:26FromDiscord<zetashift> It really is a good RFC and treeforms comments ring true to me. Not to his extent tho lol
00:10:22FromDiscord<zetashift> doesn't seem to be a good beginners-first-rfc tho haha
00:10:32FromDiscord<ElegantBeef> Jeez
00:10:56FromDiscord<ElegantBeef> I spent a week on the PR which i though i did well, then it dieded in a fire of CI, so take that
00:11:01FromDiscord<ElegantBeef> (edit) "though" => "thought"
00:12:56FromDiscord<zetashift> CI's the true enemy of PR's
00:13:28*NimBot joined #nim
00:13:30*njoseph quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
00:13:50*njoseph joined #nim
00:14:41FromDiscord<ElegantBeef> And here i thought it was shitty implementations
00:15:37FromDiscord<zetashift> there are always ways to improve, compiler hacking ain't easy
00:16:29FromDiscord<ElegantBeef> Yea i mean i'll probably try to implement what araq suggested in the RFC, but doubtful that i can reason that into functionality
00:18:51FromDiscord<zetashift> could always ask questions along the road, the team is pretty responseful
00:28:39FromDiscord<zetashift> well I just changed every occurence from func to proc for now and keep using `->` because it's easy on the eyes(not sure if this is how programming should be done)
00:28:46FromDiscord<zetashift> good night y'all for now
00:28:56FromDiscord<ElegantBeef> Buh bye
00:32:07FromDiscord<dan> somebody here has probably tried integrating nim into a larger project with a build system. this question is for you: how did you do it?
00:33:32FromDiscord<zetashift> Status (one of the biggest Nim users) somewhat detail their stuff here: https://status-im.github.io/nim-style-guide/06_tooling.html#build-system
00:35:20FromDiscord<dan> thats an awesome resource, thank you!
00:40:54FromDiscord<dan> as an addon to that, has anybody tried with meson?
00:55:47*Cthalupa quit (Ping timeout: 250 seconds)
00:56:19*Cthalupa joined #nim
01:10:13*rockcavera quit (Remote host closed the connection)
01:10:38*rockcavera joined #nim
01:13:43FromDiscord<Sabena Sema> I've asked this before but forgot the location of the information: Does anyone remember the ideas around the changes to methods proposed for newruntime. Some form of the compiler creating vtables on demand to hand to functions
01:14:00FromDiscord<Sabena Sema> I've used nim with meson a bit, I had a branch of meson a while ago I was working on adding nim support to
01:14:06FromDiscord<Sabena Sema> other stuff came up and I was unable to complete it
01:14:28*krux02 quit (Remote host closed the connection)
01:23:14*Tlangir joined #nim
02:07:29*azed quit (Quit: WeeChat 3.1)
02:22:23*azed joined #nim
02:26:34*azed quit (Client Quit)
02:49:46*thomasross quit (Ping timeout: 240 seconds)
02:55:01*azed joined #nim
03:17:42*Tlangir quit (Remote host closed the connection)
03:21:23*azed quit (Quit: WeeChat 3.1)
03:28:09*Tlangir joined #nim
04:18:59ForumUpdaterBotNew thread by Xioren: Best way to check for Json null values?, see https://forum.nim-lang.org/t/7963
04:25:01*hyiltiz quit (Ping timeout: 268 seconds)
04:25:38*hyiltiz joined #nim
04:25:38*hyiltiz quit (Changing host)
04:25:38*hyiltiz joined #nim
04:38:53*narimiran joined #nim
04:42:40*hyiltiz quit (Ping timeout: 252 seconds)
04:49:12FromGitter<awr1> if there's something i'm aching for in the nim standard library/nimble it's a good bidirectional table type
04:55:45*hyiltiz joined #nim
04:55:45*hyiltiz quit (Changing host)
04:55:46*hyiltiz joined #nim
05:27:53*federico3 quit (Remote host closed the connection)
05:28:47*wasted_youth2 quit (Ping timeout: 250 seconds)
05:29:03*federico3 joined #nim
05:29:36*wasted_youth2 joined #nim
05:30:55*FromDiscord quit (Ping timeout: 252 seconds)
05:31:41*hyiltiz quit (Ping timeout: 246 seconds)
05:31:47*FromDiscord joined #nim
05:32:25*hyiltiz joined #nim
05:32:25*hyiltiz quit (Changing host)
05:32:25*hyiltiz joined #nim
06:27:13FromDiscord<Varriount> In reply to @Sabena Sema "I've used nim with": New runtime is already here, if I recall correctly. The main change planned for methods was switching from dynamics dispatch based on all parameter types, to dispatch based on the first parameter type.
06:28:01FromDiscord<Varriount> I don't know if that's been implemented or not. The manual seems to indicate that methods are disabled entirely, but I highly doubt that.
06:28:14FromDiscord<Sabena Sema> Yeah there was some talk of doing that via synthethizing vtables and letting you get a real handle to the synthetic vtable
06:29:58FromDiscord<Varriount> I don't know if that has been implemented.
06:30:28FromDiscord<Varriount> The C++ backend might use C++ virtual methods, you would have to check.
06:31:02FromDiscord<Sabena Sema> Allri, fat pointers and synthesized vtables have come up in wg21 (c++) discussions around tools for abi stable interfaces.
06:31:10FromDiscord<ElegantBeef> Multi methods are disabled, normal methods are not
06:31:25FromDiscord<Sabena Sema> And I thought I remembered nim having a novel approach
06:31:34FromDiscord<ElegantBeef> to enable multi methods you have to use a compiler switch
06:31:45FromDiscord<Sabena Sema> Are "normal" methods still implemented via the multiple dispatch tables?
06:32:03FromDiscord<ElegantBeef> I do not know, i though Nim never had a vtable and just had nested if statements
06:32:05FromDiscord<Sabena Sema> Just with the dispatch on additional params disabled?
06:32:07FromDiscord<ElegantBeef> (edit) "though" => "thought"
06:32:29FromDiscord<Sabena Sema> What do nested if statements have to do with anything?
06:33:10FromDiscord<Sabena Sema> In any case there are several vtable implementations for nim.
06:33:21FromDiscord<ElegantBeef> I meant joined `if` statements,
06:33:40FromDiscord<Varriount> In reply to @Sabena Sema "What do nested if": I think what @ElegantBeef means is that methods essentially use conditionals for implementation lookup.
06:33:41FromDiscord<ElegantBeef> I actually dont know the dispatch method so just imagined something silly πŸ˜„
06:34:28FromDiscord<Varriount> Which was true, last I checked. At the very least, the compiler codebase makes no reference to vtables at all.
06:35:00FromDiscord<Sabena Sema> Yeah. The table based dispatching is a bunch of ifs
06:35:33FromDiscord<Sabena Sema> Allright, I recall reading about this vtable thing on some blog (maybe araq's) years ago
06:35:33FromDiscord<Varriount> It would be nice if Concepts could be used. They're essentially Go interfaces anyway.
06:36:03FromDiscord<ElegantBeef> I mean i did a dumb method using the new concepts but it doesnt do a Vtable either, just was having fun with them
06:36:16FromDiscord<Varriount> (in concept, if not implementation)
06:36:22FromDiscord<Sabena Sema> You can't write a concept that refers to the presence of a set of functions without typeclasses tho right?
06:36:42FromDiscord<ElegantBeef> https://github.com/beef331/constructor/blob/master/tests/timplements.nim#L26-L29 My grande implementation πŸ˜„
06:36:51FromDiscord<Varriount> In reply to @Sabena Sema "You can't write a": What do you mean?
06:37:23FromDiscord<Sabena Sema> Like concepts always refer to "all specializations of a given generic"
06:37:35FromDiscord<ElegantBeef> Well they're practically user defined duck type
06:37:41FromDiscord<ElegantBeef> (edit) "type" => "typing"
06:38:04FromDiscord<Sabena Sema> Never "all objects a that have f(a), and g(a) etc
06:38:27FromDiscord<Sabena Sema> Generics are already unconstrained in nim by default
06:38:27FromDiscord<ElegantBeef> You can write that though
06:38:53FromDiscord<Varriount> Isn't that the core usage of concepts? To assert that a type must have X procedures implemented?
06:39:13FromDiscord<Sabena Sema> Maybe what your referring to as concepts is new
06:39:34FromDiscord<ElegantBeef> Concepts are used to describe implementations of an object to match a signature
06:39:45FromDiscord<ElegantBeef> So yea that's like the exact usag
06:39:46FromDiscord<ElegantBeef> (edit) "usag" => "usage"
06:39:48saemUniversal vs Existential types is the distinction being made AFAICS.
06:39:56FromDiscord<Sabena Sema> Oh yeah
06:40:00FromDiscord<Sabena Sema> Concepts can do it
06:40:04FromDiscord<ElegantBeef> Look at saem and his big words, what does "is" mean?
06:40:09saemFor all types vs there exists a type.
06:41:01FromDiscord<Sabena Sema> I thought nim called those typeclasses and used the term concept for the ability to write like "Table" to mean "All possible table specializations"
06:41:33FromDiscord<ElegantBeef> Type classes are like `int or float`1
06:41:34FromDiscord<ElegantBeef> (edit) "float`1" => "float`"
06:42:23FromDiscord<ElegantBeef> `Table` without `[A, B]` is just a inferred generic
06:42:46FromDiscord<Sabena Sema> You can't take a type that satisfies a concept and turn it into a singular value (with an address) that you can do stuff with, it's gotta be generic all the way down
06:44:43FromDiscord<Sabena Sema> That ability to write a polymorphic function thats actually real and has a single address and generates a single symbol in object code is what we're interested in
06:45:03FromDiscord<Sabena Sema> C++ already has concepts that work almost identically to nim's
06:45:23saemI thought those were reified?
06:45:34FromDiscord<Sabena Sema> With some other stuff nim doesn't do (subsumption rules, primarily)
06:45:43FromDiscord<Sabena Sema> I mean thats a common word for it yes
06:45:59FromDiscord<Sabena Sema> Wait do you mean c++ concepts or the thing I'm describing
06:46:55FromDiscord<Sabena Sema> Actually: how does nim handle overload sets that contain multiple viable functions that are both constrained by concepts
06:47:11saemC++, I get with templates effectively it'll do that.
06:48:29FromDiscord<Sabena Sema> What I was describing (the behavior of generating real object code) is something wg21 is interested in, it's not what concepts do today (you use virtual functions for that today)↡↡C++ concepts and templates work almost exactly the same as nim concepts and generics
06:50:24FromDiscord<Varriount> You'll have to talk with Araq about that.
06:50:28saemOK, your after runtime polymorphism as opposes to parametric polymorphism -- I _believe_ that's the general terminology.
06:51:17FromDiscord<Sabena Sema> yeah, exactly. it would appear nim's novel approach was never implemented (which makes it less interesting to us)
06:51:26ForumUpdaterBotNew thread by Arnetheduck: HTTP(s) Client / Server in chronos, see https://forum.nim-lang.org/t/7964
06:51:49FromDiscord<Varriount> In reply to @Sabena Sema "yeah, exactly. it would": Not for lack of user interest.
06:52:18saemAnd to clarify, the thing that's "special" here is that there is no subtype relationship, it's a universal type.
06:54:32FromDiscord<Sabena Sema> yeah, I suppose. Sub-typing relationships are only required by the usual form of runtime polymorphism because of where and how the function table is generated
06:55:26saemFor all Foo, some proc bar (eg: Foo -> int), does a thing. Which results in a single address for a bar proc that can handle all qualifying Foo?
06:55:46FromDiscord<Sabena Sema> for some definitions of bar yes
06:56:06FromDiscord<Sabena Sema> erm for some definitions of all that is
06:56:35FromDiscord<Sabena Sema> what we really care about is "foo, and any future changes that might be made to foo"
06:56:53saemYeah, I guess that's a narrow case of dynamic dispatch. More workable in a unity build like most Nim codebases
06:57:24FromDiscord<Sabena Sema> Yeah, nim doesn't have the problem we're trying to address (although it might, if it gets popular)
06:57:30saemSo why do you require there to be only one bar?
06:58:03FromDiscord<Sabena Sema> because we want to generate a bar symbol that the user can link to, and then allow the user to pass _future versions_ of foo to that bar function _without recompiling_ bar
06:58:16saemOh damn
06:58:27saemThat's a much different problem.
06:58:41saemI mean the string method of dispatch is one way to go
06:59:19saemWhich is what I believe Nim does in some cases, I can't remember. My understanding of the various dispatching strategies is weak.
07:00:24saemI think be concepts and... for some reason I want to say orc/arc with multi-methods? Do that.
07:00:29FromDiscord<Sabena Sema> yeah I'd actually love to use this as an oppertunity to get some more flexable forms of dynamic dispatch into c++, and maybe make it easier to pick either form of dispatch for certain interfaces
07:00:37saemNew concepts.
07:01:03FromDiscord<Sabena Sema> ownership has come up in the discussions, but I think it's a distraction
07:01:34FromDiscord<Sabena Sema> if foo and "new foo" have different ownership and allocation semantics you're really boned
07:02:09FromDiscord<Sabena Sema> hell if I can find a way to beat the uniform function call syntax drum in c++ land I will πŸ˜„
07:03:27FromGitter<dilawar> How to import a struct to nim which has `addr` as field? ⏎ ⏎ I am trying to import following c-struct into nim: ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=609a2c3f4a51aa7e47d3bb0f]
07:04:55saemYeah, vtable access is probably what you're after and then a bit more.
07:05:34FromDiscord<Sabena Sema> yeah, c++ already has the "a bit more" to some extent in the form of virtual base class access
07:06:04saemWell that's into inheritance and that dramatically simplifies things.
07:06:18saemI need to crash, though.
07:06:23FromDiscord<Sabena Sema> yeah, I do too
07:06:27saemGood luck and good night.
07:07:01FromDiscord<Sabena Sema> In reply to @Varriount "Not for lack of": what prevented it? Just task prioritization on other stuff?
07:07:35FromDiscord<ElegantBeef> in nim you can override fields through using backticks
07:07:39FromDiscord<ElegantBeef> (edit) "fields" => "keywords"
07:07:46FromDiscord<ElegantBeef> It's called stropping
07:07:56FromDiscord<ElegantBeef> https://nim-lang.org/docs/manual.html#lexical-analysis-stropping
07:08:26FromDiscord<ElegantBeef> you can also do `nicerName{.importC: "addr".}` i believe
07:35:31ForumUpdaterBotNew thread by Nnahito: Is the official Nim DLL redistributable?, see https://forum.nim-lang.org/t/7965
07:46:18*Tlangir quit (Remote host closed the connection)
07:54:57*PMunch joined #nim
08:01:04FromGitter<dilawar> > *<FromDiscord>* <ElegantBeef> in nim you can override fields through using backticks ⏎ ⏎ Worked. Thanks a lot. :)
08:02:22*tiorock joined #nim
08:02:23*tiorock quit (Changing host)
08:02:23*tiorock joined #nim
08:02:23*rockcavera is now known as Guest72469
08:02:23*tiorock is now known as rockcavera
08:04:53*Guest72469 quit (Ping timeout: 240 seconds)
08:17:43FromDiscord<ElegantBeef> No problem
08:19:25*Tlangir joined #nim
08:19:45*krux02 joined #nim
08:19:56*whitefly quit (Remote host closed the connection)
08:20:08*whitefly joined #nim
08:21:35*Tlanger joined #nim
08:21:57*D_ quit (Remote host closed the connection)
08:22:52*D_ joined #nim
08:24:17*Tlangir quit (Ping timeout: 268 seconds)
08:29:14FromDiscord<haxscramper> In reply to @Sabena Sema "what prevented it? Just": I think it was mentioned in on of the previous meetups that vtref was not implemented only because old concepts took too much time to get right
08:29:30FromDiscord<haxscramper> Vtref is documented in experimental manual
08:29:43FromDiscord<haxscramper> Well, documentation is there but it is commented out
08:30:58FromDiscord<haxscramper> https://raw.githubusercontent.com/nim-lang/Nim/devel/doc/manual_experimental.rst "vtable types"
08:40:02*grobe0ba quit (Quit: ZNC 1.7.5 - https://znc.in)
08:40:40*grobe0ba joined #nim
08:53:25*xet7 quit (Remote host closed the connection)
09:47:52FromDiscord<Varriount> In reply to @Sabena Sema "what prevented it? Just": Prioritization, I believe.
09:51:16FromDiscord<arnetheduck> it's more fun to implement new features partially than to complete old ones
09:53:56FromDiscord<exelotl> I'd also like vtables. I was experimenting the other day with methods & inheritance on the GBA and they're really inadequate. GBA has no cache, so the more types you add, the longer the if-chain gets and the slower the program gets.
09:54:32FromDiscord<exelotl> and the RTTI created for each type when you use inheritance wastes RAM
09:57:39FromDiscord<exelotl> I ended up sticking with some home-grown vtables which rely on exportc/emit/importc. But it would be great if something like this just existed in the language
10:03:41*vicfred quit (Quit: Leaving)
10:05:29FromDiscord<exelotl> /s/cache/branch-prediction
10:21:09*clyybber joined #nim
10:42:18*abm joined #nim
10:51:51*dithpri[m] joined #nim
11:04:27*Vladar joined #nim
11:24:11FromDiscord<zetashift> In reply to @arnetheduck "it's more fun to": I feel like this is an unfair jab (if it was meant as one)
11:25:29FromDiscord<zetashift> In reply to @exelotl "I ended up sticking": I found this: https://github.com/codehz/nim-vtable not sure if it's helpful tho
11:29:05*canbenshanlo joined #nim
11:29:35ForumUpdaterBotNew question by ellethee: How i can dump a JsonNode to yaml file using NimYAML?, see https://stackoverflow.com/questions/67485823/how-i-can-dump-a-jsonnode-to-yaml-file-using-nimyaml
11:32:25FromDiscord<ajusa> In reply to @zetashift "I feel like this": Eh Nim has some pretty serious open issues imo
11:33:09FromDiscord<ajusa> https://github.com/nim-lang/Nim/issues/12652 is the main one that came to mind, tons of people use async
11:36:02FromDiscord<ajusa> Actually if you just filter by severe you can see a lot of issues on GitHub, some are more severe than others though
11:42:21FromDiscord<Yardanico> In reply to @zetashift "I found this: https://github.com/codehz/nim-vtable": there's https://github.com/yglukhov/iface
12:01:38PMunchHmm, maybe someone should write a really good binary obfuscation library that can easily be imported in Nim so that these Nim malwares won't trip up AV software to flag all Nim binaries :P
12:15:13federico3there should be online AV testing services that run a binary against multiple AVs and give a report
12:16:03PMunchThere is stuff like this for some AV vendors: https://www.virustotal.com/gui/
12:16:52PMunchThese are the results for a run on the Nim compiler someone on the forums did: https://www.virustotal.com/gui/file/c6066f84227c59f8cb5f3061258d336b5013a31a1b4b625c2071301f417d3e1b/detection
12:17:03federico3https://www.virscan.org/ maybe?
12:18:35PMunchhttps://forum.nim-lang.org/t/7830#49727
12:19:48PMunchIt would be nice to integrate something like this with the Nim compiler and tools to catch these before they go into production
12:34:19*qwertfisch quit (Ping timeout: 250 seconds)
12:34:32*qwertfisch joined #nim
12:45:45*rockcavera quit (Remote host closed the connection)
12:46:19*rockcavera joined #nim
12:55:04*beatmox- quit (Read error: Connection reset by peer)
12:57:07*beatmox joined #nim
12:59:49federico3IIRC there are scanners that can be integrated in CI systems
13:09:42*rockcavera quit (Remote host closed the connection)
13:10:54*rockcavera joined #nim
13:29:21ForumUpdaterBotNew thread by Nimmer: How to properly use c2nim?, see https://forum.nim-lang.org/t/7966
13:39:14FromDiscord<ajusa> Anyone know of an asyncssh library that supports tunnelling with public key auth? Treeform's and yglukhov's don't seem to
13:39:31giacogeneral question, why has nim been invented as a compiler to C/C++/JS instead of LLVM IR?
13:40:05FromDiscord<ajusa> In reply to @giaco "general question, why has": I believe llvm IR wasn't mature in 2006
13:40:32giacowell, perfect answer. Thanks
13:41:27*fredrikhr joined #nim
13:41:43FromDiscord<ajusa> Also for my earlier question, it seems that yglukhov is just missing a constructor for the tunnelled with public key, that's simple enough to add
13:43:08FromDiscord<ajusa> See https://github.com/arnetheduck/nlvm if you want to try llvm with Nim
13:47:12PMunch@ajusa, pretty much. LLVW wasn't known/viable when Nim started out, same reason it compiles to JS and not WASM. That being said it really helps with running Nim on absolutely everything, just see how easy it is to get it running on microcontrollers for example.
13:49:33*narimiran quit (Ping timeout: 260 seconds)
13:51:36*canbenshanlo left #nim ("Left")
13:52:23PMunchHmm, have nightlies been down since late April?
13:52:40PMunch`choosenim update devel` pulls 2021-04-30 for me..
14:02:43FromDiscord<zetashift> In reply to @ajusa "Eh Nim has some": I agree but I don't think the Nim team chooses what to tackle based on what is fun though... I find such statements counterproductive, but then again arne has a lot more experience with Nim
14:03:30*dbohdan joined #nim
14:29:31ForumUpdaterBotNew thread by Talaing: Custom colored output in Nim, see https://forum.nim-lang.org/t/7967
14:40:50PMunchHmm, I just updated one of my Digispark clones to the latest Micronucleus bootloader, curious about why it's so "large" I dug into it and it has a custom implementation of V-USB. I wonder if it would be possible to write a Nim library that would be importable in a similar fashion to includeOS and would simply add the bootloader code for you along with a V-USB implementation in such a way that using V-USB in usercode would reuse the same code. Basically an
14:40:50PMunch`import micronucleus` at the top of your project and that would package your application in with the bootloader and allow for even smaller programs
15:13:27*beshr quit (Read error: Connection reset by peer)
15:14:05*beshr joined #nim
15:20:31*gangstacat quit (Ping timeout: 260 seconds)
15:23:38*Adeon quit (Remote host closed the connection)
15:24:03*Adeon joined #nim
15:27:37*xet7 joined #nim
15:28:44*fredrikhr quit (Ping timeout: 252 seconds)
15:30:02*vicfred joined #nim
15:48:30*Deknos joined #nim
15:52:38FromDiscord<Sabena Sema> In reply to @haxscramper "I think it was": Wait what's the difference between old and new concepts
15:54:11FromDiscord<haxscramper> I don't use old concepts, and new ones are not ready yet, but the RFC for new ones is: https://github.com/nim-lang/RFCs/issues/168
15:54:35*PMunch quit (Quit: leaving)
15:56:54*Deknos left #nim (#nim)
15:57:46ForumUpdaterBotNew thread by NameUndefined: Threading in Nim, see https://forum.nim-lang.org/t/7968
16:44:08*abm quit (Quit: Leaving)
16:54:07*wasted_youth2 quit (Quit: Leaving)
17:19:44FromDiscord<Sabena Sema> hmm, yeah c++ style concepts have some issues when you want to fully typecheck concept using generics. C++ doesn't do this, it verifies constraints but does not verify that the template actually works for all types satisfying the constraints
17:23:20FromDiscord<theSherwood> What is a "concept" at a high level? It seems a bit like interface or a protocol. Am I understanding that correctly?
17:23:23FromDiscord<Sabena Sema> that doesn't prevent you from getting like, code completion from c++ concepts
17:23:48FromDiscord<Sabena Sema> "c++ concepts" are the things introduced after the concept keyword in c++
17:24:03FromDiscord<Sabena Sema> "old style nim concepts" are the currently implemented version in nim, which is similar
17:24:14FromDiscord<Sabena Sema> they are a way to constrain generic parameters
17:25:12FromDiscord<theSherwood> Good to know, thanks
17:34:47FromDiscord<hamidb80> i think half of nimble packages is written by treeform
17:34:50FromDiscord<hamidb80> https://github.com/treeform/flippy
17:52:01Oddmongeri cannot define an Β«anonymousΒ» object inside the call of a proc ?
17:54:41Oddmongerah that's because i have to give fields name when defining (i was confused with tuples where it's optionnal)
17:59:49FromDiscord<hamidb80> sent a code paste, see https://play.nim-lang.org/#ix=3mvN
17:59:57FromDiscord<hamidb80> it works fine
18:00:52FromDiscord<konsumlamm> yes, all types have default values
18:01:10FromDiscord<Sabena Sema> with vtref was the intent that the procs in the vtable accept _vtable_ pointers instead of the object, and if so why does the vtref even need a reference to the object itself?
18:01:20FromDiscord<Sabena Sema> sorry for asking all these questions about a years old unimplemented feature 😐
18:01:45Oddmonger@hamidb80 : but if you want to initialize fields, you have to give their name
18:02:20Oddmongerwith a tuple, you can omit tuple name (it's just a sugar, but will disappear at compilation)
18:02:29FromDiscord<hamidb80> yeah
18:03:39Oddmongerat least, () is consistent … except when you define named tuples of course ( :) ).
18:03:51Oddmongeroh, there is {} too for sets
18:08:41FromDiscord<Varriount> In reply to @Sabena Sema "sorry for asking all": Zah (Zahary) would know more, he was the one that wrote the idea.
18:10:44*aeverr quit (Ping timeout: 268 seconds)
18:46:08*narimiran joined #nim
18:49:53FromDiscord<Sabena Sema> oh, nim's old concepts do have subsumption rules
18:49:54FromDiscord<Sabena Sema> cool
18:50:06FromDiscord<Sabena Sema> it's not clear how well they actually _work_
19:17:43FromDiscord<Sabena Sema> hmm, I'm looking at the file handling stuff and I think you could make them actually able to open any path on windows by just replacing uses of `newWideCString` with something that didn't replace unpaired surrogates with replacement chars
19:19:56*letto quit (Quit: Konversation terminated!)
19:21:03FromDiscord<Sabena Sema> arguably the process related procs also shouldn't replace unpaired surrogates
19:21:59*letto joined #nim
19:57:25*narimiran quit (Ping timeout: 268 seconds)
20:09:41*D_ quit (*.net *.split)
20:09:42*notchris quit (*.net *.split)
20:09:42*alri[m] quit (*.net *.split)
20:09:42*FromGitter quit (*.net *.split)
20:09:42*oprypin quit (*.net *.split)
20:09:42*crem quit (*.net *.split)
20:09:42*Prestige quit (*.net *.split)
20:09:42*npgm quit (*.net *.split)
20:09:42*jaens[m] quit (*.net *.split)
20:09:42*blaumetallic[m] quit (*.net *.split)
20:09:42*Avahe[m] quit (*.net *.split)
20:09:42*MTRNord quit (*.net *.split)
20:09:42*BitPuffin quit (*.net *.split)
20:13:49*D_ joined #nim
20:13:49*notchris joined #nim
20:13:49*alri[m] joined #nim
20:13:49*FromGitter joined #nim
20:13:49*oprypin joined #nim
20:13:49*crem joined #nim
20:13:49*Prestige joined #nim
20:13:49*npgm joined #nim
20:13:49*jaens[m] joined #nim
20:13:49*blaumetallic[m] joined #nim
20:13:49*BitPuffin joined #nim
20:13:49*Avahe[m] joined #nim
20:13:49*MTRNord joined #nim
20:16:28*Clonkk[m] quit (Ping timeout: 246 seconds)
20:16:28*altarrel quit (Ping timeout: 246 seconds)
20:16:28*screamapiller[m] quit (Ping timeout: 246 seconds)
20:16:28*konradmb[m] quit (Ping timeout: 246 seconds)
20:16:36*m33[m] quit (Ping timeout: 245 seconds)
20:16:39*cheer[m] quit (Ping timeout: 245 seconds)
20:16:39*lnxw37d4 quit (Ping timeout: 245 seconds)
20:16:39*cadmium[m] quit (Ping timeout: 245 seconds)
20:16:39*DannyHpy[m] quit (Ping timeout: 245 seconds)
20:16:39*goblinslayer[m] quit (Ping timeout: 245 seconds)
20:16:39*stisa quit (Ping timeout: 245 seconds)
20:16:39*neceve quit (Ping timeout: 245 seconds)
20:16:39*fbpyr[m] quit (Ping timeout: 245 seconds)
20:16:41*Benjamin[m]1 quit (Ping timeout: 258 seconds)
20:16:48*dithpri[m] quit (Ping timeout: 246 seconds)
20:16:49*ronny quit (Ping timeout: 246 seconds)
20:16:52*leorize[m] quit (Ping timeout: 248 seconds)
20:16:59*blaumetallic[m] quit (Ping timeout: 276 seconds)
20:16:59*BitPuffin quit (Ping timeout: 276 seconds)
20:17:04*Zoom[m] quit (Ping timeout: 245 seconds)
20:17:19*reversem3 quit (Ping timeout: 260 seconds)
20:17:23*ckafi[m] quit (Ping timeout: 248 seconds)
20:17:24*Avatarfighter[m] quit (Ping timeout: 248 seconds)
20:17:24*rolha quit (Ping timeout: 248 seconds)
20:17:26*ligist[m] quit (Ping timeout: 245 seconds)
20:17:27*jfondren[m] quit (Ping timeout: 258 seconds)
20:18:16*Avahe[m] quit (Ping timeout: 276 seconds)
20:18:17*MTRNord quit (Ping timeout: 276 seconds)
20:18:55*alri[m] quit (Ping timeout: 276 seconds)
20:18:56*jaens[m] quit (Ping timeout: 276 seconds)
20:21:20*hyiltiz quit (Ping timeout: 252 seconds)
20:23:21*xet7 quit (Quit: Leaving)
20:37:30*BitPuffin joined #nim
20:38:20*hyiltiz joined #nim
20:38:20*hyiltiz quit (Changing host)
20:38:20*hyiltiz joined #nim
20:41:52*DannyHpy[m] joined #nim
20:42:24*Benjamin[m]1 joined #nim
20:42:52*goblinslayer[m] joined #nim
20:42:58*hyiltiz quit (Ping timeout: 276 seconds)
20:43:13*lnxw37d4 joined #nim
20:44:23*fbpyr[m] joined #nim
20:44:23*stisa joined #nim
20:44:24*cheer[m] joined #nim
20:44:27*neceve joined #nim
20:44:27*cadmium[m] joined #nim
20:44:47*jfondren[m] joined #nim
20:44:48*dithpri[m] joined #nim
20:44:50*screamapiller[m] joined #nim
20:44:50*altarrel joined #nim
20:44:52*ronny joined #nim
20:45:00*reversem3 joined #nim
20:45:08*Zoom[m] joined #nim
20:45:24*konradmb[m] joined #nim
20:45:24*Clonkk[m] joined #nim
20:47:55*alri[m] joined #nim
20:47:59*blaumetallic[m] joined #nim
20:48:15*hyiltiz joined #nim
20:48:15*hyiltiz quit (Changing host)
20:48:15*hyiltiz joined #nim
20:57:02*cheer[m] quit (Ping timeout: 245 seconds)
20:57:18*fbpyr[m] quit (Ping timeout: 258 seconds)
20:57:21*fredrikhr joined #nim
20:57:25*blaumetallic[m] quit (Ping timeout: 246 seconds)
20:57:25*alri[m] quit (Ping timeout: 246 seconds)
20:57:25*screamapiller[m] quit (Ping timeout: 246 seconds)
20:57:26*ronny quit (Ping timeout: 245 seconds)
20:57:26*jfondren[m] quit (Ping timeout: 245 seconds)
20:57:26*cadmium[m] quit (Ping timeout: 245 seconds)
20:57:26*goblinslayer[m] quit (Ping timeout: 245 seconds)
20:57:27*altarrel quit (Ping timeout: 245 seconds)
21:02:40*BitPuffin quit (Ping timeout: 246 seconds)
21:02:51*Zoom[m] quit (Ping timeout: 245 seconds)
21:02:51*reversem3 quit (Ping timeout: 245 seconds)
21:02:54*konradmb[m] quit (Ping timeout: 245 seconds)
21:02:54*Clonkk[m] quit (Ping timeout: 245 seconds)
21:02:54*lnxw37d4 quit (Ping timeout: 245 seconds)
21:02:54*Benjamin[m]1 quit (Ping timeout: 245 seconds)
21:03:03*DannyHpy[m] quit (Ping timeout: 258 seconds)
21:03:47*dithpri[m] quit (Ping timeout: 276 seconds)
21:03:47*neceve quit (Ping timeout: 276 seconds)
21:03:47*stisa quit (Ping timeout: 276 seconds)
21:04:39*wasted_youth2 joined #nim
21:12:49*Avatarfighter[m] joined #nim
21:12:50*ckafi[m] joined #nim
21:12:51*rolha joined #nim
21:12:54*leorize[m] joined #nim
21:13:39*jaens[m] joined #nim
21:14:33*m33[m] joined #nim
21:15:47*ligist[m] joined #nim
21:16:33*MTRNord joined #nim
21:17:38*Avahe[m] joined #nim
21:23:37*ronny joined #nim
21:24:00*cheer[m] joined #nim
21:24:26*fbpyr[m] joined #nim
21:24:47*blaumetallic[m] joined #nim
21:24:48*alri[m] joined #nim
21:24:53*screamapiller[m] joined #nim
21:25:28*jfondren[m] joined #nim
21:25:38*cadmium[m] joined #nim
21:25:45*goblinslayer[m] joined #nim
21:26:15*altarrel joined #nim
21:27:02*lnxw37d4 joined #nim
21:27:56*reversem3 joined #nim
21:28:07*Zoom[m] joined #nim
21:28:42*BitPuffin joined #nim
21:29:15*DannyHpy[m] joined #nim
21:36:48*konradmb[m] joined #nim
21:36:53*Clonkk[m] joined #nim
21:37:03*Benjamin[m]1 joined #nim
21:38:37*dithpri[m] joined #nim
21:38:41*neceve joined #nim
21:38:43*stisa joined #nim
21:53:26*thomasross joined #nim
21:55:32ForumUpdaterBotNew thread by GamzWithJamz: Which parameter list delimiter is more "standard"? Commas or semicolons?, see https://forum.nim-lang.org/t/7969
22:04:34*hyiltiz quit (Ping timeout: 245 seconds)
22:05:26*hyiltiz joined #nim
22:11:12*xet7 joined #nim
22:11:13Zoom[m]Hey, how can I invoke an iterator inside another loop? I mean, something like "iter.next()"?
22:17:46Zoom[m]I want to chunkify my infinite iterator. I could write another one (which uses the first one in the main loop) just for that, but that would be utter silliness, wouldn't it?
22:22:26*fredrikhr quit (Quit: Client Disconnecting)
22:23:40*vicfred quit (Read error: Connection reset by peer)
22:24:25jfondren[m]you can do that with first-class iterators.
22:32:38*Vladar quit (Remote host closed the connection)
22:37:09Zoom[m]@jfonden, Sometimes I wonder if we really have them. My iter is `{.closure.}`, if you meant that. But how?
22:37:40Zoom[m]sorry, jfondren , mistyped you
22:42:44jfondren[m]@Zoom, https://play.nim-lang.org/#ix=3mx2 . Yes, closure iterators. They're in the manual under "First-class iterators"
22:51:39Zoom[m]jfondren: right, so there's just no such proc in system. Strange omission.
23:03:45FromDiscord<creonico> sent a code paste, see https://play.nim-lang.org/#ix=3mx9
23:05:25FromDiscord<ElegantBeef> I believe `winapi` is a custom pragma, dynlib is probably due to how it loads, the identifier doesnt have to be identical you can do `importc:"SetConsoleTitleA"` and then name the proc whatever you want
23:06:36FromDiscord<ElegantBeef> The return type doesnt have to be identicallly named as long as you do that importC there aswell,
23:08:28FromDiscord<creonico> `winapi` is a custom pragma? how can I make a custom pragma?
23:09:27FromDiscord<ElegantBeef> macros can be used as a custom pragma but you can also just use a template annotated pragma
23:10:21FromDiscord<ElegantBeef> sent a code paste, see https://play.nim-lang.org/#ix=3mxc
23:10:45FromDiscord<creonico> thats cool, thank you
23:12:47FromDiscord<ElegantBeef> And then a basic example of changing the behaviour can be achieved using a macro https://play.nim-lang.org/#ix=3mxf
23:26:32*clyybber quit (Quit: WeeChat 3.1)
23:48:10FromDiscord<creonico> sent a code paste, see https://play.nim-lang.org/#ix=3mxj
23:51:51*NimBot joined #nim