00:00:16 | FromDiscord | <ElegantBeef> lol zeta commented on it |
00:00:42 | FromDiscord | <checkersai> Oh yeah lol |
00:02:11 | FromDiscord | <checkersai> In hindsight `|->` maybe was a bad idea, should have gone with `-->` |
00:02:29 | FromDiscord | <ElegantBeef> Eh even then probably wouldnt be accepted |
00:02:37 | FromDiscord | <ElegantBeef> `func` should work is what it comes down to |
00:02:41 | FromDiscord | <checkersai> yeah |
00:02:51 | FromDiscord | <ElegantBeef> You can use a nimble package until that is resolved |
00:04:20 | FromDiscord | <zetashift> In reply to @ElegantBeef "lol zeta commented on": I totally forgot about it too! |
00:04:54 | FromDiscord | <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:13 | FromDiscord | <zetashift> I sometimes encounter memory corruption π¦ |
00:06:16 | FromDiscord | <checkersai> In reply to @ElegantBeef "`func` should work is": I gave it an honest effort but I'm too small-brain |
00:06:47 | FromDiscord | <ElegantBeef> Yea join the club, eventually i'm going to try to implement the stronger type inference with my small brain |
00:07:04 | FromDiscord | <zetashift> I do remember your PR/RFC about that |
00:07:43 | * | azed joined #nim |
00:07:45 | FromDiscord | <ElegantBeef> Good it's a good RFC, and questionable PR π |
00:08:23 | FromDiscord | <ElegantBeef> Comes down to making pure enums mostly useless unless you want to be overly verbose at every step |
00:09:26 | FromDiscord | <zetashift> It really is a good RFC and treeforms comments ring true to me. Not to his extent tho lol |
00:10:22 | FromDiscord | <zetashift> doesn't seem to be a good beginners-first-rfc tho haha |
00:10:32 | FromDiscord | <ElegantBeef> Jeez |
00:10:56 | FromDiscord | <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:01 | FromDiscord | <ElegantBeef> (edit) "though" => "thought" |
00:12:56 | FromDiscord | <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:41 | FromDiscord | <ElegantBeef> And here i thought it was shitty implementations |
00:15:37 | FromDiscord | <zetashift> there are always ways to improve, compiler hacking ain't easy |
00:16:29 | FromDiscord | <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:51 | FromDiscord | <zetashift> could always ask questions along the road, the team is pretty responseful |
00:28:39 | FromDiscord | <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:46 | FromDiscord | <zetashift> good night y'all for now |
00:28:56 | FromDiscord | <ElegantBeef> Buh bye |
00:32:07 | FromDiscord | <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:32 | FromDiscord | <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:20 | FromDiscord | <dan> thats an awesome resource, thank you! |
00:40:54 | FromDiscord | <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:43 | FromDiscord | <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:00 | FromDiscord | <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:06 | FromDiscord | <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:59 | ForumUpdaterBot | New 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:12 | FromGitter | <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:13 | FromDiscord | <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:01 | FromDiscord | <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:14 | FromDiscord | <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:58 | FromDiscord | <Varriount> I don't know if that has been implemented. |
06:30:28 | FromDiscord | <Varriount> The C++ backend might use C++ virtual methods, you would have to check. |
06:31:02 | FromDiscord | <Sabena Sema> Allri, fat pointers and synthesized vtables have come up in wg21 (c++) discussions around tools for abi stable interfaces. |
06:31:10 | FromDiscord | <ElegantBeef> Multi methods are disabled, normal methods are not |
06:31:25 | FromDiscord | <Sabena Sema> And I thought I remembered nim having a novel approach |
06:31:34 | FromDiscord | <ElegantBeef> to enable multi methods you have to use a compiler switch |
06:31:45 | FromDiscord | <Sabena Sema> Are "normal" methods still implemented via the multiple dispatch tables? |
06:32:03 | FromDiscord | <ElegantBeef> I do not know, i though Nim never had a vtable and just had nested if statements |
06:32:05 | FromDiscord | <Sabena Sema> Just with the dispatch on additional params disabled? |
06:32:07 | FromDiscord | <ElegantBeef> (edit) "though" => "thought" |
06:32:29 | FromDiscord | <Sabena Sema> What do nested if statements have to do with anything? |
06:33:10 | FromDiscord | <Sabena Sema> In any case there are several vtable implementations for nim. |
06:33:21 | FromDiscord | <ElegantBeef> I meant joined `if` statements, |
06:33:40 | FromDiscord | <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:41 | FromDiscord | <ElegantBeef> I actually dont know the dispatch method so just imagined something silly π |
06:34:28 | FromDiscord | <Varriount> Which was true, last I checked. At the very least, the compiler codebase makes no reference to vtables at all. |
06:35:00 | FromDiscord | <Sabena Sema> Yeah. The table based dispatching is a bunch of ifs |
06:35:33 | FromDiscord | <Sabena Sema> Allright, I recall reading about this vtable thing on some blog (maybe araq's) years ago |
06:35:33 | FromDiscord | <Varriount> It would be nice if Concepts could be used. They're essentially Go interfaces anyway. |
06:36:03 | FromDiscord | <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:16 | FromDiscord | <Varriount> (in concept, if not implementation) |
06:36:22 | FromDiscord | <Sabena Sema> You can't write a concept that refers to the presence of a set of functions without typeclasses tho right? |
06:36:42 | FromDiscord | <ElegantBeef> https://github.com/beef331/constructor/blob/master/tests/timplements.nim#L26-L29 My grande implementation π |
06:36:51 | FromDiscord | <Varriount> In reply to @Sabena Sema "You can't write a": What do you mean? |
06:37:23 | FromDiscord | <Sabena Sema> Like concepts always refer to "all specializations of a given generic" |
06:37:35 | FromDiscord | <ElegantBeef> Well they're practically user defined duck type |
06:37:41 | FromDiscord | <ElegantBeef> (edit) "type" => "typing" |
06:38:04 | FromDiscord | <Sabena Sema> Never "all objects a that have f(a), and g(a) etc |
06:38:27 | FromDiscord | <Sabena Sema> Generics are already unconstrained in nim by default |
06:38:27 | FromDiscord | <ElegantBeef> You can write that though |
06:38:53 | FromDiscord | <Varriount> Isn't that the core usage of concepts? To assert that a type must have X procedures implemented? |
06:39:13 | FromDiscord | <Sabena Sema> Maybe what your referring to as concepts is new |
06:39:34 | FromDiscord | <ElegantBeef> Concepts are used to describe implementations of an object to match a signature |
06:39:45 | FromDiscord | <ElegantBeef> So yea that's like the exact usag |
06:39:46 | FromDiscord | <ElegantBeef> (edit) "usag" => "usage" |
06:39:48 | saem | Universal vs Existential types is the distinction being made AFAICS. |
06:39:56 | FromDiscord | <Sabena Sema> Oh yeah |
06:40:00 | FromDiscord | <Sabena Sema> Concepts can do it |
06:40:04 | FromDiscord | <ElegantBeef> Look at saem and his big words, what does "is" mean? |
06:40:09 | saem | For all types vs there exists a type. |
06:41:01 | FromDiscord | <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:33 | FromDiscord | <ElegantBeef> Type classes are like `int or float`1 |
06:41:34 | FromDiscord | <ElegantBeef> (edit) "float`1" => "float`" |
06:42:23 | FromDiscord | <ElegantBeef> `Table` without `[A, B]` is just a inferred generic |
06:42:46 | FromDiscord | <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:43 | FromDiscord | <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:03 | FromDiscord | <Sabena Sema> C++ already has concepts that work almost identically to nim's |
06:45:23 | saem | I thought those were reified? |
06:45:34 | FromDiscord | <Sabena Sema> With some other stuff nim doesn't do (subsumption rules, primarily) |
06:45:43 | FromDiscord | <Sabena Sema> I mean thats a common word for it yes |
06:45:59 | FromDiscord | <Sabena Sema> Wait do you mean c++ concepts or the thing I'm describing |
06:46:55 | FromDiscord | <Sabena Sema> Actually: how does nim handle overload sets that contain multiple viable functions that are both constrained by concepts |
06:47:11 | saem | C++, I get with templates effectively it'll do that. |
06:48:29 | FromDiscord | <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:24 | FromDiscord | <Varriount> You'll have to talk with Araq about that. |
06:50:28 | saem | OK, your after runtime polymorphism as opposes to parametric polymorphism -- I _believe_ that's the general terminology. |
06:51:17 | FromDiscord | <Sabena Sema> yeah, exactly. it would appear nim's novel approach was never implemented (which makes it less interesting to us) |
06:51:26 | ForumUpdaterBot | New thread by Arnetheduck: HTTP(s) Client / Server in chronos, see https://forum.nim-lang.org/t/7964 |
06:51:49 | FromDiscord | <Varriount> In reply to @Sabena Sema "yeah, exactly. it would": Not for lack of user interest. |
06:52:18 | saem | And to clarify, the thing that's "special" here is that there is no subtype relationship, it's a universal type. |
06:54:32 | FromDiscord | <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:26 | saem | For 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:46 | FromDiscord | <Sabena Sema> for some definitions of bar yes |
06:56:06 | FromDiscord | <Sabena Sema> erm for some definitions of all that is |
06:56:35 | FromDiscord | <Sabena Sema> what we really care about is "foo, and any future changes that might be made to foo" |
06:56:53 | saem | Yeah, I guess that's a narrow case of dynamic dispatch. More workable in a unity build like most Nim codebases |
06:57:24 | FromDiscord | <Sabena Sema> Yeah, nim doesn't have the problem we're trying to address (although it might, if it gets popular) |
06:57:30 | saem | So why do you require there to be only one bar? |
06:58:03 | FromDiscord | <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:16 | saem | Oh damn |
06:58:27 | saem | That's a much different problem. |
06:58:41 | saem | I mean the string method of dispatch is one way to go |
06:59:19 | saem | Which is what I believe Nim does in some cases, I can't remember. My understanding of the various dispatching strategies is weak. |
07:00:24 | saem | I think be concepts and... for some reason I want to say orc/arc with multi-methods? Do that. |
07:00:29 | FromDiscord | <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:37 | saem | New concepts. |
07:01:03 | FromDiscord | <Sabena Sema> ownership has come up in the discussions, but I think it's a distraction |
07:01:34 | FromDiscord | <Sabena Sema> if foo and "new foo" have different ownership and allocation semantics you're really boned |
07:02:09 | FromDiscord | <Sabena Sema> hell if I can find a way to beat the uniform function call syntax drum in c++ land I will π |
07:03:27 | FromGitter | <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:55 | saem | Yeah, vtable access is probably what you're after and then a bit more. |
07:05:34 | FromDiscord | <Sabena Sema> yeah, c++ already has the "a bit more" to some extent in the form of virtual base class access |
07:06:04 | saem | Well that's into inheritance and that dramatically simplifies things. |
07:06:18 | saem | I need to crash, though. |
07:06:23 | FromDiscord | <Sabena Sema> yeah, I do too |
07:06:27 | saem | Good luck and good night. |
07:07:01 | FromDiscord | <Sabena Sema> In reply to @Varriount "Not for lack of": what prevented it? Just task prioritization on other stuff? |
07:07:35 | FromDiscord | <ElegantBeef> in nim you can override fields through using backticks |
07:07:39 | FromDiscord | <ElegantBeef> (edit) "fields" => "keywords" |
07:07:46 | FromDiscord | <ElegantBeef> It's called stropping |
07:07:56 | FromDiscord | <ElegantBeef> https://nim-lang.org/docs/manual.html#lexical-analysis-stropping |
07:08:26 | FromDiscord | <ElegantBeef> you can also do `nicerName{.importC: "addr".}` i believe |
07:35:31 | ForumUpdaterBot | New 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:04 | FromGitter | <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:43 | FromDiscord | <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:14 | FromDiscord | <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:30 | FromDiscord | <haxscramper> Vtref is documented in experimental manual |
08:29:43 | FromDiscord | <haxscramper> Well, documentation is there but it is commented out |
08:30:58 | FromDiscord | <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:52 | FromDiscord | <Varriount> In reply to @Sabena Sema "what prevented it? Just": Prioritization, I believe. |
09:51:16 | FromDiscord | <arnetheduck> it's more fun to implement new features partially than to complete old ones |
09:53:56 | FromDiscord | <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:32 | FromDiscord | <exelotl> and the RTTI created for each type when you use inheritance wastes RAM |
09:57:39 | FromDiscord | <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:29 | FromDiscord | <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:11 | FromDiscord | <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:29 | FromDiscord | <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:35 | ForumUpdaterBot | New 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:25 | FromDiscord | <ajusa> In reply to @zetashift "I feel like this": Eh Nim has some pretty serious open issues imo |
11:33:09 | FromDiscord | <ajusa> https://github.com/nim-lang/Nim/issues/12652 is the main one that came to mind, tons of people use async |
11:36:02 | FromDiscord | <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:21 | FromDiscord | <Yardanico> In reply to @zetashift "I found this: https://github.com/codehz/nim-vtable": there's https://github.com/yglukhov/iface |
12:01:38 | PMunch | Hmm, 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:13 | federico3 | there should be online AV testing services that run a binary against multiple AVs and give a report |
12:16:03 | PMunch | There is stuff like this for some AV vendors: https://www.virustotal.com/gui/ |
12:16:52 | PMunch | These 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:03 | federico3 | https://www.virscan.org/ maybe? |
12:18:35 | PMunch | https://forum.nim-lang.org/t/7830#49727 |
12:19:48 | PMunch | It 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:49 | federico3 | IIRC 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:21 | ForumUpdaterBot | New thread by Nimmer: How to properly use c2nim?, see https://forum.nim-lang.org/t/7966 |
13:39:14 | FromDiscord | <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:31 | giaco | general question, why has nim been invented as a compiler to C/C++/JS instead of LLVM IR? |
13:40:05 | FromDiscord | <ajusa> In reply to @giaco "general question, why has": I believe llvm IR wasn't mature in 2006 |
13:40:32 | giaco | well, perfect answer. Thanks |
13:41:27 | * | fredrikhr joined #nim |
13:41:43 | FromDiscord | <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:08 | FromDiscord | <ajusa> See https://github.com/arnetheduck/nlvm if you want to try llvm with Nim |
13:47:12 | PMunch | @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:23 | PMunch | Hmm, have nightlies been down since late April? |
13:52:40 | PMunch | `choosenim update devel` pulls 2021-04-30 for me.. |
14:02:43 | FromDiscord | <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:31 | ForumUpdaterBot | New thread by Talaing: Custom colored output in Nim, see https://forum.nim-lang.org/t/7967 |
14:40:50 | PMunch | Hmm, 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:50 | PMunch | `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:38 | FromDiscord | <Sabena Sema> In reply to @haxscramper "I think it was": Wait what's the difference between old and new concepts |
15:54:11 | FromDiscord | <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:46 | ForumUpdaterBot | New 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:44 | FromDiscord | <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:20 | FromDiscord | <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:23 | FromDiscord | <Sabena Sema> that doesn't prevent you from getting like, code completion from c++ concepts |
17:23:48 | FromDiscord | <Sabena Sema> "c++ concepts" are the things introduced after the concept keyword in c++ |
17:24:03 | FromDiscord | <Sabena Sema> "old style nim concepts" are the currently implemented version in nim, which is similar |
17:24:14 | FromDiscord | <Sabena Sema> they are a way to constrain generic parameters |
17:25:12 | FromDiscord | <theSherwood> Good to know, thanks |
17:34:47 | FromDiscord | <hamidb80> i think half of nimble packages is written by treeform |
17:34:50 | FromDiscord | <hamidb80> https://github.com/treeform/flippy |
17:52:01 | Oddmonger | i cannot define an Β«anonymousΒ» object inside the call of a proc ? |
17:54:41 | Oddmonger | ah that's because i have to give fields name when defining (i was confused with tuples where it's optionnal) |
17:59:49 | FromDiscord | <hamidb80> sent a code paste, see https://play.nim-lang.org/#ix=3mvN |
17:59:57 | FromDiscord | <hamidb80> it works fine |
18:00:52 | FromDiscord | <konsumlamm> yes, all types have default values |
18:01:10 | FromDiscord | <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:20 | FromDiscord | <Sabena Sema> sorry for asking all these questions about a years old unimplemented feature π |
18:01:45 | Oddmonger | @hamidb80 : but if you want to initialize fields, you have to give their name |
18:02:20 | Oddmonger | with a tuple, you can omit tuple name (it's just a sugar, but will disappear at compilation) |
18:02:29 | FromDiscord | <hamidb80> yeah |
18:03:39 | Oddmonger | at least, () is consistent β¦ except when you define named tuples of course ( :) ). |
18:03:51 | Oddmonger | oh, there is {} too for sets |
18:08:41 | FromDiscord | <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:53 | FromDiscord | <Sabena Sema> oh, nim's old concepts do have subsumption rules |
18:49:54 | FromDiscord | <Sabena Sema> cool |
18:50:06 | FromDiscord | <Sabena Sema> it's not clear how well they actually _work_ |
19:17:43 | FromDiscord | <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:03 | FromDiscord | <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:32 | ForumUpdaterBot | New 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:13 | Zoom[m] | Hey, how can I invoke an iterator inside another loop? I mean, something like "iter.next()"? |
22:17:46 | Zoom[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:25 | jfondren[m] | you can do that with first-class iterators. |
22:32:38 | * | Vladar quit (Remote host closed the connection) |
22:37:09 | Zoom[m] | @jfonden, Sometimes I wonder if we really have them. My iter is `{.closure.}`, if you meant that. But how? |
22:37:40 | Zoom[m] | sorry, jfondren , mistyped you |
22:42:44 | jfondren[m] | @Zoom, https://play.nim-lang.org/#ix=3mx2 . Yes, closure iterators. They're in the manual under "First-class iterators" |
22:51:39 | Zoom[m] | jfondren: right, so there's just no such proc in system. Strange omission. |
23:03:45 | FromDiscord | <creonico> sent a code paste, see https://play.nim-lang.org/#ix=3mx9 |
23:05:25 | FromDiscord | <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:36 | FromDiscord | <ElegantBeef> The return type doesnt have to be identicallly named as long as you do that importC there aswell, |
23:08:28 | FromDiscord | <creonico> `winapi` is a custom pragma? how can I make a custom pragma? |
23:09:27 | FromDiscord | <ElegantBeef> macros can be used as a custom pragma but you can also just use a template annotated pragma |
23:10:21 | FromDiscord | <ElegantBeef> sent a code paste, see https://play.nim-lang.org/#ix=3mxc |
23:10:45 | FromDiscord | <creonico> thats cool, thank you |
23:12:47 | FromDiscord | <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:10 | FromDiscord | <creonico> sent a code paste, see https://play.nim-lang.org/#ix=3mxj |
23:51:51 | * | NimBot joined #nim |