00:00:06 | FromDiscord | <MiniApple> i like pure code |
00:00:07 | FromDiscord | <ElegantBeef> Ah you want a more barebones framework? |
00:00:27 | FromDiscord | <MiniApple> barebones? |
00:00:28 | FromDiscord | <ElegantBeef> Got Paranim, Rapid, Nico |
00:00:50 | FromDiscord | <ElegantBeef> No gui editor/ sceneview |
00:01:13 | FromDiscord | <MiniApple> hmm |
00:01:35 | FromDiscord | <MiniApple> is raylib game engine? |
00:01:54 | FromDiscord | <MiniApple> or game framework? |
00:02:05 | FromDiscord | <ElegantBeef> > Raylib is a cross-platform open-source software development library written in C. The library is meant to create graphical applications and games quickly and easily. |
00:02:43 | FromDiscord | <MiniApple> ~~i see~~ |
00:02:50 | FromDiscord | <MiniApple> i like game library |
00:03:39 | FromDiscord | <ElegantBeef> Yea you'd like the three i mentioned them, you just get IO abstractions and get to design everything else yourself basically |
00:04:08 | FromDiscord | <MiniApple> ok |
00:20:55 | disruptek | scott: tell me more about what's good with crystal. |
00:22:33 | FromDiscord | <scott> idk there's lots of good stuff about Crystal but also there are a lot of problems. kinda tired to talk about it tonight, maybe tomorrow |
00:22:41 | disruptek | cool. |
00:26:00 | FromDiscord | <Adrielle> hiya |
00:26:25 | FromDiscord | <Adrielle> wow, lotta nim fans |
00:27:24 | FromDiscord | <Adrielle> I'm thinking of moving my code base to nim, i had some questions. Anybody around? |
00:27:48 | disruptek | yeah, there are a few bozos here. |
00:27:56 | disruptek | also, /i'm/ here. |
00:28:43 | FromDiscord | <Adrielle> 😦 |
00:29:07 | FromDiscord | <Adrielle> bummersauce |
00:29:08 | leorize[m]1 | there are a lot of people around. please ask your questions :) |
00:31:48 | FromDiscord | <Adrielle> So I have a distributed robotics system thats written mostly in python/cython/and some c modules |
00:32:35 | FromDiscord | <Adrielle> it utilizes something similar to an actor system or microservices to coordinate p2p |
00:32:59 | FromDiscord | <Adrielle> the compute bottleneck is the underlying graph system. |
00:33:27 | FromDiscord | <Adrielle> I need to migrate away from the c-based,python wrapped graph library to something faster |
00:33:41 | disruptek | which c-based graph lib is it? |
00:33:49 | FromDiscord | <Adrielle> networkit |
00:34:13 | disruptek | how big is your graph? |
00:34:20 | FromDiscord | <Adrielle> we need a faster, distributed solution that is cross platform |
00:34:24 | FromDiscord | <Adrielle> 1 billion+ nodes |
00:34:44 | FromDiscord | <Adrielle> it needs to be larger for our experiment |
00:35:16 | disruptek | i don't know of anything mature or even moderately advanced. |
00:35:34 | FromDiscord | <Adrielle> i want to leverage nvgraph and look for an opencl implementation and then wrap it in nim and write the core of our system in nim |
00:35:40 | disruptek | is networKit lpg now? |
00:36:07 | leorize[m]1 | @mratsim might know a thing or two |
00:36:14 | leorize[m]1 | I expect that Status gotta do this stuff do |
00:36:36 | disruptek | he has a compute graph, yes, but i don't think it's a graph graph. |
00:37:15 | disruptek | i think your approach would be easiest. |
00:37:27 | FromDiscord | <MiniApple> how to install nim library? |
00:37:35 | disruptek | which one? |
00:37:46 | FromDiscord | <MiniApple> sdl2 |
00:37:52 | FromDiscord | <Adrielle> im just wondering how hard it is to write a facade on nvgraph and then wrap it with nim to connect to the main subsystem |
00:37:53 | disruptek | what have you tried so far? |
00:38:10 | disruptek | nim has about the best ffi that you're likely to find. |
00:38:12 | FromDiscord | <MiniApple> why the bot can talk |
00:38:19 | FromDiscord | <ElegantBeef> Cause it's a bridge |
00:38:34 | FromDiscord | <Yardanico> @MiniApple because it's not a bot :) |
00:38:37 | FromDiscord | <MiniApple> lol |
00:38:37 | FromDiscord | <Adrielle> i would then use the nim zmq lib to create our distributed system |
00:38:45 | FromDiscord | <Yardanico> the bridge is using webhooks to do IRC->Discord |
00:38:45 | FromDiscord | <Adrielle> yea took me a sec as well lol |
00:39:02 | leorize[m]1 | shush, let they think we figured out super advanced AI systems :P |
00:39:05 | disruptek | do you already have a zmq requirement? because i think we have some newer, lighter stuff. |
00:39:06 | FromDiscord | <Yardanico> haha |
00:39:07 | FromDiscord | <MiniApple> hmm |
00:39:16 | FromDiscord | <Adrielle> really? |
00:39:33 | FromDiscord | <MiniApple> why someone is talking with bot |
00:39:41 | FromDiscord | <ElegantBeef> Cause they arent using discord |
00:39:43 | FromDiscord | <Adrielle> no i don't, zmq just a fan fav |
00:39:47 | FromDiscord | <MiniApple> hmm |
00:39:53 | FromDiscord | <Yardanico> @MiniApple it's not a "bot" |
00:39:55 | FromDiscord | <Yardanico> they are people from IRC |
00:39:56 | FromDiscord | <Adrielle> they are talking through a bot |
00:39:59 | FromDiscord | <Yardanico> !repo ircord |
00:39:59 | disbot | https://github.com/Yardanico/ircord -- 9ircord: 11Discord <-> IRC bridge in Nim 15 9⭐ 1🍴 |
00:40:02 | FromDiscord | <ElegantBeef> You can use matrix, gitter, irc, and so forth through the bridge |
00:40:02 | FromDiscord | <MiniApple> IRC? |
00:40:02 | disruptek | !reo mqtt |
00:40:06 | FromDiscord | <Yardanico> yes, Internet Relay Chat |
00:40:06 | disruptek | !repo mqtt |
00:40:07 | disbot | https://github.com/zevv/nmqtt -- 9nmqtt: 11Native Nim MQTT client library 15 22⭐ 4🍴 7& 5 more... |
00:40:13 | disruptek | !repos sdl |
00:40:14 | disbot | https://github.com/nim-lang/sdl2 -- 9sdl2: 11Nim wrapper for SDL 2.x 15 122⭐ 58🍴 |
00:40:14 | disbot | https://github.com/Vladar4/sdl2_nim -- 9sdl2_nim: 11Wrapper of the SDL 2 library for the Nim language. 15 103⭐ 16🍴 |
00:40:15 | disbot | https://github.com/Vladar4/nimgame -- 9nimgame: 11Simple 2D game engine for Nimrod language. 15 18⭐ 4🍴 7& 18 more... |
00:40:20 | disruptek | your sdl options ^ |
00:40:38 | FromDiscord | <Yardanico> second one is pretty good |
00:40:46 | FromDiscord | <MiniApple> ok |
00:40:48 | FromDiscord | <MiniApple> i see |
00:41:26 | FromDiscord | <MiniApple> hmm the second that i am trying to install |
00:42:42 | disruptek | i have not used zmq or mqtt in nim, only python. zmq is more mature, of course. it's also a little heavier. |
00:43:06 | FromDiscord | <MiniApple> zmq? |
00:43:20 | * | a_chou joined #nim |
00:43:39 | FromDiscord | <ElegantBeef> Did you install nim with choosenim? |
00:43:44 | FromDiscord | <Adrielle> wait as compared to what? |
00:43:57 | FromDiscord | <MiniApple> no |
00:43:58 | FromDiscord | <MiniApple> brew |
00:44:00 | FromDiscord | <Adrielle> @disruptek |
00:44:08 | FromDiscord | <MiniApple> but i had nimble |
00:44:32 | FromDiscord | <ElegantBeef> based off context probably mqtt |
00:44:33 | leorize[m]1 | how did you install your library and what's the error message? |
00:44:45 | FromDiscord | <MiniApple> hmm |
00:44:52 | FromDiscord | <MiniApple> i didn't install the library |
00:45:15 | FromDiscord | <ElegantBeef> How did you attempt to 😄 |
00:45:17 | FromDiscord | <Adrielle> oh i see it now whoops thanks |
00:45:39 | FromDiscord | <MiniApple> hmm |
00:46:03 | FromDiscord | <MiniApple> i tried `nimble install sdl2` |
00:46:09 | FromDiscord | <MiniApple> then i installed |
00:46:20 | FromDiscord | <ElegantBeef> that will install the first |
00:46:25 | FromDiscord | <MiniApple> i know |
00:46:35 | FromDiscord | <MiniApple> i sawcthe logs |
00:46:39 | FromDiscord | <MiniApple> (edit) "sawcthe" => "saw the" |
00:46:42 | disruptek | adrielle: mqtt is a little lighter than zmq. |
00:46:54 | FromDiscord | <MiniApple> sent a code paste, see https://play.nim-lang.org/#ix=2Br6 |
00:46:59 | user0 | This discord<->IRC bridge thing is a real good Turing test case explorium tool. Catches them every time. |
00:47:04 | FromDiscord | <ElegantBeef> yea you wanted `nimble install sdl2_nim` |
00:47:12 | FromDiscord | <MiniApple> i see |
00:47:31 | FromDiscord | <Yardanico> @user0 haha :P |
00:47:45 | FromDiscord | <Yardanico> @MiniApple you also need to have the SDL2 dlls |
00:47:57 | FromDiscord | <Adrielle> @disruptek gotcha, i will have to test it out, looks promising, but because we are doing p2p ill have to see how much time itll take to build off of. |
00:47:58 | FromDiscord | <Yardanico> or, if you're on linux, have it installed via your pkg manager |
00:48:05 | FromDiscord | <MiniApple> hmm |
00:48:06 | FromDiscord | <ElegantBeef> They're on mac i assume since they use brew |
00:48:07 | FromDiscord | <MiniApple> i am on mac |
00:48:20 | FromDiscord | <MiniApple> i had sdl i think |
00:48:23 | FromDiscord | <ElegantBeef> Same thing as linux, use your pkg manager 😄 |
00:48:29 | disruptek | adrielle: how much time/manpower do you have to devote to this? |
00:49:24 | disruptek | nim is very fast to develop and very fast to run, but there will be a lot of code to write and some integration work to do, so... |
00:50:00 | FromDiscord | <Adrielle> @disruptek I own a small robotics llc, mainly research based, man power varies, but this project has been going on for about 2 1/2 year now |
00:50:14 | FromDiscord | <MiniApple> hmm |
00:50:25 | FromDiscord | <MiniApple> ~~how to run nim?~~ |
00:50:27 | * | TomDotTom joined #nim |
00:51:41 | FromDiscord | <Adrielle> i see i could use importc pragma to interface with c, are there many gotchas I should look out for trying to use cuda toolkit to interface with nim? |
00:52:03 | FromDiscord | <Adrielle> or cpp, looks like two different pragmas |
00:52:14 | FromDiscord | <ElegantBeef> The easiest way to run nim code is `nim c -r ./main.nim` |
00:52:20 | disruptek | yes, cpp for importing stuff from c++ and c for, uh, c. |
00:52:26 | FromDiscord | <MiniApple> ok |
00:52:27 | FromDiscord | <Adrielle> lol |
00:52:38 | leorize[m]1 | you'll probably find https://github.com/mratsim/arraymancer interesting |
00:52:46 | FromDiscord | <MiniApple> ~~i was trying `nim -r main.nim` |
00:52:48 | leorize[m]1 | mratsim figured out how to do cuda in nim |
00:52:53 | disruptek | look at laser. |
00:52:54 | FromDiscord | <MiniApple> (edit) "main.nim`" => "main.nim`~~" |
00:52:55 | disruptek | !repo laser |
00:52:56 | FromDiscord | <Yardanico> @MiniApple it's "nim r main.nim" then |
00:52:56 | disbot | https://github.com/numforge/laser -- 9laser: 11The HPC toolbox: fused matrix multiplication, convolution, data-parallel strided tensor primitives, OpenMP facilities, SIMD, JIT Assembler, CPU detection, state-of-the-art vectorized BLAS for floats and integers 15 178⭐ 7🍴 |
00:53:02 | FromDiscord | <MiniApple> ok |
00:53:05 | FromDiscord | <Yardanico> !repo cuda |
00:53:05 | disbot | https://github.com/mratsim/Arraymancer -- 9Arraymancer: 11A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU and embedded devices via OpenMP, Cuda and OpenCL backends 15 726⭐ 60🍴 7& 4 more... |
00:53:10 | FromDiscord | <Yardanico> yeah right |
00:53:22 | FromDiscord | <Adrielle> lol wow |
00:53:24 | leorize[m]1 | mratsim is pretty much the Nim HPC god |
00:53:32 | FromDiscord | <Adrielle> thats amazing |
00:53:37 | FromDiscord | <Adrielle> laser looks v. cool |
00:54:09 | leorize[m]1 | We got the #science channel for all this stuff if you're interested :) |
00:54:14 | FromDiscord | <Adrielle> yea ive seen arraymancer, looks awesome |
00:54:19 | FromDiscord | <ElegantBeef> The arraymancer comparison to other implementation is pretty cool 😄 https://media.discordapp.net/attachments/371759389889003532/768275938177712158/unknown.png |
00:54:31 | FromDiscord | <Adrielle> okay yea that sounds great, thanks for letting me hog up you main for a bit |
00:54:38 | FromDiscord | <Yardanico> it's totally okay |
00:54:47 | FromDiscord | <Adrielle> yea thats the good stuff right there @ElegantBeef |
00:54:49 | FromDiscord | <Yardanico> we started creating specific channels relatively recently |
00:54:53 | * | a_b_m quit (Quit: Leaving) |
00:55:00 | FromDiscord | <ElegantBeef> We were talking about party parrot before you joined, so not really that constructive anyway 😛 |
00:55:05 | FromDiscord | <Yardanico> all channels in Community are bridged to IRC as well |
00:55:21 | FromDiscord | <Adrielle> lmao |
00:55:41 | FromDiscord | <Adrielle> i was debating on getting work done or playing grim dawn so hey i hear ya |
00:55:48 | FromDiscord | <Adrielle> turns out im in a programming mood |
00:56:06 | leorize[m]1 | have fun and don't be afraid to ask us questions |
00:56:16 | FromDiscord | <ElegantBeef> And ignore 99% of what i say |
00:56:19 | FromDiscord | <Adrielle> okay awesome thanks! lol |
00:56:34 | FromDiscord | <ElegantBeef> Sorry 99% was to liberal, make it 100% |
00:56:48 | FromDiscord | <Yardanico> Never Listen To Beef |
00:56:55 | FromDiscord | <Adrielle> lol ill make note of that |
00:57:02 | FromDiscord | <Yardanico> (that's his old nickname) |
00:57:29 | FromDiscord | <ElegantBeef> Trufth, but that was mostly cause everything i was an assumption, but know i assume all my knowledge |
00:57:30 | FromDiscord | <Gyllou> this is my usualy handle |
00:57:35 | FromDiscord | <ElegantBeef> (edit) "Trufth, but that was mostly cause everything i ... was" added "said" |
00:57:41 | FromDiscord | <ElegantBeef> god damn it |
00:57:46 | FromDiscord | <ElegantBeef> I cant fucking spell to mock myself |
00:57:56 | FromDiscord | <Yardanico> @Gyllou jokes on you, the bridge uses usernames and not display names :) |
00:58:03 | FromDiscord | <Gyllou> lol gotcha |
00:58:16 | FromDiscord | <Yardanico> i should fix that but didn't do it yet |
00:58:36 | leorize[m]1 | well I'm not sure I'm seeing a different name here |
00:58:39 | FromDiscord | <ElegantBeef> Probably wise to not use nicknames though so people have atleast some semblence of who is who in bridge |
00:58:50 | FromDiscord | <ElegantBeef> Since they dont get pfps or any indication |
00:59:00 | FromDiscord | <Gyllou> so i appear as gyllou then right? |
00:59:02 | FromDiscord | <Yardanico> no |
00:59:07 | disruptek | i get a throbbing sensation in my right testicle. |
00:59:12 | FromDiscord | <Yardanico> unless you changed it as your handle and not display name on this server |
00:59:14 | disruptek | it's more or less the same. |
00:59:15 | leorize[m]1 | yes |
00:59:17 | FromDiscord | <ElegantBeef> You appear as your discord username |
00:59:19 | FromDiscord | <Yardanico> @disruptek :disruptek: |
00:59:22 | disruptek | leorize[m]1: you get that too? |
00:59:23 | FromDiscord | <Yardanico> :nimDog: |
00:59:32 | FromDiscord | <Yardanico> @disruptek https://github.com/Yardanico/nim-quotes |
00:59:42 | disruptek | did you change my emote again? |
00:59:46 | FromDiscord | <Yardanico> no its the same |
00:59:55 | FromDiscord | <Yardanico> disruptek is your avatar generated by the bridge (robohash) |
00:59:56 | disruptek | the same as what? |
01:00:00 | FromDiscord | <ElegantBeef> https://irclogs.nim-lang.org/ you can see what they see here if you care |
01:00:02 | FromDiscord | <Yardanico> dog is your github avatar |
01:00:32 | * | Tanger joined #nim |
01:00:38 | FromDiscord | <Gyllou> cool cool |
01:00:50 | disruptek | why is :disruptek: even a thing, then? |
01:00:58 | FromDiscord | <Yardanico> why not? :D |
01:01:18 | disruptek | none-more-disruptek. |
01:01:42 | disruptek | i'm kinda curious how fast networkit is nowadays. |
01:02:11 | FromDiscord | <Gyllou> its pretty fast if you get creative |
01:02:33 | FromDiscord | <ElegantBeef> Also yard i'm disappointed you didnt label my vm bug Show stopper, it's stopped my current testing of nim interop 😛 |
01:02:36 | disruptek | looks like it's all native anyway. |
01:03:14 | FromDiscord | <Gyllou> yea it is, we just create multiple graphs and link them heirarchically to distribute it |
01:03:20 | FromDiscord | <Gyllou> heirarchi....wtv that word |
01:03:34 | FromDiscord | <ElegantBeef> A inverted tree 😛 |
01:03:43 | FromDiscord | <Gyllou> Bass-ically |
01:03:48 | disruptek | i started writing a graph db but it's only a crude toy so far. |
01:04:06 | disruptek | basically just so i can start writing software against it. |
01:04:10 | FromDiscord | <Gyllou> we are trying to implement a hypergraph system, but... networkit isnt gonna cut it |
01:04:27 | disruptek | what's the endgame for all this? |
01:04:45 | FromDiscord | <Gyllou> we are a humanoid robotics research company 🙂 |
01:04:58 | disruptek | okay, but what does the graph do? |
01:05:02 | FromDiscord | <Gyllou> 😛 |
01:05:09 | FromDiscord | <ElegantBeef> Ah better than a robotic human research company |
01:05:09 | disruptek | anyone can consume large amounts of memory. 😁 |
01:05:12 | FromDiscord | <Yardanico> @Gyllou you can also get more discussion if you post it on the nim forum :P |
01:05:13 | FromDiscord | <Yardanico> ~forum |
01:05:14 | disbot | forum: 11Nim has a forum at https://forum.nim-lang.org/ -- ask @dom96 for help with any account issues. |
01:05:27 | FromDiscord | <Yardanico> i mean your questions |
01:05:43 | FromDiscord | <Gyllou> yea honestly we are trying to see if we wanna keep stuff more proprietary or release it |
01:06:10 | FromDiscord | <Gyllou> in a gist tho, its a temporal knowledge graph |
01:07:09 | disruptek | i assume it has to run on robot hardware? |
01:07:42 | disruptek | offline but distributed across the swarm? |
01:07:48 | FromDiscord | <Gyllou> partially, also runs on a cluster |
01:08:10 | disruptek | oh, so there are some agency nodes and some is just cluster? |
01:08:18 | FromDiscord | <Gyllou> yep |
01:08:28 | disruptek | you should look at gun db, too. |
01:08:38 | FromDiscord | <Gyllou> we call them appendages and agents |
01:08:40 | disruptek | it's something i want to impl in nim. |
01:09:15 | disruptek | ignore the graph db part of it and just focus on the consensus tech. |
01:09:28 | disruptek | anyway, just my naive thoughts. |
01:10:29 | FromDiscord | <Gyllou> we have alot of plans for it, hardware research is also pretty time consuming |
01:10:59 | disruptek | well, lemme know when you're hiring. |
01:11:04 | FromDiscord | <Gyllou> most of it is really just systems engineering problems not necessarily custom boards or anything |
01:11:33 | * | a_chou quit (Ping timeout: 260 seconds) |
01:12:17 | FromDiscord | <Gyllou> ill keep that in mind 🙂 I've been waiting for a chance to use nim in my robotics research and i think this could be a good opportunity, but i like to take my time with big decisions so we will see. |
01:12:41 | disruptek | it would be a gamble, no question. |
01:12:51 | disruptek | for some, nim is a secret weapon, though. |
01:13:18 | FromDiscord | <Gyllou> yea it would definitely speed up development relative to cpp/c |
01:16:32 | leorize[m]1 | what other languages have you looked at prior to nim? |
01:17:27 | FromDiscord | <Gyllou> its mainly c/cpp or nim |
01:17:49 | FromDiscord | <Gyllou> im personally not a fan of rust, which would probably be the obvious other option |
01:18:28 | disruptek | omg mangling is green. |
01:18:39 | FromDiscord | <ElegantBeef> Congrats |
01:19:29 | FromDiscord | <Yardanico> omg what |
01:19:34 | disruptek | SHIP IT |
01:19:46 | FromDiscord | <Yardanico> OEOEOE?E? |
01:20:01 | leorize[m]1 | omg you figured it out? |
01:20:19 | disruptek | honestly, it's pretty horrible. |
01:20:33 | leorize[m]1 | it works, that's the important part |
01:20:38 | * | a_chou joined #nim |
01:20:44 | leorize[m]1 | now you know all the stupid problems so you can design a better one :P |
01:21:08 | disruptek | are you kidding? i find new stupid problems every day. |
01:21:36 | disruptek | clyybber was very helpful in arguing for compromise, though. |
01:22:09 | leorize[m]1 | you'll have him in a few hours once he woke up |
01:22:32 | disruptek | i had him twice today and once when he wasn't looking yesterday. |
01:27:52 | * | apahl quit (Ping timeout: 260 seconds) |
01:29:38 | * | apahl joined #nim |
01:30:44 | FromDiscord | <MiniApple> does nim have class |
01:30:57 | FromDiscord | <MiniApple> or just object |
01:31:03 | leorize[m]1 | no and we don't need it |
01:31:11 | * | JStoker quit (Ping timeout: 244 seconds) |
01:31:26 | FromDiscord | <MiniApple> sad |
01:31:40 | leorize[m]1 | why would you want class? |
01:31:42 | FromDiscord | <ElegantBeef> Nim's UFCS replicated the logic of a class other than the grouped declaration |
01:31:49 | FromDiscord | <MiniApple> ~~cuz i like class~~ |
01:31:57 | disruptek | i'm classless and look how successful i've been. |
01:32:06 | disruptek | oh wait. |
01:32:48 | FromDiscord | <MiniApple> hmm |
01:32:51 | FromDiscord | <MiniApple> what do you mean |
01:32:55 | leorize[m]1 | ~mcs |
01:32:56 | disbot | mcs: 11method call syntax, or UFCS in popular lingo; see https://nim-lang.org/docs/manual.html#procedures-method-call-syntax |
01:33:29 | * | JStoker joined #nim |
01:34:05 | FromDiscord | <MiniApple> what is difference between proc and methods |
01:34:16 | FromDiscord | <ElegantBeef> One is for object inheritance + overriding |
01:34:20 | FromDiscord | <ElegantBeef> That'd be method |
01:34:26 | FromDiscord | <MiniApple> ok |
01:34:40 | FromDiscord | <ElegantBeef> If you really want the "class" grouping you can always quickly do this, but it's not very idiomatic https://play.nim-lang.org/#ix=2Brj |
01:34:41 | FromDiscord | <MiniApple> how to use methods for a object |
01:34:57 | disruptek | it's more about what object you use with methods. |
01:34:59 | FromDiscord | <MiniApple> hmm |
01:35:01 | FromDiscord | <MiniApple> wait what |
01:35:07 | disruptek | for example, the tantric methods. |
01:35:22 | FromDiscord | <MiniApple> werid |
01:35:26 | FromDiscord | <MiniApple> (edit) "werid" => "weird" |
01:35:26 | FromDiscord | <ElegantBeef> Nim's function call syntax allows you to call procs as if they're member functions |
01:35:26 | FromDiscord | <Yardanico> @MiniApple nim doesn't need classes |
01:35:44 | FromDiscord | <Yardanico> if you need classes for object.method() syntax, nim has Method Call Syntax for that |
01:35:55 | FromDiscord | <MiniApple> ok |
01:35:56 | FromDiscord | <ElegantBeef> So all functions can be called like C# extension methods `procName(object)` or members `object.procName` |
01:35:58 | FromDiscord | <Yardanico> if you need inheritance with dynamic dispatch, there's inheritance and `method` which does dynamic dispatch |
01:36:05 | FromDiscord | <Yardanico> I think you should read Nim tutorials first :) |
01:36:09 | FromDiscord | <ElegantBeef> ^ |
01:36:14 | leorize[m]1 | ~tut |
01:36:14 | disbot | no footnotes for `tut`. 🙁 |
01:36:24 | FromDiscord | <ElegantBeef> https://nim-lang.org/docs/tut1.html |
01:36:29 | FromDiscord | <Yardanico> ~tutorial |
01:36:29 | disbot | tutorial: 11intro to sacred manuscripts: https://nim-lang.org/docs/tut1.html |
01:36:40 | FromDiscord | <Yardanico> ~test |
01:36:40 | disbot | no footnotes for `test`. 🙁 |
01:36:46 | FromDiscord | <Yardanico> ~disruptek |
01:36:46 | disbot | disruptek: 11a sexy fella with magic hands. |
01:36:47 | disbot | disruptek: 11don't listen to him |
01:36:47 | disbot | disruptek: 11an unsafe nil deref |
01:37:16 | FromDiscord | <MiniApple> what is block |
01:37:38 | leorize[m]1 | a way to create a scope |
01:38:18 | FromDiscord | <MiniApple> hmm |
01:38:43 | FromDiscord | <Yardanico> https://nim-lang.org/docs/manual.html explains most of nim features you might ask about |
01:38:57 | FromDiscord | <Yardanico> but yeah, I'd recommend you to read resources in https://nim-lang.org/learn.html |
01:39:02 | FromDiscord | <Yardanico> like "nim basics" |
01:39:08 | FromDiscord | <MiniApple> lol |
01:40:04 | FromDiscord | <MiniApple> hmm |
01:40:12 | FromDiscord | <MiniApple> in nim we can make a new operator? |
01:40:44 | FromDiscord | <ElegantBeef> Yes |
01:41:11 | FromDiscord | <MiniApple> wtf |
01:41:55 | FromDiscord | <Yardanico> why "wtf" ? :) it allows for very cool things |
01:42:05 | FromDiscord | <ElegantBeef> It could be wtf in a mesmerized wait |
01:42:07 | FromDiscord | <ElegantBeef> (edit) "wait" => "way" |
01:42:12 | FromDiscord | <Yardanico> there's routine overloading (proc, method, etc) as well |
01:42:24 | FromDiscord | <Yardanico> as I said, reading the manual will let you know how many cool stuff Nim has :) |
01:42:30 | FromDiscord | <MiniApple> lol |
01:44:08 | FromDiscord | <MiniApple> does nim have private,public,procted? |
01:44:42 | FromDiscord | <Yardanico> no, but all symbols are private by default |
01:44:46 | FromDiscord | <Yardanico> to export symbols, you use |
01:44:55 | FromDiscord | <ElegantBeef> Well you can sorta think of it having public/private |
01:45:02 | disruptek | shit, i knew there was something i forgot to add to the manual. |
01:45:02 | FromDiscord | <MiniApple> wow |
01:45:05 | FromDiscord | <Yardanico> you can also have "protected" the way you construct your package |
01:45:11 | FromDiscord | <Yardanico> (edit) "you can also have "protected" ... the" added "by" |
01:45:17 | FromDiscord | <MiniApple> cool |
01:45:17 | disruptek | my package is usually protected. |
01:45:29 | FromDiscord | <Yardanico> from the aliens? glowing in the dark |
01:45:34 | FromDiscord | <ElegantBeef> Disruptek did always seem to me like the guy to always wear a cup |
01:45:50 | disruptek | some bitches be crazy. |
01:47:22 | FromDiscord | <Yardanico> 2 girls 1 disruptek |
01:47:24 | FromDiscord | <Yardanico> hides |
01:47:36 | FromDiscord | <Yardanico> sorry I really couldn't resist |
01:47:37 | FromDiscord | <Yardanico> I tried to |
01:47:55 | FromDiscord | <ElegantBeef> Lol based of what he has said they'd probably be underaged prostitutes |
01:48:02 | FromDiscord | <Yardanico> shhhhhhh |
01:48:12 | disruptek | age is just a number, man. |
01:49:47 | FromDiscord | <Avatarfighter> that :disruptek: quote is going right to the repo |
01:49:51 | Prestige | disruptek: fbi, open up! |
01:50:08 | disruptek | third time this week. |
01:51:10 | Prestige | Hahah. |
01:51:57 | FromDiscord | <Avatarfighter> lmao |
01:52:15 | * | rockcavera joined #nim |
01:54:06 | FromDiscord | <Gyllou> can someone explain simply what is going on with the nim parallel capabilities? is there no built in multiprocessing, just threads that are shared nothing? |
01:54:58 | disruptek | the new "story" we want to tell is one of atomic-free rc and "moves" of entire memory graphs between threads. |
01:55:36 | FromDiscord | <Gyllou> interesting. tbh im not even sure how you would manage that |
01:56:12 | disruptek | well, the atomic-free rc is --gc:arc. the moves happen via Isolate. |
01:57:00 | FromDiscord | <Gyllou> heh thats pretty cool |
01:57:03 | disruptek | also there's a continuation-passing style we're working on that will do arbitrary thread/unthread for these contained memory graphs. |
01:57:17 | FromDiscord | <Avatarfighter> I like https://github.com/mratsim/weave for my multithreading needs |
01:57:28 | FromDiscord | <Gyllou> thats pretty cool |
01:57:54 | FromDiscord | <ElegantBeef> There are also the channels for cross thread communication, but those arent really fancy 😄 |
01:58:05 | disruptek | cps will be the basis of a csp impl that'll give us the sorts of multiprocessing features that other langs enjoy. |
01:58:15 | disruptek | think go channels. |
01:58:21 | FromDiscord | <Avatarfighter> im excited for your cps lib disruptek |
01:58:28 | disruptek | me too. |
01:58:32 | FromDiscord | <Yardanico> zevv is also the one to blame :) |
01:58:37 | FromDiscord | <Yardanico> but yeah, i'm waiting as well |
01:58:39 | FromDiscord | <Gyllou> okay that sounds cool |
01:58:40 | FromDiscord | <Yardanico> !repo cps |
01:58:41 | disbot | https://github.com/disruptek/cps -- 9cps: 11Continuation-Passing Style for Nim 🔗 15 39⭐ 2🍴 |
01:58:44 | disruptek | zevv started it. |
01:58:44 | FromDiscord | <ElegantBeef> I dont do multithreading so... im not! 😛 |
01:58:59 | FromDiscord | <Yardanico> @Gyllou see https://nim-lang.org/blog/2020/10/15/introduction-to-arc-orc-in-nim.html |
01:59:20 | FromDiscord | <Yardanico> and links at the bottom of that post |
01:59:21 | FromDiscord | <Yardanico> for more info |
02:00:06 | FromDiscord | <Avatarfighter> random thought, but is nim's async going to get an overhaul at some point? |
02:00:22 | disruptek | our current channels basically just copy objects in memory between threads. |
02:00:27 | FromDiscord | <Gyllou> thats pretty cool, reading through it now |
02:00:30 | FromDiscord | <Yardanico> well, cps is one of the possible solutions @Avatarfighter |
02:00:34 | disruptek | so, not terribly exciting, but it works. |
02:00:36 | FromDiscord | <ElegantBeef> Yea was going to say |
02:00:36 | FromDiscord | <Yardanico> for new async |
02:00:51 | FromDiscord | <Avatarfighter> But will the changes to async be code breaking |
02:00:54 | FromDiscord | <Yardanico> yes, so? |
02:00:56 | FromDiscord | <Avatarfighter> that's my main fear |
02:00:58 | FromDiscord | <Yardanico> nim 2.0 will be code breaking |
02:00:59 | FromDiscord | <Yardanico> a lot |
02:01:04 | FromDiscord | <Avatarfighter> 😐 |
02:01:09 | disruptek | zevv is really the artist when it comes to cps. i'm just the mechanic. |
02:01:23 | FromDiscord | <Yardanico> too much backwards compatibility will hinder the development ;) |
02:01:25 | FromDiscord | <Avatarfighter> oh yeah isn't nim getting a new AST for 2.0 |
02:01:31 | FromDiscord | <Yardanico> but it's years away still |
02:01:51 | FromDiscord | <Gyllou> so you guys are the nim devs then? |
02:02:05 | FromDiscord | <Avatarfighter> the community is the developer |
02:02:08 | FromDiscord | <Avatarfighter> araq is god |
02:02:12 | disruptek | if you write nim you're a nim dev. |
02:02:12 | FromDiscord | <Yardanico> well, I'm just doing some random small things, using Nim as a hobby |
02:02:15 | FromDiscord | <Yardanico> yeah :) |
02:02:20 | FromDiscord | <Gyllou> fair lol |
02:02:24 | FromDiscord | <ElegantBeef> It's a community hosted language |
02:02:40 | FromDiscord | <Gyllou> okay, yea i saw Araq's name pop up alot |
02:02:50 | FromDiscord | <Yardanico> that's the creator and main developer of the language |
02:02:56 | FromDiscord | <Gyllou> gotcha |
02:02:57 | FromDiscord | <Avatarfighter> yeah |
02:03:02 | FromDiscord | <Yardanico> but really anyone is welcome to contribute |
02:03:05 | FromDiscord | <Avatarfighter> Everyone else is a nimion |
02:03:13 | FromDiscord | <ElegantBeef> The core dev team does hang frequent here |
02:03:17 | FromDiscord | <ElegantBeef> (edit) removed "hang" |
02:03:24 | mipri | https://github.com/nim-lang/Nim/graphs/contributors |
02:03:24 | FromDiscord | <Yardanico> we don't really have a defined "team" though, do we? |
02:03:48 | FromDiscord | <ElegantBeef> No defined team, but i'd imagine the people that contribute a ton can be considerd "Core team" 😄 |
02:03:56 | FromDiscord | <Gyllou> okay cool |
02:03:58 | FromDiscord | <Gyllou> i like it |
02:04:00 | FromDiscord | <Yardanico> 4raq, clyybber, timotheecour, disruptek, cooldome |
02:04:04 | FromDiscord | <Avatarfighter> tbh i just consider everyone who talks in this channel to be core |
02:04:06 | disruptek | there are a lot of people that have made really substantial contributions but aren't really around on the day-to-day. |
02:04:09 | FromDiscord | <ElegantBeef> What's dom to you 😄 |
02:04:17 | FromDiscord | <Yardanico> dom - stdlib |
02:04:24 | FromDiscord | <Avatarfighter> @ElegantBeef dom = dom |
02:04:26 | FromDiscord | <Yardanico> first 5 are compiler devs mostly |
02:04:31 | FromDiscord | <Yardanico> well, except timothee |
02:04:32 | FromDiscord | <ElegantBeef> Ah |
02:04:36 | FromDiscord | <Gyllou> well, if i end up doing significant dev in nim ill try to contribute |
02:04:37 | FromDiscord | <Yardanico> miran - posts, backporting |
02:04:43 | disruptek | i mean, i don't really do compiler dev. |
02:04:44 | FromDiscord | <ElegantBeef> They're the ones i'm causing troubles with using the nimvm weirdly |
02:04:52 | FromDiscord | <Avatarfighter> Gyllou, are you new to nim? |
02:05:03 | FromDiscord | <Yardanico> @Gyllou yeah, all of nim stdlib and the nim compiler (but it's not the best Nim code :P) is written in Nim |
02:05:12 | FromDiscord | <Gyllou> yea mostly, ive been following it a bit but i havent had a chance to really use it until perhaps now |
02:05:25 | FromDiscord | <ElegantBeef> I think it's just natural to contribute to the environment/langauge |
02:05:36 | FromDiscord | <Gyllou> @Yardanico thats literally what i was googling lol gotcha thanks for the answer |
02:05:38 | FromDiscord | <Yardanico> you can open a random stdlib module and see nim code |
02:06:07 | FromDiscord | <Gyllou> i will mainly be working in the hpc, deeplearning, distributed systems stuff |
02:06:19 | FromDiscord | <Avatarfighter> In my opinion I think the most appealing thing in the Nim community other than Yard, is the community |
02:06:31 | FromDiscord | <Yardanico> hahaha |
02:06:36 | FromDiscord | <ElegantBeef> No you dont get to say that, constantly pretending like stadia is a good idea |
02:06:41 | FromDiscord | <Avatarfighter> LOL |
02:06:41 | FromDiscord | <Gyllou> lol |
02:06:49 | FromDiscord | <Avatarfighter> Oh yeah beef |
02:06:58 | FromDiscord | <Avatarfighter> i need to show you what i got working |
02:07:00 | FromDiscord | <ElegantBeef> I have 0 power here but i'll slide a few bucks to yard, i heard russians are cool with corruption |
02:07:02 | FromDiscord | <Yardanico> i'm in a very weird position, I've been in the Nim community for a long time but haven't done any big projects or any substantial contributions to the compiler/stdlib :) |
02:07:10 | FromDiscord | <Gyllou> lol |
02:07:12 | FromDiscord | <Gyllou> gotcha |
02:07:23 | FromDiscord | <Yardanico> but I still know a lot of the Nim-related stuff |
02:07:23 | FromDiscord | <Avatarfighter> Beef: I got streaming my program to sorta work 😎 |
02:07:41 | FromDiscord | <Gyllou> just how stuff goes, ive been wanting to really use it, but ive been locked into data science and robotics ecosystems alot |
02:07:50 | FromDiscord | <Gyllou> even scala/spark crap at one point fml |
02:07:51 | FromDiscord | <Avatarfighter> granted its a socket forcefeeding the nimvm with code but w/e |
02:07:55 | FromDiscord | <Yardanico> well, not really "long time", just 3.5 years (with big pauses in between) |
02:08:02 | FromDiscord | <Yardanico> (edit) "well, not really "long time", just 3.5 years ... (with" added "from start of 2017" |
02:08:09 | FromDiscord | <Avatarfighter> @Gyllou https://github.com/mratsim/Arraymancer this might interest you |
02:08:14 | disruptek | gyllou: yours would be a relatively large project. |
02:08:16 | FromDiscord | <ElegantBeef> And here i am yard just writting mostly proof of concept stuff |
02:08:24 | FromDiscord | <ElegantBeef> They already seen it avatar |
02:08:26 | FromDiscord | <Gyllou> yea ive seen it, ill probably be using that |
02:08:31 | FromDiscord | <Avatarfighter> my bad smh |
02:08:31 | FromDiscord | <ElegantBeef> We've linked it to them about 30 times 😛 |
02:08:37 | FromDiscord | <Yardanico> in 2018/2019 I only had ~120 commits each year |
02:08:40 | FromDiscord | <Gyllou> lol its all good |
02:08:41 | FromDiscord | <Avatarfighter> ok well ill link it 31 times >:) https://github.com/mratsim/Arraymancer |
02:08:46 | FromDiscord | <Yardanico> !repo arraymancer |
02:08:47 | disbot | https://github.com/mratsim/Arraymancer -- 9Arraymancer: 11A fast, ergonomic and portable tensor library in Nim with a deep learning focus for CPU, GPU and embedded devices via OpenMP, Cuda and OpenCL backends 15 726⭐ 60🍴 7& 7 more... |
02:08:47 | FromDiscord | <Gyllou> lmao |
02:08:58 | FromDiscord | <Yardanico> ~arraymancer |
02:08:59 | disbot | no footnotes for `arraymancer`. 🙁 |
02:08:59 | FromDiscord | <Avatarfighter> Don't forget to check out this cool little known library ^ |
02:09:00 | FromDiscord | <Gyllou> yea i like it here |
02:09:12 | FromDiscord | <Yardanico> ~arraymancer is https://github.com/mratsim/Arraymancer |
02:09:13 | disbot | arraymancer: 11https://github.com/mratsim/Arraymancer |
02:09:18 | FromDiscord | <ElegantBeef> I've been holding steady at around 600 annual commits for a while now, so hey i'm being productive |
02:09:18 | disruptek | if you're on irc, you can talk to the bot directly. it has more to say in private. |
02:09:22 | FromDiscord | <Avatarfighter> #main is basically just everyone shitposting and then sometimes being serious |
02:09:28 | FromDiscord | <Yardanico> well nbo |
02:09:31 | FromDiscord | <Yardanico> (edit) "nbo" => "no" |
02:09:33 | FromDiscord | <Avatarfighter> yes |
02:09:35 | FromDiscord | <Yardanico> it's mostly nim-related talk :) |
02:09:41 | FromDiscord | <Gyllou> that sounds good |
02:09:41 | FromDiscord | <Avatarfighter> shitposting about nim |
02:09:43 | FromDiscord | <Avatarfighter> my bad |
02:09:45 | FromDiscord | <ElegantBeef> Also you're force feeding the nim vm? |
02:09:47 | FromDiscord | <Yardanico> offtopic happens usually when there's not a lot of people around |
02:09:52 | FromDiscord | <ElegantBeef> The fuck are you doing to the poor VM |
02:09:56 | FromDiscord | <Avatarfighter> its working |
02:09:59 | FromDiscord | <Avatarfighter> that is what i am doing |
02:10:08 | FromDiscord | <ElegantBeef> It cant even serialize types into binary streams |
02:10:12 | FromDiscord | <Gyllou> im a huge gaming nerd. actually just a regular nerd. ill be on discord alot. |
02:10:19 | disruptek | pffbt. |
02:10:32 | FromDiscord | <Avatarfighter> i have written so many helper procs last nights I barely have streaming code to it working @ElegantBeef |
02:10:50 | FromDiscord | <ElegantBeef> I'm seriously confused on what you're doing |
02:11:02 | FromDiscord | <ElegantBeef> You have the nim compiler taking in nimscript code to evaluate it |
02:11:02 | FromDiscord | <Avatarfighter> Which part |
02:11:11 | FromDiscord | <ElegantBeef> For what? |
02:11:22 | FromDiscord | <Avatarfighter> i have the nimvm evaluating nimscript that it is receiving from a socket |
02:11:40 | FromDiscord | <ElegantBeef> Also i'm still pretty happy with how fast the VM continue where it left off in release mode |
02:12:03 | FromDiscord | <Avatarfighter> nimvm is the best thing my lies have seen after disruptek ofc |
02:12:06 | FromDiscord | <Avatarfighter> eyes |
02:12:16 | FromDiscord | <Gyllou> lol |
02:12:19 | FromDiscord | <ElegantBeef> So you're application is shipping the compiler... or what? |
02:12:24 | FromDiscord | <Avatarfighter> no |
02:12:31 | FromDiscord | <Avatarfighter> im just bored and messing around rn |
02:12:38 | FromDiscord | <Avatarfighter> this is my side-side project |
02:12:50 | FromDiscord | <Gyllou> so basically like a sending a client side script? |
02:12:51 | FromDiscord | <ElegantBeef> You really shouldnt be allowed side side projects if this is what you come up with 😛 |
02:12:58 | FromDiscord | <Avatarfighter> 😢 |
02:13:06 | FromDiscord | <Avatarfighter> @Gyllou yeah basically |
02:13:23 | FromDiscord | <Avatarfighter> this all started because Beef came up with the great idea to stream my program stadia style |
02:13:34 | FromDiscord | <ElegantBeef> Nyet, nein, no, no |
02:13:39 | FromDiscord | <Avatarfighter> all credit to beef for this |
02:13:39 | FromDiscord | <Gyllou> thats really interesting lol |
02:13:45 | FromDiscord | <ElegantBeef> One of those no is french the other is english |
02:13:47 | FromDiscord | <Gyllou> that sounds like a pain in the ass |
02:13:49 | FromDiscord | <Gyllou> lol |
02:13:53 | FromDiscord | <Yardanico> good night (05:13 am) |
02:13:56 | FromDiscord | <ElegantBeef> It's actually not too bad |
02:13:57 | FromDiscord | <Avatarfighter> no in french is non |
02:14:02 | FromDiscord | <ElegantBeef> No french no is no |
02:14:05 | FromDiscord | <Avatarfighter> @Yardanico bonne nuit 😄 |
02:14:05 | FromDiscord | <Gyllou> gn yardanico |
02:14:06 | FromDiscord | <Avatarfighter> non |
02:14:08 | FromDiscord | <Yardanico> NEIN |
02:14:11 | FromDiscord | <Gyllou> derp no ping |
02:14:19 | FromDiscord | <Avatarfighter> c'est non pas no @ElegantBeef |
02:14:36 | FromDiscord | <ElegantBeef> Sure |
02:14:39 | FromDiscord | <Avatarfighter> oui |
02:14:59 | FromDiscord | <ElegantBeef> Avatar is taking my joke and my serious project and mixing them and i dont like it 😛 |
02:15:08 | FromDiscord | <Avatarfighter> psh |
02:15:11 | FromDiscord | <Avatarfighter> i would never |
02:15:11 | FromDiscord | <Gyllou> alright gonna go test some play around with some of those packages, ill ttyl guys, thanks for all the help |
02:15:22 | FromDiscord | <ElegantBeef> Buh bye |
02:15:24 | disruptek | have fun. |
02:15:27 | FromDiscord | <Gyllou> test some /play around apparently both |
02:15:29 | FromDiscord | <Avatarfighter> np @Gyllou check out #science too while you're here 😄 |
02:15:35 | FromDiscord | <Gyllou> later! fo sho |
02:15:37 | FromDiscord | <ElegantBeef> 33rd time |
02:15:41 | FromDiscord | <Avatarfighter> enjoy and welcome |
02:16:01 | FromDiscord | <Avatarfighter> disruptek how is mangling today |
02:16:04 | FromDiscord | <Avatarfighter> still like yesterday? |
02:16:12 | disruptek | nah. |
02:16:12 | FromDiscord | <ElegantBeef> He got it to go green |
02:16:21 | FromDiscord | <Avatarfighter> wait really? |
02:16:35 | FromDiscord | <Avatarfighter> what's new with mangling? |
02:16:53 | disruptek | it's a shit-ass pet-fucker version of mangling that throws _ all over the place. |
02:17:13 | disruptek | basically, you gimme your identifiers and i fuck 'em. |
02:17:18 | FromDiscord | <Avatarfighter> that's good |
02:17:25 | disruptek | with my extra long _____ |
02:17:46 | FromDiscord | <Avatarfighter> i heard that a way to improve current programs is to incorporate blockchain technologies in it, have you tried that approach yet? |
02:17:59 | FromDiscord | <ElegantBeef> Avatar you meme too hard and it hurts me |
02:18:03 | FromDiscord | <Avatarfighter> ahah |
02:18:05 | disruptek | that's next. it'll be a good basis for ic. |
02:18:14 | FromDiscord | <Avatarfighter> i spend the majority of my time shitposting in this discord |
02:18:36 | FromDiscord | <ElegantBeef> I still love that disruptek was working on cleaning mangling up and i added ugly mangling to my project |
02:18:46 | FromDiscord | <Avatarfighter> Could you imagine if ic cached code on a Nim Blockchain lmfao |
02:19:36 | FromDiscord | <ElegantBeef> Could you imagine if i made a block chained neural network that's on the cloud so i wouldnt have to constantly express my dislike of the sentences you create 😛 |
02:20:01 | FromDiscord | <Avatarfighter> brb looking up how to not cry |
02:20:21 | FromDiscord | <Avatarfighter> we really need a webscraping/bots channel that's basically where all my experience is |
02:20:29 | FromDiscord | <ElegantBeef> #webdev |
02:20:34 | FromDiscord | <Avatarfighter> well |
02:20:40 | FromDiscord | <Avatarfighter> I guess 🙄 |
02:21:08 | FromDiscord | <Avatarfighter> disruptek: what do you need for your click farming thing? |
02:21:13 | FromDiscord | <ElegantBeef> Hope you know i'm purely joking with all my insults 😄 |
02:21:25 | FromDiscord | <Avatarfighter> I am fully aware |
02:22:11 | FromDiscord | <Avatarfighter> I want you to also know I am half kidding with streaming code |
02:27:46 | * | TomDotTom quit (Ping timeout: 246 seconds) |
02:28:06 | disruptek | i need to farm clicks. not even so many. |
02:28:51 | disruptek | just has to be automatic. like, i dunno, 30-50 a week per each of 2-3 sites. |
02:36:15 | * | muffindrake quit (Ping timeout: 272 seconds) |
02:37:05 | * | a_chou quit (Ping timeout: 240 seconds) |
02:37:46 | * | muffindrake joined #nim |
02:38:30 | user0 | Have you tried making it cloud native? Maybe it will work better if its native to the clouds? Like some kind of ware made of cloud vapor? |
02:42:58 | * | astronavt quit (Quit: Leaving) |
02:53:23 | FromDiscord | <Avatarfighter> disruptek have you thought about getting like 30-50 ipv4 NATs and click farming with that? |
02:53:54 | disruptek | i admit i have not. |
02:54:02 | FromDiscord | <Avatarfighter> hm |
02:54:17 | FromDiscord | <Avatarfighter> i can prob find you 5$/yr NATs or cheaper |
02:54:28 | leorize[m]1 | get ipv6? |
02:54:50 | leorize[m]1 | a /60 prefix would be enough to click forever |
02:55:22 | FromDiscord | <Avatarfighter> disruptek: here is the strategy I have for you, get a 5$/yr nat and an AWS free tier account, keep deploying proxy software on AWS instances and do your click farming like that, when you're done delete the account |
02:55:48 | FromDiscord | <Avatarfighter> cheapest solution I can think for you as long as the site don't have antibot software |
02:56:14 | disruptek | i don't care how cheap it is. how do i make clicks happen? |
02:57:02 | FromDiscord | <Avatarfighter> usually you can just curl with a signed in cookie |
02:57:13 | FromDiscord | <Avatarfighter> or httpclient |
02:57:16 | disruptek | why don't you do it for me. i'll pay you. |
02:57:46 | FromDiscord | <Avatarfighter> well thats no fun |
02:58:14 | * | Avatarfighter joined #nim |
02:58:15 | disruptek | true, but i don't do this shit for fun. |
02:58:29 | disruptek | i do it so i don't starve to death in the winter. |
03:00:01 | FromDiscord | <Rebel> Was looking at memory management in Nim and saw the --go option that is useful for interoperability with Go. Are there any examples of Nim interoperating with Go? Struggling to find any examples. |
03:00:51 | leorize[m]1 | there are zero examples :P |
03:01:06 | leorize[m]1 | the gc is there but there aren't any known usage of it |
03:01:14 | disruptek | who here knows how to make logic happen in google sheets? |
03:01:19 | leorize[m]1 | the only requirement is that the go code must be compiled with gccgo |
03:01:34 | FromDiscord | <flywind> https://github.com/stefantalpalaru/golib-nim |
03:04:17 | FromDiscord | <flywind> ^ |
03:12:38 | * | Avatarfighter1 joined #nim |
03:12:38 | * | Avatarfighter1 quit (Client Quit) |
03:12:51 | * | Avatarfighter1 joined #nim |
03:13:27 | * | Avatarfighter quit (Ping timeout: 260 seconds) |
03:16:54 | * | Avatarfighter joined #nim |
03:18:59 | * | Avatarfighter1 quit (Ping timeout: 244 seconds) |
03:20:44 | * | rockcavera quit (Remote host closed the connection) |
03:32:32 | * | arecacea1 quit (Remote host closed the connection) |
03:32:57 | * | arecacea1 joined #nim |
03:37:12 | * | xioren quit (Quit: leaving) |
03:45:32 | * | Avatarfighter quit (Ping timeout: 260 seconds) |
03:45:45 | * | a_chou joined #nim |
03:45:52 | * | Avatarfighter joined #nim |
03:49:57 | ForumUpdaterBot | New thread by Wilypomegranate: Convert Time to Duration, see https://forum.nim-lang.org/t/6966 |
03:54:13 | * | Avatarfighter1 joined #nim |
03:54:20 | * | Avatarfighter1 quit (Client Quit) |
03:56:02 | * | Avatarfighter quit (Ping timeout: 260 seconds) |
03:58:32 | FromDiscord | <Avatarfighter> disruptek: you're doing good |
04:00:59 | FromDiscord | <Avatarfighter> disruptek: you're doing bad |
04:03:48 | * | Avatarfighter joined #nim |
04:04:21 | * | luismanfroni joined #nim |
04:04:56 | FromDiscord | <ElegantBeef> Seems the 1.4 release is getting a bunch of new people, it's pretty cool |
04:05:09 | * | ldlework quit (Quit: co'o ro do) |
04:06:01 | * | supakeen quit (Quit: WeeChat 2.9) |
04:06:12 | * | ldlework joined #nim |
04:06:41 | * | supakeen joined #nim |
04:07:56 | * | njoseph quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.) |
04:08:03 | * | njoseph joined #nim |
04:08:08 | * | njoseph quit (Client Quit) |
04:08:15 | * | njoseph joined #nim |
04:14:36 | * | Avatarfighter1 joined #nim |
04:15:19 | * | Avatarfighter quit (Ping timeout: 260 seconds) |
04:18:55 | * | Avatarfighter1 quit (Ping timeout: 244 seconds) |
04:19:16 | * | Avatarfighter joined #nim |
04:24:47 | FromDiscord | <Yardanico> "We wrote a research paper about it: Validating UTF-8 In Less Than One Instruction Per Byte (to appear at Software: Practice and Experience). We have also published our benchmarking software."↵https://lemire.me/blog/2020/10/20/ridiculously-fast-unicode-utf-8-validation/ |
04:24:55 | * | Avatarfighter quit (Ping timeout: 240 seconds) |
04:25:41 | FromDiscord | <Yardanico> Of course with SIMD |
04:25:43 | FromDiscord | <Yardanico> But still impressive |
04:27:23 | * | Avatarfighter joined #nim |
04:31:37 | * | Avatarfighter1 joined #nim |
04:31:57 | * | Avatarfighter1 quit (Client Quit) |
04:33:22 | * | Avatarfighter quit (Ping timeout: 260 seconds) |
04:58:23 | * | a_chou quit (Remote host closed the connection) |
05:02:57 | * | solitudesf joined #nim |
05:05:50 | * | lbart quit (Ping timeout: 272 seconds) |
05:09:14 | * | lbart joined #nim |
05:09:14 | * | lbart quit (Changing host) |
05:09:14 | * | lbart joined #nim |
05:15:37 | * | narimiran joined #nim |
06:03:53 | FromDiscord | <alehander42> oh man |
06:03:56 | FromDiscord | <alehander42> morning |
06:03:56 | FromDiscord | <Joe-23> Does Nim use reference counting? |
06:06:00 | FromDiscord | <Yardanico> @Joe-23 yes, current gc - refc is deferred reference counting with mark & sweep for cycle collection |
06:06:10 | FromDiscord | <Yardanico> Right now ARC/ORC are in active development though |
06:06:26 | FromDiscord | <Yardanico> ARC is normal reference counting with move semantics and destructors |
06:06:41 | FromDiscord | <Yardanico> Check out https://nim-lang.org/blog/2020/10/15/introduction-to-arc-orc-in-nim.html |
06:06:55 | FromDiscord | <Yardanico> https://nim-lang.org/docs/gc.html |
06:08:38 | FromDiscord | <Joe-23> So ARC is essentially adding `free` automatically during compile time and then during runtime execution it will call `free` to clean up unnessisary RAM usage at certain parts of the code? |
06:09:13 | FromDiscord | <Yardanico> Yes, ARC is RAII with additional move semantics for reducing copies. And destructors for reference types use ref counting |
06:09:31 | disruptek | GTFO since when? |
06:09:48 | FromDiscord | <Yardanico> all destructor calls are inserted at compile time of course, and statically bound |
06:10:48 | FromDiscord | <Joe-23> @Yardanico Is this similar to the ownership model present in Rust? |
06:11:32 | disruptek | no; rust is about punishing the owner. we're about rewarding them. |
06:11:42 | FromDiscord | <Yardanico> Not really, Rust's ownership model is very different, although it has destructors too |
06:11:43 | FromDiscord | <Joe-23> @disruptek Lmao lol |
06:12:06 | FromDiscord | <Joe-23> @Yardanico So how does it differ, does it also add `free` as well? |
06:12:48 | FromDiscord | <Yardanico> Yes but the main feature of Rust is that it does complete borrow checking for transferring ownership and stuff |
06:12:55 | FromDiscord | <Yardanico> at compile time |
06:13:56 | FromDiscord | <Joe-23> Where as with Nim during run time it does borrow checking? |
06:13:58 | disruptek | yes, we add free. |
06:14:03 | disruptek | no. |
06:14:11 | FromDiscord | <Joe-23> Oh |
06:14:17 | disruptek | we add the memory management at compile-time, too. |
06:14:23 | disruptek | it's just... |
06:14:28 | disruptek | imagine if rust was a sponge. |
06:14:33 | FromDiscord | <Joe-23> Which one is more efficent then, the ownership model or what Nim does with ARC? |
06:14:34 | disruptek | a sponge full of suck. |
06:14:42 | disruptek | well, we wring that fucking sponge out. |
06:15:11 | FromDiscord | <Joe-23> I see mate |
06:15:25 | FromDiscord | <Joe-23> @Joe-23 I am not too sure though which one is more effective |
06:15:28 | FromDiscord | <Joe-23> that I don't know? |
06:15:35 | disruptek | basically, nim inserts manual memory management for you automatically. |
06:15:35 | FromDiscord | <Joe-23> In terms of performance? |
06:15:41 | leorize[m]1 | benchmarks is the only way to find out |
06:15:43 | disruptek | it's not much different. |
06:15:47 | leorize[m]1 | but they should be similar |
06:15:50 | Prestige | Did joe just @ himself? |
06:15:58 | disruptek | he's a fucking wildman. |
06:16:06 | leorize[m]1 | either that or Yardanico broke the bridge again |
06:16:08 | FromDiscord | <alehander42> disrptek |
06:16:11 | FromDiscord | <Joe-23> I was trying to reply to a comment I made so Discord automatically does this lol |
06:16:18 | mipri | more efficient? Rust rejects invalid borrows. Nim injects copying to resolve sloppy memory management. The latter works by default but might need some massaging tobe as efficient. |
06:16:18 | FromDiscord | <alehander42> we meet again in our time zone end |
06:16:21 | FromDiscord | <Joe-23> @disruptek Ah I see mate |
06:16:52 | disruptek | rude. |
06:17:03 | disruptek | copying to resolve sloppy memory management? |
06:17:07 | mipri | maybe you'll get an experience more like Rust's if you use something more like Rust's stdlib, with =copy errored out for most things |
06:17:27 | FromDiscord | <Joe-23> Right I see |
06:17:38 | leorize[m]1 | well the rust model allows for cycles to be solved at compile time iirc |
06:17:48 | FromDiscord | <Yardanico> it doesn't i think |
06:17:57 | leorize[m]1 | (or it might just solve it by making it so miserable that no one writes it) |
06:18:08 | disruptek | it's true that we use copies sometimes, but that's not a fault of the model. |
06:18:22 | FromDiscord | <Yardanico> You might even need Rc for some types which are next to impossible to write without refcounting |
06:18:24 | FromDiscord | <Joe-23> > (or it might just solve it by making it so miserable that no one writes it)↵@leorize[Matrix]1#0000 xDD I heard a lot of people hates its lifetimes |
06:20:03 | disruptek | rust is miserable but not just because of the borrow checker. |
06:20:14 | disruptek | i'd say that's like 60-70% of it though. |
06:20:27 | disruptek | the rest is the fact that it's a big language that /feels/ like a big language. |
06:20:42 | mipri | I'm not slamming arc there. You can say the same thing in a more positive way: your programs Nim programs work by default and you have an obvious path (reduce copies) to making it more efficient. Your programs fail by default with Rust and in a lot of code I've seen others write, the "reduce copies" path is still there becaus they manually write a lot unnnecessary copies to make the program easier to write |
06:20:44 | FromDiscord | <Joe-23> @disruptek Yep, its why I gave up on it |
06:20:47 | disruptek | it never feels intimate or elegant to me. |
06:20:54 | leorize[m]1 | the rust model allows lifetime to be completely solved at compile time I think |
06:21:31 | FromDiscord | <Yardanico> yes, so it doesn't need refcounting for most stuff |
06:21:32 | FromDiscord | <Joe-23> @mipri I ssee |
06:21:39 | disruptek | mipri: that's fair. |
06:22:36 | FromDiscord | <Joe-23> sent a long message, see http://ix.io/2Bsy |
06:22:38 | FromDiscord | <Joe-23> And that is just one example |
06:23:01 | FromDiscord | <alehander42> this is not really common in programming |
06:23:05 | FromDiscord | <alehander42> to take direct input |
06:23:27 | disruptek | and, in fairness, we get a lot of questions on how to take a single character input. |
06:23:35 | FromDiscord | <Joe-23> I mean like this is one example of its difficulty, there are other things that also complicate the language too much |
06:23:44 | disruptek | i have no clue, myself. so, yeah, it's not that common. 😁 |
06:23:46 | FromDiscord | <alehander42> just trying to point this out because in the beginning it seems as a big thing |
06:24:03 | FromDiscord | <Joe-23> @alehander42 Ah I see |
06:24:24 | FromDiscord | <alehander42> so maybe rust just hasn't provided an optimized api for that in std |
06:24:39 | FromDiscord | <alehander42> i mean, i feel arg parsing is more common |
06:24:42 | FromDiscord | <alehander42> but i might be wrong |
06:24:54 | disruptek | i really should try rust again. its been too long. |
06:25:09 | FromDiscord | <alehander42> i am just starting more seriously with rust |
06:25:10 | FromDiscord | <alehander42> as well |
06:25:40 | FromDiscord | <alehander42> i still struggle with a lot of stuff, the code looks very functional tho |
06:25:43 | FromDiscord | <alehander42> a lot of chaining |
06:26:00 | FromDiscord | <alehander42> my favorite thing is the traits for now |
06:26:26 | FromDiscord | <alehander42> kinda good to have standard protocols and quickly see which types implement them |
06:26:31 | FromDiscord | <alehander42> similar to what mratsim wanted for stdlib |
06:26:49 | disruptek | i get why chaining is a thing but i don't feel it's all that great a pattern. |
06:27:00 | FromDiscord | <alehander42> they even chan `.await` |
06:27:02 | FromDiscord | <alehander42> chain |
06:27:14 | disruptek | this is why people come here wanting "interfaces." |
06:27:21 | leorize[m]1 | well with dup and with in Nim we now got easy chaining for basically every mutable thing |
06:27:24 | FromDiscord | <alehander42> well, it is just a consequence of composition |
06:27:33 | FromDiscord | <alehander42> yeah yeah |
06:27:36 | leorize[m]1 | I have to admit that rust traits look very cool |
06:27:36 | FromDiscord | <alehander42> concepts seem close |
06:27:42 | disruptek | i know, but it feels limiting to me, not empowering. |
06:27:48 | FromDiscord | <Rika> same here, i think traits are interesting |
06:27:51 | FromDiscord | <alehander42> but how to detect which concepts a type implements |
06:28:03 | disruptek | concepts are superior, however, our concepts don't work. |
06:28:08 | FromDiscord | <alehander42> bu tman |
06:28:10 | * | solitudesf quit (Ping timeout: 260 seconds) |
06:28:36 | leorize[m]1 | new concepts & runtime dispatching for them will be Nim's answer to the protocol problem |
06:28:42 | leorize[m]1 | it's not a priority now though |
06:29:12 | disruptek | no, but it's an increasingly problematic deficiency. |
06:29:23 | disruptek | it's preventing development. |
06:29:48 | disruptek | i guess it's really my problem and i should solve it some other way. |
06:30:09 | leorize[m]1 | 4raq wants IC and the removal of restrictions regarding recursive modules first |
06:30:25 | leorize[m]1 | which is rather important for large projects tbh |
06:30:31 | disruptek | yawn. |
06:30:41 | disruptek | large projects of which only 3 are known to exist. |
06:31:06 | FromDiscord | <Yardanico> there are more |
06:31:15 | FromDiscord | <Yardanico> There are private code bases and you know it |
06:31:40 | leorize[m]1 | many have complained about the recursive modules problem |
06:31:48 | disruptek | because they are lazy. |
06:31:49 | leorize[m]1 | and like even the compiler suffers from it :P |
06:31:57 | disruptek | yes, that's one of the 3. |
06:32:08 | FromDiscord | <Yardanico> It should also solve reordering, right? |
06:32:16 | disruptek | no. |
06:32:21 | leorize[m]1 | maybe, can't say for sure |
06:32:25 | disruptek | we don't want to "solve" reordering. |
06:32:37 | disruptek | users should order their shit. |
06:32:43 | FromDiscord | <Yardanico> nah |
06:32:48 | disruptek | it's the easiest way to achieve high quality order. |
06:32:51 | FromDiscord | <Yardanico> 4raq said an entirely different thing |
06:32:58 | disruptek | well, not to me. |
06:33:35 | FromDiscord | <alehander42> IC is huge in rust |
06:33:41 | leorize[m]1 | I'm also watching alehander42 work on nil checking |
06:33:48 | FromDiscord | <alehander42> like, things just would fail if there was no way |
06:33:55 | FromDiscord | <alehander42> are you ???? |
06:33:58 | leorize[m]1 | @alehander42 tbf, they need that or its impossible to develop software in rust |
06:34:04 | FromDiscord | <alehander42> i stopped working ~20 days ago |
06:34:08 | disruptek | things just would fail if there was no way? |
06:34:12 | FromDiscord | <alehander42> and i am just trying to get back 😄 😄 so pls motivate me |
06:34:28 | disruptek | yeah, i beat you to green. |
06:34:31 | FromDiscord | <alehander42> like, i need to be more disciplined |
06:34:33 | disruptek | although, not for ic. |
06:34:39 | FromDiscord | <alehander42> disruptek yeah |
06:34:44 | FromDiscord | <alehander42> i mean the builds take so long man |
06:34:48 | FromDiscord | <alehander42> the first time |
06:34:55 | FromDiscord | <alehander42> for projects that are not even that .. big |
06:35:02 | FromDiscord | <alehander42> they just have deps that have deps etc |
06:35:05 | disruptek | you mean rust would be unbearable w/o ic. |
06:35:10 | disruptek | that i agree with. |
06:35:12 | FromDiscord | <alehander42> i know that rustc itself is a bit slower |
06:35:16 | FromDiscord | <alehander42> yeah |
06:35:20 | disruptek | it used to take like 2.5hrs to build rust itself. |
06:35:26 | disruptek | it's still like 30mins. |
06:35:33 | FromDiscord | <alehander42> well yeah dude |
06:35:40 | FromDiscord | <alehander42> if nim can compile 1 mln lines for 1sec |
06:35:40 | disruptek | that's bananas on a 12 core. |
06:35:43 | FromDiscord | <alehander42> maybe it can go without ic |
06:35:52 | disruptek | well, that's my position. |
06:35:52 | FromDiscord | <alehander42> but it's also not that kind of language |
06:35:59 | disruptek | this is a solution in search of a problem. |
06:36:01 | FromDiscord | <Rika> does any compiler compile 1 mil lines in a sec |
06:36:10 | disruptek | jai is pretty fucking fast. |
06:36:19 | leorize[m]1 | try free pascal |
06:36:28 | disruptek | nim has some high performance shit coming down the pike, though. |
06:36:35 | disruptek | mark my words. |
06:36:40 | FromDiscord | <alehander42> i agree that nim doesnt have many big project |
06:36:53 | FromDiscord | <alehander42> but you can't .. just implement IC |
06:36:59 | FromDiscord | <alehander42> when the ecosystem gets big |
06:37:09 | FromDiscord | <alehander42> it takes rearchitecting and time and stuff |
06:37:12 | leorize[m]1 | alehander42: IC for Nim is just an excuse to clean up the horrendous backend :P |
06:37:13 | disruptek | oh, we should do it when it's small? |
06:37:21 | FromDiscord | <alehander42> yeah? |
06:37:27 | disruptek | sadly, my ic impl doesn't really help the backend. |
06:37:32 | disruptek | if anything, it makes it worse. |
06:37:47 | leorize[m]1 | well you make mangling green |
06:37:47 | FromDiscord | <alehander42> sccache also helps a lot with rust |
06:37:55 | FromDiscord | <alehander42> maybe .. just a way to |
06:38:13 | FromDiscord | <alehander42> compile nim libs to some kind of binary files |
06:38:24 | disruptek | mangling represents the backend improvements, yes, but ic will add more complexity and won't improve the quality of the output at all. |
06:38:24 | FromDiscord | <alehander42> that can be directly loaded into the module graph |
06:38:31 | FromDiscord | <alehander42> would be enough |
06:38:40 | FromDiscord | <alehander42> the point is just to not recompile all the epds |
06:38:42 | FromDiscord | <alehander42> deps |
06:38:43 | FromDiscord | <alehander42> all the time |
06:38:59 | leorize[m]1 | that's what disruptek ic does I think |
06:39:04 | FromDiscord | <alehander42> yeah but |
06:39:07 | leorize[m]1 | or 4raq's ic |
06:39:10 | FromDiscord | <alehander42> if it worked on higher level |
06:39:29 | disruptek | how much higher? |
06:39:31 | FromDiscord | <alehander42> nim build depA depA.nimbuild |
06:39:41 | disruptek | wut |
06:39:49 | FromDiscord | <alehander42> then nim c other.nim # just loads in memory depA.nimbuild if cached |
06:39:53 | FromDiscord | <alehander42> you can use |
06:40:27 | disruptek | eh.. it can't really work because there is too much that goes into each compilation. |
06:40:43 | disruptek | they can't disambiguate every symbol, every piece of code. |
06:41:11 | disruptek | what we need is to embed libgit2 into the motherfucker. |
06:41:20 | FromDiscord | <alehander42> but man |
06:41:26 | FromDiscord | <alehander42> then you can use existing infra |
06:41:28 | disruptek | maybe nimph can become a caching compiler. |
06:41:32 | FromDiscord | <alehander42> to parallelize or to cache |
06:41:45 | FromDiscord | <alehander42> similarly to the way people parallelize or cache C or Rust objects |
06:41:55 | disruptek | well, we can parallelize. i'm fine with that, to a point. |
06:41:57 | FromDiscord | <alehander42> and focus only on the nim specific stuff |
06:42:07 | disruptek | that's what we're talking about. |
06:42:16 | FromDiscord | <alehander42> can we ? |
06:42:17 | disruptek | i don't worry about c compilation at all. |
06:42:26 | FromDiscord | <alehander42> i thought parallelization is not |
06:42:29 | disruptek | that's your problem, as per usual. |
06:42:29 | FromDiscord | <alehander42> a part of plan |
06:42:45 | disruptek | we can parallelize a lot of the compiler. |
06:42:55 | FromDiscord | <Yardanico> cooldome said he will experiment with compiler parallelization |
06:43:00 | FromDiscord | <alehander42> cool! |
06:43:04 | FromDiscord | <alehander42> i did with parser |
06:43:11 | disruptek | i think he's out to lunch on that. |
06:43:14 | FromDiscord | <alehander42> and planned to do it with checking and stuff |
06:43:20 | disruptek | not sure what he was seeing. |
06:43:23 | FromDiscord | <alehander42> but kinda left that project |
06:43:30 | FromDiscord | <alehander42> i should ping him |
06:43:46 | FromDiscord | <alehander42> but what is really |
06:43:49 | FromDiscord | <alehander42> stopping us |
06:43:52 | FromDiscord | <alehander42> a dependency |
06:44:05 | disruptek | i'm not really prepared to entertain ic and threading at the same time. |
06:44:11 | FromDiscord | <alehander42> generates a graph wih AST |
06:44:24 | FromDiscord | <alehander42> but that's why i think the current approach is harder |
06:44:30 | FromDiscord | <alehander42> because if we can just generate a file |
06:44:39 | FromDiscord | <alehander42> with serialized stuff |
06:44:52 | FromDiscord | <alehander42> you dont need any smart multithreading and stuff |
06:44:53 | disruptek | what do you think a file /is/? |
06:45:00 | disruptek | it's a series of bytes. |
06:45:06 | disruptek | it's serialized. |
06:45:07 | FromDiscord | <alehander42> you just make a nim build dep1 nim build dep2 etc |
06:45:13 | FromDiscord | <alehander42> and invoke all those process in parallel |
06:45:18 | disruptek | it's not that simple. |
06:45:26 | disruptek | there's too many links between them. |
06:45:26 | FromDiscord | <alehander42> that's what i am trying to get |
06:45:36 | disruptek | names, code, generics, etc. |
06:45:37 | FromDiscord | <alehander42> can we change the languagee |
06:45:45 | FromDiscord | <alehander42> in a way that this is easy |
06:45:48 | FromDiscord | <alehander42> e.g. 2.0 |
06:45:54 | disruptek | the language isn't the problem, imo. |
06:46:02 | FromDiscord | <alehander42> well man |
06:46:04 | FromDiscord | <alehander42> it can't be anythign else |
06:46:08 | disruptek | why not? |
06:46:13 | FromDiscord | <alehander42> as some other languages can do that easily |
06:46:15 | disruptek | we don't have to generate code the way we do. |
06:46:22 | FromDiscord | <alehander42> building dependencies separately |
06:46:31 | disruptek | dude. |
06:46:33 | disruptek | ~features |
06:46:34 | disbot | features: 11begin in the unfortunate state of /unimplemented/ |
06:46:42 | FromDiscord | <alehander42> yes yes |
06:46:46 | FromDiscord | <alehander42> e.g. |
06:46:48 | FromDiscord | <alehander42> methods for A |
06:46:53 | FromDiscord | <alehander42> can be defined in B |
06:46:56 | FromDiscord | <alehander42> instantiations in C |
06:47:03 | FromDiscord | <alehander42> and macros can be expanded everywhere |
06:47:07 | FromDiscord | <alehander42> is it this kind of links? |
06:47:21 | disruptek | well, i wouldn't do it that way, but that's one interpretation. |
06:47:39 | FromDiscord | <alehander42> no, i mean, is this the reason |
06:47:49 | FromDiscord | <alehander42> that it's hard to do so |
06:47:59 | disruptek | macros have no bearing on the backend. |
06:48:08 | FromDiscord | <alehander42> but this is not only backend stuff |
06:48:09 | disruptek | the only reason they enter the discussion is because they are expensive. |
06:48:15 | FromDiscord | <alehander42> hm, maybe it is |
06:48:21 | disruptek | you want to cache them because they are hard to figure out. |
06:48:23 | FromDiscord | <alehander42> sempass is frontend tho? |
06:48:26 | disruptek | sure. |
06:48:33 | FromDiscord | <alehander42> but sempass needs it |
06:48:38 | FromDiscord | <alehander42> sempass needs to know a's info |
06:48:44 | disruptek | yes. |
06:48:46 | FromDiscord | <alehander42> to build depB |
06:48:56 | FromDiscord | <alehander42> so this is ok |
06:49:00 | disruptek | i didn't say you could just invent macro output. |
06:49:09 | FromDiscord | <alehander42> we can encode type info |
06:49:20 | FromDiscord | <alehander42> iirc the compil time state |
06:49:23 | FromDiscord | <alehander42> was the big problem |
06:49:37 | FromDiscord | <alehander42> but this can be limited somehow |
06:49:46 | disruptek | there are numerous problems. |
06:49:49 | FromDiscord | <alehander42> e.g. compile time vars can be scoped to some kind of lvl |
06:50:00 | disruptek | that stuff, i don't care about. |
06:50:15 | disruptek | i care about storing file/line/column locations. |
06:50:21 | disruptek | this is expensive. |
06:50:29 | FromDiscord | <alehander42> but this is because you need to cache on this level |
06:50:36 | disruptek | i care about storing trees of code that might be very deep. |
06:50:37 | FromDiscord | <alehander42> if we forget about caching |
06:50:49 | disruptek | what? |
06:51:06 | FromDiscord | <alehander42> i mean, ic-related caching |
06:51:15 | disruptek | you want to forget about it? |
06:51:23 | FromDiscord | <alehander42> there is |
06:51:36 | disruptek | is there? |
06:51:37 | FromDiscord | <alehander42> compiler level caching which just optimizes the data |
06:51:43 | FromDiscord | <alehander42> e.g. macro inst |
06:51:53 | disruptek | yes, that's someone else's problem. |
06:51:56 | FromDiscord | <alehander42> i am not talking about that |
06:51:58 | FromDiscord | <alehander42> this is ok |
06:52:17 | disruptek | i'll probably ask araq to do that because i don't think i can handle it. |
06:52:28 | disruptek | he has some ideas on how he wants to do it. |
06:52:44 | disruptek | macro caching, that is. |
06:53:11 | FromDiscord | <alehander42> maybe you'r right |
06:53:21 | disruptek | no; i don't know anything about the frontend. |
06:53:28 | FromDiscord | <alehander42> i just |
06:53:28 | disruptek | like, i don't fuck around there much. |
06:53:48 | FromDiscord | <alehander42> want nim build depa -> depa.nimbuild |
06:53:50 | FromDiscord | <lqdev> @notchris could you provide me with a stack trace? |
06:54:04 | FromDiscord | <alehander42> and import depa # to load quickly parts of depa.nimbuild |
06:54:04 | disruptek | i don't think it's realistic yet. |
06:54:16 | FromDiscord | <alehander42> and this resolves many questins |
06:54:17 | FromDiscord | <alehander42> imho |
06:54:21 | disruptek | we will cache everything. we will also load everything. |
06:54:33 | FromDiscord | <alehander42> but the cache would be |
06:54:43 | FromDiscord | <alehander42> the timestamp of the depa or some kind of fingerprint |
06:54:48 | FromDiscord | <alehander42> or hash of contents |
06:54:53 | disruptek | yeah, whatever. |
06:54:58 | disruptek | not important. |
06:54:58 | FromDiscord | <alehander42> not some kind of complicated tree stuff |
06:55:00 | FromDiscord | <notchris> @lqdev it was something weird with my glfw brew version |
06:55:11 | FromDiscord | <lqdev> aglet doesn't use glfw from brew |
06:55:18 | FromDiscord | <lqdev> rather nimgl/glfw |
06:55:19 | disruptek | the cache will be a container that has timestamp, hash, etc. |
06:55:22 | FromDiscord | <lqdev> which compiles statically |
06:55:22 | FromDiscord | <alehander42> and honestly this solves iC |
06:55:24 | FromDiscord | <notchris> Yeah but I needed the binaries |
06:55:25 | FromDiscord | <alehander42> imho |
06:55:30 | disruptek | and also has a tree inside it. |
06:55:31 | FromDiscord | <notchris> Or it wouldn’t compile |
06:55:32 | FromDiscord | <lqdev> that's odd |
06:55:35 | FromDiscord | <alehander42> of course, super hard |
06:55:41 | FromDiscord | <alehander42> maybe harder than the current plan |
06:55:45 | disruptek | why? |
06:55:52 | FromDiscord | <alehander42> what i like about it is only 2 things: parallelization |
06:56:01 | FromDiscord | <alehander42> and its easier to combine with e.g. sccache etc |
06:56:03 | disruptek | well, tell me what you don't like. |
06:56:13 | FromDiscord | <alehander42> about my idea? D: |
06:56:27 | disruptek | about caching a container that holds the tree. |
06:56:27 | FromDiscord | <alehander42> that it's probably idealistic and i am missing a lot obviously bad about it |
06:56:55 | disruptek | well, nimbuild as an idea doesn't work because you cannot encapsulate deps thus. |
06:57:06 | disruptek | code doesn't stay where it was written. |
06:57:08 | FromDiscord | <alehander42> replace dep with file |
06:57:12 | disruptek | it scribbles all over your memory. |
06:57:13 | FromDiscord | <alehander42> same idea |
06:57:25 | FromDiscord | <alehander42> just any "import" |
06:57:28 | disruptek | no. |
06:57:36 | disruptek | that's just not how we compile. |
06:57:49 | disruptek | it's more of a contrail like from a jet. |
06:58:02 | disruptek | behind the plane, water vapor. |
06:58:19 | disruptek | your job is to gather it up. |
06:58:19 | FromDiscord | <notchris> @lqdev cool lib btw! |
06:58:34 | FromDiscord | <lqdev> nice to hear that |
06:58:58 | FromDiscord | <lqdev> let me know your thoughts/suggestions/feature requests if you use it for anything bigger |
06:59:04 | * | PMunch joined #nim |
06:59:24 | FromDiscord | <alehander42> disruptek yeah |
06:59:26 | FromDiscord | <alehander42> i figure |
06:59:33 | FromDiscord | <alehander42> but i wonder if the language itself |
06:59:42 | FromDiscord | <alehander42> can be compiled easily |
06:59:45 | FromDiscord | <alehander42> with a different arch |
06:59:53 | FromDiscord | <alehander42> maybe a compilerdev repo issue question |
07:00:00 | FromDiscord | <alehander42> ok time to look at not nil |
07:00:26 | leorize[m]1 | alehander42: \o/ |
07:00:35 | FromDiscord | <alehander42> basically |
07:00:41 | FromDiscord | <alehander42> the set repr should be optimized |
07:00:52 | FromDiscord | <alehander42> there is this huge |
07:00:54 | disruptek | the answer is yes. we should change how we compile the language. 👍 |
07:00:56 | FromDiscord | <alehander42> vm.nim switch |
07:01:07 | FromDiscord | <notchris> @lqdev I will, I still need to understand how the mesh works a bit better etc |
07:01:13 | FromDiscord | <alehander42> where it's very slow currently |
07:01:24 | FromDiscord | <alehander42> if the alias set thing is enabled .. |
07:01:55 | FromDiscord | <lqdev> @notchris a Mesh is a combination of a vertex buffer, index buffer, and vertex array. all in one object |
07:02:15 | FromDiscord | <lqdev> having an index buffer is optional |
07:03:23 | FromDiscord | <lqdev> honestly Meshes are kinda inflexible so i'd like to change them to something lower-level at some point |
07:04:16 | FromDiscord | <notchris> Yeah I’m still newer with shaders / gl, It was cool having access to easy shape objects, but rendering them, or passing them to the mesh maybe? was difficult for me |
07:06:51 | FromDiscord | <lqdev> wdym shape objects? |
07:08:44 | FromDiscord | <lqdev> if you mean that you wanna have an easy way of rendering simple shapes like rects, circles, etc. you may wanna check out rapid's graphics module |
07:08:47 | FromDiscord | <lqdev> !repo liquid600pgm/rapid |
07:08:48 | disbot | https://github.com/liquid600pgm/rapid -- 9rapid: 11A game engine written in Nim, optimized for making cool games fast. 15 86⭐ 2🍴 |
07:17:33 | FromDiscord | <ElegantBeef> Lq if i dont make cool games is it slower? |
07:18:32 | FromDiscord | <lqdev> lol that's not what i meant 😅 |
07:19:05 | FromDiscord | <lqdev> i meant, quickly |
07:19:24 | FromDiscord | <lqdev> but fast as an adverb is still fast |
07:25:10 | * | zedeus quit (Ping timeout: 272 seconds) |
07:26:55 | * | zedeus joined #nim |
07:34:48 | * | zedeus quit (Ping timeout: 260 seconds) |
07:35:30 | FromDiscord | <Idefau> i mean, if you make cool games fast, logically you would make uncool games faster |
07:36:06 | * | zedeus joined #nim |
07:41:48 | * | zedeus quit (Ping timeout: 260 seconds) |
07:42:02 | mipri | no, due to the thermodynamic properties of silicon, the uncool games should be slower |
07:42:08 | * | zedeus joined #nim |
07:43:04 | FromDiscord | <Idefau> lmfao |
07:45:21 | FromDiscord | <Idefau> silicon? sorry I only use analog computers |
07:47:16 | FromDiscord | <Rika> vacuum tube |
08:13:21 | * | grorkster quit (Quit: WeeChat 2.9) |
08:22:37 | narimiran | https://news.ycombinator.com/item?id=24834636 |
08:35:57 | PMunch | Ooh, I'm always baffled when a project I haven't heard of is written in Nim |
08:39:07 | FromDiscord | <flywind> @narimiran Any advice? https://github.com/nim-lang/website/pull/239 |
08:39:08 | disbot | ➥ add guest article: One web framework to rule over all styles |
08:39:35 | narimiran | haven't had the time to read it yet, sorry |
08:40:19 | FromGitter | <jrfondren> is there an easier way than this to confirm that an operation (in this case the .string on assignment to s2) doesn't copy something? https://play.nim-lang.org/#ix=2Bt4 - without 'just knowing' that copying doesn't happen. |
08:42:31 | * | hnOsmium0001 quit (Quit: Connection closed for inactivity) |
08:44:57 | FromDiscord | <ITR> Starting to learn nim and I'm having some problems with if statements: https://play.nim-lang.org/#ix=2Bt6↵↵I'm getting an "invalid indentation" error after the if statement on line 20. If I put something inside the for loop but beneath the if statement I get the same error. |
08:45:56 | FromGitter | <jrfondren> ITR: that's a syntax error from the ++ |
08:46:07 | FromDiscord | <ITR> ah, ty |
08:46:10 | FromDiscord | <Rika> ++ in nim is `inc` |
08:46:13 | FromDiscord | <Rika> or incr, i dont remember |
08:46:18 | FromDiscord | <ache of head> inc |
08:46:18 | FromGitter | <jrfondren> inc |
08:46:19 | FromDiscord | <ElegantBeef> inc |
08:46:25 | FromDiscord | <Rika> yall |
08:46:36 | FromDiscord | <Rika> reported for spam /s |
08:47:02 | FromDiscord | <ITR> when writing the ++ I was thinking it might not be that in nim, but I got distracted by the error message so forgot about it, lol |
08:50:50 | FromDiscord | <kraptor> I'm updating a build system to not to depend on anything that's not nimscript and I stumpled upong an issue... |
08:51:03 | FromDiscord | <kraptor> is it possible to open/write files using nimscript? when I try to open() I get "nim\current\lib\system\io.nim(690, 15) Error: cannot 'importc' variable at compile time; c_setvbuf" |
08:51:05 | FromDiscord | <Rika> is it about --define:danger |
08:51:23 | FromDiscord | <Rika> no |
08:51:24 | FromDiscord | <kraptor> (edit) "upong" => "upon" |
08:51:25 | FromDiscord | <Rika> ah |
08:51:26 | FromDiscord | <Rika> wait |
08:52:08 | FromDiscord | <Rika> read afaik is possible, i dont know about write |
08:52:29 | FromDiscord | <hobbledehoy> you can write with `writeFile` |
08:52:44 | FromDiscord | <ElegantBeef> Anytthing that isnt possible with nimscript you can use nimscripter and have a nim binary shipped |
08:52:53 | FromDiscord | <Rika> > you can write with `writeFile`↵not in nimscript... |
08:53:07 | FromDiscord | <hobbledehoy> aren't .nimble files nimscript? |
08:53:23 | FromDiscord | <Rika> hmm |
08:53:34 | FromDiscord | <Rika> then it is odd why kraptor is having this issue |
08:53:35 | FromDiscord | <kraptor> they are, afaik |
08:53:53 | FromDiscord | <kraptor> this is happening on a .nimble file actually |
08:53:58 | * | krux02 joined #nim |
08:54:09 | FromDiscord | <ElegantBeef> Ah for that |
08:54:23 | * | Tanger quit (Quit: Leaving) |
08:54:42 | FromDiscord | <kraptor> trying open() or newFileStream() I get that issue... is there any way to circumvent it? |
08:55:43 | FromDiscord | <kraptor> (I'm using 1.4.0 on windows, btw) |
08:56:02 | FromDiscord | <ElegantBeef> I'm fairly certain you cant use streams with nimscript |
08:56:27 | FromDiscord | <ElegantBeef> There is no way to write anything but a string really |
08:57:28 | FromDiscord | <hobbledehoy> `readFile` works in a nimble task↵But it reads the whole file at once which might be an issue for big files |
08:58:43 | FromDiscord | <kraptor> yeah, but if I can read but not write... basically I need to adjust a few things ona previous step, that autogenerates a nim file using c2nim (I tried nimterop, but fails to install on windows :() |
08:59:59 | FromDiscord | <hobbledehoy> well there is `writeFile` like I said before |
09:00:20 | FromDiscord | <kraptor> ah, I misunderstood that wasn't available too... sorry |
09:00:27 | FromDiscord | <kraptor> let me try |
09:02:22 | FromDiscord | <kraptor> aaaaaannnd it works! thanks! now I don't depend on unix sed neither on an horrendous bat batch file on windows... 3 lines and working... thanks! |
09:02:42 | FromDiscord | <hobbledehoy> nice 👍 |
09:02:53 | FromDiscord | <kraptor> thanks, that made my day |
09:12:16 | Araq | strscans is such a superb tool |
09:12:49 | Araq | I wonder how many are aware of it |
09:12:56 | FromDiscord | <lqdev> i am |
09:13:04 | * | tree joined #nim |
09:13:07 | FromDiscord | <ElegantBeef> Not many i'd assume |
09:13:14 | FromDiscord | <hobbledehoy> Has been really good the few times I've used it |
09:13:15 | FromDiscord | <ElegantBeef> Think the first reaction is always regex |
09:13:17 | FromDiscord | <ITR> is the only way to iterate over a distinct range type by borrowing a lot of procs? |
09:13:49 | tree | hi, if I will type some text in forum, how can I do a line break? |
09:14:54 | FromDiscord | <Idefau> i am aware of strscans, i wanted to use it, but i found an easier solution for what i wanted to do |
09:16:04 | * | stefantalpalaru quit (K-Lined) |
09:16:04 | * | JStoker quit (K-Lined) |
09:16:13 | * | stefantalpalaru joined #nim |
09:16:53 | FromDiscord | <Idefau> I assume you can do line breaks in text by doing double-enter |
09:17:05 | FromDiscord | <ElegantBeef> or shift + enter |
09:18:30 | tree | no, I get an empty line |
09:18:41 | * | JStoker joined #nim |
09:18:47 | Araq | use ``` and format it your way |
09:19:22 | FromDiscord | <Idefau> bonus monospace font |
09:22:29 | FromDiscord | <lqdev> tree: double line break works? |
09:23:07 | tree | I get an empty line between |
09:23:11 | FromDiscord | <Idefau> yes |
09:23:51 | tree | I want this: Hello<br/>world! |
09:24:10 | tree | https://gist.github.com/shaunlebron/746476e6e7a4d698b373 |
09:24:42 | FromDiscord | <Vindaar> I love strscans. The only thing I sometimes would like is a `scanf` overload which just returns the value and possibly raises for no match. That's just when I use it for super short hacky scripts and I end up using `scanf`, because it's so convenient |
09:26:54 | tree | ok, I take double line break. Monospace font is more for src code.... |
09:27:46 | FromDiscord | <Idefau> just write everything in one straight line B) |
09:29:13 | * | letto quit (Quit: Konversation terminated!) |
09:29:46 | * | letto joined #nim |
09:30:50 | FromDiscord | <ITR> how do I end an iterator from within the iterator? |
09:34:43 | FromDiscord | <ITR> Something similar to yield break in c#, or just "return" in a generator in python |
09:36:30 | * | lbart quit (Ping timeout: 256 seconds) |
09:38:03 | * | lbart joined #nim |
09:40:56 | * | Vladar joined #nim |
09:42:54 | Araq | hmm our bootstrapping process is broken |
09:43:33 | Araq | Nim uses its own standard library and not the one the compiler was written against |
09:43:46 | Araq | leading to lovely things such as |
09:43:53 | Araq | nim-1.2.8/compiler/vmops.nim(109, 5) Error: not all cases are covered; missing: {backend} |
09:48:12 | supakeen | ITR: based on what do you want to end? You can generally 'break'. |
09:49:01 | supakeen | or have your condition in a while or such |
09:51:23 | tree | why I get different program size: https://play.nim-lang.org/#ix=2Bto |
09:51:24 | FromGitter | <jrfondren> ITR: https://play.nim-lang.org/#ix=2Btp you can't return in the second case, but you can break out of an outer block |
09:52:11 | supakeen | or one might be looking for closure iterators which do allow return |
09:52:32 | FromDiscord | <Joe-23> Hi, just a bit confused how do I declare an unsigned 64 bit integer |
09:52:47 | FromDiscord | <Joe-23> is it `var a = uint64 {10}`? |
09:53:09 | supakeen | Joe-23: `var a: uint64 = 10` |
09:53:30 | supakeen | or `var a = 10'u64`, etc. |
09:53:48 | tree | <Joe-23> https://nim-lang.org/docs/system.html#uint64 |
09:53:52 | FromGitter | <jrfondren> {} creates sets in Nim, it's not the C++40 final best way to construct things |
09:53:59 | FromDiscord | <lqdev> or `var a = uint64 10` |
09:54:45 | FromGitter | <jrfondren> oh I guesss it's confusing that the docs have {...} ? |
09:56:53 | FromGitter | <jrfondren> if you click on the source link you can see that it's just hiding the definition of the type, in this case {.magic: "UInt64".} |
09:56:58 | * | natrys joined #nim |
09:58:04 | supakeen | (or the dots in the docs) |
09:58:58 | tree | again: why I get different program size: https://play.nim-lang.org/#ix=2Bto |
10:00:06 | tree | compiling with build.sh and nimscript gives me a differnce of about 20k |
10:04:41 | FromDiscord | <Joe-23> I see, thanks mate |
10:06:48 | FromDiscord | <Joe-23> Also how do I compile `nim` code with safety's disabled, production ready? |
10:06:56 | mipri | tree: I'd investigate ~/.cache/nim/hello_d . there's a .json in there. |
10:08:21 | mipri | Joe-23: -d:release is good. on modern CPUs stuff like bounds checks isn't that bad because they're so friendly to the branch predictor (they never fire in good code), but -d:danger removes those as well. |
10:09:00 | FromDiscord | <Joe-23> Ah I see |
10:09:01 | FromDiscord | <Joe-23> Thanks |
10:09:37 | * | lritter joined #nim |
10:10:46 | mipri | tree: how do you build hello with that hello.nims ? |
10:11:09 | tree | mipri: nim build hello |
10:12:16 | mipri | ty. I get half the size from hello.nims |
10:12:35 | tree | 25k? |
10:16:21 | mipri | 52k vs. 106k on my machine |
10:16:56 | tree | I have win 10 and wsl2 |
10:17:18 | tree | but I'm looking now for the compiler version |
10:17:33 | FromDiscord | <lqdev> tree: btw `out` is a keyword so you can't just use it |
10:17:51 | tree | <lqdev> ok |
10:18:13 | FromDiscord | <Joe-23> `c /= divide` Both of these variables are unsigned 64 bit integer, how would I force it to divide and stay unsigned 64 integer? |
10:18:17 | tree | mipri: gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04) |
10:18:39 | tree | Nim Compiler Version 1.4.0 [Linux: amd64] |
10:18:55 | FromDiscord | <Idefau> c = c div divide |
10:19:20 | tree | but I have compiled: gcc version 10.2.0 (GCC) |
10:19:44 | FromDiscord | <Joe-23> @Idefau Thanks, would this stay unsigned 64 bit integer |
10:19:49 | FromDiscord | <Joe-23> and not return floating values? |
10:19:55 | FromDiscord | <Idefau> yes, div is for integer division |
10:19:56 | * | abm joined #nim |
10:20:02 | FromDiscord | <Joe-23> Ah right,t hanks |
10:20:03 | FromDiscord | <Joe-23> thanks |
10:20:04 | FromDiscord | <Vindaar> https://nim-lang.github.io/Nim/system.html#div%2Cuint64%2Cuint64 |
10:20:49 | tree | if I rename the nim.cfg to nim.cfg1 which cfg is used? It compiles.... |
10:20:57 | FromDiscord | <ITR> @jfondren @supakeen: I wanted to do what jrfondren did in countup2, but I'd prefer not having to have a block surrounding the entire thing. ↵↵More specifically, the reason I want it is because I can test early if there will be any elements to yield, so I'd rather just break it inside an if statement, rather than having a block surrounding everything or having everything inside "else", to make the code more expressive/readable |
10:21:33 | FromDiscord | <ITR> but I guess a block isn't that bad, so I'll try that for now. Thanks for your help ^^ |
10:22:21 | * | dsrw quit (Quit: ZNC 1.7.5+deb4 - https://znc.in) |
10:22:30 | * | dsrw_ joined #nim |
10:22:48 | FromDiscord | <Idefau> sent a code paste, see https://play.nim-lang.org/#ix=2BtC |
10:23:17 | FromDiscord | <Idefau> if you would use it multiple times and would like to avoid repetition |
10:24:22 | FromDiscord | <Idefau> but `/=` would probably not be the best name since it can be confused with float division i think |
10:25:19 | FromDiscord | <Joe-23> sent a code paste, see https://play.nim-lang.org/#ix=2BtE |
10:26:10 | FromDiscord | <Vindaar> `echo a", " b", " c` ↦ `echo a, " ", b, " ", c` ? |
10:26:29 | FromDiscord | <Joe-23> I want it to print out the commas |
10:26:31 | FromDiscord | <Vindaar> not that the `" "` is required if you use multiple args to echo |
10:26:41 | FromDiscord | <MiniApple> ~~nim is complicated~~ |
10:26:41 | FromDiscord | <Vindaar> oh then put the comma into the string |
10:27:23 | FromDiscord | <Vindaar> `echo` is just a function taking `varars[string]` and automatically applying `$` to each arg |
10:27:29 | FromDiscord | <Idefau> `echo a, ',', b, ',', c` |
10:27:39 | FromDiscord | <Vindaar> ^ |
10:28:15 | FromDiscord | <Idefau> if you want you can also output it like a tuple, `echo (a, b, c)` |
10:28:23 | FromGitter | <jrfondren> Joe-23: you get that error because a", " looks like a(", ") |
10:28:30 | FromDiscord | <Idefau> ^ |
10:28:42 | FromDiscord | <Joe-23> @Idefau Thanks mate |
10:28:48 | FromDiscord | <Idefau> np |
10:29:22 | FromDiscord | <Idefau> i find it funny how `echo(a, b, c)` is echoing a, b and c but `echo (a, b, c)` is echoing a tuple with the values a, b and c |
10:30:38 | mipri | it's a small price to pay to prevent people from putting spaces before their function parameters |
10:30:55 | FromDiscord | <Idefau> yes |
10:31:17 | FromDiscord | <Idefau> !eval echo(a,b,c);echo (a,b,c) |
10:31:18 | NimBot | Compile failed: /usercode/in.nim(1, 6) Error: undeclared identifier: 'a' |
10:31:25 | FromDiscord | <Idefau> right |
10:31:31 | FromDiscord | <MiniApple> how compile nim to c++ or c |
10:31:49 | FromDiscord | <Vindaar> @MiniApple ? |
10:31:55 | FromDiscord | <MiniApple> ? |
10:31:58 | FromDiscord | <Idefau> nim c foo.nim |
10:32:01 | FromDiscord | <Idefau> nim cpp foo.nim |
10:32:14 | FromDiscord | <Vindaar> yeah, this but that seems like a weird question, hence my confusion |
10:32:19 | FromDiscord | <MiniApple> ok |
10:32:39 | tree | is it possible to put in the nim.cfg another name for the gcc like gcc-10,2 (in the line cc = gcc it is not)? |
10:32:44 | FromDiscord | <MiniApple> lol i am weird too |
10:33:33 | mipri | there's a --gcc.exe:some-gcc |
10:33:56 | tree | ok, I'll try this |
10:34:11 | mipri | you probably also want --gcc.linkerexe:some-gcc |
10:35:48 | FromDiscord | <Idefau> !eval echo(1,2,3);echo (1,2,3) |
10:35:52 | NimBot | 123↵(1, 2, 3) |
10:36:24 | tree | I have compiled gcc-10.2 and renamed all to xxx-10.2 |
10:37:49 | * | NimBot joined #nim |
10:37:53 | supakeen | hi nimbot |
10:37:57 | FromDiscord | <Rika> what happened to nimbot |
10:38:03 | FromDiscord | <Idefau> i killed nimbot |
10:38:14 | supakeen | !eval echo(1,2,3);echo (1,2,3) |
10:38:17 | NimBot | 123↵(1, 2, 3) |
10:38:18 | supakeen | doubt that kills it |
10:38:25 | supakeen | but we'll see in 2 minutes? |
10:38:27 | FromDiscord | <Rika> !eval while true: discard |
10:38:28 | FromDiscord | <Rika> xd |
10:38:38 | FromDiscord | <Idefau> uh oh |
10:38:41 | supakeen | uh oh |
10:38:48 | FromDiscord | <Rika> big thonk |
10:38:48 | NimBot | <no output> |
10:38:55 | FromDiscord | <Rika> lmao |
10:39:15 | FromDiscord | <Idefau> !eval "<no output>".echo |
10:39:17 | NimBot | <no output> |
10:39:23 | FromDiscord | <Idefau> funny |
10:39:47 | FromDiscord | <Joe-23> Is it also possible to specify to use `03`? |
10:39:51 | FromDiscord | <Joe-23> if it uses such things? |
10:40:10 | FromDiscord | <Rika> it uses O3 when -d:release |
10:40:19 | FromDiscord | <Idefau> go -d:danger |
10:42:07 | tree | something wrong --gcc.exe:"usr/local/gcc-10.2.0/bin", /bin/sh: 1: "usr/local/gcc-10.2.0/bin": not found |
10:42:19 | mipri | "/usr |
10:43:30 | tree | /bin/sh: 1: /usr/local/gcc-10.2.0/bin: Permission denied |
10:43:34 | tree | chmod? |
10:43:42 | mipri | that's a directory |
10:44:03 | tree | aaaaahhhh |
10:44:21 | FromDiscord | <Joe-23> @Rika I see, is -d:danger also O3? |
10:44:25 | FromDiscord | <Rika> yes |
10:46:26 | tree | task build, "builds an example": echo "task build" --gcc.exe:"/usr/local/gcc-10.2.0/bin/gcc-10.2" --gcc.linkerexe:"/usr/local/gcc-10.2.0/bin/gcc-10.2" |
10:46:41 | tree | /bin/sh: 1: "/usr/local/gcc-10.2.0/bin/gcc-10.2": not found |
10:46:57 | tree | with build.sh compiles |
10:47:18 | tree | 26.776m kb |
10:47:23 | tree | 26.776 kb |
10:47:47 | tree | 26.776 bytes , now... need a break |
10:48:00 | FromDiscord | <Idefau> wow |
10:49:05 | ForumUpdaterBot | New thread by Jasonfi: Naming convention when calling procs from other modules?, see https://forum.nim-lang.org/t/6967 |
10:49:33 | tree | but works with switch |
10:49:49 | tree | 47.256 Bytes |
10:50:47 | tree | so, the difference will be the same.... 26.776 bytes versus 47.256 Bytes build.sh versus nimscript |
10:51:02 | tree | with gcc-10.2 |
10:52:08 | mipri | I think the settings have to be different somewhere, but I don't know where. it looks like gcc is being called identically |
10:53:41 | tree | perhaps something from /.choosenim/toolchains/nim-1.4.0/config/config.nims or so ... |
10:54:08 | mipri | the files in the cache are already very different, so it's definitely something in Nim and not gcc |
10:55:50 | tree | k, I make a pause. Learned so much, thanks. If you wright something here I read it in the nim logs, bye |
10:56:13 | * | tree quit (Remote host closed the connection) |
11:33:44 | * | rockcavera joined #nim |
11:42:56 | * | TomDotTom joined #nim |
11:44:03 | * | TomDotTom quit (Client Quit) |
11:44:16 | * | TomDotTom joined #nim |
11:44:34 | FromDiscord | <flywind> https://news.ycombinator.com/item?id=24846828 |
12:00:11 | * | arecacea1 quit (Remote host closed the connection) |
12:00:38 | * | apahl quit (Ping timeout: 246 seconds) |
12:00:39 | * | arecacea1 joined #nim |
12:01:52 | * | apahl joined #nim |
12:06:01 | * | supakeen quit (Quit: WeeChat 2.9) |
12:06:38 | * | supakeen joined #nim |
12:17:31 | * | stefantalpalaru quit (Changing host) |
12:17:31 | * | stefantalpalaru joined #nim |
12:57:18 | FromDiscord | <enthus1ast> `Powerful to me would be “able to create systems & applications in half the time compared to...”` |
12:57:25 | FromDiscord | <enthus1ast> php ? |
12:57:31 | FromDiscord | <enthus1ast> aspx 🙂 |
12:58:28 | FromDiscord | <Rika> LMAO |
12:59:06 | FromDiscord | <enthus1ast> i guess im done with a system when npm install finaly finishes 😄 |
13:00:13 | FromDiscord | <enthus1ast> Does one also have issues (and can confirm) to use wNim? i't seems that i'm getting c generation errors |
13:01:11 | FromDiscord | <enthus1ast> `"error: lvalue required as unary '&' operand"` |
13:01:26 | FromDiscord | <Vindaar> @flywind damn, even on the front page now! the tide on Nim has turned on HN in seems |
13:02:27 | FromDiscord | <flywind> Thanks! I hope so 🙂 |
13:04:49 | FromDiscord | <flywind> I guess the article regarding Nim is easy on the front page. We should encourage people to write articles because of rare articles(or marketing on the Hacker news) regarding Nim compared to other new languages. |
13:05:32 | FromDiscord | <Vindaar> Yes, that's a good point. And I assume that it's an easy way for good publicity. I mean we have tons of fun stuff to share after all |
13:06:36 | FromDiscord | <flywind> The previous article regarding `Prologue` is also on the front page of Hacker news. So I can make this guess. |
13:06:46 | FromDiscord | <Vindaar> 😁 |
13:07:10 | FromDiscord | <flywind> And I think Nim blog is also a good start point. |
13:08:01 | FromDiscord | <flywind> https://forum.nim-lang.org/t/6736#43538 |
13:08:42 | FromDiscord | <flywind> The more articles, the more attentions. |
13:09:45 | Zevv | dude, *again* Nim on HN front page |
13:09:46 | Zevv | what's happening |
13:10:07 | Zevv | I need to find me another language soon |
13:10:08 | FromDiscord | <Rika> great stuff |
13:10:19 | FromDiscord | <Rika> maybe V |
13:10:19 | federico3 | :D |
13:10:58 | * | solitudesf joined #nim |
13:10:58 | FromDiscord | <Vindaar> Zevv, piet lang is for you. I heard you like graphs. You should feel right at home there! |
13:10:58 | Zevv | I'll start Z |
13:11:09 | Zevv | And Piet is dutch, so that's good |
13:11:25 | FromDiscord | <mratsim> I don't think it's that easy to go on the front page, somehow articles by @dom96 or me are often buried |
13:11:28 | Zevv | I like my language more pastel, though |
13:11:47 | federico3 | how about Dim, a new language for HN |
13:11:59 | FromDiscord | <Vindaar> maybe you can write a piet DSL for a mapping of pastel colors to the whole color space |
13:15:37 | FromDiscord | <Rika> maybe i should make a piet interpreter in nim, maybe called `pien` |
13:16:37 | FromDiscord | <Rika> 🥺 |
13:18:22 | FromDiscord | <Rika> RIP my pun |
13:18:26 | FromDiscord | <Rika> dont think anyone caught that |
13:18:32 | FromDiscord | <notchris> I did 😮 |
13:18:36 | FromDiscord | <notchris> 🙂 |
13:20:07 | PMunch | Zevv, do you have any examples of npeg parsing into a tree structure? |
13:20:54 | Zevv | sure |
13:21:20 | Zevv | https://github.com/zevv/npeg/blob/master/misc/rod.nim |
13:22:26 | Zevv | My usual approach is making a stack of your AST node objects, and manipulate that stack from your code block matches |
13:22:47 | Zevv | some forth-like helpers like swap/rot are sometimes handy to get stuff in the right place |
13:23:05 | PMunch | Hmm, not quite sure how that works for more than 1 level though |
13:23:15 | Zevv | 1 level of what? |
13:23:21 | PMunch | Of nesting |
13:23:57 | Zevv | check that example. It's a parser for liquid's Rod toy language |
13:24:11 | PMunch | Something like this: ((hello, world), (bob, uncle), (extra, (deep, nesting))) |
13:24:41 | PMunch | Yeah you have add and add to parent |
13:24:50 | PMunch | That gives you 1 level of nesting right? |
13:27:19 | Zevv | let me whip somehing up |
13:28:55 | Zevv | anyway, it recurses |
13:28:58 | Zevv | so it works just fine |
13:30:03 | PMunch | Hmm |
13:37:50 | FromDiscord | <zetashift> @flywind awesome work! I saw Prologue on HN too! |
13:38:43 | * | luismanfroni quit (Ping timeout: 272 seconds) |
13:40:04 | FromDiscord | <flywind> Thanks! |
13:40:06 | PMunch | Zevv, this seems to work, did you have anything easier in mind? https://play.nim-lang.org/#ix=2BuP |
13:41:45 | Zevv | PMunch: http://ix.io/2BuQ |
13:42:07 | Zevv | well well well |
13:42:47 | Zevv | 'prev' does not nest, you need a stack |
13:43:08 | PMunch | What do you mean? |
13:43:57 | PMunch | Each time I encounter a new group the current parsing state is stored as prev and when I exit a group I add my result to prev before returning to it |
13:45:39 | * | luismanfroni joined #nim |
13:45:56 | PMunch | Ah I see, basically I store my results in a singly linked list, while you're using a stack |
13:46:01 | Zevv | right |
13:46:59 | Zevv | but the idea is the same |
13:47:16 | PMunch | Yeah |
13:47:17 | Zevv | I tried a few times making this "native" to Npeg, but i can't seem to find one mechanism that fits all cases |
13:47:17 | FromDiscord | <Xephobia> hello, I've searching how to debug nim code in vscode but hasn't found anything helpful... Can someone get me a task.json and a launch.json? |
13:47:49 | PMunch | Zevv, I really like how you can actually execute arbitrary code on a condition, pretty cool |
13:49:25 | Zevv | there's a cotcha with backtracing, don't forget |
13:49:40 | PMunch | Oh yeah, I was just about to say :P |
13:49:44 | Zevv | don't |
13:49:48 | Zevv | I hate it |
13:50:05 | PMunch | Haha, with great power and all that |
13:50:10 | Zevv | right |
13:51:14 | Zevv | so, you're good? |
13:51:23 | Zevv | ast-parsing-wise? |
13:51:43 | Zevv | If you have ideas on how to simplify this while keeping the flexibilty, I'd like to hear about it |
13:52:08 | PMunch | Yeah I'm good |
13:52:24 | PMunch | It's actually pretty simple, got it right on pretty much the first try |
13:52:39 | PMunch | Just had to realise I could run arbitrary code :) |
13:53:26 | FromDiscord | <mratsim> you're falling to the dark side |
13:53:47 | PMunch | Why do you have the `list * !1` condition though? Doesn't it fail matching if it can't consume everything? |
13:54:04 | PMunch | @mratsim, the dark side? I've heard they've got cookies |
13:54:04 | Zevv | and don't forget about -d:npegGraph |
13:54:18 | PMunch | Oh yeah, I've already used that :) Such a cool feature |
13:54:24 | PMunch | Very helpful |
13:54:36 | FromDiscord | <mratsim> GDPR ate those |
13:59:27 | Zevv | GPDR is fuzzy and blue |
14:05:09 | FromDiscord | <zetashift> @Xephobia https://github.com/pragmagic/vscode-nim/issues/65 closest thing I can find, I don't usually use the debugger |
14:05:09 | disbot | ➥ debug support |
14:05:59 | FromDiscord | <ITR> How do I initialize a fixed-size array? |
14:06:07 | FromDiscord | <ITR> (edit) "array?" => "array for let/const?" |
14:06:14 | FromDiscord | <flywind> https://github.com/saem/vscode-nim#debugging |
14:07:07 | PMunch | @ITR define initialise |
14:07:59 | FromDiscord | <flywind> @Xephobia This message may be useful too. |
14:09:01 | FromDiscord | <ITR> if I want to write: `let myVar: range[0..3]`↵then I'll get the error `'let' symbol requires an initialization` |
14:09:53 | FromGitter | <jrfondren> read: it requires a value |
14:10:35 | FromGitter | <jrfondren> let mYvar: range[0..3] = 2 |
14:11:36 | PMunch | Or is it this you're trying to do? https://play.nim-lang.org/#ix=2BuP |
14:12:31 | FromGitter | <jrfondren> ITR, since you can't assign to myVar after let'ing it, it doesn't make sense to not have a value at the time of the let |
14:12:49 | FromGitter | <jrfondren> var myVar: range[0..3] won't complain |
14:17:54 | FromDiscord | <ITR> yeah, it requires a value, my question was how to assign one |
14:18:00 | FromDiscord | <ITR> sorry for being unclear |
14:18:27 | FromGitter | <jrfondren> let x = 10 |
14:18:53 | FromDiscord | <ITR> let myVar: range[0..3] = 2 works, but if I do that for a type alias it has the error `type mismatch: got <int literal(0)> but expected 'array[0..5, int]'` |
14:19:20 | FromGitter | <jrfondren> you need to assign an array to an array |
14:19:41 | FromDiscord | <ITR> how do I make a fixed size array object |
14:19:45 | FromGitter | <jrfondren> !eval let z2 = [0, 1, 2]; echo z2.typeof |
14:19:47 | NimBot | array[0..2, int] |
14:21:48 | FromDiscord | <ITR> yeah, but how do I do that without using [0, 1, 2] |
14:22:25 | PMunch | @ITR what do you want the values to be? |
14:22:27 | FromDiscord | <Recruit_main707> You can just say var arr: array[3, int] |
14:22:30 | FromGitter | <jrfondren> you need some kind of value because you can't assign to a let after declaring it |
14:22:53 | FromDiscord | <ITR> just the default values for the array |
14:22:54 | FromDiscord | <Recruit_main707> Ah, if it’s a let, you can’t change it afterwards |
14:23:07 | FromDiscord | <Recruit_main707> Use var for that |
14:23:16 | FromGitter | <jrfondren> lets are single assignment bindings. they don't have defaults, they have one value |
14:23:31 | leorize[m]1 | you can always write `let arr = default(array[3, int])` |
14:23:32 | leorize[m]1 | it wouldn't be useful then though |
14:23:34 | FromGitter | <jrfondren> !eval z = [1, 2, 3]; z[1] = 4; |
14:23:36 | NimBot | Compile failed: /usercode/in.nim(1, 1) Error: undeclared identifier: 'z' |
14:23:52 | FromGitter | <jrfondren> !eval let z = [1, 2, 3]; z[1] = 4; |
14:23:54 | NimBot | Compile failed: /usercode/in.nim(1, 21) Error: 'z[1]' cannot be assigned to |
14:24:03 | FromDiscord | <ITR> default! that's what I want! Thank you leorize! |
14:24:03 | FromDiscord | <dom96> Congrats on getting to the HN front page @flywind 😄 |
14:24:09 | supakeen | inb4 var |
14:24:15 | FromDiscord | <ITR> And thank you all others for trying to help, sorry for the question ebing difficult to explain |
14:24:30 | FromDiscord | <Rika> i dont understand why you would want the default values |
14:24:43 | PMunch | @ITR, yeah I think that's why we were having a hard time understanding you |
14:25:03 | PMunch | You'd basically just have an array of zeros that you can't even change to anything else.. |
14:25:09 | FromDiscord | <Recruit_main707> !eval let arr: array[3, int] |
14:25:11 | NimBot | Compile failed: /usercode/in.nim(1, 5) Error: 'let' symbol requires an initialization |
14:25:40 | FromDiscord | <ITR> it's to pass into a method that doesn't mutate the array |
14:25:59 | FromDiscord | <Rika> then you dont need to make a variable |
14:26:35 | FromDiscord | <Rika> just put `default(array[3, int])` directly into the parameter |
14:27:05 | FromDiscord | <ITR> yeah, but I'm not sure if that would be any easier to explain when I asked about it |
14:27:12 | FromGitter | <jrfondren> !eval proc foo(xs: array[3, int]) = xs[1] = 4 |
14:27:14 | NimBot | Compile failed: /usercode/in.nim(1, 33) Error: 'xs[1]' cannot be assigned to |
14:27:31 | FromDiscord | <ITR> I even tried googling for `get default value for type nim`, and didn't find anything useful, lol |
14:27:38 | FromGitter | <jrfondren> immutable params is the default |
14:27:44 | narimiran | xs: var array |
14:28:09 | leorize[m]1 | I think what they meant is that they want to pass an empty array into a method that wants one |
14:28:57 | FromDiscord | <ITR> that said, I think the intent of the code would be a lot clearer by having it be a constant value, rather than creating a new one each time I want to use it as a parameter |
14:29:05 | * | lbart quit (Ping timeout: 240 seconds) |
14:29:43 | leorize[m]1 | what are you working on? |
14:31:24 | FromDiscord | <Idefau> what do you guys want to do |
14:31:37 | disruptek | make coffee. |
14:31:48 | FromDiscord | <Idefau> stinky coffee |
14:32:47 | FromDiscord | <ITR> sent a long message, see http://ix.io/2Bv9 |
14:34:22 | FromDiscord | <flywind> @narimiran Could you twitter https://news.ycombinator.com/item?id=24846828 ? Thanks! |
14:34:57 | FromDiscord | <flywind> I didn't have a twitter account. |
14:34:58 | * | lbart joined #nim |
14:34:58 | * | lbart quit (Changing host) |
14:34:58 | * | lbart joined #nim |
14:37:57 | FromDiscord | <Clyybber> @flywind I think @dom96 controls the twitter account |
14:38:15 | narimiran | i can tweet too |
14:38:31 | FromDiscord | <Clyybber> nice / |
14:39:02 | FromDiscord | <flywind> 👍 |
14:39:46 | narimiran | what to write exactly? link to your lib and HN comments? |
14:41:04 | FromDiscord | <flywind> That's ok. Thanks! |
14:41:15 | FromDiscord | <dom96> just write "Prologue v0.4.0 released, a new web framework for Nim" 😉 |
14:41:24 | FromDiscord | <dom96> and link to HN/Github |
14:43:41 | ForumUpdaterBot | New thread by Lachu: [Docker Image] GCC /bin/sh:: file not found, see https://forum.nim-lang.org/t/6969 |
14:43:42 | narimiran | done |
14:46:40 | PMunch | Damn Zevv, npeg is really easy to work with! Second time now I've gotten a parser right on the first try, this stuff is great! |
14:51:00 | FromDiscord | <shashlick> disruptek: do you still need nimterop <= 0.6.12 in the gittyup requires |
14:51:07 | disruptek | yep. |
14:51:13 | * | lbart quit (Ping timeout: 264 seconds) |
14:51:15 | disruptek | because you cannot be trusted with patches. |
14:51:45 | disruptek | take semver to heart and change your evil ways and maybe we can talk. |
14:51:53 | * | lbart joined #nim |
14:52:29 | FromDiscord | <shashlick> okay then i cannot test it in travister |
14:53:14 | disruptek | if i knew what that meant it still wouldn't motivate me to abandon the principles that enable successful software collaboration. |
14:53:29 | disruptek | but i appreciate the effort. it sounds like you'll miss me! |
14:55:39 | FromDiscord | <shashlick> it just means this - https://travis-ci.org/github/genotrance/travister/jobs/737500840#L13668 - i use travister to test how nimterop changes can potentially break its consumers |
14:59:39 | disruptek | so what you're saying is, you knew it broke me? |
15:00:24 | disruptek | or... what you're saying is, it's not effective at showing you breaking changes. |
15:01:01 | Zevv | PMunch: dude |
15:01:07 | Zevv | you're making me blush |
15:04:29 | FromDiscord | <shashlick> yes, I premonished it and intentionally broke you because it's fun to do that |
15:04:50 | disruptek | i know. i take this stuff too seriously. |
15:05:00 | disruptek | it's fun to rile me up. i make a game of it. |
15:05:18 | * | tiorock joined #nim |
15:05:19 | * | rockcavera quit (Killed (kornbluth.freenode.net (Nickname regained by services))) |
15:05:19 | * | tiorock is now known as rockcavera |
15:05:19 | * | rockcavera quit (Changing host) |
15:05:19 | * | rockcavera joined #nim |
15:06:06 | disruptek | semver is not an obstacle course that you're trying to defeat. |
15:06:08 | FromDiscord | <shashlick> you certainly don't include anyone else in your game |
15:06:21 | disruptek | well don't try to introduce new shit in a patch, silly. |
15:06:34 | disruptek | i cannot trust you. what do you think that means? |
15:06:38 | FromDiscord | <acek7> whats everyne up to |
15:06:45 | disruptek | arguing semver for the last time. |
15:07:28 | * | rockcavera is now known as Guest2494 |
15:07:28 | * | Guest2494 quit (Killed (weber.freenode.net (Nickname regained by services))) |
15:07:29 | * | rockcavera joined #nim |
15:08:05 | disruptek | semver is the only interface we have and yet shashlick is intent on making it binary. |
15:08:55 | FromDiscord | <acek7> wish i knew what either of those things are but you are a smart guy disruptek and i trust you |
15:09:17 | disruptek | i keep hearing that. i wish it arrived on the memo line of a fucking check. |
15:09:26 | disruptek | https://semver.org/ |
15:09:43 | disruptek | binary is, like, you have two things... |
15:09:48 | disruptek | no, wait, you have one thing. |
15:09:52 | FromDiscord | <Rika> broken and not broken 😛 |
15:09:53 | FromDiscord | <shashlick> fixing bugs around musl didn't seem like a new feature to me |
15:09:55 | disruptek | ah shit, i cannot explain binary. |
15:10:18 | disruptek | shashlick if you cannot internalize semver, we're doomed. |
15:10:54 | * | arecacea1 quit (Remote host closed the connection) |
15:10:57 | disruptek | there are 10 kinds of people... |
15:11:01 | supakeen | does semver even make asserts for versions that start with a 0, i thought they were all considered to be non-compatible |
15:11:14 | disruptek | that is the convention, yes. |
15:11:15 | FromDiscord | <shashlick> indeed, this is my day job and if I cannot ship perfect stuff then it's time to hang up my boots |
15:11:24 | FromDiscord | <Rika> all 0 majors are considered incompatible with each other |
15:11:39 | supakeen | > Major version zero (0.y.z) is for initial development. Anything may change at any time. The public API should not be considered stable. |
15:11:47 | supakeen | so break whatever under 0. really |
15:11:52 | disruptek | yes. |
15:11:54 | disruptek | break whatever. |
15:11:55 | FromDiscord | <shashlick> we're all building rockets and pacemakers |
15:12:09 | disruptek | also, don't expect me to use a requires that is wide fucking open. |
15:12:16 | disruptek | because literally /whatever/ may break. |
15:12:21 | * | arecacea1 joined #nim |
15:12:29 | disruptek | because you refuse to major your shit. |
15:12:37 | disruptek | even though i use it everywhere. |
15:12:47 | disruptek | even though it underpins my most prized software. |
15:12:55 | disruptek | and you have the audacity to give me a hard time? |
15:13:02 | disruptek | shashlick i will find you. |
15:13:08 | disruptek | austin is not that large a place. |
15:13:13 | disruptek | i know my way around. |
15:13:17 | disruptek | and i know what to look for. |
15:13:31 | disruptek | i will see you sign on the street. |
15:13:38 | disruptek | i will sniff your scent on the breeze. |
15:13:40 | disruptek | I WILL FIND YOU |
15:13:59 | FromDiscord | <shashlick> what will that get you - it will only break more of your code |
15:14:14 | disruptek | so you want me to vendor nimterop? |
15:15:35 | FromDiscord | <shashlick> i'll say stop using my stuff since i cannot be trusted |
15:16:04 | disruptek | tell you what. |
15:16:16 | disruptek | you have push to all my repos. you make it work. |
15:16:19 | disruptek | i don't care. |
15:16:41 | disruptek | but i am not special. |
15:16:46 | disruptek | all your users have this problem. |
15:16:51 | disruptek | i'm just the bellwhether. |
15:17:24 | disruptek | and fuck yeah i'll blame you when it breaks. |
15:17:31 | disruptek | because you have the tools and you refuse to use them. |
15:18:04 | mipri | you can do that without pretending that semver is magic that prevents things from ever breaking. a bug fix broke something? shit happens. |
15:18:29 | disruptek | yeah. i think semver is stupid. don't get me started. |
15:18:50 | disruptek | but it's not nothing, and it's all we have because nimble is fucking stupid. er. stupider. more stupid than semver. |
15:19:14 | disruptek | and you know what doesn't break? |
15:19:17 | disruptek | software that doesn't change. |
15:19:22 | FromDiscord | <shashlick> well, I'd rather do without this constant expectation that everything should be perfect or it is shit |
15:19:35 | disruptek | if i fucking pin a semver that works, i shouldn't be catching shit about how i'm preventing progress. |
15:19:48 | disruptek | i don't care about your tests. i care about my users having working software. |
15:19:58 | disruptek | i don't care if it's perfect. |
15:20:07 | disruptek | i will test it. if it works for me, i will offer it to users. |
15:20:11 | FromDiscord | <Clyybber> disruptek: pin a commit done |
15:20:20 | FromDiscord | <Clyybber> I thought nimph could do that eh ? :p |
15:20:20 | disruptek | just because i want to use your software doesn't mean i want to use anything you write. |
15:20:26 | disruptek | nimph does do that. |
15:20:43 | FromDiscord | <shashlick> it'll take a week to explain so let's just leave it at that |
15:20:52 | disruptek | he's pissed because i reversed a >= into <= in my requires statement for a /dependency/ of a /dependency/ of nimph. |
15:21:08 | disruptek | now c'mon, man. |
15:21:11 | disruptek | get over yourself. |
15:21:30 | disruptek | i already told you you can do whatever you want in my repos. |
15:21:42 | disruptek | go nuts. but mark my words. i am not alone in having this problem. |
15:21:51 | FromDiscord | <Clyybber> how about you focus on the actual bug/breaking change |
15:22:05 | disruptek | i cannot be bothered to debug all software i want to use. |
15:22:22 | FromDiscord | <Clyybber> whats the problem even? That shashlick did a patch increase instead of a minor? |
15:22:23 | disruptek | it's absurd to suggest that i should maintain expertise in every line of code i want to leverage. |
15:22:30 | disruptek | i just explained it. |
15:22:52 | disruptek | he's pissed because i reversed a >= into <= in my requires statement for a /dependency/ of a /dependency/ of nimph. |
15:23:10 | mipri | nah, that's not the problem, that's the reason for the pin, and the problem is that the pin is preventing some testing elsewhere |
15:23:52 | disruptek | apparently, shashlick needs to add a `fork` command to nimble because he's too stubborn to use nimph to fork this fucking code of mine that he wants to test his code against. |
15:23:56 | FromDiscord | <shashlick> that isn't even the thing - i test his stuff to make sure i don't break stuff |
15:24:04 | disruptek | does it work? no. |
15:24:08 | disruptek | so why should i care? |
15:24:23 | * | apahl quit (Ping timeout: 244 seconds) |
15:24:26 | FromDiscord | <shashlick> ya so don't act like I'm pissed with your requires statement |
15:24:40 | disruptek | sure. so don't act like i'm standing in the way. |
15:24:45 | disruptek | it was a statement i made. |
15:24:54 | disruptek | you hold the keys to the repo. i would prefer that you fork it. |
15:24:55 | FromDiscord | <shashlick> ya that's what my question meant right? scroll up |
15:25:16 | * | apahl joined #nim |
15:25:24 | FromDiscord | <Clyybber> whats the actual breaking change? |
15:25:48 | disruptek | the breaking change is in a .nimble file. |
15:25:53 | disruptek | it breaks shashlick's tests. |
15:26:10 | FromDiscord | <Clyybber> no, what broke nimph |
15:26:44 | FromDiscord | <shashlick> i had to add a second executable to nimterop and since disruptek doesn't use nimble, it doesn't get built |
15:26:57 | FromDiscord | <shashlick> so that's a breaking change for him |
15:27:04 | * | tane joined #nim |
15:27:11 | disruptek | and this was added on a patch release. |
15:27:12 | FromDiscord | <Clyybber> lol |
15:27:24 | FromDiscord | <Clyybber> can I call this a |
15:27:25 | FromDiscord | <Clyybber> nimph moment |
15:27:43 | disruptek | and i'm the asshole for not wanting a `requires >= 0.6.12`. |
15:28:04 | * | Lord_Nightmare quit (Quit: ZNC - http://znc.in) |
15:28:08 | FromDiscord | <shashlick> no one called you one |
15:28:09 | FromDiscord | <Idefau> tfw no nymph gf |
15:28:12 | FromDiscord | <Clyybber> why doesn't nimph build the executable for you? |
15:28:22 | * | rockcavera quit (Killed (verne.freenode.net (Nickname regained by services))) |
15:28:23 | * | rockcavera joined #nim |
15:28:33 | FromDiscord | <shashlick> because it doesn't run nimble tasks to do builds |
15:28:39 | disruptek | because nimph doesn't want to run arbitrary code before you have a chance to inspect it. |
15:29:14 | disruptek | it wouldn't help anyway; there's no rational standard for where binaries should go or how they might be added to a path. |
15:29:29 | disruptek | and once you do run them, they don't have the right environment. |
15:29:37 | disruptek | it's just a total nimble clusterfuck. |
15:29:38 | * | bung joined #nim |
15:29:48 | FromDiscord | <Clyybber> where does shashlick state he supports nimph :) ? |
15:29:51 | * | Lord_Nightmare joined #nim |
15:30:12 | disruptek | shashlick supports nimgit2 which is a dependency of gittyup which is a dependency of nimph. |
15:30:31 | * | tiorock joined #nim |
15:30:37 | FromDiscord | <Clyybber> yeah, but that says nothing about the pm nimterop supports |
15:30:38 | disruptek | nimterop is a dependency of nimgit2. 😁 |
15:31:02 | disruptek | i'm not asking shashlick to support anything. |
15:31:14 | disruptek | i'm happy taking his MIT licensed code and supporting it myself. |
15:31:34 | FromDiscord | <Clyybber> so can't you like update your build scripts to add the second executable |
15:31:58 | disruptek | nimph doesn't have build scripts for the reasons i mentioned. |
15:31:58 | FromDiscord | <Clyybber> or send a PR to nimterop |
15:32:09 | disruptek | a pr to remove a new feature he added? |
15:32:13 | FromDiscord | <Clyybber> but nimterop already has toast |
15:32:19 | disruptek | yep. |
15:32:21 | FromDiscord | <Clyybber> surely you build taht somehow |
15:32:33 | FromDiscord | <Clyybber> and now just add dough to the list |
15:32:34 | disruptek | true, you wrote a build script, didn't you. |
15:32:53 | FromDiscord | <Clyybber> me? |
15:32:56 | disruptek | yes. |
15:33:11 | FromDiscord | <Clyybber> I had a small script to build nimph |
15:33:13 | FromDiscord | <Clyybber> but its old |
15:33:17 | disruptek | are you arguing that i should have an open requires statement for any version of nimterop? |
15:33:29 | disruptek | then i should wait for someone to tell me a new version of nimterop was released that breaks nimph. |
15:33:33 | FromDiscord | <Clyybber> nah, unless you can afford the breakage |
15:33:34 | disruptek | then i should debug the problem. |
15:33:41 | disruptek | then i should modify nimph and issue a new release. |
15:33:46 | disruptek | this is your proposal? |
15:33:49 | * | rockcavera quit (Ping timeout: 264 seconds) |
15:34:17 | disruptek | how about this proposal: |
15:34:23 | disruptek | i use code that i know works. |
15:34:27 | FromDiscord | <Clyybber> I mean if you don't release nimph broken, its not a crazy idea |
15:34:37 | disruptek | when i need new features, i try out the new versions of nimterop. |
15:34:51 | disruptek | if i find one that works well, i issue a new nimph that allows that version of nimterop. |
15:36:12 | FromDiscord | <Clyybber> @shashlick maybe nimble needs a testupdate command for CIs? That would ignore the requirements and test it with a newer version |
15:36:26 | FromDiscord | <Clyybber> (edit) "command" => "functionality" |
15:37:08 | mipri | that's even more fair than what people do on occasion which is vendor a modified version of a library. |
15:37:52 | disruptek | it's the only sane way to do it. |
15:38:01 | disruptek | the alternative is to force people to use a specific commit. |
15:38:15 | disruptek | or a specific package manager, like nimph, that supports ~ or ^ for semver. |
15:38:38 | disruptek | i'm trying to allow my customers to use any nimterop from 0.3.3 to 0.6.12. and i'm getting shit about it. |
15:44:26 | FromDiscord | <shashlick> why is any question posed to you equate to an attack |
15:44:46 | disruptek | scroll back. there was no attack. |
15:44:48 | FromDiscord | <shashlick> if you don't/cannot update, why would you think that would be a problem |
15:45:07 | disruptek | but, yes, i am a little outraged that i have to explain semver to you. |
15:46:00 | disruptek | afaict, you're the one that's butthurt over my requires statement. |
15:46:04 | FromDiscord | <Avatarfighter> What's new everyone |
15:46:05 | FromDiscord | <scott> it took me like 5 minutes after joining the chat to be like "oh, I see. Disruptek is the local grump" |
15:46:14 | FromDiscord | <Avatarfighter> lmaooo |
15:46:22 | FromDiscord | <Avatarfighter> :disruptek: |
15:46:39 | disruptek | ah damn, i was on discord and i failed to try out :disruptek: |
15:47:01 | FromDiscord | <Avatarfighter> Proves you gotta come back on it :GWaobloChildPepeShrug: |
15:47:03 | supakeen | i'm considering putting disruptek in my slides too |
15:47:13 | FromDiscord | <Avatarfighter> slides for what lmfao |
15:47:14 | disruptek | wut |
15:47:22 | disruptek | i think he means shoes. |
15:47:24 | FromDiscord | <Clyybber> > and i'm the asshole for not wanting a requires >= 0.6.12. |
15:47:31 | supakeen | intro to nim thingy i wanted to do here |
15:47:32 | FromDiscord | <Clyybber> ~disruptek is self-declared asshole |
15:47:32 | disbot | disruptek: 11a sexy fella with magic hands. |
15:47:32 | disbot | disruptek: 11self-declared asshole |
15:47:32 | disbot | disruptek: 11an unsafe nil deref |
15:47:36 | FromDiscord | <Clyybber> lol |
15:47:38 | disruptek | heh |
15:47:42 | FromDiscord | <Avatarfighter> ahaha |
15:47:45 | FromDiscord | <Clyybber> wait, let me try this |
15:47:52 | FromDiscord | <Clyybber> ~disruptek is :disruptek: |
15:47:53 | disbot | disruptek: 11a sexy fella with magic hands. |
15:47:53 | disbot | disruptek: 11:disruptek: |
15:47:53 | disbot | disruptek: 11an unsafe nil deref |
15:47:57 | FromDiscord | <Avatarfighter> aw |
15:47:58 | FromDiscord | <Clyybber> damn |
15:47:59 | FromDiscord | <Avatarfighter> @Yardanico |
15:48:02 | FromDiscord | <Clyybber> learn to emoji disbot |
15:48:03 | FromDiscord | <Avatarfighter> Showstopper bug |
15:48:19 | disruptek | if i had a nickel for every time i was made a footnote in a powerpoint presentation... |
15:49:00 | FromDiscord | <lqdev> you'd have one for being a footnote in my readme. |
15:49:12 | supakeen | i just need to find a meme that represents the community, maybe this: https://external-content.duckduckgo.com/iu/?u=https%3A%2F%2Fenglishwithasmile.files.wordpress.com%2F2013%2F11%2Fmr_angry2.jpg&f=1&nofb=1 |
15:49:20 | FromDiscord | <Clyybber> lol |
15:49:22 | FromDiscord | <Avatarfighter> lol |
15:49:24 | FromDiscord | <Avatarfighter> oh god |
15:49:34 | FromDiscord | <Clyybber> this is why we need a "this tbh" emoji |
15:49:47 | FromDiscord | <Avatarfighter> this tbh ^ |
15:51:25 | * | rockcavera joined #nim |
15:52:13 | supakeen | in any case i haven't gotten far anyways: https://i.imgur.com/BBskiIQ.png :') |
15:52:22 | FromDiscord | <nikki> hn back at it https://media.discordapp.net/attachments/371759389889003532/768501943650877440/image0.png |
15:52:42 | FromDiscord | <Avatarfighter> brb time to brigade /u/zeeone |
15:52:50 | FromDiscord | <Clyybber> kill him, if you will |
15:53:06 | FromDiscord | <lqdev> >a couple of years ago |
15:53:08 | FromDiscord | <scott> "i tried an actively developed language a couple years ago and didn't like it then, so it's bad" |
15:53:10 | disruptek | consider him gone. |
15:53:25 | FromDiscord | <Avatarfighter> lmao we're so toxic |
15:53:36 | FromDiscord | <scott> although his comment on that web framework was kinda on point |
15:53:49 | FromDiscord | <scott> I didn't really see anything interesting about it and the syntax wasn't great |
15:54:12 | * | hnOsmium0001 joined #nim |
15:54:12 | FromDiscord | <Avatarfighter> What was the context of that comment? |
15:54:20 | FromDiscord | <Avatarfighter> Is he talking about Prologue? |
15:54:32 | FromDiscord | <nikki> aye |
15:54:54 | FromDiscord | <dom96> Web frameworks are only groundbreaking if they have a shiny website with big code samples and lots of scrolling space |
15:55:16 | FromDiscord | <Avatarfighter> margin: 200%; should solve the scrolling space issue |
15:55:24 | mipri | gotta beat this: https://rocket.rs/ |
15:55:24 | FromDiscord | <nikki> bonus points if it takes over ur scroll mechanism to implement a slideshow |
15:55:25 | * | tiorock quit (Ping timeout: 264 seconds) |
15:55:28 | FromDiscord | <nikki> and also the back button |
15:55:43 | FromDiscord | <dom96> that freakin' website has clouds! |
15:55:47 | FromDiscord | <dom96> So groundbreaking |
15:56:05 | * | rockcavera quit (Ping timeout: 240 seconds) |
15:56:11 | FromDiscord | <Clyybber> it really nooks neat tho |
15:56:17 | FromDiscord | <dom96> oh no |
15:56:20 | * | rockcavera joined #nim |
15:56:21 | FromDiscord | <dom96> they've got clyybber |
15:56:34 | FromDiscord | <Clyybber> the website, I have no idea about the framework ;P |
15:56:44 | FromDiscord | <scott> TBH that seems like a pretty tame website |
15:56:45 | FromDiscord | <nikki> we lost clyybber |
15:56:45 | FromDiscord | <Avatarfighter> the website is really slick |
15:58:17 | FromDiscord | <Rika> the website is nice, the library is another story |
15:58:27 | FromDiscord | <Avatarfighter> ahah |
15:58:34 | FromDiscord | <dom96> it's called rocket too |
15:58:37 | FromDiscord | <dom96> bet Elon Musk uses it |
15:58:41 | mipri | the library's not bad either, much better than Warp. |
15:58:49 | FromDiscord | <nikki> actix thoooo |
15:58:52 | FromDiscord | <Avatarfighter> @Rika any chance you want to talk about infrastructure ? |
15:59:03 | FromDiscord | <nikki> i actually really like nim-lang.org website |
15:59:03 | FromDiscord | <scott> a web framework can have nothing but a readme on github saying "look at the examples folder" for all i care haha |
15:59:08 | FromDiscord | <nikki> racket's website is also good |
15:59:15 | FromDiscord | <Rika> @Avatarfighter wdym |
15:59:52 | FromDiscord | <Avatarfighter> we need to plan the backend :GWaobloChildPepeCry: |
16:00:04 | FromDiscord | <Rika> > a web framework can have nothing but a readme on github saying "look at the examples folder" for all i care haha↵you may think that readmes and websites dont affect your judgement but you dont know the involuntary side of your perception |
16:00:25 | FromDiscord | <Rika> > we need to plan the backend :GWaobloChildPepeCry:↵i am doing my homework, give me a few minutes |
16:01:20 | FromDiscord | <scott> oh, absolutely. And that gives a decent indication as to how much work is being put into the library. |
16:01:26 | FromDiscord | <Avatarfighter> kk take ur time dm me 😛 |
16:02:56 | FromDiscord | <nikki> honestly some times the website being too shiny makes me not trust the thing |
16:02:59 | FromDiscord | <nikki> depending on the thing |
16:04:23 | FromDiscord | <Rika> that one programming language with a single letter name that rhymes with bee |
16:05:00 | mipri | B, C, D, E, G, P, V, Z? |
16:05:13 | disruptek | no, T, dummy. |
16:05:21 | FromDiscord | <Rika> have fun guessing |
16:05:24 | FromDiscord | <ITR> Vi? |
16:05:25 | mipri | T is vaporware! |
16:05:36 | FromDiscord | <nikki> the lisp? |
16:05:36 | FromDiscord | <ITR> Lee |
16:05:38 | mipri | no it's obviously V. C doesn't have a website and D's isn't that flashy |
16:05:42 | FromDiscord | <lqdev> C. |
16:05:47 | FromDiscord | <ITR> oh gee |
16:05:54 | FromDiscord | <scott> oh man, V 😂 |
16:06:01 | FromDiscord | <nikki> V |
16:06:03 | FromDiscord | <ITR> Ni! |
16:06:10 | FromDiscord | <scott> who needs garbage collection 😂 |
16:06:12 | FromDiscord | <Recruit_main707> neem |
16:06:53 | FromDiscord | <nikki> btw in the nim manual it says string assignment "copies the string" |
16:07:00 | FromDiscord | <Rika> > Ni!↵に?ニ? |
16:07:08 | FromDiscord | <nikki> --> do strings have reference semantics? are they refcounted? ... |
16:07:33 | FromDiscord | <Rika> strings have value semantics as far as i know |
16:07:40 | FromDiscord | <nikki> cool |
16:07:58 | FromDiscord | <Rika> but theyre still internally refs |
16:08:02 | FromDiscord | <nikki> so dealing with strings directly shouldn't make gc / arc do stuff? |
16:08:11 | FromDiscord | <nikki> right internally they'd have a data ptr, sure |
16:08:16 | FromDiscord | <Vindaar> Rika has rediscovered their IME 🙃 |
16:08:18 | FromDiscord | <Rika> it still will need gc or arc to do things |
16:08:27 | FromDiscord | <Rika> > Rika has rediscovered their IME 🙃↵? ive had this ime for years |
16:08:34 | FromDiscord | <Rika> i've been learning japanese for years |
16:08:40 | FromDiscord | <Vindaar> Haha, I'm kidding 😄 |
16:08:46 | FromDiscord | <Rika> that doesnt mean i'm any good though |
16:08:52 | FromGitter | <jrfondren> asking again, is there an easier way than this to assure myself that some operation (.string on a TaintedString in this case) definitely doesn't copy the string? |
16:08:54 | FromDiscord | <Rika> im just past N5 |
16:08:57 | FromDiscord | <Vindaar> Was just surprised about the sudden influx of hiragana and katakana in my Nim chat 😛 |
16:08:57 | FromGitter | <jrfondren> than this: https://play.nim-lang.org/#ix=2Bwd |
16:08:58 | FromDiscord | <Recruit_main707> > so dealing with strings directly shouldn't make gc / arc do stuff?↵it should iirc |
16:09:52 | nikki93 | disruptek: u were working on some stuff re: making the name mangling nicer / making the c output more readable right? |
16:10:27 | FromDiscord | <Rika> > Was just surprised about the sudden influx of hiragana and katakana in my Nim chat 😛↵i could add kanji but im too sleepy to do so |
16:10:30 | nikki93 | i've been spelunking thru c output to see how things work and usually i end up doing 's/_\w*//g' lol |
16:11:20 | FromDiscord | <Vindaar> just let the IME tab complete stuff @Rika? (sorry, gonna stop in main with this now) |
16:11:32 | FromDiscord | <Idefau> tfw i had to read resulted js to fix bugs in some cases |
16:11:38 | FromDiscord | <Idefau> (edit) "resulted" => "compiled" |
16:11:58 | FromDiscord | <Idefau> fun JS interfacing and racing conditions |
16:13:03 | disruptek | nikki93: yeah, see my open pr. |
16:13:14 | disruptek | it's the one with over 100 commits. you can't miss it. |
16:17:34 | * | TomDotTom quit (Ping timeout: 265 seconds) |
16:22:02 | supakeen | what are some more resources I could throw in this: https://i.imgur.com/XMo1Ig2.png that we all like |
16:22:25 | FromDiscord | <Idefau> the forum |
16:22:28 | FromDiscord | <Idefau> ofc |
16:23:08 | FromDiscord | <Avatarfighter> The forum 😎 |
16:23:30 | FromDiscord | <Avatarfighter> you could almost put hackernews on that because we end up there pretty often |
16:23:45 | disruptek | https://narimiran.github.io/nim-basics/ |
16:23:51 | disruptek | ~playground |
16:23:51 | disbot | playground: 11an online in-the-browser IDE for simple Nim experiments at http://argentina-ni.ml/ -- disruptek |
16:23:51 | disbot | playground: 11https://play.nim-lang.org the official Nim playground, can run Nim in the browser and share snippets |
16:24:02 | disruptek | ~kashualmodi |
16:24:02 | disbot | no footnotes for `kashualmodi`. 🙁 |
16:24:30 | disruptek | ~kaushalmodi |
16:24:30 | disbot | kaushalmodi: 11a badass coder with a wealth of useful Nim articles on his blog, at https://scripter.co/ -- disruptek |
16:24:44 | disruptek | i always butcher his name. :-( |
16:25:05 | supakeen | thank you disruptek/avatarfighter, i've added the nim-basics and play links plus mentioned the forum :) |
16:25:05 | FromDiscord | <Idefau> 😦 |
16:25:25 | supakeen | oh and idefau |
16:26:01 | disruptek | ~basics is https://narimiran.github.io/nim-basics/ |
16:26:02 | disbot | basics: 11https://narimiran.github.io/nim-basics/ |
16:26:28 | FromDiscord | <Avatarfighter> another useful resource imo is the Nim for X programmer wikis |
16:26:47 | supakeen | I think I'll do a larger list in an accompanying blog post. |
16:26:47 | disruptek | yeah, jc has done a lot of work there. |
16:26:49 | FromDiscord | <Idefau> oh also nim by example |
16:26:55 | FromDiscord | <Avatarfighter> https://github.com/nim-lang/Nim/wiki/Nim-for-Python-Programmers |
16:27:05 | FromDiscord | <Idefau> https://nim-by-example.github.io/ |
16:28:24 | bung | I remenber there's like buffer module read write variable with endians ? |
16:31:15 | FromDiscord | <Avatarfighter> The streams module gives you the buffer and endians lets you switch between little or big |
16:33:41 | bung | I can't see these api in 1.4 doc |
16:40:09 | bung | nvm |
16:49:13 | mipri | I kept reading that as "can't wait to see" for some reason |
16:49:19 | mipri | what APIs? |
16:50:03 | bung | haha , I mean one module apis like writeXXLE writeXXBE |
16:50:54 | * | TomDotTom joined #nim |
16:50:55 | disruptek | or if you're a Chad using nimph: |
16:51:00 | * | disruptek 🤣 |
16:51:43 | supakeen | https://i.imgur.com/nelhdjr.png wonder if i should add disruptek here ;) |
16:51:54 | * | TomDotTom quit (Client Quit) |
16:52:08 | * | TomDotTom joined #nim |
16:52:19 | disruptek | :nimdog: |
16:52:47 | disruptek | `nimph clone rapid` should work as long as there isn't a more popular nim project named `rapid` on github. |
16:53:22 | FromDiscord | <scott> https://play.nim-lang.org/#ix=2Bwp this is a snippet obviously a bunch undefined here, but the error I'm getting is `Error: Expected return type of 'Future' got 'CacheData'` |
16:53:39 | FromDiscord | <scott> how do I convert the else branch into a future? |
16:53:41 | disruptek | what do you think the problem is? |
16:53:58 | disruptek | result = cache |
16:54:04 | FromDiscord | <scott> oh |
16:54:08 | FromDiscord | <scott> that works I guess |
16:54:11 | disruptek | weird. |
16:54:17 | disruptek | it's almost like i read the manual. |
16:54:26 | disruptek | but that would mean... nah. |
16:54:43 | FromDiscord | <scott> weird, almost like the manual is disorganized and hard for new members of the community to search |
16:55:04 | disruptek | hmm, it's almost like those that have struggled have something unique and meaningful to contribute. |
16:55:22 | FromDiscord | <scott> fair point |
16:55:25 | mipri | I think the level of detail rather than organization is the problem. |
16:55:36 | disruptek | i think it's pretty bad. |
16:55:49 | disruptek | but i really feel like i have a certain blindness when it comes to writing about nim. |
16:56:05 | FromDiscord | <scott> I do try to look stuff up most of the time, but this seemed like something with special syntax which would be hard to search for |
16:56:32 | FromDiscord | <scott> which, yeah. `result = cache` is pretty unintuitive IMO |
16:56:44 | disruptek | what's special is that the code gets rewritten due to the .async macro. |
16:57:07 | disruptek | you have to remember that you `return cache` but it gets rewritten into a Future. |
16:57:21 | disruptek | i don't like this, but i'm guilty of it too in cps. |
16:57:22 | FromDiscord | <scott> yeah, but that means documenting behavior is hard and people will probably have a lot of questions about it. |
16:57:29 | disruptek | it's just the sort of thing we have to try to smooth out. |
16:57:43 | FromDiscord | <scott> don't get me wrong, I don't mind the implementation |
16:57:55 | disruptek | however, the basic `result` behavior is worth spending a lot of time on. it's an important, valuable feature. |
16:58:06 | disruptek | both for performance and readability and software engineering. |
16:58:10 | FromDiscord | <scott> yeah, apparently there's some auto-casting that goes on there? |
16:58:23 | disruptek | it's a rewrite, as i said. |
16:58:45 | disruptek | macros are inscrutable little fucks. |
16:58:56 | disruptek | use them sparingly for just this reason. |
16:59:01 | FromDiscord | <scott> hehe true |
16:59:38 | disruptek | mipri: tell me more. you want more detail or less? |
17:00:26 | mipri | lots more. and examples. |
17:01:35 | disruptek | one thing that annoyed me was that the examples seemed to be lifted straight from the compiler. |
17:01:41 | mipri | when I have a problem with the docs it's rarely that I can't find the place where the information should be, it's just that I can't answer my question from what I find there |
17:01:53 | disruptek | almost as if someone was like, "i wanna do x. lemme implement it and then i can use the impl as an example." |
17:02:44 | disruptek | i'm looking forward to getting back to streaming. |
17:03:46 | disruptek | we need to do a better job of explaining nim-as-s-expressions. |
17:06:35 | * | TomDotTom quit (Remote host closed the connection) |
17:06:55 | * | TomDotTom joined #nim |
17:10:26 | * | PMunch quit (Quit: leaving) |
17:10:29 | TomDotTom | disruptek: Do you mean better documentation about the AST in general so we're not constantly having to rely on dumpTree to reverse engineer things? |
17:11:41 | disruptek | no, i mean that lately i've seen more of a surprise sentiment about how statement lists and expressions work. |
17:12:13 | disruptek | this is something of a subset of what you're suggesting. |
17:12:23 | disruptek | we need to convey just how ordered and consistent the ast is. |
17:14:18 | disruptek | what's powerful about nim is how complete the metaprogramming is. this is only valuable if the ast is well-designed and the semantics are consistent. |
17:14:33 | disruptek | we're just starting to push against some poorly-spec'd stuff in cps, for example. |
17:14:40 | disruptek | but i see this as the future frontier for nim. |
17:14:51 | disruptek | lots and lots of code generated at compile-time. |
17:15:10 | disruptek | many levels of abstraction. |
17:15:20 | TomDotTom | It would be nice to have a easier was to inspect compile-time generated nim-code |
17:15:59 | disruptek | i really only use treeExpr but i'm aware that there are several competing methods. |
17:16:06 | TomDotTom | As for a well-designed Ast, you're stuck with the bad until v2 are you not |
17:16:09 | disruptek | er, treeRepr. |
17:16:37 | TomDotTom | I found treeRepr recently, but only by looking at what dumpTree was doing |
17:16:39 | disruptek | well, i don't love macros-v1 but i have to concede that they are good enough for now. |
17:16:41 | supakeen | i don't think i've even touched rewriting the ast yet |
17:17:20 | disruptek | except for things that are bugs that we can fix in macros-v1, i mean. such things as prevent cps. |
17:17:40 | TomDotTom | I also got caught out by typed vs. untyped, and the differing processing done on each. It's in there in the manual, but completely missed its importance the first time I read it. |
17:18:00 | disruptek | think of it this way: you have the whole of the vm in which to author /code/ that actually does the work you want to do at runtime. |
17:18:56 | disruptek | zevv kinda drove home the point that macros are a suspicious place in which to write logic because their behavior can be vague. |
17:19:41 | disruptek | to me that's a flaw. |
17:19:55 | * | natrys quit (Ping timeout: 246 seconds) |
17:20:12 | disruptek | we shouldn't be afraid of not understanding what's happening in a macro to the point where we need to pass input to an outside proc so we have semantics that we can rely upon. |
17:22:13 | TomDotTom | Is the behaviour when manipulating the ast any vaguer than writing asm? I'm just looking at it as a low-level construct which needs more care and attention |
17:22:30 | disruptek | i mean, clearly. |
17:23:25 | TomDotTom | interpolation with `quote` definitely makes like easier |
17:23:57 | disruptek | hah, i gave up on it long ago. |
17:24:36 | TomDotTom | So, when writing marcos, how do you go about testing them? |
17:24:59 | disruptek | i dump the output and write unit tests. |
17:25:13 | disruptek | how does quote do help? |
17:25:31 | disruptek | i just want to work with ast as i might any other tree structure. |
17:25:44 | disruptek | i know exactly what such operations produce. |
17:26:09 | disruptek | quote do is quicksand. it will trap you in future changes to quote, do, or quote do. |
17:26:29 | disruptek | change my mind. 😁 |
17:27:46 | FromDiscord | <Vindaar> yeah, quote do is quicksand pulling interested people into the macro world due to a false sense of simplicity :P↵still convenient, shrug |
17:27:48 | TomDotTom | I guess for us mere mortals becoming competent in programming by manipulating trees just takes longer than templating out the target code and generating the ast. |
17:28:30 | disruptek | you already know how to work with trees. |
17:28:38 | disruptek | don't shortchange what you already understand. |
17:28:44 | disruptek | it's like zevv and his procs. |
17:28:46 | FromDiscord | <dom96> I'll say what Araq would say if he was here: templates + getAst FTW |
17:29:09 | disruptek | i'm sure araq doesn't agree with me, btw. |
17:29:28 | leorize[m]1 | Nim's manual is more of a specification than an actual manual to the language tbh |
17:30:39 | TomDotTom | The nice thing about Nim is that it's clear enough so the three tutorials and doms book give you more than enough to get going. |
17:32:44 | leorize[m]1 | yep, then for the rest you just get on #nim and ask people (not that it's the best way but manuals are hard to write) |
17:36:54 | supakeen | and it also takes time and a stable system for good relevant content to bubble to the top :) |
17:37:11 | TomDotTom | For be fair, most of the time you learn just enough, and then spend a lot of time reading posts on small parts of the language |
17:37:38 | TomDotTom | I always liked the Python Module of the Week site |
17:39:04 | disruptek | i'm terrible at finding that content. i would rather bang my head against the wall for a week than spend an hour trying to formulate a search for wisdom from others. it's a bad trait. |
17:39:45 | disruptek | mangling is only green right now because clyybber convinced me to relax the spec. |
17:39:54 | FromDiscord | <Avatarfighter> \o/ |
17:39:57 | TomDotTom | Ha, that sounds familiar |
17:40:08 | supakeen | disruptek: What is the mangling thing? |
17:40:25 | disruptek | just renames of identifiers in the c output. |
17:40:29 | supakeen | ah |
17:41:10 | disruptek | it's pretty embarrassing, honestly. |
17:41:19 | supakeen | how so? |
17:41:42 | disruptek | you want me to cop to my fails? |
17:42:03 | disruptek | well it started with some poor assumptions. |
17:42:21 | disruptek | i didn't push people for help when i should have. |
17:42:23 | supakeen | that's the start of every fairy tale in programming! |
17:43:06 | disruptek | i went in and broke everything badly with the assumption i understood how it worked. see point 1. |
17:43:17 | supakeen | this is all so familiar |
17:43:33 | disruptek | yeah, boy meets girl, boy fucks girl, girl turns out to be a goat. |
17:43:46 | disruptek | it's the same old story. |
17:44:37 | disruptek | so now i'm sitting on 1kloc after 4mos which i need for my ic and which is a bastardized half-baked poorly impl piece of dogshit. |
17:45:01 | disruptek | like i said, it's not flattering. |
17:45:09 | FromDiscord | <MiniApple> hmm |
17:45:16 | FromDiscord | <MiniApple> is nim dynamic type? |
17:45:19 | disruptek | no. |
17:45:20 | FromDiscord | <lqdev> no |
17:45:25 | disruptek | ^ |
17:45:27 | FromDiscord | <MiniApple> lol |
17:45:37 | FromDiscord | <MiniApple> i was thinking that nim is dynamic |
17:45:40 | FromDiscord | <MiniApple> sad |
17:45:48 | disruptek | weird, it's almost like you didn't see the link for the manual. |
17:45:49 | FromDiscord | <lqdev> i'd be happy if i were you |
17:45:50 | disruptek | ~manual |
17:45:50 | disbot | manual: 11the Nim Manual is https://nim-lang.org/docs/manual.html -- disruptek |
17:46:02 | FromDiscord | <MiniApple> so nim is like script version of c |
17:46:05 | FromDiscord | <Recruit_main707> its static with a lot of cases where its only optional |
17:46:10 | FromDiscord | <lqdev> @MiniApple no. |
17:46:11 | FromDiscord | <Recruit_main707> no lol, nim |
17:46:18 | FromDiscord | <lqdev> it's a better version of C? maybe? |
17:46:18 | * | disruptek tries to find the 🤦 emoji... |
17:46:20 | FromDiscord | <MiniApple> hmm |
17:46:25 | FromDiscord | <lqdev> but not a scripting language |
17:46:27 | FromDiscord | <lqdev> it's still compiled |
17:46:33 | FromDiscord | <MiniApple> ok |
17:46:46 | FromDiscord | <Recruit_main707> check that link |
17:46:56 | disruptek | it's almost like you never visited https://nim-lang.org/ |
17:47:25 | FromDiscord | <MiniApple> ok |
17:47:33 | FromDiscord | <MiniApple> but i already visited |
17:47:38 | disruptek | weird. |
17:47:41 | supakeen | try reading |
17:47:43 | FromDiscord | <MiniApple> but i didn't see something like static |
17:48:08 | FromDiscord | <Recruit_main707> supakeen: dont be rude though |
17:48:10 | disruptek | it's literally the 2nd word if you don't count "is" and "a". |
17:48:41 | FromDiscord | <whisperdev> Nim is supposed to be like Haxe. But relevant 😄 |
17:48:48 | disruptek | just how many words /did/ you read? |
17:48:51 | FromDiscord | <Avatarfighter> @MiniApple don't take disruptek's abrasiveness seriously this is how he is |
17:48:59 | FromDiscord | <Avatarfighter> Welcome to the community 😄 |
17:49:07 | FromDiscord | <MiniApple> hmm |
17:49:09 | disruptek | take it seriously. we will expect you to read. |
17:49:15 | FromDiscord | <Avatarfighter> lmao |
17:49:16 | disruptek | it's hard for us to communicate otherwise. |
17:49:17 | FromDiscord | <MiniApple> i readed |
17:49:44 | FromDiscord | <MiniApple> i know nim is static |
17:49:56 | FromDiscord | <MiniApple> i want know if nim is dynamic too |
17:50:14 | FromDiscord | <Avatarfighter> Nim is basically a preprocessor for its various backends. It gives you nice and easy to use syntax that converts to your chosen backend. |
17:50:19 | FromDiscord | <whisperdev> @MiniApple What's your first language? |
17:50:19 | FromDiscord | <Avatarfighter> There is nimvm which interprets nimscript |
17:50:23 | FromDiscord | <MiniApple> hmm |
17:50:25 | FromDiscord | <MiniApple> java |
17:50:26 | FromDiscord | <Recruit_main707> """""preprocessor""""" |
17:50:28 | supakeen | sorry, i let my inner disruptek out. |
17:50:33 | FromDiscord | <MiniApple> or javascript |
17:50:39 | FromDiscord | <Avatarfighter> @Recruit_main707 slight quotes around that 😛 |
17:51:16 | FromDiscord | <Recruit_main707> thats makes rust is an llvm preprocessor |
17:51:23 | FromDiscord | <Avatarfighter> yeah |
17:51:26 | FromDiscord | <Avatarfighter> I would argue it is |
17:51:32 | FromDiscord | <Avatarfighter> :GWaobloChildPepeShrug: |
17:51:42 | FromDiscord | <Recruit_main707> well, if you think so, then nim is too for sure |
17:52:36 | TomDotTom | At the end of the day isn't everything just a preprocessor for machine code |
17:52:55 | FromDiscord | <Avatarfighter> The only reason I consider nim to be a true preprocessor is because the IR is C/CPP/ObjC/JS |
17:53:43 | FromDiscord | <Avatarfighter> there is nothing wrong with that though |
17:54:44 | leorize[m]1 | I'm not sure how the IR is C have anything to do with that |
17:55:14 | * | natrys joined #nim |
17:55:15 | * | natrys quit (Client Quit) |
17:55:23 | disruptek | it's just not interesting. |
17:55:51 | FromDiscord | <Avatarfighter> Well for me a preprocessor is anything that doesn't convert to straight assembly, lots of things are preprocessors to me bc of that |
17:55:52 | disruptek | you can speak one language and write down another. who gives a shit? |
17:55:57 | FromDiscord | <Avatarfighter> ^ |
17:56:00 | FromDiscord | <nikki> it's processing, and there is stuff that happens after it |
17:56:06 | FromDiscord | <nikki> i guess it's not a preprocessor if the universe ends right after |
17:56:07 | disruptek | the point is that we're here to talk about the spoken language, not the written one. |
17:56:24 | leorize[m]1 | typically when we say preprocessor we refer to a lexial preprocessor, which only perform lexial analysis |
17:56:46 | FromDiscord | <nikki> there's no c in lexial! |
17:56:51 | disruptek | i think of oral sex as a preprocessor. |
17:56:56 | disruptek | no one cares. |
17:57:07 | disruptek | well, some do, i guess. |
17:57:39 | * | siulManfroni joined #nim |
17:57:43 | disruptek | no one cares to talk about it, though. |
17:58:39 | * | luismanfroni quit (Read error: Connection reset by peer) |
17:58:58 | FromDiscord | <nikki> nim is nice! |
17:59:00 | FromDiscord | <nikki> i like it |
18:00:03 | FromDiscord | <Avatarfighter> same |
18:00:10 | FromDiscord | <nikki> 😄 |
18:00:37 | * | siul_ joined #nim |
18:04:50 | * | siulManfroni quit (Ping timeout: 272 seconds) |
18:05:45 | * | arecacea1 quit (Remote host closed the connection) |
18:06:29 | * | arecacea1 joined #nim |
18:11:06 | supakeen | TomDotTom: Your package of the week idea gave me an idea to highlight a single (3rd party) package for Nim every week, not exactly pymotw but handy for discovery. |
18:11:41 | FromGitter | <jrfondren> https://www.amazon.com/gp/product/B07L68NY2Z has a single chapter with Nim. interesting concept |
18:20:08 | FromDiscord | <haxscramper> Today I saw discussion about guest posts on nim blog ("We should make it simpler for authors to have their blog featured on the Nim front page" - https://forum.nim-lang.org/t/6736#43538 ), and this idea for package of the week. Or maybe something like C++ weekly - some cool features of nim that we can showcase. Or posts like "reimplementing GO as a single macro - only 120 lines" (or something similar) |
18:20:57 | FromDiscord | <haxscramper> E.g. not huge (or even weekend-long) projects, but some nice tips that people can share |
18:21:00 | FromDiscord | <MiniApple> well i am gonna to recommend nim in other server |
18:21:05 | FromDiscord | <MiniApple> lol |
18:23:04 | FromDiscord | <Avatarfighter> Zevv: I can't remember if you talked about working on android emulators but if so, do you know what the average resource usage per emulator was? |
18:23:05 | FromDiscord | <haxscramper> And for package of the week - maybe do something "write X in nim" where X is something like CLI application parser etc (I'm very bad with coming up with that sort of ideas though) |
18:23:27 | FromDiscord | <haxscramper> (edit) "application parser" => "application, parser/" |
18:23:35 | Zevv | Avatarfighter: too much |
18:23:47 | FromDiscord | <Avatarfighter> How much are we talking |
18:23:52 | FromDiscord | <Avatarfighter> like a couple gigs per ? |
18:23:55 | FromDiscord | <Avatarfighter> that's fine if so |
18:24:04 | Zevv | about 250Mb of ram |
18:24:20 | FromDiscord | <Avatarfighter> oh |
18:24:24 | FromDiscord | <Avatarfighter> wait that's so good |
18:24:34 | FromDiscord | <Avatarfighter> I thought you were going to say 3 gigabytes |
18:25:25 | supakeen | https://supakeen.com/weblog/npotw-npeg.html if this, does it prefer more examples or is just discovery a fine enough goal or is it just blogspam. |
18:25:27 | FromDiscord | <Avatarfighter> You said that the emulators weren't open source right? Is there no way for me to get my hands on one to mess with it? |
18:26:24 | FromDiscord | <notchris> I think we need a language mascot |
18:26:44 | FromDiscord | <Avatarfighter> I really think a dude on a throne with the crown would be fun |
18:26:51 | Zevv | hooraay, I got Nim package of the week! What is my prize? |
18:26:55 | Zevv | Can I choose the brand? |
18:27:02 | disruptek | i got yer throne right here: 🚽 |
18:27:13 | FromDiscord | <Avatarfighter> perfect |
18:27:14 | FromDiscord | <MiniApple> hmm |
18:27:20 | mipri | notchris: https://duckduckgo.com/?q=king+nimrod&iar=images&iax=images&ia=images |
18:27:34 | FromDiscord | <MiniApple> is there pointer in nim? |
18:27:38 | * | rockcavera quit (Killed (tolkien.freenode.net (Nickname regained by services))) |
18:27:38 | * | rockcavera joined #nim |
18:27:39 | supakeen | Zevv: one (1) beer when you're in the hague |
18:27:47 | * | Avatarfighter joined #nim |
18:27:50 | * | Avatarfighter left #nim (#nim) |
18:27:57 | * | Avatarfighter joined #nim |
18:28:16 | mipri | MiniApple: yes, there are ref and ptr types |
18:28:20 | disruptek | pro tip: never threaten zevv with beer. |
18:28:30 | disruptek | ~manual |
18:28:31 | disbot | manual: 11the Nim Manual is https://nim-lang.org/docs/manual.html -- disruptek |
18:28:31 | notchris | I was thinking more like a cute animal |
18:28:32 | Zevv | supakeen: deal! |
18:28:36 | notchris | like a red panda |
18:28:38 | * | kobi7 joined #nim |
18:28:41 | kobi7 | hi |
18:28:43 | Zevv | and I'm closer then you think |
18:28:55 | FromDiscord | <haxscramper> We have :nimRawr: for a mascot |
18:28:56 | supakeen | :) |
18:29:06 | FromDiscord | <MiniApple> wow |
18:29:10 | mipri | notchris: humans are cute animals. |
18:29:21 | supakeen | always up for a drink though it's a tad bit difficult right now with everything closed |
18:29:26 | mipri | granted King Nimrod is not usually depicted as cute |
18:29:30 | supakeen | and if i let you near my house disruptek will follow |
18:29:40 | notchris | i thought he was depicted as evil |
18:31:47 | FromDiscord | <haxscramper> Guest post on nim blog: "Implementing disruptek in nim; learn how to create AI in less than X̊̇ͩYͫ̋̅Z̈̈̈ years" |
18:33:15 | Zevv | supakeen: disruptek has seen enough of europe |
18:33:23 | Avatarfighter | Guest post: "Becoming one with disruptek" |
18:33:47 | disruptek | i think europe has seen enough of disruptek. |
18:34:52 | mipri | supakeen: hard to say, since npeg sells itself really well with its own README, but if you want something that can be shared on its own (like posted to HN) then I think it'd need more work to show off the module of the week |
18:36:43 | supakeen | probably flesh it out a bit more over time on what it's supposed to be / what good presentation for it is |
18:39:06 | disruptek | the json parser would be a good demo; too bad it puts our stdlib is such poor light. nice going, zevv. |
18:39:18 | FromDiscord | <nikki> other than the nim manual and dom's book which i'm reading; any other recommended in-depth reads to dig into to learn more about nim? i guess the various articles on the website like eg. the one on destructors |
18:39:25 | FromDiscord | <Recruit_main707> make json great again |
18:39:37 | Zevv | disruptek: no stdlib has sped up considerably recently |
18:39:48 | disruptek | oh shoot. |
18:40:02 | Zevv | or was that ar4qs parser, I forgot. Anyway, the demo does not actually capture, it only parses, so it's oranges & apples |
18:40:06 | FromDiscord | <Recruit_main707> @nikki those are sometimes outdated |
18:40:22 | disruptek | well, i need to make a compile-time json parser. |
18:40:32 | disruptek | maybe i'll just use your work. |
18:40:42 | Zevv | oh what does nim json still not work at compile time? I thought that was long fixed? |
18:40:46 | mipri | nikki: https://narimiran.github.io/nim-basics/#_who_is_this_for , http://ssalewski.de/nimprogramming.html |
18:40:55 | disruptek | no; the problem isn't that it doesn't work. |
18:41:05 | disruptek | the problem is that knuckleheads are directing its design. |
18:42:10 | FromDiscord | <nikki> seen the first one; need to see the latter mipri |
18:42:14 | FromDiscord | <nikki> thanks! |
18:42:43 | FromDiscord | <nikki> i need more nim content to consume. youtube vids are cool too but i think i've gone thru all the like 10 nim vids lol |
18:43:02 | * | bung quit (Quit: Lost terminal) |
18:43:17 | FromDiscord | <Recruit_main707> there is not much info really, just try to create something |
18:43:22 | FromDiscord | <nikki> once i free up from my current work project more i'll be just coding nim more then i'm sure that'll help |
18:43:23 | FromDiscord | <nikki> ya |
18:44:29 | disruptek | Zevv: also, it has to be as fast for ct constants as jason is for generating them. |
18:45:22 | FromDiscord | <nikki> thanks jason' |
18:45:26 | FromDiscord | <nikki> (edit) "jason'" => "jason!" |
18:45:59 | * | Avatarfighter1 joined #nim |
18:46:01 | FromDiscord | <haxscramper> Maybe "Replacing all bash/Perl/python/awk etc. scrips with nim.". Since we have `nim r` (and patter matching later) + things like npeg etc. |
18:46:12 | * | Avatarfighter quit (Ping timeout: 260 seconds) |
18:46:18 | disruptek | !repo jason |
18:46:19 | disbot | https://github.com/disruptek/jason -- 9jason: 11JSON done right 🤦 15 29⭐ 1🍴 |
18:46:29 | * | Avatarfighter1 left #nim (#nim) |
18:46:35 | nikki93 | o lmao |
18:46:42 | FromGitter | <jrfondren> haxscramper: https://nim-lang.moe/on-nim.html#org2435a8a (scripting) |
18:47:03 | FromDiscord | <haxscramper> They is mostly about text processing unix-style things. E.g. "how to start using real programming language and realize not everything is a text" |
18:47:10 | disruptek | jason is a little shittier than it should be due to concepts. |
18:47:46 | FromGitter | <jrfondren> I haven't gotten that far in rewriting Rust and D stuff in Nim, but just by having nim load modules normally without risk of spontaneous upgrade, it should be a lot better. |
18:49:03 | * | stefantalpalaru quit (Ping timeout: 272 seconds) |
18:50:54 | FromDiscord | <haxscramper> > https://nim-lang.moe/on-nim.html#org2435a8a (scripting)↵@jrfondren really nice. So basically this & nim scripter notes + cligen + npeg/strscans/pegs/parseutils |
18:53:04 | * | kobi7_ joined #nim |
18:53:04 | * | kobi7 quit (Read error: Connection reset by peer) |
18:54:00 | FromDiscord | <alehander42> man |
18:54:04 | FromDiscord | <alehander42> so much traffic |
18:54:15 | FromDiscord | <Avatarfighter> what's new alehander! |
19:01:28 | * | lritter quit (Quit: Leaving) |
19:01:40 | * | stefantalpalaru joined #nim |
19:10:52 | disruptek | man, tables.withValue is pretty lame. |
19:11:15 | Zevv | 98.3% of tables is |
19:11:30 | disruptek | this man measures. |
19:12:30 | FromDiscord | <Idefau> i abuse tables |
19:12:59 | Zevv | exported from tables.nim: 114 procs, 2 templates and 31 iterators |
19:13:06 | disruptek | is that all. |
19:13:14 | FromDiscord | <exelotl> lol |
19:14:08 | Zevv | I figure 2 to 3 should be enough, which gives me 98.3% |
19:16:05 | FromDiscord | <alehander42> we found a pigeon in Saturday |
19:16:12 | FromDiscord | <alehander42> but it died last night |
19:16:16 | FromDiscord | <alehander42> i think i mishandled it badly |
19:16:17 | FromDiscord | <exelotl> iirc withValue is the only way to do something with the result of a table lookup if it exists (and optionally something else if it doesn't) without performing the lookup twice |
19:16:20 | FromDiscord | <Idefau> honestly from tables i only use `[]` and `[]=` |
19:16:35 | Zevv | alehander42: aw that's sad. |
19:16:39 | Zevv | but you can still eat it probably? |
19:16:45 | disruptek | exelotl: but it shadows result and mutables your var arg in any event. |
19:16:51 | FromDiscord | <alehander42> zevv dude |
19:16:52 | FromDiscord | <alehander42> noo |
19:16:54 | Zevv | Idefau: and 'contains' |
19:17:00 | FromDiscord | <Idefau> right |
19:17:01 | Zevv | so that's my 2 to 3 |
19:17:13 | FromDiscord | <Idefau> and i also use the iterators |
19:17:16 | FromDiscord | <Idefau> pairs |
19:17:20 | FromDiscord | <Idefau> keys, values |
19:17:21 | * | manjaroi3_ joined #nim |
19:17:22 | FromDiscord | <alehander42> what is 2 to 3 |
19:17:28 | FromDiscord | <nikki> 2..3 |
19:17:32 | disruptek | zevv only owns one chopstick which suffices for all roles of UTENSIL in his household. |
19:17:34 | FromDiscord | <alehander42> a range |
19:17:36 | FromDiscord | <Idefau> 2..<3 |
19:17:37 | Zevv | the number of exported things tables.nim should actually have. instead or 147 |
19:17:43 | FromDiscord | <Idefau> litel heart for nim :3 |
19:17:44 | FromDiscord | <alehander42> this is our range emotion |
19:17:48 | FromDiscord | <alehander42> life is precious |
19:17:56 | * | manjaroi3_ quit (Client Quit) |
19:18:03 | * | TomDotTom quit (Ping timeout: 258 seconds) |
19:18:14 | FromDiscord | <nikki> i thought tables was for multiplication |
19:18:19 | Zevv | disruptek: my kitchen has limited storage space. Who has room for 147 utensils anway |
19:18:20 | FromDiscord | <nikki> like 2 3 = 6 |
19:18:28 | mipri | !eval import strutils; echo toSeq(2..<3) |
19:18:30 | disruptek | true, true. |
19:18:30 | NimBot | Compile failed: /usercode/in.nim(1, 23) Error: undeclared identifier: 'toSeq' |
19:18:32 | FromDiscord | <nikki> it should overload on Two and Three to return Six |
19:18:40 | mipri | !eval import sequtils; echo toSeq(2..<3) |
19:18:43 | NimBot | @[2] |
19:18:44 | Zevv | I was pretty impressed by the way, I had a vietnamese friend over for cooking, and he literaly used one knife and two chopsticks for everything |
19:18:44 | FromDiscord | <Idefau> i mean you could use `tables` mixed with macros to make the entire multiplication table at runtime |
19:18:47 | mipri | of them s**utils |
19:18:47 | Zevv | and it was fabulous |
19:18:47 | disruptek | tables is for factoring string collisions between 147 names. |
19:18:47 | FromDiscord | <Idefau> (edit) "runtime" => "compiletime" |
19:19:18 | FromDiscord | <alehander42> yeah |
19:19:25 | FromDiscord | <alehander42> we can be more minimal |
19:19:29 | FromDiscord | <alehander42> you use the same teeth for all 🙂 |
19:19:30 | FromDiscord | <nikki> mi nim al? |
19:19:40 | FromDiscord | <alehander42> ^ ! |
19:19:54 | mipri | what do the 'mi' and 'al' mean though? |
19:20:10 | FromDiscord | <nikki> al is aluminum |
19:20:11 | FromDiscord | <nikki> mi idk |
19:20:17 | FromDiscord | <Idefau> mi is im but backwards |
19:20:19 | FromDiscord | <Idefau> im nim aluminium |
19:20:59 | mipri | ah right, minim is a palindrome |
19:21:09 | Zevv | alunimum |
19:21:27 | FromDiscord | <Idefau> i will transform myself into an irc user |
19:21:39 | Zevv | you should |
19:21:49 | FromDiscord | <Idefau> nevermind, my znc bouncer is down(?) |
19:21:52 | nikki93 | does nim prefer irc users |
19:21:58 | FromDiscord | <Idefau> i do |
19:22:12 | FromDiscord | <Idefau> yo wtf why cant i connect to my znc |
19:22:35 | FromDiscord | <Idefau> did the ssh bots finally succeed |
19:23:28 | FromDiscord | <Idefau> weird |
19:24:42 | FromDiscord | <Idefau> oooOOh right, my wifi went down today, and the rpi disconnected from the internet |
19:26:50 | ForumUpdaterBot | New thread by Wiltzutm: Virus scanner problems after installing Nim 1.4, see https://forum.nim-lang.org/t/6970 |
19:26:58 | Zevv | ooh we made malware |
19:27:49 | * | idf joined #nim |
19:28:25 | * | avatarfighter[m] joined #nim |
19:28:44 | FromDiscord | <dom96> virus scanners are dumb |
19:28:59 | FromDiscord | <dom96> oh your binary embeds another binary? |
19:29:01 | FromDiscord | <dom96> VIRUS |
19:29:49 | * | NimBot joined #nim |
19:31:25 | mipri | https://www.wordnik.com/words/minim - also a word |
19:31:30 | avatarfighter[m] | test |
19:31:39 | avatarfighter[m] | oh wow matrix is cool |
19:32:11 | FromDiscord | <Idefau> minim means minimal in romanian |
19:32:41 | mipri | what a silly language. it obviously means 1/20th of a scruple |
19:33:17 | FromDiscord | <Idefau> lmao |
19:38:35 | idf | finally |
19:39:04 | disruptek | have i mentioned that withValue is lame? |
19:39:10 | disruptek | well, it's not. it's awful. |
19:39:21 | idf | i dont remember using it |
19:44:53 | disruptek | oh, you'd remember. |
19:47:52 | kobi7_ | so I have been working on a c# to nim translator. It uses Microsoft's Roslyn - with their visitor pattern invoking events for every construct seen in the code. |
19:48:19 | kobi7_ | it's very much alpha, even the details are being fleshed out right now plus i don't have much time |
19:48:50 | kobi7_ | anyway, after that, i create a file where each line describes the new declaration and where i am in the code (which block) |
19:49:23 | kobi7_ | the nim side, then parses this file, creating a tree of namespaces, plus a default namespace when it's just top level declarations |
19:49:34 | kobi7_ | from that, each construct knows how to generate a string. |
19:49:55 | kobi7_ | the string would be proper nim code. That's the overview. Do you find any fault with this design? |
19:50:41 | * | PMunch joined #nim |
19:50:47 | kobi7_ | the code remains high level, and nim is kind of like a superset of most languages anyway. |
19:51:15 | kobi7_ | some things don't exist, like an C# interface, but i can generate something similar with concepts |
19:51:57 | kobi7_ | the lines of text from the c# side, i decided to change to be just json, instead of inventing a format, so that's my next action |
19:52:28 | kobi7_ | the namespaces will be folders or files, like we have in Nim |
19:53:45 | kobi7_ | I don't plan on supporting everything like annotations or the linq syntax (though i found a library that can replace linq expressions with simple code) |
19:54:56 | mipri | most C# is pretty tied to dotnet APIs isn't it? are you translating that to Nim stdlib use as well? |
19:55:17 | * | astronavt joined #nim |
19:58:24 | FromDiscord | <ElegantBeef> Well some of the dotnet api has a 1:1 relation to nim |
19:58:29 | kobi7_ | yes, that's true |
19:58:40 | kobi7_ | but there is now dotnet core which is open source |
19:58:55 | FromDiscord | <ElegantBeef> I've thought about Nim -> C# and some things are pretty difficult to replicate |
19:58:55 | kobi7_ | and you can easily disassemble the dll's dotnet produces back into C# |
19:59:19 | kobi7_ | so we may have something like a stdlib alternative |
19:59:39 | kobi7_ | (unless it relies on unmanaged code) |
19:59:58 | FromDiscord | <ElegantBeef> Well let's be honest the only important things are dictonaries, lists and the standard library 😄 |
20:00:11 | * | siulManfroni joined #nim |
20:00:12 | kobi7_ | ElegantBeef, what things are difficult to replicate? |
20:00:25 | * | siul_ quit (Read error: Connection reset by peer) |
20:00:28 | FromDiscord | <ElegantBeef> Could always use a `[NimStub]` which allows you to create an empty statement for anything the api doesnt support |
20:00:51 | FromDiscord | <ElegantBeef> Well procs/methods are complicated to reason about where to put them since we can declare them anywhere |
20:01:29 | FromDiscord | <ElegantBeef> You could make all procs extension methods and static methods inside the class, and methods as member functions |
20:01:40 | kobi7_ | yes, types and methods will be separate like Nim always does. so basically once we know all the structure, including extension methods |
20:01:57 | kobi7_ | then we generate from that knowledge, from that tree. |
20:02:08 | FromDiscord | <ElegantBeef> Well i'm talking about Nim -> C# 😄 |
20:02:25 | FromDiscord | <Yardanico> Don't forget that you can't map interfaces to Nim concepts |
20:02:30 | kobi7_ | i think we have to use oop here, base pragma etc. but that will be just one modification, even if i get it wrong, it's just one place in the code to change. |
20:02:33 | FromDiscord | <Yardanico> You'll need to do something like in the streams module |
20:02:47 | FromDiscord | <Yardanico> a object with pointers to procedures |
20:02:56 | FromDiscord | <ElegantBeef> I think that's where a `[NimStub]` attribute will come in handy |
20:03:10 | kobi7_ | Yardanico: why can't we map interfaces to concepts? |
20:03:13 | FromDiscord | <ElegantBeef> Yes you'll have to do write the code twice, but it means you dont have to wrap 1:1 |
20:03:22 | FromDiscord | <Yardanico> Because concepts are compiletime only |
20:03:23 | FromDiscord | <ElegantBeef> Interfaces in C# are runtime usuable, concepts are compiletime |
20:03:26 | FromDiscord | <Yardanico> They don't exist at runtime |
20:03:38 | FromDiscord | <Yardanico> You can't have a seq of a concept type |
20:03:50 | * | siulManfroni quit (Client Quit) |
20:04:06 | * | Vladar quit (Quit: Leaving) |
20:04:11 | FromDiscord | <ElegantBeef> There are alternatives to interfaces like you have a `proc(a: T): A` as a field then assign that |
20:04:19 | * | oprypin quit (Read error: Connection reset by peer) |
20:04:22 | * | FromGitter quit (Read error: Connection reset by peer) |
20:04:26 | * | oprypin_ joined #nim |
20:04:38 | * | FromGitter joined #nim |
20:05:10 | kobi7_ | Yardanico: I think in runtime, c# replaces the interface with actual objects right? and they have to match it during CT. am i wrong here? |
20:05:25 | FromDiscord | <Yardanico> but it's still different |
20:05:37 | FromDiscord | <ElegantBeef> The point is you can have a list of interfaces in C#, you cannot have a list of concepts in nim |
20:06:00 | kobi7_ | why can't we? generic T : IConcept ? |
20:06:02 | FromDiscord | <ElegantBeef> You can look at the streams module if you want to see an example of the alternative i mentioned |
20:06:28 | FromDiscord | <ElegantBeef> Sequences are runtime constructs, and because of that the compiletime concepts arent accessible |
20:06:58 | FromDiscord | <Yardanico> @kobi7_ because concepts are resolved at compile time, they're like an extension of generics right now |
20:07:07 | * | narimiran quit (Ping timeout: 258 seconds) |
20:07:10 | FromDiscord | <ElegantBeef> You can make a proc that takes a concept, since procs are reasoned about at compile time, but not a sequence since it doesnt exist at runtime |
20:08:51 | kobi7_ | ok, these issues will need to be figured out. maybe we make a list of sample code or even just a line of c#, and its equivalent in Nim. |
20:09:51 | kobi7_ | in C# i used to build my code around interfaces actually, they were something like a design tool and compile time checking wrt progress |
20:10:46 | kobi7_ | Nim does that at compile time, checks that the object has all it needs to perform in the call site, i.e in the proc it's being used in |
20:11:37 | kobi7_ | Are there any downsides to OOP in Nim? like, things that don't work well enough? |
20:13:16 | FromDiscord | <ElegantBeef> Interfaces 😄 |
20:14:42 | kobi7_ | ElegantBeef, i don't know how Nim would do abstract classes, interfaces, method overrides, calling base (java's super keyword), etc. |
20:15:37 | kobi7_ | but, once the code is checked to compile, truth is, we don't really need them, just the actual implementations. |
20:16:37 | kobi7_ | know what i mean? but my thinking right now is just get the code as similar as possible |
20:18:41 | kobi7_ | ok, gtg, thanks for the input |
20:19:31 | * | stefantalpalaru quit (Changing host) |
20:19:31 | * | stefantalpalaru joined #nim |
20:20:53 | FromDiscord | <ElegantBeef> Well something like this is what you could do for interfaces |
20:20:54 | FromDiscord | <ElegantBeef> https://play.nim-lang.org/#ix=2BxR |
20:20:59 | FromDiscord | <ElegantBeef> But buh bye |
20:22:50 | FromDiscord | <Yardanico> We have procCall for base methods |
20:24:53 | kobi7_ | ElegantBeef, cool example. i think this would be enough for interfaces |
20:27:32 | * | PMunch quit (Quit: leaving) |
20:27:51 | kobi7_ | yes, Yardanico, so it means more info about class needs to be available to nim side. i think from c# declaration of class, i can store the parent part. |
20:28:10 | kobi7_ | class A : B (inherits from B) |
20:29:04 | kobi7_ | i think even if i only implement small parts, it can already be useful for porting efforts. |
20:29:15 | kobi7_ | ok, good night guys |
20:29:19 | * | kobi7_ quit (Quit: Leaving) |
20:29:30 | FromDiscord | <ElegantBeef> Buh bye for reals now? |
20:40:33 | FromDiscord | <scott> I saw an example a while back which used macros to add class syntax to nim. I remember thinking it was cute at the time, but I want to look at it again because it's a good example. I can't find it though. |
20:41:21 | FromDiscord | <ElegantBeef> Eh https://github.com/bluenote10/oop_utils? |
20:42:37 | FromDiscord | <scott> weird, it was just a simple example as a part of a tutorial I could swear |
20:43:27 | FromDiscord | <ElegantBeef> No clue then, i know the otherday i basically made a `class` macro which did fuckall |
20:43:32 | leorize[m]1 | IIRC there's one on nim by example |
20:43:50 | FromDiscord | <scott> yup that was it thanks so much leorize |
21:04:56 | FromDiscord | <scott> Is there anywhere where the feature of not requiring parentheses for proc calls is documented? https://play.nim-lang.org/#ix=2Byk what are its limitations? |
21:05:41 | leorize[m]1 | the term to look for is "command call syntax" |
21:06:02 | leorize[m]1 | we have terrible discoverability :P |
21:06:20 | leorize[m]1 | ~command |
21:06:20 | disbot | no footnotes for `command`. 🙁 |
21:07:41 | leorize[m]1 | ~command is command invocation syntax, which is the ability to omit braces from routine calls: https://nim-lang.org/docs/manual.html#procedures-command-invocation-syntax |
21:07:42 | disbot | command: 11command invocation syntax, which is the ability to omit braces from routine calls: https://nim-lang.org/docs/manual.html#procedures-command-invocation-syntax |
21:09:14 | FromDiscord | <scott> thanks |
21:09:39 | * | solitudesf quit (Remote host closed the connection) |
21:09:57 | FromDiscord | <scott> so you can do `foo bar 1, baz 2, jazz 3` as long as `foo` makes the line a statement? |
21:10:00 | * | solitudesf joined #nim |
21:10:34 | FromDiscord | <scott> but otherwise it's limited to 1 (without MCS) or 2 args (with method call syntax)? |
21:10:56 | FromDiscord | <Clyybber> yep |
21:11:11 | FromDiscord | <scott> 👍 |
21:11:40 | FromDiscord | <scott> _begins writing code with only 1 or two arguments per proc exclusively 😁_ |
21:17:38 | FromDiscord | <nikki> fond memories of tcl |
21:21:47 | Yardanico | !status |
21:21:48 | FromDiscord | Uptime - 1 day, 1 hour, and 45 minutes |
21:29:27 | FromDiscord | <Yardanico> btw, the jetbrains nim plugin author fixed the issue I reported with discard quite quickly, and responded about nimsuggest @leorize |
21:29:29 | FromDiscord | <Yardanico> "Nimsuggest will definitely be integrated, but it's not trivial, as there is a lot of stuff, like refactoring, which will be hard to get with nimsuggest. So my approach is to support as much as possible through our language support API and than provide the rest of functionality through nimsuggest." |
21:30:20 | leorize[m]1 | pitch them about PMunch's nimlsp and ask if they wanna help out :P |
21:30:49 | FromDiscord | <Yardanico> actually right, it might be easier for them to use LSP instead of talking with nimsuggest directly |
21:33:45 | FromDiscord | <Yardanico> yeah, made a comment about nimlsp |
21:36:47 | FromDiscord | <Yardanico> seems like they don't have official LSP plugins in JetBrains IDEs though |
21:37:02 | FromDiscord | <Yardanico> there's https://github.com/gtache/intellij-lsp and https://github.com/ballerina-platform/lsp4intellij though |
21:37:20 | FromDiscord | <Yardanico> wait you can then use nim plugin in jetbrain IDEs just fine with these 🤔 |
21:37:25 | FromDiscord | <Yardanico> since syntax highlighting is already there |
21:38:40 | FromDiscord | <ElegantBeef> I'm a little suprised they dont have LSP support built in |
21:39:02 | FromDiscord | <Yardanico> they rely on their own modules too much :) |
21:39:14 | FromDiscord | <Yardanico> although it makes sense, they have a lot of experience and IDEs already released |
21:39:23 | leorize[m]1 | I guess they wanted "immersive and integrated experience" |
21:39:33 | leorize[m]1 | and LSP is designed for VSCode :P |
21:39:42 | * | bung joined #nim |
21:39:45 | FromDiscord | <ElegantBeef> Yea i know, but with the fact they have all this support for all these langauges you'd think they'd implement LSP as a holdover untill a real plugin gets made |
21:40:44 | FromDiscord | <ElegantBeef> Isnt more VScode standardized it, and it's meant as a general purpose I/O for editors? |
21:42:29 | FromDiscord | <Yardanico> from a forum post asking about LSP related to kotlin in 2017 |
21:42:30 | FromDiscord | <Yardanico> "The LSP doesn’t allow to build outstanding support for a language, it allows to build the “least common denominator” support only." |
21:42:36 | FromDiscord | <Yardanico> exactly what leorize said :) |
21:42:44 | FromDiscord | <Yardanico> "We can develop our product far more efficiently if we can build the features we need as part of our product directly, not as extensions to a third-party protocol. Also, the quality of experience of people developing Kotlin in IntelliJ IDEA is far more important to us than the usefulness of our open source code to the community of developers not using IntelliJ IDEA." |
21:43:12 | FromDiscord | <Yardanico> https://discuss.kotlinlang.org/t/any-plan-for-supporting-language-server-protocol/2471/19 |
21:43:32 | FromDiscord | <ElegantBeef> Yea i understand that they want much finer control, but a LSP would allow that holdover i mentioned |
21:43:49 | FromDiscord | <Yardanico> well but they don't advertise the nim plugin anyway |
21:43:56 | FromDiscord | <Yardanico> It's in "beta" if we were to be honest |
21:44:09 | * | solitudesf quit (Ping timeout: 260 seconds) |
21:44:32 | FromDiscord | <Yardanico> if you add LSP officially, then people will start (ab)using it and complaining about it :) |
21:44:32 | FromDiscord | <ElegantBeef> Yea i know, my point is (Insert new language here) could have a LSP then just have jetbrains support, until they get around to making a plugin if they so wish |
21:44:47 | FromDiscord | <ElegantBeef> Since they're in the IDE market, i'd expect they want people to do that 😄 |
21:44:56 | FromDiscord | <Yardanico> well there is a LSP plugin for their IDEs |
21:45:20 | FromDiscord | <ElegantBeef> Not first party though, which is where i'm confused about |
21:46:41 | FromDiscord | <Yardanico> it's working btw https://media.discordapp.net/attachments/371759389889003532/768591112469741568/unknown.png |
21:46:59 | FromDiscord | <ElegantBeef> Noice |
21:47:16 | FromDiscord | <ElegantBeef> I tried a bunch of editors and really sublime was super nice, but nonfree so 😦 |
21:47:26 | FromDiscord | <Yardanico> I just installed the plugin and did this https://media.discordapp.net/attachments/371759389889003532/768591300710236180/unknown.png |
21:47:34 | FromDiscord | <Yardanico> in the plugin configs |
21:47:35 | FromDiscord | <Yardanico> and it's working |
21:49:13 | FromDiscord | <Yardanico> seems like the nim plugin and LSP client are conflicting a bit about go to definition |
21:50:23 | * | tane quit (Quit: Leaving) |
21:50:47 | FromDiscord | <speckledlemon> The fact that JetBrains can provide very advanced refactoring features and programming aids for Kotlin is just enough of a reason to use IntelliJ, so of course LSP isn't advantageous to them, but it is to users who don't want to use their products (yes I know I'm stating the obvious) |
21:51:02 | FromDiscord | <Yardanico> https://media.discordapp.net/attachments/371759389889003532/768592203622514708/unknown.png |
21:53:00 | FromDiscord | <Yardanico> https://youtrack.jetbrains.com/issue/NIM-3 |
21:54:06 | FromDiscord | <ElegantBeef> Yea that's kinda my point speckled, they could offset vscode as a general purpose editor 😄 |
21:54:16 | FromDiscord | <Yardanico> their IDEs are mostly paid except a few |
21:54:20 | FromDiscord | <Yardanico> pycharm/intellij community editions |
21:54:46 | FromDiscord | <ElegantBeef> As a C# user i know that too wel 😛 |
21:54:51 | FromDiscord | <ElegantBeef> (edit) "wel" => "well" |
21:55:27 | FromDiscord | <Yardanico> btw @speckledlemon I would be surprised if they didn't provide good support for Kotlin since they're an IDE company and they created Kotlin :D |
21:55:46 | FromDiscord | <speckledlemon> so exactly what I said |
21:56:16 | FromDiscord | <speckledlemon> (actually my hidden message is that I think the editor itself is the worst part of their products and can't stand using them) |
21:56:33 | * | vicfred joined #nim |
21:56:43 | FromDiscord | <Yardanico> well I don't think it's bad, it's just pretty heavy :) |
21:57:14 | bung | does a program consume stable memory usage is big thing for performance ? |
21:58:36 | FromDiscord | <Yardanico> well it improves performance if the program doesn't allocate/deallocate memory often |
21:58:52 | FromDiscord | <Yardanico> not the stable memory consumption, but reduction of allocs/deallocs |
21:59:51 | bung | ah, I see that's related ,thanks! |
22:02:16 | FromDiscord | <ElegantBeef> Pooling is an important method performance savings 😄 |
22:02:57 | FromDiscord | <Yardanico> https://youtrack.jetbrains.com/issue/NIM-13 just thinking of issues I can report :) |
22:03:04 | FromDiscord | <Recruit_main707> @Yardanico wait, last time i checked, lsp didnt work |
22:03:08 | FromDiscord | <Yardanico> @Recruit_main707 it works just fine |
22:03:21 | FromDiscord | <Yardanico> I installed https://plugins.jetbrains.com/plugin/10209-lsp-support |
22:03:23 | FromDiscord | <Recruit_main707> which one of the two plugins you used |
22:03:31 | FromDiscord | <Recruit_main707> thx |
22:03:34 | FromDiscord | <Yardanico> and did this https://media.discordapp.net/attachments/371759389889003532/768595358354898944/unknown.png |
22:03:38 | FromDiscord | <Yardanico> in settings |
22:04:01 | FromDiscord | <Recruit_main707> id say this one is the one i tried already... |
22:04:25 | FromDiscord | <Yardanico> well it works for me in CLion |
22:05:07 | bung | I guess it's about nim version |
22:05:50 | FromDiscord | <Recruit_main707> trying again |
22:06:13 | FromDiscord | <ITR> why does nim think shuffle can have side effects, but not that seq.add can? https://play.nim-lang.org/#ix=2Byz |
22:06:32 | FromDiscord | <Yardanico> because shuffle uses a global PRNG instance |
22:07:21 | FromDiscord | <Yardanico> no error here |
22:07:22 | FromDiscord | <Yardanico> sent a code paste, see https://play.nim-lang.org/#ix=2ByA |
22:07:30 | FromDiscord | <ElegantBeef> yea adding onto the result is by definition no side effect |
22:07:32 | FromDiscord | <Yardanico> but you'll have to provide the seed to Shuffled of course if you want the results to be random :) |
22:07:40 | FromDiscord | <ElegantBeef> If functions couldnt change the result values it's not very useful |
22:08:07 | FromDiscord | <ITR> ah, right, random mutates, lol |
22:09:38 | FromDiscord | <Yardanico> also I'd suggest you to try out strictFuncs |
22:09:44 | FromDiscord | <Recruit_main707> yay, it works, its super ugly that there is no spacing between the function name and the function type though https://media.discordapp.net/attachments/371759389889003532/768596911681962054/unknown.png |
22:09:52 | FromDiscord | <Yardanico> https://nim-lang.org/docs/manual_experimental.html#strict-funcs |
22:10:04 | FromDiscord | <ITR> ah, nice, ty ^^ |
22:10:06 | FromDiscord | <Yardanico> it adds deep immutability to refs in funcs |
22:10:09 | FromDiscord | <nikki> @Yardanico does that hover info thing work on the first mention of a name? like the `blah` in in the `let blah = someFoo()` |
22:10:21 | FromDiscord | <Yardanico> that won't work obviously |
22:10:30 | FromDiscord | <Yardanico> because nimsuggest doesn't support that |
22:10:32 | FromDiscord | <nikki> dang (also doesn't work in nimsuggest ya) |
22:10:40 | FromDiscord | <nikki> oh i thought they were not impl'ing with nimsuggest |
22:10:40 | FromDiscord | <Yardanico> nimlsp is built on nimsuggest |
22:10:44 | FromDiscord | <Yardanico> it can't support more than nimsuggest |
22:10:55 | FromDiscord | <nikki> i was talking about jetbrains' nim thingy |
22:10:58 | FromDiscord | <nikki> that doesn't use nimlsp right |
22:11:05 | FromDiscord | <Recruit_main707> no |
22:11:14 | FromDiscord | <Recruit_main707> but you can use both at the same time |
22:11:14 | FromDiscord | <Yardanico> @nikki it doesn't have any autocompletion at all yet |
22:11:24 | FromDiscord | <Yardanico> well, only simple text-based |
22:11:28 | FromDiscord | <Yardanico> it doesn' |
22:11:44 | FromDiscord | <Yardanico> (edit) "doesn'" => "doesn't have advanced features like go to definition (for other files), autocompletion, hovering, etc" |
22:11:51 | FromDiscord | <nikki> https://discord.com/channels/371759389889003530/371759389889003532/768592205551501363 this was using nimlsp? |
22:12:27 | FromDiscord | <Yardanico> this is using that nim plugin + LSP plugin for jetbrains IDEs + nimlsp |
22:12:38 | FromDiscord | <Yardanico> and nimlsp provides that hovering info |
22:13:44 | FromDiscord | <nikki> got it |
22:14:35 | FromDiscord | <Recruit_main707> ill use it as a quickfix until they have it implemented in the plugin |
22:15:03 | * | unihernandez22 joined #nim |
22:16:42 | FromDiscord | <Recruit_main707> @Yardanico what i couldnt get to work was the lsp with .nims and .nimble files |
22:16:54 | FromDiscord | <Yardanico> it won't work anyway |
22:17:15 | FromDiscord | <Yardanico> well you can try |
22:17:18 | FromDiscord | <Yardanico> just add another extension |
22:17:34 | FromDiscord | <Yardanico> ahh you mean your issue |
22:17:59 | FromDiscord | <Yardanico> yeah I've seen it, but it's not really related to LSP, is it? |
22:18:19 | * | unihernandez22 quit (Remote host closed the connection) |
22:18:26 | FromDiscord | <Recruit_main707> im not sure |
22:18:56 | FromDiscord | <Yardanico> I don't think nimsuggest supports nims/nimble properly |
22:19:24 | FromDiscord | <Xephobia> @flywind i'm way to late, but thanks for the help! hoewer, the "optimimisations" make the output unreadable... but thanks for trying! |
22:21:03 | FromDiscord | <William_CTO> I have a json string of `{...,"args":["thing1","thing2"]}`, but how do I get the array of args once I've parse it.↵`result.args = dataJson["args"].getElems()` raises an error of type mismatch `seq[strings]` |
22:21:22 | FromDiscord | <Yardanico> can you show the error in full? |
22:21:28 | FromDiscord | <Yardanico> ah I know why |
22:21:43 | FromDiscord | <Yardanico> because getElems returns a seq of JsonNode (because json has heterogenous arrays), so you need to convert them all to nim strings first |
22:21:48 | FromDiscord | <William_CTO> type mismatch: got <seq[JsonNode]> but expected 'seq[string]' |
22:22:01 | FromDiscord | <Yardanico> one way (not the most efficient but will work ok for most cases) is to do something like |
22:22:24 | FromDiscord | <Yardanico> sent a code paste, see https://play.nim-lang.org/#ix=2ByH |
22:22:53 | FromDiscord | <William_CTO> Thanks. Why is map called mapIt? |
22:23:08 | FromDiscord | <Yardanico> because it's a template that injects "it" for you to use |
22:23:24 | FromDiscord | <Yardanico> there's normal `map` but it's "less comfortable" to use since it requires you to provide an anonymous proc |
22:23:42 | FromDiscord | <Yardanico> https://nim-lang.org/docs/sequtils.html#map%2CopenArray%5BT%5D%2Cproc%28T%29 vs https://nim-lang.org/docs/sequtils.html#mapIt.t%2Ctyped%2Cuntyped |
22:24:15 | FromDiscord | <William_CTO> My type for args is `seq[string]` should I chose a different type? |
22:24:34 | FromDiscord | <Yardanico> well, that question is unanswerable out of context :) |
22:24:39 | FromDiscord | <Yardanico> I don't even know what you're using it for |
22:25:03 | FromDiscord | <William_CTO> Fair enough |
22:25:16 | FromDiscord | <Yardanico> If it's for config files, I'd choose TOML |
22:25:58 | FromDiscord | <William_CTO> Thank you very much |
22:26:20 | FromDiscord | <William_CTO> I'm extending and experimenting with the chap application in Nim in Action |
22:26:46 | FromDiscord | <William_CTO> I'm adding some commands to the chat app like one to change your username |
22:27:20 | FromDiscord | <Yardanico> well, can't you just make an object variant for different types of commands? |
22:27:22 | FromDiscord | <William_CTO> But I just found a better way to do it. Have the server parse the messages with `/` in front instead of sending a different json aray |
22:27:26 | FromDiscord | <Yardanico> nim's json module serializes them just fine |
22:27:38 | FromDiscord | <Yardanico> @William_CTO yeah that'll work too |
22:27:43 | FromDiscord | <William_CTO> 👍 |
23:02:02 | FromDiscord | <Rebel> Do people prefer the intellij nim plugin over the vs code plugin? Or is it subjective and they are both pretty good. |
23:05:12 | FromDiscord | <Yardanico> it's in early development yet, vscode plugin is better |
23:05:27 | FromDiscord | <Yardanico> (edit) "it's ... indevelopment," added "still" | "development yet," => "development," |
23:43:09 | * | CcxWrk quit (Ping timeout: 260 seconds) |
23:44:02 | * | CcxWrk joined #nim |
23:48:21 | * | casaca quit (Ping timeout: 246 seconds) |
23:49:56 | * | JStoker quit (Ping timeout: 240 seconds) |
23:50:30 | * | CcxWrk quit (Excess Flood) |
23:50:38 | avatarfighter[m] | Rebel: The Jetbrains plugin is still really basic but just the reference finding feels light years ahead of the the vscode plugin even though the Jetbrains plugin doesn't allow you to find references across files |
23:51:03 | * | JStoker joined #nim |
23:51:03 | * | CcxWrk joined #nim |
23:51:33 | * | stefantalpalaru_ joined #nim |
23:52:05 | * | arecacea1 quit (Remote host closed the connection) |
23:52:27 | * | stefantalpalaru quit (Ping timeout: 260 seconds) |
23:54:11 | * | arecacea1 joined #nim |
23:57:16 | * | desai[m] joined #nim |