<< 21-10-2020 >>

00:00:06FromDiscord<MiniApple> i like pure code
00:00:07FromDiscord<ElegantBeef> Ah you want a more barebones framework?
00:00:27FromDiscord<MiniApple> barebones?
00:00:28FromDiscord<ElegantBeef> Got Paranim, Rapid, Nico
00:00:50FromDiscord<ElegantBeef> No gui editor/ sceneview
00:01:13FromDiscord<MiniApple> hmm
00:01:35FromDiscord<MiniApple> is raylib game engine?
00:01:54FromDiscord<MiniApple> or game framework?
00:02:05FromDiscord<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:43FromDiscord<MiniApple> ~~i see~~
00:02:50FromDiscord<MiniApple> i like game library
00:03:39FromDiscord<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:08FromDiscord<MiniApple> ok
00:20:55disruptekscott: tell me more about what's good with crystal.
00:22:33FromDiscord<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:41disruptekcool.
00:26:00FromDiscord<Adrielle> hiya
00:26:25FromDiscord<Adrielle> wow, lotta nim fans
00:27:24FromDiscord<Adrielle> I'm thinking of moving my code base to nim, i had some questions. Anybody around?
00:27:48disruptekyeah, there are a few bozos here.
00:27:56disruptekalso, /i'm/ here.
00:28:43FromDiscord<Adrielle> 😦
00:29:07FromDiscord<Adrielle> bummersauce
00:29:08leorize[m]1there are a lot of people around. please ask your questions :)
00:31:48FromDiscord<Adrielle> So I have a distributed robotics system thats written mostly in python/cython/and some c modules
00:32:35FromDiscord<Adrielle> it utilizes something similar to an actor system or microservices to coordinate p2p
00:32:59FromDiscord<Adrielle> the compute bottleneck is the underlying graph system.
00:33:27FromDiscord<Adrielle> I need to migrate away from the c-based,python wrapped graph library to something faster
00:33:41disruptekwhich c-based graph lib is it?
00:33:49FromDiscord<Adrielle> networkit
00:34:13disruptekhow big is your graph?
00:34:20FromDiscord<Adrielle> we need a faster, distributed solution that is cross platform
00:34:24FromDiscord<Adrielle> 1 billion+ nodes
00:34:44FromDiscord<Adrielle> it needs to be larger for our experiment
00:35:16disrupteki don't know of anything mature or even moderately advanced.
00:35:34FromDiscord<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:40disruptekis networKit lpg now?
00:36:07leorize[m]1@mratsim might know a thing or two
00:36:14leorize[m]1I expect that Status gotta do this stuff do
00:36:36disruptekhe has a compute graph, yes, but i don't think it's a graph graph.
00:37:15disrupteki think your approach would be easiest.
00:37:27FromDiscord<MiniApple> how to install nim library?
00:37:35disruptekwhich one?
00:37:46FromDiscord<MiniApple> sdl2
00:37:52FromDiscord<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:53disruptekwhat have you tried so far?
00:38:10disrupteknim has about the best ffi that you're likely to find.
00:38:12FromDiscord<MiniApple> why the bot can talk
00:38:19FromDiscord<ElegantBeef> Cause it's a bridge
00:38:34FromDiscord<Yardanico> @MiniApple because it's not a bot :)
00:38:37FromDiscord<MiniApple> lol
00:38:37FromDiscord<Adrielle> i would then use the nim zmq lib to create our distributed system
00:38:45FromDiscord<Yardanico> the bridge is using webhooks to do IRC->Discord
00:38:45FromDiscord<Adrielle> yea took me a sec as well lol
00:39:02leorize[m]1shush, let they think we figured out super advanced AI systems :P
00:39:05disruptekdo you already have a zmq requirement? because i think we have some newer, lighter stuff.
00:39:06FromDiscord<Yardanico> haha
00:39:07FromDiscord<MiniApple> hmm
00:39:16FromDiscord<Adrielle> really?
00:39:33FromDiscord<MiniApple> why someone is talking with bot
00:39:41FromDiscord<ElegantBeef> Cause they arent using discord
00:39:43FromDiscord<Adrielle> no i don't, zmq just a fan fav
00:39:47FromDiscord<MiniApple> hmm
00:39:53FromDiscord<Yardanico> @MiniApple it's not a "bot"
00:39:55FromDiscord<Yardanico> they are people from IRC
00:39:56FromDiscord<Adrielle> they are talking through a bot
00:39:59FromDiscord<Yardanico> !repo ircord
00:39:59disbothttps://github.com/Yardanico/ircord -- 9ircord: 11Discord <-> IRC bridge in Nim 15 9⭐ 1🍴
00:40:02FromDiscord<ElegantBeef> You can use matrix, gitter, irc, and so forth through the bridge
00:40:02FromDiscord<MiniApple> IRC?
00:40:02disruptek!reo mqtt
00:40:06FromDiscord<Yardanico> yes, Internet Relay Chat
00:40:06disruptek!repo mqtt
00:40:07disbothttps://github.com/zevv/nmqtt -- 9nmqtt: 11Native Nim MQTT client library 15 22⭐ 4🍴 7& 5 more...
00:40:13disruptek!repos sdl
00:40:14disbothttps://github.com/nim-lang/sdl2 -- 9sdl2: 11Nim wrapper for SDL 2.x 15 122⭐ 58🍴
00:40:14disbothttps://github.com/Vladar4/sdl2_nim -- 9sdl2_nim: 11Wrapper of the SDL 2 library for the Nim language. 15 103⭐ 16🍴
00:40:15disbothttps://github.com/Vladar4/nimgame -- 9nimgame: 11Simple 2D game engine for Nimrod language. 15 18⭐ 4🍴 7& 18 more...
00:40:20disruptekyour sdl options ^
00:40:38FromDiscord<Yardanico> second one is pretty good
00:40:46FromDiscord<MiniApple> ok
00:40:48FromDiscord<MiniApple> i see
00:41:26FromDiscord<MiniApple> hmm the second that i am trying to install
00:42:42disrupteki have not used zmq or mqtt in nim, only python. zmq is more mature, of course. it's also a little heavier.
00:43:06FromDiscord<MiniApple> zmq?
00:43:20*a_chou joined #nim
00:43:39FromDiscord<ElegantBeef> Did you install nim with choosenim?
00:43:44FromDiscord<Adrielle> wait as compared to what?
00:43:57FromDiscord<MiniApple> no
00:43:58FromDiscord<MiniApple> brew
00:44:00FromDiscord<Adrielle> @disruptek
00:44:08FromDiscord<MiniApple> but i had nimble
00:44:32FromDiscord<ElegantBeef> based off context probably mqtt
00:44:33leorize[m]1how did you install your library and what's the error message?
00:44:45FromDiscord<MiniApple> hmm
00:44:52FromDiscord<MiniApple> i didn't install the library
00:45:15FromDiscord<ElegantBeef> How did you attempt to 😄
00:45:17FromDiscord<Adrielle> oh i see it now whoops thanks
00:45:39FromDiscord<MiniApple> hmm
00:46:03FromDiscord<MiniApple> i tried `nimble install sdl2`
00:46:09FromDiscord<MiniApple> then i installed
00:46:20FromDiscord<ElegantBeef> that will install the first
00:46:25FromDiscord<MiniApple> i know
00:46:35FromDiscord<MiniApple> i sawcthe logs
00:46:39FromDiscord<MiniApple> (edit) "sawcthe" => "saw the"
00:46:42disruptekadrielle: mqtt is a little lighter than zmq.
00:46:54FromDiscord<MiniApple> sent a code paste, see https://play.nim-lang.org/#ix=2Br6
00:46:59user0This discord<->IRC bridge thing is a real good Turing test case explorium tool. Catches them every time.
00:47:04FromDiscord<ElegantBeef> yea you wanted `nimble install sdl2_nim`
00:47:12FromDiscord<MiniApple> i see
00:47:31FromDiscord<Yardanico> @user0 haha :P
00:47:45FromDiscord<Yardanico> @MiniApple you also need to have the SDL2 dlls
00:47:57FromDiscord<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:58FromDiscord<Yardanico> or, if you're on linux, have it installed via your pkg manager
00:48:05FromDiscord<MiniApple> hmm
00:48:06FromDiscord<ElegantBeef> They're on mac i assume since they use brew
00:48:07FromDiscord<MiniApple> i am on mac
00:48:20FromDiscord<MiniApple> i had sdl i think
00:48:23FromDiscord<ElegantBeef> Same thing as linux, use your pkg manager 😄
00:48:29disruptekadrielle: how much time/manpower do you have to devote to this?
00:49:24disrupteknim 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:00FromDiscord<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:14FromDiscord<MiniApple> hmm
00:50:25FromDiscord<MiniApple> ~~how to run nim?~~
00:50:27*TomDotTom joined #nim
00:51:41FromDiscord<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:03FromDiscord<Adrielle> or cpp, looks like two different pragmas
00:52:14FromDiscord<ElegantBeef> The easiest way to run nim code is `nim c -r ./main.nim`
00:52:20disruptekyes, cpp for importing stuff from c++ and c for, uh, c.
00:52:26FromDiscord<MiniApple> ok
00:52:27FromDiscord<Adrielle> lol
00:52:38leorize[m]1you'll probably find https://github.com/mratsim/arraymancer interesting
00:52:46FromDiscord<MiniApple> ~~i was trying `nim -r main.nim`
00:52:48leorize[m]1mratsim figured out how to do cuda in nim
00:52:53disrupteklook at laser.
00:52:54FromDiscord<MiniApple> (edit) "main.nim`" => "main.nim`~~"
00:52:55disruptek!repo laser
00:52:56FromDiscord<Yardanico> @MiniApple it's "nim r main.nim" then
00:52:56disbothttps://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:02FromDiscord<MiniApple> ok
00:53:05FromDiscord<Yardanico> !repo cuda
00:53:05disbothttps://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:10FromDiscord<Yardanico> yeah right
00:53:22FromDiscord<Adrielle> lol wow
00:53:24leorize[m]1mratsim is pretty much the Nim HPC god
00:53:32FromDiscord<Adrielle> thats amazing
00:53:37FromDiscord<Adrielle> laser looks v. cool
00:54:09leorize[m]1We got the #science channel for all this stuff if you're interested :)
00:54:14FromDiscord<Adrielle> yea ive seen arraymancer, looks awesome
00:54:19FromDiscord<ElegantBeef> The arraymancer comparison to other implementation is pretty cool 😄 https://media.discordapp.net/attachments/371759389889003532/768275938177712158/unknown.png
00:54:31FromDiscord<Adrielle> okay yea that sounds great, thanks for letting me hog up you main for a bit
00:54:38FromDiscord<Yardanico> it's totally okay
00:54:47FromDiscord<Adrielle> yea thats the good stuff right there @ElegantBeef
00:54:49FromDiscord<Yardanico> we started creating specific channels relatively recently
00:54:53*a_b_m quit (Quit: Leaving)
00:55:00FromDiscord<ElegantBeef> We were talking about party parrot before you joined, so not really that constructive anyway 😛
00:55:05FromDiscord<Yardanico> all channels in Community are bridged to IRC as well
00:55:21FromDiscord<Adrielle> lmao
00:55:41FromDiscord<Adrielle> i was debating on getting work done or playing grim dawn so hey i hear ya
00:55:48FromDiscord<Adrielle> turns out im in a programming mood
00:56:06leorize[m]1have fun and don't be afraid to ask us questions
00:56:16FromDiscord<ElegantBeef> And ignore 99% of what i say
00:56:19FromDiscord<Adrielle> okay awesome thanks! lol
00:56:34FromDiscord<ElegantBeef> Sorry 99% was to liberal, make it 100%
00:56:48FromDiscord<Yardanico> Never Listen To Beef
00:56:55FromDiscord<Adrielle> lol ill make note of that
00:57:02FromDiscord<Yardanico> (that's his old nickname)
00:57:29FromDiscord<ElegantBeef> Trufth, but that was mostly cause everything i was an assumption, but know i assume all my knowledge
00:57:30FromDiscord<Gyllou> this is my usualy handle
00:57:35FromDiscord<ElegantBeef> (edit) "Trufth, but that was mostly cause everything i ... was" added "said"
00:57:41FromDiscord<ElegantBeef> god damn it
00:57:46FromDiscord<ElegantBeef> I cant fucking spell to mock myself
00:57:56FromDiscord<Yardanico> @Gyllou jokes on you, the bridge uses usernames and not display names :)
00:58:03FromDiscord<Gyllou> lol gotcha
00:58:16FromDiscord<Yardanico> i should fix that but didn't do it yet
00:58:36leorize[m]1well I'm not sure I'm seeing a different name here
00:58:39FromDiscord<ElegantBeef> Probably wise to not use nicknames though so people have atleast some semblence of who is who in bridge
00:58:50FromDiscord<ElegantBeef> Since they dont get pfps or any indication
00:59:00FromDiscord<Gyllou> so i appear as gyllou then right?
00:59:02FromDiscord<Yardanico> no
00:59:07disrupteki get a throbbing sensation in my right testicle.
00:59:12FromDiscord<Yardanico> unless you changed it as your handle and not display name on this server
00:59:14disruptekit's more or less the same.
00:59:15leorize[m]1yes
00:59:17FromDiscord<ElegantBeef> You appear as your discord username
00:59:19FromDiscord<Yardanico> @disruptek :disruptek:
00:59:22disruptekleorize[m]1: you get that too?
00:59:23FromDiscord<Yardanico> :nimDog:
00:59:32FromDiscord<Yardanico> @disruptek https://github.com/Yardanico/nim-quotes
00:59:42disruptekdid you change my emote again?
00:59:46FromDiscord<Yardanico> no its the same
00:59:55FromDiscord<Yardanico> disruptek is your avatar generated by the bridge (robohash)
00:59:56disruptekthe same as what?
01:00:00FromDiscord<ElegantBeef> https://irclogs.nim-lang.org/ you can see what they see here if you care
01:00:02FromDiscord<Yardanico> dog is your github avatar
01:00:32*Tanger joined #nim
01:00:38FromDiscord<Gyllou> cool cool
01:00:50disruptekwhy is :disruptek: even a thing, then?
01:00:58FromDiscord<Yardanico> why not? :D
01:01:18disrupteknone-more-disruptek.
01:01:42disrupteki'm kinda curious how fast networkit is nowadays.
01:02:11FromDiscord<Gyllou> its pretty fast if you get creative
01:02:33FromDiscord<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:36disrupteklooks like it's all native anyway.
01:03:14FromDiscord<Gyllou> yea it is, we just create multiple graphs and link them heirarchically to distribute it
01:03:20FromDiscord<Gyllou> heirarchi....wtv that word
01:03:34FromDiscord<ElegantBeef> A inverted tree 😛
01:03:43FromDiscord<Gyllou> Bass-ically
01:03:48disrupteki started writing a graph db but it's only a crude toy so far.
01:04:06disruptekbasically just so i can start writing software against it.
01:04:10FromDiscord<Gyllou> we are trying to implement a hypergraph system, but... networkit isnt gonna cut it
01:04:27disruptekwhat's the endgame for all this?
01:04:45FromDiscord<Gyllou> we are a humanoid robotics research company 🙂
01:04:58disruptekokay, but what does the graph do?
01:05:02FromDiscord<Gyllou> 😛
01:05:09FromDiscord<ElegantBeef> Ah better than a robotic human research company
01:05:09disruptekanyone can consume large amounts of memory. 😁
01:05:12FromDiscord<Yardanico> @Gyllou you can also get more discussion if you post it on the nim forum :P
01:05:13FromDiscord<Yardanico> ~forum
01:05:14disbotforum: 11Nim has a forum at https://forum.nim-lang.org/ -- ask @dom96 for help with any account issues.
01:05:27FromDiscord<Yardanico> i mean your questions
01:05:43FromDiscord<Gyllou> yea honestly we are trying to see if we wanna keep stuff more proprietary or release it
01:06:10FromDiscord<Gyllou> in a gist tho, its a temporal knowledge graph
01:07:09disrupteki assume it has to run on robot hardware?
01:07:42disruptekoffline but distributed across the swarm?
01:07:48FromDiscord<Gyllou> partially, also runs on a cluster
01:08:10disruptekoh, so there are some agency nodes and some is just cluster?
01:08:18FromDiscord<Gyllou> yep
01:08:28disruptekyou should look at gun db, too.
01:08:38FromDiscord<Gyllou> we call them appendages and agents
01:08:40disruptekit's something i want to impl in nim.
01:09:15disruptekignore the graph db part of it and just focus on the consensus tech.
01:09:28disruptekanyway, just my naive thoughts.
01:10:29FromDiscord<Gyllou> we have alot of plans for it, hardware research is also pretty time consuming
01:10:59disruptekwell, lemme know when you're hiring.
01:11:04FromDiscord<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:17FromDiscord<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:41disruptekit would be a gamble, no question.
01:12:51disruptekfor some, nim is a secret weapon, though.
01:13:18FromDiscord<Gyllou> yea it would definitely speed up development relative to cpp/c
01:16:32leorize[m]1what other languages have you looked at prior to nim?
01:17:27FromDiscord<Gyllou> its mainly c/cpp or nim
01:17:49FromDiscord<Gyllou> im personally not a fan of rust, which would probably be the obvious other option
01:18:28disruptekomg mangling is green.
01:18:39FromDiscord<ElegantBeef> Congrats
01:19:29FromDiscord<Yardanico> omg what
01:19:34disruptekSHIP IT
01:19:46FromDiscord<Yardanico> OEOEOE?E?
01:20:01leorize[m]1omg you figured it out?
01:20:19disruptekhonestly, it's pretty horrible.
01:20:33leorize[m]1it works, that's the important part
01:20:38*a_chou joined #nim
01:20:44leorize[m]1now you know all the stupid problems so you can design a better one :P
01:21:08disruptekare you kidding? i find new stupid problems every day.
01:21:36disruptekclyybber was very helpful in arguing for compromise, though.
01:22:09leorize[m]1you'll have him in a few hours once he woke up
01:22:32disrupteki 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:44FromDiscord<MiniApple> does nim have class
01:30:57FromDiscord<MiniApple> or just object
01:31:03leorize[m]1no and we don't need it
01:31:11*JStoker quit (Ping timeout: 244 seconds)
01:31:26FromDiscord<MiniApple> sad
01:31:40leorize[m]1why would you want class?
01:31:42FromDiscord<ElegantBeef> Nim's UFCS replicated the logic of a class other than the grouped declaration
01:31:49FromDiscord<MiniApple> ~~cuz i like class~~
01:31:57disrupteki'm classless and look how successful i've been.
01:32:06disruptekoh wait.
01:32:48FromDiscord<MiniApple> hmm
01:32:51FromDiscord<MiniApple> what do you mean
01:32:55leorize[m]1~mcs
01:32:56disbotmcs: 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:05FromDiscord<MiniApple> what is difference between proc and methods
01:34:16FromDiscord<ElegantBeef> One is for object inheritance + overriding
01:34:20FromDiscord<ElegantBeef> That'd be method
01:34:26FromDiscord<MiniApple> ok
01:34:40FromDiscord<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:41FromDiscord<MiniApple> how to use methods for a object
01:34:57disruptekit's more about what object you use with methods.
01:34:59FromDiscord<MiniApple> hmm
01:35:01FromDiscord<MiniApple> wait what
01:35:07disruptekfor example, the tantric methods.
01:35:22FromDiscord<MiniApple> werid
01:35:26FromDiscord<MiniApple> (edit) "werid" => "weird"
01:35:26FromDiscord<ElegantBeef> Nim's function call syntax allows you to call procs as if they're member functions
01:35:26FromDiscord<Yardanico> @MiniApple nim doesn't need classes
01:35:44FromDiscord<Yardanico> if you need classes for object.method() syntax, nim has Method Call Syntax for that
01:35:55FromDiscord<MiniApple> ok
01:35:56FromDiscord<ElegantBeef> So all functions can be called like C# extension methods `procName(object)` or members `object.procName`
01:35:58FromDiscord<Yardanico> if you need inheritance with dynamic dispatch, there's inheritance and `method` which does dynamic dispatch
01:36:05FromDiscord<Yardanico> I think you should read Nim tutorials first :)
01:36:09FromDiscord<ElegantBeef> ^
01:36:14leorize[m]1~tut
01:36:14disbotno footnotes for `tut`. 🙁
01:36:24FromDiscord<ElegantBeef> https://nim-lang.org/docs/tut1.html
01:36:29FromDiscord<Yardanico> ~tutorial
01:36:29disbottutorial: 11intro to sacred manuscripts: https://nim-lang.org/docs/tut1.html
01:36:40FromDiscord<Yardanico> ~test
01:36:40disbotno footnotes for `test`. 🙁
01:36:46FromDiscord<Yardanico> ~disruptek
01:36:46disbotdisruptek: 11a sexy fella with magic hands.
01:36:47disbotdisruptek: 11don't listen to him
01:36:47disbotdisruptek: 11an unsafe nil deref
01:37:16FromDiscord<MiniApple> what is block
01:37:38leorize[m]1a way to create a scope
01:38:18FromDiscord<MiniApple> hmm
01:38:43FromDiscord<Yardanico> https://nim-lang.org/docs/manual.html explains most of nim features you might ask about
01:38:57FromDiscord<Yardanico> but yeah, I'd recommend you to read resources in https://nim-lang.org/learn.html
01:39:02FromDiscord<Yardanico> like "nim basics"
01:39:08FromDiscord<MiniApple> lol
01:40:04FromDiscord<MiniApple> hmm
01:40:12FromDiscord<MiniApple> in nim we can make a new operator?
01:40:44FromDiscord<ElegantBeef> Yes
01:41:11FromDiscord<MiniApple> wtf
01:41:55FromDiscord<Yardanico> why "wtf" ? :) it allows for very cool things
01:42:05FromDiscord<ElegantBeef> It could be wtf in a mesmerized wait
01:42:07FromDiscord<ElegantBeef> (edit) "wait" => "way"
01:42:12FromDiscord<Yardanico> there's routine overloading (proc, method, etc) as well
01:42:24FromDiscord<Yardanico> as I said, reading the manual will let you know how many cool stuff Nim has :)
01:42:30FromDiscord<MiniApple> lol
01:44:08FromDiscord<MiniApple> does nim have private,public,procted?
01:44:42FromDiscord<Yardanico> no, but all symbols are private by default
01:44:46FromDiscord<Yardanico> to export symbols, you use
01:44:55FromDiscord<ElegantBeef> Well you can sorta think of it having public/private
01:45:02disruptekshit, i knew there was something i forgot to add to the manual.
01:45:02FromDiscord<MiniApple> wow
01:45:05FromDiscord<Yardanico> you can also have "protected" the way you construct your package
01:45:11FromDiscord<Yardanico> (edit) "you can also have "protected" ... the" added "by"
01:45:17FromDiscord<MiniApple> cool
01:45:17disruptekmy package is usually protected.
01:45:29FromDiscord<Yardanico> from the aliens? glowing in the dark
01:45:34FromDiscord<ElegantBeef> Disruptek did always seem to me like the guy to always wear a cup
01:45:50disrupteksome bitches be crazy.
01:47:22FromDiscord<Yardanico> 2 girls 1 disruptek
01:47:24FromDiscord<Yardanico> hides
01:47:36FromDiscord<Yardanico> sorry I really couldn't resist
01:47:37FromDiscord<Yardanico> I tried to
01:47:55FromDiscord<ElegantBeef> Lol based of what he has said they'd probably be underaged prostitutes
01:48:02FromDiscord<Yardanico> shhhhhhh
01:48:12disruptekage is just a number, man.
01:49:47FromDiscord<Avatarfighter> that :disruptek: quote is going right to the repo
01:49:51Prestigedisruptek: fbi, open up!
01:50:08disruptekthird time this week.
01:51:10PrestigeHahah.
01:51:57FromDiscord<Avatarfighter> lmao
01:52:15*rockcavera joined #nim
01:54:06FromDiscord<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:58disruptekthe new "story" we want to tell is one of atomic-free rc and "moves" of entire memory graphs between threads.
01:55:36FromDiscord<Gyllou> interesting. tbh im not even sure how you would manage that
01:56:12disruptekwell, the atomic-free rc is --gc:arc. the moves happen via Isolate.
01:57:00FromDiscord<Gyllou> heh thats pretty cool
01:57:03disruptekalso there's a continuation-passing style we're working on that will do arbitrary thread/unthread for these contained memory graphs.
01:57:17FromDiscord<Avatarfighter> I like https://github.com/mratsim/weave for my multithreading needs
01:57:28FromDiscord<Gyllou> thats pretty cool
01:57:54FromDiscord<ElegantBeef> There are also the channels for cross thread communication, but those arent really fancy 😄
01:58:05disruptekcps will be the basis of a csp impl that'll give us the sorts of multiprocessing features that other langs enjoy.
01:58:15disruptekthink go channels.
01:58:21FromDiscord<Avatarfighter> im excited for your cps lib disruptek
01:58:28disruptekme too.
01:58:32FromDiscord<Yardanico> zevv is also the one to blame :)
01:58:37FromDiscord<Yardanico> but yeah, i'm waiting as well
01:58:39FromDiscord<Gyllou> okay that sounds cool
01:58:40FromDiscord<Yardanico> !repo cps
01:58:41disbothttps://github.com/disruptek/cps -- 9cps: 11Continuation-Passing Style for Nim 🔗 15 39⭐ 2🍴
01:58:44disruptekzevv started it.
01:58:44FromDiscord<ElegantBeef> I dont do multithreading so... im not! 😛
01:58:59FromDiscord<Yardanico> @Gyllou see https://nim-lang.org/blog/2020/10/15/introduction-to-arc-orc-in-nim.html
01:59:20FromDiscord<Yardanico> and links at the bottom of that post
01:59:21FromDiscord<Yardanico> for more info
02:00:06FromDiscord<Avatarfighter> random thought, but is nim's async going to get an overhaul at some point?
02:00:22disruptekour current channels basically just copy objects in memory between threads.
02:00:27FromDiscord<Gyllou> thats pretty cool, reading through it now
02:00:30FromDiscord<Yardanico> well, cps is one of the possible solutions @Avatarfighter
02:00:34disruptekso, not terribly exciting, but it works.
02:00:36FromDiscord<ElegantBeef> Yea was going to say
02:00:36FromDiscord<Yardanico> for new async
02:00:51FromDiscord<Avatarfighter> But will the changes to async be code breaking
02:00:54FromDiscord<Yardanico> yes, so?
02:00:56FromDiscord<Avatarfighter> that's my main fear
02:00:58FromDiscord<Yardanico> nim 2.0 will be code breaking
02:00:59FromDiscord<Yardanico> a lot
02:01:04FromDiscord<Avatarfighter> 😐
02:01:09disruptekzevv is really the artist when it comes to cps. i'm just the mechanic.
02:01:23FromDiscord<Yardanico> too much backwards compatibility will hinder the development ;)
02:01:25FromDiscord<Avatarfighter> oh yeah isn't nim getting a new AST for 2.0
02:01:31FromDiscord<Yardanico> but it's years away still
02:01:51FromDiscord<Gyllou> so you guys are the nim devs then?
02:02:05FromDiscord<Avatarfighter> the community is the developer
02:02:08FromDiscord<Avatarfighter> araq is god
02:02:12disruptekif you write nim you're a nim dev.
02:02:12FromDiscord<Yardanico> well, I'm just doing some random small things, using Nim as a hobby
02:02:15FromDiscord<Yardanico> yeah :)
02:02:20FromDiscord<Gyllou> fair lol
02:02:24FromDiscord<ElegantBeef> It's a community hosted language
02:02:40FromDiscord<Gyllou> okay, yea i saw Araq's name pop up alot
02:02:50FromDiscord<Yardanico> that's the creator and main developer of the language
02:02:56FromDiscord<Gyllou> gotcha
02:02:57FromDiscord<Avatarfighter> yeah
02:03:02FromDiscord<Yardanico> but really anyone is welcome to contribute
02:03:05FromDiscord<Avatarfighter> Everyone else is a nimion
02:03:13FromDiscord<ElegantBeef> The core dev team does hang frequent here
02:03:17FromDiscord<ElegantBeef> (edit) removed "hang"
02:03:24miprihttps://github.com/nim-lang/Nim/graphs/contributors
02:03:24FromDiscord<Yardanico> we don't really have a defined "team" though, do we?
02:03:48FromDiscord<ElegantBeef> No defined team, but i'd imagine the people that contribute a ton can be considerd "Core team" 😄
02:03:56FromDiscord<Gyllou> okay cool
02:03:58FromDiscord<Gyllou> i like it
02:04:00FromDiscord<Yardanico> 4raq, clyybber, timotheecour, disruptek, cooldome
02:04:04FromDiscord<Avatarfighter> tbh i just consider everyone who talks in this channel to be core
02:04:06disruptekthere are a lot of people that have made really substantial contributions but aren't really around on the day-to-day.
02:04:09FromDiscord<ElegantBeef> What's dom to you 😄
02:04:17FromDiscord<Yardanico> dom - stdlib
02:04:24FromDiscord<Avatarfighter> @ElegantBeef dom = dom
02:04:26FromDiscord<Yardanico> first 5 are compiler devs mostly
02:04:31FromDiscord<Yardanico> well, except timothee
02:04:32FromDiscord<ElegantBeef> Ah
02:04:36FromDiscord<Gyllou> well, if i end up doing significant dev in nim ill try to contribute
02:04:37FromDiscord<Yardanico> miran - posts, backporting
02:04:43disrupteki mean, i don't really do compiler dev.
02:04:44FromDiscord<ElegantBeef> They're the ones i'm causing troubles with using the nimvm weirdly
02:04:52FromDiscord<Avatarfighter> Gyllou, are you new to nim?
02:05:03FromDiscord<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:12FromDiscord<Gyllou> yea mostly, ive been following it a bit but i havent had a chance to really use it until perhaps now
02:05:25FromDiscord<ElegantBeef> I think it's just natural to contribute to the environment/langauge
02:05:36FromDiscord<Gyllou> @Yardanico thats literally what i was googling lol gotcha thanks for the answer
02:05:38FromDiscord<Yardanico> you can open a random stdlib module and see nim code
02:06:07FromDiscord<Gyllou> i will mainly be working in the hpc, deeplearning, distributed systems stuff
02:06:19FromDiscord<Avatarfighter> In my opinion I think the most appealing thing in the Nim community other than Yard, is the community
02:06:31FromDiscord<Yardanico> hahaha
02:06:36FromDiscord<ElegantBeef> No you dont get to say that, constantly pretending like stadia is a good idea
02:06:41FromDiscord<Avatarfighter> LOL
02:06:41FromDiscord<Gyllou> lol
02:06:49FromDiscord<Avatarfighter> Oh yeah beef
02:06:58FromDiscord<Avatarfighter> i need to show you what i got working
02:07:00FromDiscord<ElegantBeef> I have 0 power here but i'll slide a few bucks to yard, i heard russians are cool with corruption
02:07:02FromDiscord<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:10FromDiscord<Gyllou> lol
02:07:12FromDiscord<Gyllou> gotcha
02:07:23FromDiscord<Yardanico> but I still know a lot of the Nim-related stuff
02:07:23FromDiscord<Avatarfighter> Beef: I got streaming my program to sorta work 😎
02:07:41FromDiscord<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:50FromDiscord<Gyllou> even scala/spark crap at one point fml
02:07:51FromDiscord<Avatarfighter> granted its a socket forcefeeding the nimvm with code but w/e
02:07:55FromDiscord<Yardanico> well, not really "long time", just 3.5 years (with big pauses in between)
02:08:02FromDiscord<Yardanico> (edit) "well, not really "long time", just 3.5 years ... (with" added "from start of 2017"
02:08:09FromDiscord<Avatarfighter> @Gyllou https://github.com/mratsim/Arraymancer this might interest you
02:08:14disruptekgyllou: yours would be a relatively large project.
02:08:16FromDiscord<ElegantBeef> And here i am yard just writting mostly proof of concept stuff
02:08:24FromDiscord<ElegantBeef> They already seen it avatar
02:08:26FromDiscord<Gyllou> yea ive seen it, ill probably be using that
02:08:31FromDiscord<Avatarfighter> my bad smh
02:08:31FromDiscord<ElegantBeef> We've linked it to them about 30 times 😛
02:08:37FromDiscord<Yardanico> in 2018/2019 I only had ~120 commits each year
02:08:40FromDiscord<Gyllou> lol its all good
02:08:41FromDiscord<Avatarfighter> ok well ill link it 31 times >:) https://github.com/mratsim/Arraymancer
02:08:46FromDiscord<Yardanico> !repo arraymancer
02:08:47disbothttps://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:47FromDiscord<Gyllou> lmao
02:08:58FromDiscord<Yardanico> ~arraymancer
02:08:59disbotno footnotes for `arraymancer`. 🙁
02:08:59FromDiscord<Avatarfighter> Don't forget to check out this cool little known library ^
02:09:00FromDiscord<Gyllou> yea i like it here
02:09:12FromDiscord<Yardanico> ~arraymancer is https://github.com/mratsim/Arraymancer
02:09:13disbotarraymancer: 11https://github.com/mratsim/Arraymancer
02:09:18FromDiscord<ElegantBeef> I've been holding steady at around 600 annual commits for a while now, so hey i'm being productive
02:09:18disruptekif you're on irc, you can talk to the bot directly. it has more to say in private.
02:09:22FromDiscord<Avatarfighter> #main is basically just everyone shitposting and then sometimes being serious
02:09:28FromDiscord<Yardanico> well nbo
02:09:31FromDiscord<Yardanico> (edit) "nbo" => "no"
02:09:33FromDiscord<Avatarfighter> yes
02:09:35FromDiscord<Yardanico> it's mostly nim-related talk :)
02:09:41FromDiscord<Gyllou> that sounds good
02:09:41FromDiscord<Avatarfighter> shitposting about nim
02:09:43FromDiscord<Avatarfighter> my bad
02:09:45FromDiscord<ElegantBeef> Also you're force feeding the nim vm?
02:09:47FromDiscord<Yardanico> offtopic happens usually when there's not a lot of people around
02:09:52FromDiscord<ElegantBeef> The fuck are you doing to the poor VM
02:09:56FromDiscord<Avatarfighter> its working
02:09:59FromDiscord<Avatarfighter> that is what i am doing
02:10:08FromDiscord<ElegantBeef> It cant even serialize types into binary streams
02:10:12FromDiscord<Gyllou> im a huge gaming nerd. actually just a regular nerd. ill be on discord alot.
02:10:19disruptekpffbt.
02:10:32FromDiscord<Avatarfighter> i have written so many helper procs last nights I barely have streaming code to it working @ElegantBeef
02:10:50FromDiscord<ElegantBeef> I'm seriously confused on what you're doing
02:11:02FromDiscord<ElegantBeef> You have the nim compiler taking in nimscript code to evaluate it
02:11:02FromDiscord<Avatarfighter> Which part
02:11:11FromDiscord<ElegantBeef> For what?
02:11:22FromDiscord<Avatarfighter> i have the nimvm evaluating nimscript that it is receiving from a socket
02:11:40FromDiscord<ElegantBeef> Also i'm still pretty happy with how fast the VM continue where it left off in release mode
02:12:03FromDiscord<Avatarfighter> nimvm is the best thing my lies have seen after disruptek ofc
02:12:06FromDiscord<Avatarfighter> eyes
02:12:16FromDiscord<Gyllou> lol
02:12:19FromDiscord<ElegantBeef> So you're application is shipping the compiler... or what?
02:12:24FromDiscord<Avatarfighter> no
02:12:31FromDiscord<Avatarfighter> im just bored and messing around rn
02:12:38FromDiscord<Avatarfighter> this is my side-side project
02:12:50FromDiscord<Gyllou> so basically like a sending a client side script?
02:12:51FromDiscord<ElegantBeef> You really shouldnt be allowed side side projects if this is what you come up with 😛
02:12:58FromDiscord<Avatarfighter> 😢
02:13:06FromDiscord<Avatarfighter> @Gyllou yeah basically
02:13:23FromDiscord<Avatarfighter> this all started because Beef came up with the great idea to stream my program stadia style
02:13:34FromDiscord<ElegantBeef> Nyet, nein, no, no
02:13:39FromDiscord<Avatarfighter> all credit to beef for this
02:13:39FromDiscord<Gyllou> thats really interesting lol
02:13:45FromDiscord<ElegantBeef> One of those no is french the other is english
02:13:47FromDiscord<Gyllou> that sounds like a pain in the ass
02:13:49FromDiscord<Gyllou> lol
02:13:53FromDiscord<Yardanico> good night (05:13 am)
02:13:56FromDiscord<ElegantBeef> It's actually not too bad
02:13:57FromDiscord<Avatarfighter> no in french is non
02:14:02FromDiscord<ElegantBeef> No french no is no
02:14:05FromDiscord<Avatarfighter> @Yardanico bonne nuit 😄
02:14:05FromDiscord<Gyllou> gn yardanico
02:14:06FromDiscord<Avatarfighter> non
02:14:08FromDiscord<Yardanico> NEIN
02:14:11FromDiscord<Gyllou> derp no ping
02:14:19FromDiscord<Avatarfighter> c'est non pas no @ElegantBeef
02:14:36FromDiscord<ElegantBeef> Sure
02:14:39FromDiscord<Avatarfighter> oui
02:14:59FromDiscord<ElegantBeef> Avatar is taking my joke and my serious project and mixing them and i dont like it 😛
02:15:08FromDiscord<Avatarfighter> psh
02:15:11FromDiscord<Avatarfighter> i would never
02:15:11FromDiscord<Gyllou> alright gonna go test some play around with some of those packages, ill ttyl guys, thanks for all the help
02:15:22FromDiscord<ElegantBeef> Buh bye
02:15:24disruptekhave fun.
02:15:27FromDiscord<Gyllou> test some /play around apparently both
02:15:29FromDiscord<Avatarfighter> np @Gyllou check out #science too while you're here 😄
02:15:35FromDiscord<Gyllou> later! fo sho
02:15:37FromDiscord<ElegantBeef> 33rd time
02:15:41FromDiscord<Avatarfighter> enjoy and welcome
02:16:01FromDiscord<Avatarfighter> disruptek how is mangling today
02:16:04FromDiscord<Avatarfighter> still like yesterday?
02:16:12disrupteknah.
02:16:12FromDiscord<ElegantBeef> He got it to go green
02:16:21FromDiscord<Avatarfighter> wait really?
02:16:35FromDiscord<Avatarfighter> what's new with mangling?
02:16:53disruptekit's a shit-ass pet-fucker version of mangling that throws _ all over the place.
02:17:13disruptekbasically, you gimme your identifiers and i fuck 'em.
02:17:18FromDiscord<Avatarfighter> that's good
02:17:25disruptekwith my extra long _____
02:17:46FromDiscord<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:59FromDiscord<ElegantBeef> Avatar you meme too hard and it hurts me
02:18:03FromDiscord<Avatarfighter> ahah
02:18:05disruptekthat's next. it'll be a good basis for ic.
02:18:14FromDiscord<Avatarfighter> i spend the majority of my time shitposting in this discord
02:18:36FromDiscord<ElegantBeef> I still love that disruptek was working on cleaning mangling up and i added ugly mangling to my project
02:18:46FromDiscord<Avatarfighter> Could you imagine if ic cached code on a Nim Blockchain lmfao
02:19:36FromDiscord<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:01FromDiscord<Avatarfighter> brb looking up how to not cry
02:20:21FromDiscord<Avatarfighter> we really need a webscraping/bots channel that's basically where all my experience is
02:20:29FromDiscord<ElegantBeef> #webdev
02:20:34FromDiscord<Avatarfighter> well
02:20:40FromDiscord<Avatarfighter> I guess 🙄
02:21:08FromDiscord<Avatarfighter> disruptek: what do you need for your click farming thing?
02:21:13FromDiscord<ElegantBeef> Hope you know i'm purely joking with all my insults 😄
02:21:25FromDiscord<Avatarfighter> I am fully aware
02:22:11FromDiscord<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:06disrupteki need to farm clicks. not even so many.
02:28:51disruptekjust 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:30user0Have 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:23FromDiscord<Avatarfighter> disruptek have you thought about getting like 30-50 ipv4 NATs and click farming with that?
02:53:54disrupteki admit i have not.
02:54:02FromDiscord<Avatarfighter> hm
02:54:17FromDiscord<Avatarfighter> i can prob find you 5$/yr NATs or cheaper
02:54:28leorize[m]1get ipv6?
02:54:50leorize[m]1a /60 prefix would be enough to click forever
02:55:22FromDiscord<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:48FromDiscord<Avatarfighter> cheapest solution I can think for you as long as the site don't have antibot software
02:56:14disrupteki don't care how cheap it is. how do i make clicks happen?
02:57:02FromDiscord<Avatarfighter> usually you can just curl with a signed in cookie
02:57:13FromDiscord<Avatarfighter> or httpclient
02:57:16disruptekwhy don't you do it for me. i'll pay you.
02:57:46FromDiscord<Avatarfighter> well thats no fun
02:58:14*Avatarfighter joined #nim
02:58:15disruptektrue, but i don't do this shit for fun.
02:58:29disrupteki do it so i don't starve to death in the winter.
03:00:01FromDiscord<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:51leorize[m]1there are zero examples :P
03:01:06leorize[m]1the gc is there but there aren't any known usage of it
03:01:14disruptekwho here knows how to make logic happen in google sheets?
03:01:19leorize[m]1the only requirement is that the go code must be compiled with gccgo
03:01:34FromDiscord<flywind> https://github.com/stefantalpalaru/golib-nim
03:04:17FromDiscord<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:57ForumUpdaterBotNew 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:32FromDiscord<Avatarfighter> disruptek: you're doing good
04:00:59FromDiscord<Avatarfighter> disruptek: you're doing bad
04:03:48*Avatarfighter joined #nim
04:04:21*luismanfroni joined #nim
04:04:56FromDiscord<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:47FromDiscord<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:41FromDiscord<Yardanico> Of course with SIMD
04:25:43FromDiscord<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:53FromDiscord<alehander42> oh man
06:03:56FromDiscord<alehander42> morning
06:03:56FromDiscord<Joe-23> Does Nim use reference counting?
06:06:00FromDiscord<Yardanico> @Joe-23 yes, current gc - refc is deferred reference counting with mark & sweep for cycle collection
06:06:10FromDiscord<Yardanico> Right now ARC/ORC are in active development though
06:06:26FromDiscord<Yardanico> ARC is normal reference counting with move semantics and destructors
06:06:41FromDiscord<Yardanico> Check out https://nim-lang.org/blog/2020/10/15/introduction-to-arc-orc-in-nim.html
06:06:55FromDiscord<Yardanico> https://nim-lang.org/docs/gc.html
06:08:38FromDiscord<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:13FromDiscord<Yardanico> Yes, ARC is RAII with additional move semantics for reducing copies. And destructors for reference types use ref counting
06:09:31disruptekGTFO since when?
06:09:48FromDiscord<Yardanico> all destructor calls are inserted at compile time of course, and statically bound
06:10:48FromDiscord<Joe-23> @Yardanico Is this similar to the ownership model present in Rust?
06:11:32disruptekno; rust is about punishing the owner. we're about rewarding them.
06:11:42FromDiscord<Yardanico> Not really, Rust's ownership model is very different, although it has destructors too
06:11:43FromDiscord<Joe-23> @disruptek Lmao lol
06:12:06FromDiscord<Joe-23> @Yardanico So how does it differ, does it also add `free` as well?
06:12:48FromDiscord<Yardanico> Yes but the main feature of Rust is that it does complete borrow checking for transferring ownership and stuff
06:12:55FromDiscord<Yardanico> at compile time
06:13:56FromDiscord<Joe-23> Where as with Nim during run time it does borrow checking?
06:13:58disruptekyes, we add free.
06:14:03disruptekno.
06:14:11FromDiscord<Joe-23> Oh
06:14:17disruptekwe add the memory management at compile-time, too.
06:14:23disruptekit's just...
06:14:28disruptekimagine if rust was a sponge.
06:14:33FromDiscord<Joe-23> Which one is more efficent then, the ownership model or what Nim does with ARC?
06:14:34disrupteka sponge full of suck.
06:14:42disruptekwell, we wring that fucking sponge out.
06:15:11FromDiscord<Joe-23> I see mate
06:15:25FromDiscord<Joe-23> @Joe-23 I am not too sure though which one is more effective
06:15:28FromDiscord<Joe-23> that I don't know?
06:15:35disruptekbasically, nim inserts manual memory management for you automatically.
06:15:35FromDiscord<Joe-23> In terms of performance?
06:15:41leorize[m]1benchmarks is the only way to find out
06:15:43disruptekit's not much different.
06:15:47leorize[m]1but they should be similar
06:15:50PrestigeDid joe just @ himself?
06:15:58disruptekhe's a fucking wildman.
06:16:06leorize[m]1either that or Yardanico broke the bridge again
06:16:08FromDiscord<alehander42> disrptek
06:16:11FromDiscord<Joe-23> I was trying to reply to a comment I made so Discord automatically does this lol
06:16:18miprimore 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:18FromDiscord<alehander42> we meet again in our time zone end
06:16:21FromDiscord<Joe-23> @disruptek Ah I see mate
06:16:52disruptekrude.
06:17:03disruptekcopying to resolve sloppy memory management?
06:17:07miprimaybe 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:27FromDiscord<Joe-23> Right I see
06:17:38leorize[m]1well the rust model allows for cycles to be solved at compile time iirc
06:17:48FromDiscord<Yardanico> it doesn't i think
06:17:57leorize[m]1(or it might just solve it by making it so miserable that no one writes it)
06:18:08disruptekit's true that we use copies sometimes, but that's not a fault of the model.
06:18:22FromDiscord<Yardanico> You might even need Rc for some types which are next to impossible to write without refcounting
06:18:24FromDiscord<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:03disruptekrust is miserable but not just because of the borrow checker.
06:20:14disrupteki'd say that's like 60-70% of it though.
06:20:27disruptekthe rest is the fact that it's a big language that /feels/ like a big language.
06:20:42mipriI'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:44FromDiscord<Joe-23> @disruptek Yep, its why I gave up on it
06:20:47disruptekit never feels intimate or elegant to me.
06:20:54leorize[m]1the rust model allows lifetime to be completely solved at compile time I think
06:21:31FromDiscord<Yardanico> yes, so it doesn't need refcounting for most stuff
06:21:32FromDiscord<Joe-23> @mipri I ssee
06:21:39disruptekmipri: that's fair.
06:22:36FromDiscord<Joe-23> sent a long message, see http://ix.io/2Bsy
06:22:38FromDiscord<Joe-23> And that is just one example
06:23:01FromDiscord<alehander42> this is not really common in programming
06:23:05FromDiscord<alehander42> to take direct input
06:23:27disruptekand, in fairness, we get a lot of questions on how to take a single character input.
06:23:35FromDiscord<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:44disrupteki have no clue, myself. so, yeah, it's not that common. 😁
06:23:46FromDiscord<alehander42> just trying to point this out because in the beginning it seems as a big thing
06:24:03FromDiscord<Joe-23> @alehander42 Ah I see
06:24:24FromDiscord<alehander42> so maybe rust just hasn't provided an optimized api for that in std
06:24:39FromDiscord<alehander42> i mean, i feel arg parsing is more common
06:24:42FromDiscord<alehander42> but i might be wrong
06:24:54disrupteki really should try rust again. its been too long.
06:25:09FromDiscord<alehander42> i am just starting more seriously with rust
06:25:10FromDiscord<alehander42> as well
06:25:40FromDiscord<alehander42> i still struggle with a lot of stuff, the code looks very functional tho
06:25:43FromDiscord<alehander42> a lot of chaining
06:26:00FromDiscord<alehander42> my favorite thing is the traits for now
06:26:26FromDiscord<alehander42> kinda good to have standard protocols and quickly see which types implement them
06:26:31FromDiscord<alehander42> similar to what mratsim wanted for stdlib
06:26:49disrupteki get why chaining is a thing but i don't feel it's all that great a pattern.
06:27:00FromDiscord<alehander42> they even chan `.await`
06:27:02FromDiscord<alehander42> chain
06:27:14disruptekthis is why people come here wanting "interfaces."
06:27:21leorize[m]1well with dup and with in Nim we now got easy chaining for basically every mutable thing
06:27:24FromDiscord<alehander42> well, it is just a consequence of composition
06:27:33FromDiscord<alehander42> yeah yeah
06:27:36leorize[m]1I have to admit that rust traits look very cool
06:27:36FromDiscord<alehander42> concepts seem close
06:27:42disrupteki know, but it feels limiting to me, not empowering.
06:27:48FromDiscord<Rika> same here, i think traits are interesting
06:27:51FromDiscord<alehander42> but how to detect which concepts a type implements
06:28:03disruptekconcepts are superior, however, our concepts don't work.
06:28:08FromDiscord<alehander42> bu tman
06:28:10*solitudesf quit (Ping timeout: 260 seconds)
06:28:36leorize[m]1new concepts & runtime dispatching for them will be Nim's answer to the protocol problem
06:28:42leorize[m]1it's not a priority now though
06:29:12disruptekno, but it's an increasingly problematic deficiency.
06:29:23disruptekit's preventing development.
06:29:48disrupteki guess it's really my problem and i should solve it some other way.
06:30:09leorize[m]14raq wants IC and the removal of restrictions regarding recursive modules first
06:30:25leorize[m]1which is rather important for large projects tbh
06:30:31disruptekyawn.
06:30:41disrupteklarge projects of which only 3 are known to exist.
06:31:06FromDiscord<Yardanico> there are more
06:31:15FromDiscord<Yardanico> There are private code bases and you know it
06:31:40leorize[m]1many have complained about the recursive modules problem
06:31:48disruptekbecause they are lazy.
06:31:49leorize[m]1and like even the compiler suffers from it :P
06:31:57disruptekyes, that's one of the 3.
06:32:08FromDiscord<Yardanico> It should also solve reordering, right?
06:32:16disruptekno.
06:32:21leorize[m]1maybe, can't say for sure
06:32:25disruptekwe don't want to "solve" reordering.
06:32:37disruptekusers should order their shit.
06:32:43FromDiscord<Yardanico> nah
06:32:48disruptekit's the easiest way to achieve high quality order.
06:32:51FromDiscord<Yardanico> 4raq said an entirely different thing
06:32:58disruptekwell, not to me.
06:33:35FromDiscord<alehander42> IC is huge in rust
06:33:41leorize[m]1I'm also watching alehander42 work on nil checking
06:33:48FromDiscord<alehander42> like, things just would fail if there was no way
06:33:55FromDiscord<alehander42> are you ????
06:33:58leorize[m]1@alehander42 tbf, they need that or its impossible to develop software in rust
06:34:04FromDiscord<alehander42> i stopped working ~20 days ago
06:34:08disruptekthings just would fail if there was no way?
06:34:12FromDiscord<alehander42> and i am just trying to get back 😄 😄 so pls motivate me
06:34:28disruptekyeah, i beat you to green.
06:34:31FromDiscord<alehander42> like, i need to be more disciplined
06:34:33disruptekalthough, not for ic.
06:34:39FromDiscord<alehander42> disruptek yeah
06:34:44FromDiscord<alehander42> i mean the builds take so long man
06:34:48FromDiscord<alehander42> the first time
06:34:55FromDiscord<alehander42> for projects that are not even that .. big
06:35:02FromDiscord<alehander42> they just have deps that have deps etc
06:35:05disruptekyou mean rust would be unbearable w/o ic.
06:35:10disruptekthat i agree with.
06:35:12FromDiscord<alehander42> i know that rustc itself is a bit slower
06:35:16FromDiscord<alehander42> yeah
06:35:20disruptekit used to take like 2.5hrs to build rust itself.
06:35:26disruptekit's still like 30mins.
06:35:33FromDiscord<alehander42> well yeah dude
06:35:40FromDiscord<alehander42> if nim can compile 1 mln lines for 1sec
06:35:40disruptekthat's bananas on a 12 core.
06:35:43FromDiscord<alehander42> maybe it can go without ic
06:35:52disruptekwell, that's my position.
06:35:52FromDiscord<alehander42> but it's also not that kind of language
06:35:59disruptekthis is a solution in search of a problem.
06:36:01FromDiscord<Rika> does any compiler compile 1 mil lines in a sec
06:36:10disruptekjai is pretty fucking fast.
06:36:19leorize[m]1try free pascal
06:36:28disrupteknim has some high performance shit coming down the pike, though.
06:36:35disruptekmark my words.
06:36:40FromDiscord<alehander42> i agree that nim doesnt have many big project
06:36:53FromDiscord<alehander42> but you can't .. just implement IC
06:36:59FromDiscord<alehander42> when the ecosystem gets big
06:37:09FromDiscord<alehander42> it takes rearchitecting and time and stuff
06:37:12leorize[m]1alehander42: IC for Nim is just an excuse to clean up the horrendous backend :P
06:37:13disruptekoh, we should do it when it's small?
06:37:21FromDiscord<alehander42> yeah?
06:37:27disrupteksadly, my ic impl doesn't really help the backend.
06:37:32disruptekif anything, it makes it worse.
06:37:47leorize[m]1well you make mangling green
06:37:47FromDiscord<alehander42> sccache also helps a lot with rust
06:37:55FromDiscord<alehander42> maybe .. just a way to
06:38:13FromDiscord<alehander42> compile nim libs to some kind of binary files
06:38:24disruptekmangling represents the backend improvements, yes, but ic will add more complexity and won't improve the quality of the output at all.
06:38:24FromDiscord<alehander42> that can be directly loaded into the module graph
06:38:31FromDiscord<alehander42> would be enough
06:38:40FromDiscord<alehander42> the point is just to not recompile all the epds
06:38:42FromDiscord<alehander42> deps
06:38:43FromDiscord<alehander42> all the time
06:38:59leorize[m]1that's what disruptek ic does I think
06:39:04FromDiscord<alehander42> yeah but
06:39:07leorize[m]1or 4raq's ic
06:39:10FromDiscord<alehander42> if it worked on higher level
06:39:29disruptekhow much higher?
06:39:31FromDiscord<alehander42> nim build depA depA.nimbuild
06:39:41disruptekwut
06:39:49FromDiscord<alehander42> then nim c other.nim # just loads in memory depA.nimbuild if cached
06:39:53FromDiscord<alehander42> you can use
06:40:27disruptekeh.. it can't really work because there is too much that goes into each compilation.
06:40:43disruptekthey can't disambiguate every symbol, every piece of code.
06:41:11disruptekwhat we need is to embed libgit2 into the motherfucker.
06:41:20FromDiscord<alehander42> but man
06:41:26FromDiscord<alehander42> then you can use existing infra
06:41:28disruptekmaybe nimph can become a caching compiler.
06:41:32FromDiscord<alehander42> to parallelize or to cache
06:41:45FromDiscord<alehander42> similarly to the way people parallelize or cache C or Rust objects
06:41:55disruptekwell, we can parallelize. i'm fine with that, to a point.
06:41:57FromDiscord<alehander42> and focus only on the nim specific stuff
06:42:07disruptekthat's what we're talking about.
06:42:16FromDiscord<alehander42> can we ?
06:42:17disrupteki don't worry about c compilation at all.
06:42:26FromDiscord<alehander42> i thought parallelization is not
06:42:29disruptekthat's your problem, as per usual.
06:42:29FromDiscord<alehander42> a part of plan
06:42:45disruptekwe can parallelize a lot of the compiler.
06:42:55FromDiscord<Yardanico> cooldome said he will experiment with compiler parallelization
06:43:00FromDiscord<alehander42> cool!
06:43:04FromDiscord<alehander42> i did with parser
06:43:11disrupteki think he's out to lunch on that.
06:43:14FromDiscord<alehander42> and planned to do it with checking and stuff
06:43:20disrupteknot sure what he was seeing.
06:43:23FromDiscord<alehander42> but kinda left that project
06:43:30FromDiscord<alehander42> i should ping him
06:43:46FromDiscord<alehander42> but what is really
06:43:49FromDiscord<alehander42> stopping us
06:43:52FromDiscord<alehander42> a dependency
06:44:05disrupteki'm not really prepared to entertain ic and threading at the same time.
06:44:11FromDiscord<alehander42> generates a graph wih AST
06:44:24FromDiscord<alehander42> but that's why i think the current approach is harder
06:44:30FromDiscord<alehander42> because if we can just generate a file
06:44:39FromDiscord<alehander42> with serialized stuff
06:44:52FromDiscord<alehander42> you dont need any smart multithreading and stuff
06:44:53disruptekwhat do you think a file /is/?
06:45:00disruptekit's a series of bytes.
06:45:06disruptekit's serialized.
06:45:07FromDiscord<alehander42> you just make a nim build dep1 nim build dep2 etc
06:45:13FromDiscord<alehander42> and invoke all those process in parallel
06:45:18disruptekit's not that simple.
06:45:26disruptekthere's too many links between them.
06:45:26FromDiscord<alehander42> that's what i am trying to get
06:45:36disrupteknames, code, generics, etc.
06:45:37FromDiscord<alehander42> can we change the languagee
06:45:45FromDiscord<alehander42> in a way that this is easy
06:45:48FromDiscord<alehander42> e.g. 2.0
06:45:54disruptekthe language isn't the problem, imo.
06:46:02FromDiscord<alehander42> well man
06:46:04FromDiscord<alehander42> it can't be anythign else
06:46:08disruptekwhy not?
06:46:13FromDiscord<alehander42> as some other languages can do that easily
06:46:15disruptekwe don't have to generate code the way we do.
06:46:22FromDiscord<alehander42> building dependencies separately
06:46:31disruptekdude.
06:46:33disruptek~features
06:46:34disbotfeatures: 11begin in the unfortunate state of /unimplemented/
06:46:42FromDiscord<alehander42> yes yes
06:46:46FromDiscord<alehander42> e.g.
06:46:48FromDiscord<alehander42> methods for A
06:46:53FromDiscord<alehander42> can be defined in B
06:46:56FromDiscord<alehander42> instantiations in C
06:47:03FromDiscord<alehander42> and macros can be expanded everywhere
06:47:07FromDiscord<alehander42> is it this kind of links?
06:47:21disruptekwell, i wouldn't do it that way, but that's one interpretation.
06:47:39FromDiscord<alehander42> no, i mean, is this the reason
06:47:49FromDiscord<alehander42> that it's hard to do so
06:47:59disruptekmacros have no bearing on the backend.
06:48:08FromDiscord<alehander42> but this is not only backend stuff
06:48:09disruptekthe only reason they enter the discussion is because they are expensive.
06:48:15FromDiscord<alehander42> hm, maybe it is
06:48:21disruptekyou want to cache them because they are hard to figure out.
06:48:23FromDiscord<alehander42> sempass is frontend tho?
06:48:26disrupteksure.
06:48:33FromDiscord<alehander42> but sempass needs it
06:48:38FromDiscord<alehander42> sempass needs to know a's info
06:48:44disruptekyes.
06:48:46FromDiscord<alehander42> to build depB
06:48:56FromDiscord<alehander42> so this is ok
06:49:00disrupteki didn't say you could just invent macro output.
06:49:09FromDiscord<alehander42> we can encode type info
06:49:20FromDiscord<alehander42> iirc the compil time state
06:49:23FromDiscord<alehander42> was the big problem
06:49:37FromDiscord<alehander42> but this can be limited somehow
06:49:46disruptekthere are numerous problems.
06:49:49FromDiscord<alehander42> e.g. compile time vars can be scoped to some kind of lvl
06:50:00disruptekthat stuff, i don't care about.
06:50:15disrupteki care about storing file/line/column locations.
06:50:21disruptekthis is expensive.
06:50:29FromDiscord<alehander42> but this is because you need to cache on this level
06:50:36disrupteki care about storing trees of code that might be very deep.
06:50:37FromDiscord<alehander42> if we forget about caching
06:50:49disruptekwhat?
06:51:06FromDiscord<alehander42> i mean, ic-related caching
06:51:15disruptekyou want to forget about it?
06:51:23FromDiscord<alehander42> there is
06:51:36disruptekis there?
06:51:37FromDiscord<alehander42> compiler level caching which just optimizes the data
06:51:43FromDiscord<alehander42> e.g. macro inst
06:51:53disruptekyes, that's someone else's problem.
06:51:56FromDiscord<alehander42> i am not talking about that
06:51:58FromDiscord<alehander42> this is ok
06:52:17disrupteki'll probably ask araq to do that because i don't think i can handle it.
06:52:28disruptekhe has some ideas on how he wants to do it.
06:52:44disruptekmacro caching, that is.
06:53:11FromDiscord<alehander42> maybe you'r right
06:53:21disruptekno; i don't know anything about the frontend.
06:53:28FromDiscord<alehander42> i just
06:53:28disrupteklike, i don't fuck around there much.
06:53:48FromDiscord<alehander42> want nim build depa -> depa.nimbuild
06:53:50FromDiscord<lqdev> @notchris could you provide me with a stack trace?
06:54:04FromDiscord<alehander42> and import depa # to load quickly parts of depa.nimbuild
06:54:04disrupteki don't think it's realistic yet.
06:54:16FromDiscord<alehander42> and this resolves many questins
06:54:17FromDiscord<alehander42> imho
06:54:21disruptekwe will cache everything. we will also load everything.
06:54:33FromDiscord<alehander42> but the cache would be
06:54:43FromDiscord<alehander42> the timestamp of the depa or some kind of fingerprint
06:54:48FromDiscord<alehander42> or hash of contents
06:54:53disruptekyeah, whatever.
06:54:58disrupteknot important.
06:54:58FromDiscord<alehander42> not some kind of complicated tree stuff
06:55:00FromDiscord<notchris> @lqdev it was something weird with my glfw brew version
06:55:11FromDiscord<lqdev> aglet doesn't use glfw from brew
06:55:18FromDiscord<lqdev> rather nimgl/glfw
06:55:19disruptekthe cache will be a container that has timestamp, hash, etc.
06:55:22FromDiscord<lqdev> which compiles statically
06:55:22FromDiscord<alehander42> and honestly this solves iC
06:55:24FromDiscord<notchris> Yeah but I needed the binaries
06:55:25FromDiscord<alehander42> imho
06:55:30disruptekand also has a tree inside it.
06:55:31FromDiscord<notchris> Or it wouldn’t compile
06:55:32FromDiscord<lqdev> that's odd
06:55:35FromDiscord<alehander42> of course, super hard
06:55:41FromDiscord<alehander42> maybe harder than the current plan
06:55:45disruptekwhy?
06:55:52FromDiscord<alehander42> what i like about it is only 2 things: parallelization
06:56:01FromDiscord<alehander42> and its easier to combine with e.g. sccache etc
06:56:03disruptekwell, tell me what you don't like.
06:56:13FromDiscord<alehander42> about my idea? D:
06:56:27disruptekabout caching a container that holds the tree.
06:56:27FromDiscord<alehander42> that it's probably idealistic and i am missing a lot obviously bad about it
06:56:55disruptekwell, nimbuild as an idea doesn't work because you cannot encapsulate deps thus.
06:57:06disruptekcode doesn't stay where it was written.
06:57:08FromDiscord<alehander42> replace dep with file
06:57:12disruptekit scribbles all over your memory.
06:57:13FromDiscord<alehander42> same idea
06:57:25FromDiscord<alehander42> just any "import"
06:57:28disruptekno.
06:57:36disruptekthat's just not how we compile.
06:57:49disruptekit's more of a contrail like from a jet.
06:58:02disruptekbehind the plane, water vapor.
06:58:19disruptekyour job is to gather it up.
06:58:19FromDiscord<notchris> @lqdev cool lib btw!
06:58:34FromDiscord<lqdev> nice to hear that
06:58:58FromDiscord<lqdev> let me know your thoughts/suggestions/feature requests if you use it for anything bigger
06:59:04*PMunch joined #nim
06:59:24FromDiscord<alehander42> disruptek yeah
06:59:26FromDiscord<alehander42> i figure
06:59:33FromDiscord<alehander42> but i wonder if the language itself
06:59:42FromDiscord<alehander42> can be compiled easily
06:59:45FromDiscord<alehander42> with a different arch
06:59:53FromDiscord<alehander42> maybe a compilerdev repo issue question
07:00:00FromDiscord<alehander42> ok time to look at not nil
07:00:26leorize[m]1alehander42: \o/
07:00:35FromDiscord<alehander42> basically
07:00:41FromDiscord<alehander42> the set repr should be optimized
07:00:52FromDiscord<alehander42> there is this huge
07:00:54disruptekthe answer is yes. we should change how we compile the language. 👍
07:00:56FromDiscord<alehander42> vm.nim switch
07:01:07FromDiscord<notchris> @lqdev I will, I still need to understand how the mesh works a bit better etc
07:01:13FromDiscord<alehander42> where it's very slow currently
07:01:24FromDiscord<alehander42> if the alias set thing is enabled ..
07:01:55FromDiscord<lqdev> @notchris a Mesh is a combination of a vertex buffer, index buffer, and vertex array. all in one object
07:02:15FromDiscord<lqdev> having an index buffer is optional
07:03:23FromDiscord<lqdev> honestly Meshes are kinda inflexible so i'd like to change them to something lower-level at some point
07:04:16FromDiscord<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:51FromDiscord<lqdev> wdym shape objects?
07:08:44FromDiscord<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:47FromDiscord<lqdev> !repo liquid600pgm/rapid
07:08:48disbothttps://github.com/liquid600pgm/rapid -- 9rapid: 11A game engine written in Nim, optimized for making cool games fast. 15 86⭐ 2🍴
07:17:33FromDiscord<ElegantBeef> Lq if i dont make cool games is it slower?
07:18:32FromDiscord<lqdev> lol that's not what i meant 😅
07:19:05FromDiscord<lqdev> i meant, quickly
07:19:24FromDiscord<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:30FromDiscord<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:02miprino, due to the thermodynamic properties of silicon, the uncool games should be slower
07:42:08*zedeus joined #nim
07:43:04FromDiscord<Idefau> lmfao
07:45:21FromDiscord<Idefau> silicon? sorry I only use analog computers
07:47:16FromDiscord<Rika> vacuum tube
08:13:21*grorkster quit (Quit: WeeChat 2.9)
08:22:37narimiranhttps://news.ycombinator.com/item?id=24834636
08:35:57PMunchOoh, I'm always baffled when a project I haven't heard of is written in Nim
08:39:07FromDiscord<flywind> @narimiran Any advice? https://github.com/nim-lang/website/pull/239
08:39:08disbotadd guest article: One web framework to rule over all styles
08:39:35narimiranhaven't had the time to read it yet, sorry
08:40:19FromGitter<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:57FromDiscord<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:56FromGitter<jrfondren> ITR: that's a syntax error from the ++
08:46:07FromDiscord<ITR> ah, ty
08:46:10FromDiscord<Rika> ++ in nim is `inc`
08:46:13FromDiscord<Rika> or incr, i dont remember
08:46:18FromDiscord<ache of head> inc
08:46:18FromGitter<jrfondren> inc
08:46:19FromDiscord<ElegantBeef> inc
08:46:25FromDiscord<Rika> yall
08:46:36FromDiscord<Rika> reported for spam /s
08:47:02FromDiscord<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:50FromDiscord<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:03FromDiscord<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:05FromDiscord<Rika> is it about --define:danger
08:51:23FromDiscord<Rika> no
08:51:24FromDiscord<kraptor> (edit) "upong" => "upon"
08:51:25FromDiscord<Rika> ah
08:51:26FromDiscord<Rika> wait
08:52:08FromDiscord<Rika> read afaik is possible, i dont know about write
08:52:29FromDiscord<hobbledehoy> you can write with `writeFile`
08:52:44FromDiscord<ElegantBeef> Anytthing that isnt possible with nimscript you can use nimscripter and have a nim binary shipped
08:52:53FromDiscord<Rika> > you can write with `writeFile`↵not in nimscript...
08:53:07FromDiscord<hobbledehoy> aren't .nimble files nimscript?
08:53:23FromDiscord<Rika> hmm
08:53:34FromDiscord<Rika> then it is odd why kraptor is having this issue
08:53:35FromDiscord<kraptor> they are, afaik
08:53:53FromDiscord<kraptor> this is happening on a .nimble file actually
08:53:58*krux02 joined #nim
08:54:09FromDiscord<ElegantBeef> Ah for that
08:54:23*Tanger quit (Quit: Leaving)
08:54:42FromDiscord<kraptor> trying open() or newFileStream() I get that issue... is there any way to circumvent it?
08:55:43FromDiscord<kraptor> (I'm using 1.4.0 on windows, btw)
08:56:02FromDiscord<ElegantBeef> I'm fairly certain you cant use streams with nimscript
08:56:27FromDiscord<ElegantBeef> There is no way to write anything but a string really
08:57:28FromDiscord<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:43FromDiscord<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:59FromDiscord<hobbledehoy> well there is `writeFile` like I said before
09:00:20FromDiscord<kraptor> ah, I misunderstood that wasn't available too... sorry
09:00:27FromDiscord<kraptor> let me try
09:02:22FromDiscord<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:42FromDiscord<hobbledehoy> nice 👍
09:02:53FromDiscord<kraptor> thanks, that made my day
09:12:16Araqstrscans is such a superb tool
09:12:49AraqI wonder how many are aware of it
09:12:56FromDiscord<lqdev> i am
09:13:04*tree joined #nim
09:13:07FromDiscord<ElegantBeef> Not many i'd assume
09:13:14FromDiscord<hobbledehoy> Has been really good the few times I've used it
09:13:15FromDiscord<ElegantBeef> Think the first reaction is always regex
09:13:17FromDiscord<ITR> is the only way to iterate over a distinct range type by borrowing a lot of procs?
09:13:49treehi, if I will type some text in forum, how can I do a line break?
09:14:54FromDiscord<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:53FromDiscord<Idefau> I assume you can do line breaks in text by doing double-enter
09:17:05FromDiscord<ElegantBeef> or shift + enter
09:18:30treeno, I get an empty line
09:18:41*JStoker joined #nim
09:18:47Araquse ``` and format it your way
09:19:22FromDiscord<Idefau> bonus monospace font
09:22:29FromDiscord<lqdev> tree: double line break works?
09:23:07treeI get an empty line between
09:23:11FromDiscord<Idefau> yes
09:23:51treeI want this: Hello<br/>world!
09:24:10treehttps://gist.github.com/shaunlebron/746476e6e7a4d698b373
09:24:42FromDiscord<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:54treeok, I take double line break. Monospace font is more for src code....
09:27:46FromDiscord<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:50FromDiscord<ITR> how do I end an iterator from within the iterator?
09:34:43FromDiscord<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:54Araqhmm our bootstrapping process is broken
09:43:33AraqNim uses its own standard library and not the one the compiler was written against
09:43:46Araqleading to lovely things such as
09:43:53Araqnim-1.2.8/compiler/vmops.nim(109, 5) Error: not all cases are covered; missing: {backend}
09:48:12supakeenITR: based on what do you want to end? You can generally 'break'.
09:49:01supakeenor have your condition in a while or such
09:51:23treewhy I get different program size: https://play.nim-lang.org/#ix=2Bto
09:51:24FromGitter<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:11supakeenor one might be looking for closure iterators which do allow return
09:52:32FromDiscord<Joe-23> Hi, just a bit confused how do I declare an unsigned 64 bit integer
09:52:47FromDiscord<Joe-23> is it `var a = uint64 {10}`?
09:53:09supakeenJoe-23: `var a: uint64 = 10`
09:53:30supakeenor `var a = 10'u64`, etc.
09:53:48tree<Joe-23> https://nim-lang.org/docs/system.html#uint64
09:53:52FromGitter<jrfondren> {} creates sets in Nim, it's not the C++40 final best way to construct things
09:53:59FromDiscord<lqdev> or `var a = uint64 10`
09:54:45FromGitter<jrfondren> oh I guesss it's confusing that the docs have {...} ?
09:56:53FromGitter<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:04supakeen(or the dots in the docs)
09:58:58treeagain: why I get different program size: https://play.nim-lang.org/#ix=2Bto
10:00:06treecompiling with build.sh and nimscript gives me a differnce of about 20k
10:04:41FromDiscord<Joe-23> I see, thanks mate
10:06:48FromDiscord<Joe-23> Also how do I compile `nim` code with safety's disabled, production ready?
10:06:56mipritree: I'd investigate ~/.cache/nim/hello_d . there's a .json in there.
10:08:21mipriJoe-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:00FromDiscord<Joe-23> Ah I see
10:09:01FromDiscord<Joe-23> Thanks
10:09:37*lritter joined #nim
10:10:46mipritree: how do you build hello with that hello.nims ?
10:11:09treemipri: nim build hello
10:12:16miprity. I get half the size from hello.nims
10:12:35tree25k?
10:16:21mipri52k vs. 106k on my machine
10:16:56treeI have win 10 and wsl2
10:17:18treebut I'm looking now for the compiler version
10:17:33FromDiscord<lqdev> tree: btw `out` is a keyword so you can't just use it
10:17:51tree<lqdev> ok
10:18:13FromDiscord<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:17treemipri: gcc version 9.3.0 (Ubuntu 9.3.0-17ubuntu1~20.04)
10:18:39treeNim Compiler Version 1.4.0 [Linux: amd64]
10:18:55FromDiscord<Idefau> c = c div divide
10:19:20treebut I have compiled: gcc version 10.2.0 (GCC)
10:19:44FromDiscord<Joe-23> @Idefau Thanks, would this stay unsigned 64 bit integer
10:19:49FromDiscord<Joe-23> and not return floating values?
10:19:55FromDiscord<Idefau> yes, div is for integer division
10:19:56*abm joined #nim
10:20:02FromDiscord<Joe-23> Ah right,t hanks
10:20:03FromDiscord<Joe-23> thanks
10:20:04FromDiscord<Vindaar> https://nim-lang.github.io/Nim/system.html#div%2Cuint64%2Cuint64
10:20:49treeif I rename the nim.cfg to nim.cfg1 which cfg is used? It compiles....
10:20:57FromDiscord<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:33FromDiscord<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:48FromDiscord<Idefau> sent a code paste, see https://play.nim-lang.org/#ix=2BtC
10:23:17FromDiscord<Idefau> if you would use it multiple times and would like to avoid repetition
10:24:22FromDiscord<Idefau> but `/=` would probably not be the best name since it can be confused with float division i think
10:25:19FromDiscord<Joe-23> sent a code paste, see https://play.nim-lang.org/#ix=2BtE
10:26:10FromDiscord<Vindaar> `echo a", " b", " c` ↦ `echo a, " ", b, " ", c` ?
10:26:29FromDiscord<Joe-23> I want it to print out the commas
10:26:31FromDiscord<Vindaar> not that the `" "` is required if you use multiple args to echo
10:26:41FromDiscord<MiniApple> ~~nim is complicated~~
10:26:41FromDiscord<Vindaar> oh then put the comma into the string
10:27:23FromDiscord<Vindaar> `echo` is just a function taking `varars[string]` and automatically applying `$` to each arg
10:27:29FromDiscord<Idefau> `echo a, ',', b, ',', c`
10:27:39FromDiscord<Vindaar> ^
10:28:15FromDiscord<Idefau> if you want you can also output it like a tuple, `echo (a, b, c)`
10:28:23FromGitter<jrfondren> Joe-23: you get that error because a", " looks like a(", ")
10:28:30FromDiscord<Idefau> ^
10:28:42FromDiscord<Joe-23> @Idefau Thanks mate
10:28:48FromDiscord<Idefau> np
10:29:22FromDiscord<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:38mipriit's a small price to pay to prevent people from putting spaces before their function parameters
10:30:55FromDiscord<Idefau> yes
10:31:17FromDiscord<Idefau> !eval echo(a,b,c);echo (a,b,c)
10:31:18NimBotCompile failed: /usercode/in.nim(1, 6) Error: undeclared identifier: 'a'
10:31:25FromDiscord<Idefau> right
10:31:31FromDiscord<MiniApple> how compile nim to c++ or c
10:31:49FromDiscord<Vindaar> @MiniApple ?
10:31:55FromDiscord<MiniApple> ?
10:31:58FromDiscord<Idefau> nim c foo.nim
10:32:01FromDiscord<Idefau> nim cpp foo.nim
10:32:14FromDiscord<Vindaar> yeah, this but that seems like a weird question, hence my confusion
10:32:19FromDiscord<MiniApple> ok
10:32:39treeis 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:44FromDiscord<MiniApple> lol i am weird too
10:33:33miprithere's a --gcc.exe:some-gcc
10:33:56treeok, I'll try this
10:34:11mipriyou probably also want --gcc.linkerexe:some-gcc
10:35:48FromDiscord<Idefau> !eval echo(1,2,3);echo (1,2,3)
10:35:52NimBot123↵(1, 2, 3)
10:36:24treeI have compiled gcc-10.2 and renamed all to xxx-10.2
10:37:49*NimBot joined #nim
10:37:53supakeenhi nimbot
10:37:57FromDiscord<Rika> what happened to nimbot
10:38:03FromDiscord<Idefau> i killed nimbot
10:38:14supakeen!eval echo(1,2,3);echo (1,2,3)
10:38:17NimBot123↵(1, 2, 3)
10:38:18supakeendoubt that kills it
10:38:25supakeenbut we'll see in 2 minutes?
10:38:27FromDiscord<Rika> !eval while true: discard
10:38:28FromDiscord<Rika> xd
10:38:38FromDiscord<Idefau> uh oh
10:38:41supakeenuh oh
10:38:48FromDiscord<Rika> big thonk
10:38:48NimBot<no output>
10:38:55FromDiscord<Rika> lmao
10:39:15FromDiscord<Idefau> !eval "<no output>".echo
10:39:17NimBot<no output>
10:39:23FromDiscord<Idefau> funny
10:39:47FromDiscord<Joe-23> Is it also possible to specify to use `03`?
10:39:51FromDiscord<Joe-23> if it uses such things?
10:40:10FromDiscord<Rika> it uses O3 when -d:release
10:40:19FromDiscord<Idefau> go -d:danger
10:42:07treesomething wrong --gcc.exe:"usr/local/gcc-10.2.0/bin", /bin/sh: 1: "usr/local/gcc-10.2.0/bin": not found
10:42:19mipri"/usr
10:43:30tree /bin/sh: 1: /usr/local/gcc-10.2.0/bin: Permission denied
10:43:34treechmod?
10:43:42miprithat's a directory
10:44:03treeaaaaahhhh
10:44:21FromDiscord<Joe-23> @Rika I see, is -d:danger also O3?
10:44:25FromDiscord<Rika> yes
10:46:26treetask 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:41tree /bin/sh: 1: "/usr/local/gcc-10.2.0/bin/gcc-10.2": not found
10:46:57treewith build.sh compiles
10:47:18tree26.776m kb
10:47:23tree26.776 kb
10:47:47tree26.776 bytes , now... need a break
10:48:00FromDiscord<Idefau> wow
10:49:05ForumUpdaterBotNew thread by Jasonfi: Naming convention when calling procs from other modules?, see https://forum.nim-lang.org/t/6967
10:49:33treebut works with switch
10:49:49tree47.256 Bytes
10:50:47treeso, the difference will be the same.... 26.776 bytes versus 47.256 Bytes build.sh versus nimscript
10:51:02treewith gcc-10.2
10:52:08mipriI think the settings have to be different somewhere, but I don't know where. it looks like gcc is being called identically
10:53:41treeperhaps something from /.choosenim/toolchains/nim-1.4.0/config/config.nims or so ...
10:54:08miprithe files in the cache are already very different, so it's definitely something in Nim and not gcc
10:55:50treek, 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:34FromDiscord<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:18FromDiscord<enthus1ast> `Powerful to me would be “able to create systems & applications in half the time compared to...”`
12:57:25FromDiscord<enthus1ast> php ?
12:57:31FromDiscord<enthus1ast> aspx 🙂
12:58:28FromDiscord<Rika> LMAO
12:59:06FromDiscord<enthus1ast> i guess im done with a system when npm install finaly finishes 😄
13:00:13FromDiscord<enthus1ast> Does one also have issues (and can confirm) to use wNim? i't seems that i'm getting c generation errors
13:01:11FromDiscord<enthus1ast> `"error: lvalue required as unary '&' operand"`
13:01:26FromDiscord<Vindaar> @flywind damn, even on the front page now! the tide on Nim has turned on HN in seems
13:02:27FromDiscord<flywind> Thanks! I hope so 🙂
13:04:49FromDiscord<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:32FromDiscord<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:36FromDiscord<flywind> The previous article regarding `Prologue` is also on the front page of Hacker news. So I can make this guess.
13:06:46FromDiscord<Vindaar> 😁
13:07:10FromDiscord<flywind> And I think Nim blog is also a good start point.
13:08:01FromDiscord<flywind> https://forum.nim-lang.org/t/6736#43538
13:08:42FromDiscord<flywind> The more articles, the more attentions.
13:09:45Zevvdude, *again* Nim on HN front page
13:09:46Zevvwhat's happening
13:10:07ZevvI need to find me another language soon
13:10:08FromDiscord<Rika> great stuff
13:10:19FromDiscord<Rika> maybe V
13:10:19federico3:D
13:10:58*solitudesf joined #nim
13:10:58FromDiscord<Vindaar> Zevv, piet lang is for you. I heard you like graphs. You should feel right at home there!
13:10:58ZevvI'll start Z
13:11:09ZevvAnd Piet is dutch, so that's good
13:11:25FromDiscord<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:28ZevvI like my language more pastel, though
13:11:47federico3how about Dim, a new language for HN
13:11:59FromDiscord<Vindaar> maybe you can write a piet DSL for a mapping of pastel colors to the whole color space
13:15:37FromDiscord<Rika> maybe i should make a piet interpreter in nim, maybe called `pien`
13:16:37FromDiscord<Rika> 🥺
13:18:22FromDiscord<Rika> RIP my pun
13:18:26FromDiscord<Rika> dont think anyone caught that
13:18:32FromDiscord<notchris> I did 😮
13:18:36FromDiscord<notchris> 🙂
13:20:07PMunchZevv, do you have any examples of npeg parsing into a tree structure?
13:20:54Zevvsure
13:21:20Zevvhttps://github.com/zevv/npeg/blob/master/misc/rod.nim
13:22:26ZevvMy usual approach is making a stack of your AST node objects, and manipulate that stack from your code block matches
13:22:47Zevvsome forth-like helpers like swap/rot are sometimes handy to get stuff in the right place
13:23:05PMunchHmm, not quite sure how that works for more than 1 level though
13:23:15Zevv1 level of what?
13:23:21PMunchOf nesting
13:23:57Zevvcheck that example. It's a parser for liquid's Rod toy language
13:24:11PMunchSomething like this: ((hello, world), (bob, uncle), (extra, (deep, nesting)))
13:24:41PMunchYeah you have add and add to parent
13:24:50PMunchThat gives you 1 level of nesting right?
13:27:19Zevvlet me whip somehing up
13:28:55Zevvanyway, it recurses
13:28:58Zevvso it works just fine
13:30:03PMunchHmm
13:37:50FromDiscord<zetashift> @flywind awesome work! I saw Prologue on HN too!
13:38:43*luismanfroni quit (Ping timeout: 272 seconds)
13:40:04FromDiscord<flywind> Thanks!
13:40:06PMunchZevv, this seems to work, did you have anything easier in mind? https://play.nim-lang.org/#ix=2BuP
13:41:45ZevvPMunch: http://ix.io/2BuQ
13:42:07Zevvwell well well
13:42:47Zevv'prev' does not nest, you need a stack
13:43:08PMunchWhat do you mean?
13:43:57PMunchEach 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:56PMunchAh I see, basically I store my results in a singly linked list, while you're using a stack
13:46:01Zevvright
13:46:59Zevvbut the idea is the same
13:47:16PMunchYeah
13:47:17ZevvI tried a few times making this "native" to Npeg, but i can't seem to find one mechanism that fits all cases
13:47:17FromDiscord<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:49PMunchZevv, I really like how you can actually execute arbitrary code on a condition, pretty cool
13:49:25Zevvthere's a cotcha with backtracing, don't forget
13:49:40PMunchOh yeah, I was just about to say :P
13:49:44Zevvdon't
13:49:48ZevvI hate it
13:50:05PMunchHaha, with great power and all that
13:50:10Zevvright
13:51:14Zevvso, you're good?
13:51:23Zevvast-parsing-wise?
13:51:43ZevvIf you have ideas on how to simplify this while keeping the flexibilty, I'd like to hear about it
13:52:08PMunchYeah I'm good
13:52:24PMunchIt's actually pretty simple, got it right on pretty much the first try
13:52:39PMunchJust had to realise I could run arbitrary code :)
13:53:26FromDiscord<mratsim> you're falling to the dark side
13:53:47PMunchWhy do you have the `list * !1` condition though? Doesn't it fail matching if it can't consume everything?
13:54:04PMunch@mratsim, the dark side? I've heard they've got cookies
13:54:04Zevvand don't forget about -d:npegGraph
13:54:18PMunchOh yeah, I've already used that :) Such a cool feature
13:54:24PMunchVery helpful
13:54:36FromDiscord<mratsim> GDPR ate those
13:59:27ZevvGPDR is fuzzy and blue
14:05:09FromDiscord<zetashift> @Xephobia https://github.com/pragmagic/vscode-nim/issues/65 closest thing I can find, I don't usually use the debugger
14:05:09disbotdebug support
14:05:59FromDiscord<ITR> How do I initialize a fixed-size array?
14:06:07FromDiscord<ITR> (edit) "array?" => "array for let/const?"
14:06:14FromDiscord<flywind> https://github.com/saem/vscode-nim#debugging
14:07:07PMunch@ITR define initialise
14:07:59FromDiscord<flywind> @Xephobia This message may be useful too.
14:09:01FromDiscord<ITR> if I want to write: `let myVar: range[0..3]`↵then I'll get the error `'let' symbol requires an initialization`
14:09:53FromGitter<jrfondren> read: it requires a value
14:10:35FromGitter<jrfondren> let mYvar: range[0..3] = 2
14:11:36PMunchOr is it this you're trying to do? https://play.nim-lang.org/#ix=2BuP
14:12:31FromGitter<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:49FromGitter<jrfondren> var myVar: range[0..3] won't complain
14:17:54FromDiscord<ITR> yeah, it requires a value, my question was how to assign one
14:18:00FromDiscord<ITR> sorry for being unclear
14:18:27FromGitter<jrfondren> let x = 10
14:18:53FromDiscord<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:20FromGitter<jrfondren> you need to assign an array to an array
14:19:41FromDiscord<ITR> how do I make a fixed size array object
14:19:45FromGitter<jrfondren> !eval let z2 = [0, 1, 2]; echo z2.typeof
14:19:47NimBotarray[0..2, int]
14:21:48FromDiscord<ITR> yeah, but how do I do that without using [0, 1, 2]
14:22:25PMunch@ITR what do you want the values to be?
14:22:27FromDiscord<Recruit_main707> You can just say var arr: array[3, int]
14:22:30FromGitter<jrfondren> you need some kind of value because you can't assign to a let after declaring it
14:22:53FromDiscord<ITR> just the default values for the array
14:22:54FromDiscord<Recruit_main707> Ah, if it’s a let, you can’t change it afterwards
14:23:07FromDiscord<Recruit_main707> Use var for that
14:23:16FromGitter<jrfondren> lets are single assignment bindings. they don't have defaults, they have one value
14:23:31leorize[m]1you can always write `let arr = default(array[3, int])`
14:23:32leorize[m]1it wouldn't be useful then though
14:23:34FromGitter<jrfondren> !eval z = [1, 2, 3]; z[1] = 4;
14:23:36NimBotCompile failed: /usercode/in.nim(1, 1) Error: undeclared identifier: 'z'
14:23:52FromGitter<jrfondren> !eval let z = [1, 2, 3]; z[1] = 4;
14:23:54NimBotCompile failed: /usercode/in.nim(1, 21) Error: 'z[1]' cannot be assigned to
14:24:03FromDiscord<ITR> default! that's what I want! Thank you leorize!
14:24:03FromDiscord<dom96> Congrats on getting to the HN front page @flywind 😄
14:24:09supakeeninb4 var
14:24:15FromDiscord<ITR> And thank you all others for trying to help, sorry for the question ebing difficult to explain
14:24:30FromDiscord<Rika> i dont understand why you would want the default values
14:24:43PMunch@ITR, yeah I think that's why we were having a hard time understanding you
14:25:03PMunchYou'd basically just have an array of zeros that you can't even change to anything else..
14:25:09FromDiscord<Recruit_main707> !eval let arr: array[3, int]
14:25:11NimBotCompile failed: /usercode/in.nim(1, 5) Error: 'let' symbol requires an initialization
14:25:40FromDiscord<ITR> it's to pass into a method that doesn't mutate the array
14:25:59FromDiscord<Rika> then you dont need to make a variable
14:26:35FromDiscord<Rika> just put `default(array[3, int])` directly into the parameter
14:27:05FromDiscord<ITR> yeah, but I'm not sure if that would be any easier to explain when I asked about it
14:27:12FromGitter<jrfondren> !eval proc foo(xs: array[3, int]) = xs[1] = 4
14:27:14NimBotCompile failed: /usercode/in.nim(1, 33) Error: 'xs[1]' cannot be assigned to
14:27:31FromDiscord<ITR> I even tried googling for `get default value for type nim`, and didn't find anything useful, lol
14:27:38FromGitter<jrfondren> immutable params is the default
14:27:44narimiranxs: var array
14:28:09leorize[m]1I think what they meant is that they want to pass an empty array into a method that wants one
14:28:57FromDiscord<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:43leorize[m]1what are you working on?
14:31:24FromDiscord<Idefau> what do you guys want to do
14:31:37disruptekmake coffee.
14:31:48FromDiscord<Idefau> stinky coffee
14:32:47FromDiscord<ITR> sent a long message, see http://ix.io/2Bv9
14:34:22FromDiscord<flywind> @narimiran Could you twitter https://news.ycombinator.com/item?id=24846828 ? Thanks!
14:34:57FromDiscord<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:57FromDiscord<Clyybber> @flywind I think @dom96 controls the twitter account
14:38:15narimirani can tweet too
14:38:31FromDiscord<Clyybber> nice /
14:39:02FromDiscord<flywind> 👍
14:39:46narimiranwhat to write exactly? link to your lib and HN comments?
14:41:04FromDiscord<flywind> That's ok. Thanks!
14:41:15FromDiscord<dom96> just write "Prologue v0.4.0 released, a new web framework for Nim" 😉
14:41:24FromDiscord<dom96> and link to HN/Github
14:43:41ForumUpdaterBotNew thread by Lachu: [Docker Image] GCC /bin/sh:: file not found, see https://forum.nim-lang.org/t/6969
14:43:42narimirandone
14:46:40PMunchDamn 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:00FromDiscord<shashlick> disruptek: do you still need nimterop <= 0.6.12 in the gittyup requires
14:51:07disruptekyep.
14:51:13*lbart quit (Ping timeout: 264 seconds)
14:51:15disruptekbecause you cannot be trusted with patches.
14:51:45disruptektake semver to heart and change your evil ways and maybe we can talk.
14:51:53*lbart joined #nim
14:52:29FromDiscord<shashlick> okay then i cannot test it in travister
14:53:14disruptekif i knew what that meant it still wouldn't motivate me to abandon the principles that enable successful software collaboration.
14:53:29disruptekbut i appreciate the effort. it sounds like you'll miss me!
14:55:39FromDiscord<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:39disruptekso what you're saying is, you knew it broke me?
15:00:24disruptekor... what you're saying is, it's not effective at showing you breaking changes.
15:01:01ZevvPMunch: dude
15:01:07Zevvyou're making me blush
15:04:29FromDiscord<shashlick> yes, I premonished it and intentionally broke you because it's fun to do that
15:04:50disrupteki know. i take this stuff too seriously.
15:05:00disruptekit'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:06disrupteksemver is not an obstacle course that you're trying to defeat.
15:06:08FromDiscord<shashlick> you certainly don't include anyone else in your game
15:06:21disruptekwell don't try to introduce new shit in a patch, silly.
15:06:34disrupteki cannot trust you. what do you think that means?
15:06:38FromDiscord<acek7> whats everyne up to
15:06:45disruptekarguing 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:05disrupteksemver is the only interface we have and yet shashlick is intent on making it binary.
15:08:55FromDiscord<acek7> wish i knew what either of those things are but you are a smart guy disruptek and i trust you
15:09:17disrupteki keep hearing that. i wish it arrived on the memo line of a fucking check.
15:09:26disruptekhttps://semver.org/
15:09:43disruptekbinary is, like, you have two things...
15:09:48disruptekno, wait, you have one thing.
15:09:52FromDiscord<Rika> broken and not broken 😛
15:09:53FromDiscord<shashlick> fixing bugs around musl didn't seem like a new feature to me
15:09:55disruptekah shit, i cannot explain binary.
15:10:18disruptekshashlick if you cannot internalize semver, we're doomed.
15:10:54*arecacea1 quit (Remote host closed the connection)
15:10:57disruptekthere are 10 kinds of people...
15:11:01supakeendoes semver even make asserts for versions that start with a 0, i thought they were all considered to be non-compatible
15:11:14disruptekthat is the convention, yes.
15:11:15FromDiscord<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:24FromDiscord<Rika> all 0 majors are considered incompatible with each other
15:11:39supakeen> 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:47supakeenso break whatever under 0. really
15:11:52disruptekyes.
15:11:54disruptekbreak whatever.
15:11:55FromDiscord<shashlick> we're all building rockets and pacemakers
15:12:09disruptekalso, don't expect me to use a requires that is wide fucking open.
15:12:16disruptekbecause literally /whatever/ may break.
15:12:21*arecacea1 joined #nim
15:12:29disruptekbecause you refuse to major your shit.
15:12:37disruptekeven though i use it everywhere.
15:12:47disruptekeven though it underpins my most prized software.
15:12:55disruptekand you have the audacity to give me a hard time?
15:13:02disruptekshashlick i will find you.
15:13:08disruptekaustin is not that large a place.
15:13:13disrupteki know my way around.
15:13:17disruptekand i know what to look for.
15:13:31disrupteki will see you sign on the street.
15:13:38disrupteki will sniff your scent on the breeze.
15:13:40disruptekI WILL FIND YOU
15:13:59FromDiscord<shashlick> what will that get you - it will only break more of your code
15:14:14disruptekso you want me to vendor nimterop?
15:15:35FromDiscord<shashlick> i'll say stop using my stuff since i cannot be trusted
15:16:04disruptektell you what.
15:16:16disruptekyou have push to all my repos. you make it work.
15:16:19disrupteki don't care.
15:16:41disruptekbut i am not special.
15:16:46disruptekall your users have this problem.
15:16:51disrupteki'm just the bellwhether.
15:17:24disruptekand fuck yeah i'll blame you when it breaks.
15:17:31disruptekbecause you have the tools and you refuse to use them.
15:18:04mipriyou can do that without pretending that semver is magic that prevents things from ever breaking. a bug fix broke something? shit happens.
15:18:29disruptekyeah. i think semver is stupid. don't get me started.
15:18:50disruptekbut it's not nothing, and it's all we have because nimble is fucking stupid. er. stupider. more stupid than semver.
15:19:14disruptekand you know what doesn't break?
15:19:17disrupteksoftware that doesn't change.
15:19:22FromDiscord<shashlick> well, I'd rather do without this constant expectation that everything should be perfect or it is shit
15:19:35disruptekif i fucking pin a semver that works, i shouldn't be catching shit about how i'm preventing progress.
15:19:48disrupteki don't care about your tests. i care about my users having working software.
15:19:58disrupteki don't care if it's perfect.
15:20:07disrupteki will test it. if it works for me, i will offer it to users.
15:20:11FromDiscord<Clyybber> disruptek: pin a commit done
15:20:20FromDiscord<Clyybber> I thought nimph could do that eh ? :p
15:20:20disruptekjust because i want to use your software doesn't mean i want to use anything you write.
15:20:26disrupteknimph does do that.
15:20:43FromDiscord<shashlick> it'll take a week to explain so let's just leave it at that
15:20:52disruptekhe's pissed because i reversed a >= into <= in my requires statement for a /dependency/ of a /dependency/ of nimph.
15:21:08disrupteknow c'mon, man.
15:21:11disruptekget over yourself.
15:21:30disrupteki already told you you can do whatever you want in my repos.
15:21:42disruptekgo nuts. but mark my words. i am not alone in having this problem.
15:21:51FromDiscord<Clyybber> how about you focus on the actual bug/breaking change
15:22:05disrupteki cannot be bothered to debug all software i want to use.
15:22:22FromDiscord<Clyybber> whats the problem even? That shashlick did a patch increase instead of a minor?
15:22:23disruptekit's absurd to suggest that i should maintain expertise in every line of code i want to leverage.
15:22:30disrupteki just explained it.
15:22:52disruptekhe's pissed because i reversed a >= into <= in my requires statement for a /dependency/ of a /dependency/ of nimph.
15:23:10miprinah, 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:52disruptekapparently, 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:56FromDiscord<shashlick> that isn't even the thing - i test his stuff to make sure i don't break stuff
15:24:04disruptekdoes it work? no.
15:24:08disruptekso why should i care?
15:24:23*apahl quit (Ping timeout: 244 seconds)
15:24:26FromDiscord<shashlick> ya so don't act like I'm pissed with your requires statement
15:24:40disrupteksure. so don't act like i'm standing in the way.
15:24:45disruptekit was a statement i made.
15:24:54disruptekyou hold the keys to the repo. i would prefer that you fork it.
15:24:55FromDiscord<shashlick> ya that's what my question meant right? scroll up
15:25:16*apahl joined #nim
15:25:24FromDiscord<Clyybber> whats the actual breaking change?
15:25:48disruptekthe breaking change is in a .nimble file.
15:25:53disruptekit breaks shashlick's tests.
15:26:10FromDiscord<Clyybber> no, what broke nimph
15:26:44FromDiscord<shashlick> i had to add a second executable to nimterop and since disruptek doesn't use nimble, it doesn't get built
15:26:57FromDiscord<shashlick> so that's a breaking change for him
15:27:04*tane joined #nim
15:27:11disruptekand this was added on a patch release.
15:27:12FromDiscord<Clyybber> lol
15:27:24FromDiscord<Clyybber> can I call this a
15:27:25FromDiscord<Clyybber> nimph moment
15:27:43disruptekand 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:08FromDiscord<shashlick> no one called you one
15:28:09FromDiscord<Idefau> tfw no nymph gf
15:28:12FromDiscord<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:33FromDiscord<shashlick> because it doesn't run nimble tasks to do builds
15:28:39disruptekbecause nimph doesn't want to run arbitrary code before you have a chance to inspect it.
15:29:14disruptekit 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:29disruptekand once you do run them, they don't have the right environment.
15:29:37disruptekit's just a total nimble clusterfuck.
15:29:38*bung joined #nim
15:29:48FromDiscord<Clyybber> where does shashlick state he supports nimph :) ?
15:29:51*Lord_Nightmare joined #nim
15:30:12disruptekshashlick supports nimgit2 which is a dependency of gittyup which is a dependency of nimph.
15:30:31*tiorock joined #nim
15:30:37FromDiscord<Clyybber> yeah, but that says nothing about the pm nimterop supports
15:30:38disrupteknimterop is a dependency of nimgit2. 😁
15:31:02disrupteki'm not asking shashlick to support anything.
15:31:14disrupteki'm happy taking his MIT licensed code and supporting it myself.
15:31:34FromDiscord<Clyybber> so can't you like update your build scripts to add the second executable
15:31:58disrupteknimph doesn't have build scripts for the reasons i mentioned.
15:31:58FromDiscord<Clyybber> or send a PR to nimterop
15:32:09disrupteka pr to remove a new feature he added?
15:32:13FromDiscord<Clyybber> but nimterop already has toast
15:32:19disruptekyep.
15:32:21FromDiscord<Clyybber> surely you build taht somehow
15:32:33FromDiscord<Clyybber> and now just add dough to the list
15:32:34disruptektrue, you wrote a build script, didn't you.
15:32:53FromDiscord<Clyybber> me?
15:32:56disruptekyes.
15:33:11FromDiscord<Clyybber> I had a small script to build nimph
15:33:13FromDiscord<Clyybber> but its old
15:33:17disruptekare you arguing that i should have an open requires statement for any version of nimterop?
15:33:29disruptekthen i should wait for someone to tell me a new version of nimterop was released that breaks nimph.
15:33:33FromDiscord<Clyybber> nah, unless you can afford the breakage
15:33:34disruptekthen i should debug the problem.
15:33:41disruptekthen i should modify nimph and issue a new release.
15:33:46disruptekthis is your proposal?
15:33:49*rockcavera quit (Ping timeout: 264 seconds)
15:34:17disruptekhow about this proposal:
15:34:23disrupteki use code that i know works.
15:34:27FromDiscord<Clyybber> I mean if you don't release nimph broken, its not a crazy idea
15:34:37disruptekwhen i need new features, i try out the new versions of nimterop.
15:34:51disruptekif i find one that works well, i issue a new nimph that allows that version of nimterop.
15:36:12FromDiscord<Clyybber> @shashlick maybe nimble needs a testupdate command for CIs? That would ignore the requirements and test it with a newer version
15:36:26FromDiscord<Clyybber> (edit) "command" => "functionality"
15:37:08miprithat's even more fair than what people do on occasion which is vendor a modified version of a library.
15:37:52disruptekit's the only sane way to do it.
15:38:01disruptekthe alternative is to force people to use a specific commit.
15:38:15disruptekor a specific package manager, like nimph, that supports ~ or ^ for semver.
15:38:38disrupteki'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:26FromDiscord<shashlick> why is any question posed to you equate to an attack
15:44:46disruptekscroll back. there was no attack.
15:44:48FromDiscord<shashlick> if you don't/cannot update, why would you think that would be a problem
15:45:07disruptekbut, yes, i am a little outraged that i have to explain semver to you.
15:46:00disruptekafaict, you're the one that's butthurt over my requires statement.
15:46:04FromDiscord<Avatarfighter> What's new everyone
15:46:05FromDiscord<scott> it took me like 5 minutes after joining the chat to be like "oh, I see. Disruptek is the local grump"
15:46:14FromDiscord<Avatarfighter> lmaooo
15:46:22FromDiscord<Avatarfighter> :disruptek:
15:46:39disruptekah damn, i was on discord and i failed to try out :disruptek:
15:47:01FromDiscord<Avatarfighter> Proves you gotta come back on it :GWaobloChildPepeShrug:
15:47:03supakeeni'm considering putting disruptek in my slides too
15:47:13FromDiscord<Avatarfighter> slides for what lmfao
15:47:14disruptekwut
15:47:22disrupteki think he means shoes.
15:47:24FromDiscord<Clyybber> > and i'm the asshole for not wanting a requires >= 0.6.12.
15:47:31supakeenintro to nim thingy i wanted to do here
15:47:32FromDiscord<Clyybber> ~disruptek is self-declared asshole
15:47:32disbotdisruptek: 11a sexy fella with magic hands.
15:47:32disbotdisruptek: 11self-declared asshole
15:47:32disbotdisruptek: 11an unsafe nil deref
15:47:36FromDiscord<Clyybber> lol
15:47:38disruptekheh
15:47:42FromDiscord<Avatarfighter> ahaha
15:47:45FromDiscord<Clyybber> wait, let me try this
15:47:52FromDiscord<Clyybber> ~disruptek is :disruptek:
15:47:53disbotdisruptek: 11a sexy fella with magic hands.
15:47:53disbotdisruptek: 11:disruptek:
15:47:53disbotdisruptek: 11an unsafe nil deref
15:47:57FromDiscord<Avatarfighter> aw
15:47:58FromDiscord<Clyybber> damn
15:47:59FromDiscord<Avatarfighter> @Yardanico
15:48:02FromDiscord<Clyybber> learn to emoji disbot
15:48:03FromDiscord<Avatarfighter> Showstopper bug
15:48:19disruptekif i had a nickel for every time i was made a footnote in a powerpoint presentation...
15:49:00FromDiscord<lqdev> you'd have one for being a footnote in my readme.
15:49:12supakeeni 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:20FromDiscord<Clyybber> lol
15:49:22FromDiscord<Avatarfighter> lol
15:49:24FromDiscord<Avatarfighter> oh god
15:49:34FromDiscord<Clyybber> this is why we need a "this tbh" emoji
15:49:47FromDiscord<Avatarfighter> this tbh ^
15:51:25*rockcavera joined #nim
15:52:13supakeenin any case i haven't gotten far anyways: https://i.imgur.com/BBskiIQ.png :')
15:52:22FromDiscord<nikki> hn back at it https://media.discordapp.net/attachments/371759389889003532/768501943650877440/image0.png
15:52:42FromDiscord<Avatarfighter> brb time to brigade /u/zeeone
15:52:50FromDiscord<Clyybber> kill him, if you will
15:53:06FromDiscord<lqdev> >a couple of years ago
15:53:08FromDiscord<scott> "i tried an actively developed language a couple years ago and didn't like it then, so it's bad"
15:53:10disruptekconsider him gone.
15:53:25FromDiscord<Avatarfighter> lmao we're so toxic
15:53:36FromDiscord<scott> although his comment on that web framework was kinda on point
15:53:49FromDiscord<scott> I didn't really see anything interesting about it and the syntax wasn't great
15:54:12*hnOsmium0001 joined #nim
15:54:12FromDiscord<Avatarfighter> What was the context of that comment?
15:54:20FromDiscord<Avatarfighter> Is he talking about Prologue?
15:54:32FromDiscord<nikki> aye
15:54:54FromDiscord<dom96> Web frameworks are only groundbreaking if they have a shiny website with big code samples and lots of scrolling space
15:55:16FromDiscord<Avatarfighter> margin: 200%; should solve the scrolling space issue
15:55:24miprigotta beat this: https://rocket.rs/
15:55:24FromDiscord<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:28FromDiscord<nikki> and also the back button
15:55:43FromDiscord<dom96> that freakin' website has clouds!
15:55:47FromDiscord<dom96> So groundbreaking
15:56:05*rockcavera quit (Ping timeout: 240 seconds)
15:56:11FromDiscord<Clyybber> it really nooks neat tho
15:56:17FromDiscord<dom96> oh no
15:56:20*rockcavera joined #nim
15:56:21FromDiscord<dom96> they've got clyybber
15:56:34FromDiscord<Clyybber> the website, I have no idea about the framework ;P
15:56:44FromDiscord<scott> TBH that seems like a pretty tame website
15:56:45FromDiscord<nikki> we lost clyybber
15:56:45FromDiscord<Avatarfighter> the website is really slick
15:58:17FromDiscord<Rika> the website is nice, the library is another story
15:58:27FromDiscord<Avatarfighter> ahah
15:58:34FromDiscord<dom96> it's called rocket too
15:58:37FromDiscord<dom96> bet Elon Musk uses it
15:58:41miprithe library's not bad either, much better than Warp.
15:58:49FromDiscord<nikki> actix thoooo
15:58:52FromDiscord<Avatarfighter> @Rika any chance you want to talk about infrastructure ?
15:59:03FromDiscord<nikki> i actually really like nim-lang.org website
15:59:03FromDiscord<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:08FromDiscord<nikki> racket's website is also good
15:59:15FromDiscord<Rika> @Avatarfighter wdym
15:59:52FromDiscord<Avatarfighter> we need to plan the backend :GWaobloChildPepeCry:
16:00:04FromDiscord<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:25FromDiscord<Rika> > we need to plan the backend :GWaobloChildPepeCry:↵i am doing my homework, give me a few minutes
16:01:20FromDiscord<scott> oh, absolutely. And that gives a decent indication as to how much work is being put into the library.
16:01:26FromDiscord<Avatarfighter> kk take ur time dm me 😛
16:02:56FromDiscord<nikki> honestly some times the website being too shiny makes me not trust the thing
16:02:59FromDiscord<nikki> depending on the thing
16:04:23FromDiscord<Rika> that one programming language with a single letter name that rhymes with bee
16:05:00mipriB, C, D, E, G, P, V, Z?
16:05:13disruptekno, T, dummy.
16:05:21FromDiscord<Rika> have fun guessing
16:05:24FromDiscord<ITR> Vi?
16:05:25mipriT is vaporware!
16:05:36FromDiscord<nikki> the lisp?
16:05:36FromDiscord<ITR> Lee
16:05:38miprino it's obviously V. C doesn't have a website and D's isn't that flashy
16:05:42FromDiscord<lqdev> C.
16:05:47FromDiscord<ITR> oh gee
16:05:54FromDiscord<scott> oh man, V 😂
16:06:01FromDiscord<nikki> V
16:06:03FromDiscord<ITR> Ni!
16:06:10FromDiscord<scott> who needs garbage collection 😂
16:06:12FromDiscord<Recruit_main707> neem
16:06:53FromDiscord<nikki> btw in the nim manual it says string assignment "copies the string"
16:07:00FromDiscord<Rika> > Ni!↵に?ニ?
16:07:08FromDiscord<nikki> --> do strings have reference semantics? are they refcounted? ...
16:07:33FromDiscord<Rika> strings have value semantics as far as i know
16:07:40FromDiscord<nikki> cool
16:07:58FromDiscord<Rika> but theyre still internally refs
16:08:02FromDiscord<nikki> so dealing with strings directly shouldn't make gc / arc do stuff?
16:08:11FromDiscord<nikki> right internally they'd have a data ptr, sure
16:08:16FromDiscord<Vindaar> Rika has rediscovered their IME 🙃
16:08:18FromDiscord<Rika> it still will need gc or arc to do things
16:08:27FromDiscord<Rika> > Rika has rediscovered their IME 🙃↵? ive had this ime for years
16:08:34FromDiscord<Rika> i've been learning japanese for years
16:08:40FromDiscord<Vindaar> Haha, I'm kidding 😄
16:08:46FromDiscord<Rika> that doesnt mean i'm any good though
16:08:52FromGitter<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:54FromDiscord<Rika> im just past N5
16:08:57FromDiscord<Vindaar> Was just surprised about the sudden influx of hiragana and katakana in my Nim chat 😛
16:08:57FromGitter<jrfondren> than this: https://play.nim-lang.org/#ix=2Bwd
16:08:58FromDiscord<Recruit_main707> > so dealing with strings directly shouldn't make gc / arc do stuff?↵it should iirc
16:09:52nikki93disruptek: u were working on some stuff re: making the name mangling nicer / making the c output more readable right?
16:10:27FromDiscord<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:30nikki93i've been spelunking thru c output to see how things work and usually i end up doing 's/_\w*//g' lol
16:11:20FromDiscord<Vindaar> just let the IME tab complete stuff @Rika? (sorry, gonna stop in main with this now)
16:11:32FromDiscord<Idefau> tfw i had to read resulted js to fix bugs in some cases
16:11:38FromDiscord<Idefau> (edit) "resulted" => "compiled"
16:11:58FromDiscord<Idefau> fun JS interfacing and racing conditions
16:13:03disrupteknikki93: yeah, see my open pr.
16:13:14disruptekit's the one with over 100 commits. you can't miss it.
16:17:34*TomDotTom quit (Ping timeout: 265 seconds)
16:22:02supakeenwhat are some more resources I could throw in this: https://i.imgur.com/XMo1Ig2.png that we all like
16:22:25FromDiscord<Idefau> the forum
16:22:28FromDiscord<Idefau> ofc
16:23:08FromDiscord<Avatarfighter> The forum 😎
16:23:30FromDiscord<Avatarfighter> you could almost put hackernews on that because we end up there pretty often
16:23:45disruptekhttps://narimiran.github.io/nim-basics/
16:23:51disruptek~playground
16:23:51disbotplayground: 11an online in-the-browser IDE for simple Nim experiments at http://argentina-ni.ml/ -- disruptek
16:23:51disbotplayground: 11https://play.nim-lang.org the official Nim playground, can run Nim in the browser and share snippets
16:24:02disruptek~kashualmodi
16:24:02disbotno footnotes for `kashualmodi`. 🙁
16:24:30disruptek~kaushalmodi
16:24:30disbotkaushalmodi: 11a badass coder with a wealth of useful Nim articles on his blog, at https://scripter.co/ -- disruptek
16:24:44disrupteki always butcher his name. :-(
16:25:05supakeenthank you disruptek/avatarfighter, i've added the nim-basics and play links plus mentioned the forum :)
16:25:05FromDiscord<Idefau> 😦
16:25:25supakeenoh and idefau
16:26:01disruptek~basics is https://narimiran.github.io/nim-basics/
16:26:02disbotbasics: 11https://narimiran.github.io/nim-basics/
16:26:28FromDiscord<Avatarfighter> another useful resource imo is the Nim for X programmer wikis
16:26:47supakeenI think I'll do a larger list in an accompanying blog post.
16:26:47disruptekyeah, jc has done a lot of work there.
16:26:49FromDiscord<Idefau> oh also nim by example
16:26:55FromDiscord<Avatarfighter> https://github.com/nim-lang/Nim/wiki/Nim-for-Python-Programmers
16:27:05FromDiscord<Idefau> https://nim-by-example.github.io/
16:28:24bungI remenber there's like buffer module read write variable with endians ?
16:31:15FromDiscord<Avatarfighter> The streams module gives you the buffer and endians lets you switch between little or big
16:33:41bungI can't see these api in 1.4 doc
16:40:09bungnvm
16:49:13mipriI kept reading that as "can't wait to see" for some reason
16:49:19mipriwhat APIs?
16:50:03bunghaha , I mean one module apis like writeXXLE writeXXBE
16:50:54*TomDotTom joined #nim
16:50:55disruptekor if you're a Chad using nimph:
16:51:00*disruptek 🤣
16:51:43supakeenhttps://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:19disruptek:nimdog:
16:52:47disruptek`nimph clone rapid` should work as long as there isn't a more popular nim project named `rapid` on github.
16:53:22FromDiscord<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:39FromDiscord<scott> how do I convert the else branch into a future?
16:53:41disruptekwhat do you think the problem is?
16:53:58disruptekresult = cache
16:54:04FromDiscord<scott> oh
16:54:08FromDiscord<scott> that works I guess
16:54:11disruptekweird.
16:54:17disruptekit's almost like i read the manual.
16:54:26disruptekbut that would mean... nah.
16:54:43FromDiscord<scott> weird, almost like the manual is disorganized and hard for new members of the community to search
16:55:04disruptekhmm, it's almost like those that have struggled have something unique and meaningful to contribute.
16:55:22FromDiscord<scott> fair point
16:55:25mipriI think the level of detail rather than organization is the problem.
16:55:36disrupteki think it's pretty bad.
16:55:49disruptekbut i really feel like i have a certain blindness when it comes to writing about nim.
16:56:05FromDiscord<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:32FromDiscord<scott> which, yeah. `result = cache` is pretty unintuitive IMO
16:56:44disruptekwhat's special is that the code gets rewritten due to the .async macro.
16:57:07disruptekyou have to remember that you `return cache` but it gets rewritten into a Future.
16:57:21disrupteki don't like this, but i'm guilty of it too in cps.
16:57:22FromDiscord<scott> yeah, but that means documenting behavior is hard and people will probably have a lot of questions about it.
16:57:29disruptekit's just the sort of thing we have to try to smooth out.
16:57:43FromDiscord<scott> don't get me wrong, I don't mind the implementation
16:57:55disruptekhowever, the basic `result` behavior is worth spending a lot of time on. it's an important, valuable feature.
16:58:06disruptekboth for performance and readability and software engineering.
16:58:10FromDiscord<scott> yeah, apparently there's some auto-casting that goes on there?
16:58:23disruptekit's a rewrite, as i said.
16:58:45disruptekmacros are inscrutable little fucks.
16:58:56disruptekuse them sparingly for just this reason.
16:59:01FromDiscord<scott> hehe true
16:59:38disruptekmipri: tell me more. you want more detail or less?
17:00:26miprilots more. and examples.
17:01:35disruptekone thing that annoyed me was that the examples seemed to be lifted straight from the compiler.
17:01:41mipriwhen 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:53disruptekalmost as if someone was like, "i wanna do x. lemme implement it and then i can use the impl as an example."
17:02:44disrupteki'm looking forward to getting back to streaming.
17:03:46disruptekwe 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:29TomDotTomdisruptek: 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:41disruptekno, i mean that lately i've seen more of a surprise sentiment about how statement lists and expressions work.
17:12:13disruptekthis is something of a subset of what you're suggesting.
17:12:23disruptekwe need to convey just how ordered and consistent the ast is.
17:14:18disruptekwhat'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:33disruptekwe're just starting to push against some poorly-spec'd stuff in cps, for example.
17:14:40disruptekbut i see this as the future frontier for nim.
17:14:51disrupteklots and lots of code generated at compile-time.
17:15:10disruptekmany levels of abstraction.
17:15:20TomDotTomIt would be nice to have a easier was to inspect compile-time generated nim-code
17:15:59disrupteki really only use treeExpr but i'm aware that there are several competing methods.
17:16:06TomDotTomAs for a well-designed Ast, you're stuck with the bad until v2 are you not
17:16:09disrupteker, treeRepr.
17:16:37TomDotTomI found treeRepr recently, but only by looking at what dumpTree was doing
17:16:39disruptekwell, i don't love macros-v1 but i have to concede that they are good enough for now.
17:16:41supakeeni don't think i've even touched rewriting the ast yet
17:17:20disruptekexcept for things that are bugs that we can fix in macros-v1, i mean. such things as prevent cps.
17:17:40TomDotTomI 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:00disruptekthink 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:56disruptekzevv kinda drove home the point that macros are a suspicious place in which to write logic because their behavior can be vague.
17:19:41disruptekto me that's a flaw.
17:19:55*natrys quit (Ping timeout: 246 seconds)
17:20:12disruptekwe 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:13TomDotTomIs 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:30disrupteki mean, clearly.
17:23:25TomDotTominterpolation with `quote` definitely makes like easier
17:23:57disruptekhah, i gave up on it long ago.
17:24:36TomDotTomSo, when writing marcos, how do you go about testing them?
17:24:59disrupteki dump the output and write unit tests.
17:25:13disruptekhow does quote do help?
17:25:31disrupteki just want to work with ast as i might any other tree structure.
17:25:44disrupteki know exactly what such operations produce.
17:26:09disruptekquote do is quicksand. it will trap you in future changes to quote, do, or quote do.
17:26:29disruptekchange my mind. 😁
17:27:46FromDiscord<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:48TomDotTomI 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:30disruptekyou already know how to work with trees.
17:28:38disruptekdon't shortchange what you already understand.
17:28:44disruptekit's like zevv and his procs.
17:28:46FromDiscord<dom96> I'll say what Araq would say if he was here: templates + getAst FTW
17:29:09disrupteki'm sure araq doesn't agree with me, btw.
17:29:28leorize[m]1Nim's manual is more of a specification than an actual manual to the language tbh
17:30:39TomDotTomThe 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:44leorize[m]1yep, 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:54supakeenand it also takes time and a stable system for good relevant content to bubble to the top :)
17:37:11TomDotTomFor 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:38TomDotTomI always liked the Python Module of the Week site
17:39:04disrupteki'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:45disruptekmangling is only green right now because clyybber convinced me to relax the spec.
17:39:54FromDiscord<Avatarfighter> \o/
17:39:57TomDotTomHa, that sounds familiar
17:40:08supakeendisruptek: What is the mangling thing?
17:40:25disruptekjust renames of identifiers in the c output.
17:40:29supakeenah
17:41:10disruptekit's pretty embarrassing, honestly.
17:41:19supakeenhow so?
17:41:42disruptekyou want me to cop to my fails?
17:42:03disruptekwell it started with some poor assumptions.
17:42:21disrupteki didn't push people for help when i should have.
17:42:23supakeenthat's the start of every fairy tale in programming!
17:43:06disrupteki went in and broke everything badly with the assumption i understood how it worked. see point 1.
17:43:17supakeenthis is all so familiar
17:43:33disruptekyeah, boy meets girl, boy fucks girl, girl turns out to be a goat.
17:43:46disruptekit's the same old story.
17:44:37disruptekso 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:01disrupteklike i said, it's not flattering.
17:45:09FromDiscord<MiniApple> hmm
17:45:16FromDiscord<MiniApple> is nim dynamic type?
17:45:19disruptekno.
17:45:20FromDiscord<lqdev> no
17:45:25disruptek^
17:45:27FromDiscord<MiniApple> lol
17:45:37FromDiscord<MiniApple> i was thinking that nim is dynamic
17:45:40FromDiscord<MiniApple> sad
17:45:48disruptekweird, it's almost like you didn't see the link for the manual.
17:45:49FromDiscord<lqdev> i'd be happy if i were you
17:45:50disruptek~manual
17:45:50disbotmanual: 11the Nim Manual is https://nim-lang.org/docs/manual.html -- disruptek
17:46:02FromDiscord<MiniApple> so nim is like script version of c
17:46:05FromDiscord<Recruit_main707> its static with a lot of cases where its only optional
17:46:10FromDiscord<lqdev> @MiniApple no.
17:46:11FromDiscord<Recruit_main707> no lol, nim
17:46:18FromDiscord<lqdev> it's a better version of C? maybe?
17:46:18*disruptek tries to find the 🤦 emoji...
17:46:20FromDiscord<MiniApple> hmm
17:46:25FromDiscord<lqdev> but not a scripting language
17:46:27FromDiscord<lqdev> it's still compiled
17:46:33FromDiscord<MiniApple> ok
17:46:46FromDiscord<Recruit_main707> check that link
17:46:56disruptekit's almost like you never visited https://nim-lang.org/
17:47:25FromDiscord<MiniApple> ok
17:47:33FromDiscord<MiniApple> but i already visited
17:47:38disruptekweird.
17:47:41supakeentry reading
17:47:43FromDiscord<MiniApple> but i didn't see something like static
17:48:08FromDiscord<Recruit_main707> supakeen: dont be rude though
17:48:10disruptekit's literally the 2nd word if you don't count "is" and "a".
17:48:41FromDiscord<whisperdev> Nim is supposed to be like Haxe. But relevant 😄
17:48:48disruptekjust how many words /did/ you read?
17:48:51FromDiscord<Avatarfighter> @MiniApple don't take disruptek's abrasiveness seriously this is how he is
17:48:59FromDiscord<Avatarfighter> Welcome to the community 😄
17:49:07FromDiscord<MiniApple> hmm
17:49:09disruptektake it seriously. we will expect you to read.
17:49:15FromDiscord<Avatarfighter> lmao
17:49:16disruptekit's hard for us to communicate otherwise.
17:49:17FromDiscord<MiniApple> i readed
17:49:44FromDiscord<MiniApple> i know nim is static
17:49:56FromDiscord<MiniApple> i want know if nim is dynamic too
17:50:14FromDiscord<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:19FromDiscord<whisperdev> @MiniApple What's your first language?
17:50:19FromDiscord<Avatarfighter> There is nimvm which interprets nimscript
17:50:23FromDiscord<MiniApple> hmm
17:50:25FromDiscord<MiniApple> java
17:50:26FromDiscord<Recruit_main707> """""preprocessor"""""
17:50:28supakeensorry, i let my inner disruptek out.
17:50:33FromDiscord<MiniApple> or javascript
17:50:39FromDiscord<Avatarfighter> @Recruit_main707 slight quotes around that 😛
17:51:16FromDiscord<Recruit_main707> thats makes rust is an llvm preprocessor
17:51:23FromDiscord<Avatarfighter> yeah
17:51:26FromDiscord<Avatarfighter> I would argue it is
17:51:32FromDiscord<Avatarfighter> :GWaobloChildPepeShrug:
17:51:42FromDiscord<Recruit_main707> well, if you think so, then nim is too for sure
17:52:36TomDotTomAt the end of the day isn't everything just a preprocessor for machine code
17:52:55FromDiscord<Avatarfighter> The only reason I consider nim to be a true preprocessor is because the IR is C/CPP/ObjC/JS
17:53:43FromDiscord<Avatarfighter> there is nothing wrong with that though
17:54:44leorize[m]1I'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:23disruptekit's just not interesting.
17:55:51FromDiscord<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:52disruptekyou can speak one language and write down another. who gives a shit?
17:55:57FromDiscord<Avatarfighter> ^
17:56:00FromDiscord<nikki> it's processing, and there is stuff that happens after it
17:56:06FromDiscord<nikki> i guess it's not a preprocessor if the universe ends right after
17:56:07disruptekthe point is that we're here to talk about the spoken language, not the written one.
17:56:24leorize[m]1typically when we say preprocessor we refer to a lexial preprocessor, which only perform lexial analysis
17:56:46FromDiscord<nikki> there's no c in lexial!
17:56:51disrupteki think of oral sex as a preprocessor.
17:56:56disruptekno one cares.
17:57:07disruptekwell, some do, i guess.
17:57:39*siulManfroni joined #nim
17:57:43disruptekno one cares to talk about it, though.
17:58:39*luismanfroni quit (Read error: Connection reset by peer)
17:58:58FromDiscord<nikki> nim is nice!
17:59:00FromDiscord<nikki> i like it
18:00:03FromDiscord<Avatarfighter> same
18:00:10FromDiscord<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:06supakeenTomDotTom: 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:41FromGitter<jrfondren> https://www.amazon.com/gp/product/B07L68NY2Z has a single chapter with Nim. interesting concept
18:20:08FromDiscord<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:57FromDiscord<haxscramper> E.g. not huge (or even weekend-long) projects, but some nice tips that people can share
18:21:00FromDiscord<MiniApple> well i am gonna to recommend nim in other server
18:21:05FromDiscord<MiniApple> lol
18:23:04FromDiscord<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:05FromDiscord<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:27FromDiscord<haxscramper> (edit) "application parser" => "application, parser/"
18:23:35ZevvAvatarfighter: too much
18:23:47FromDiscord<Avatarfighter> How much are we talking
18:23:52FromDiscord<Avatarfighter> like a couple gigs per ?
18:23:55FromDiscord<Avatarfighter> that's fine if so
18:24:04Zevvabout 250Mb of ram
18:24:20FromDiscord<Avatarfighter> oh
18:24:24FromDiscord<Avatarfighter> wait that's so good
18:24:34FromDiscord<Avatarfighter> I thought you were going to say 3 gigabytes
18:25:25supakeenhttps://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:27FromDiscord<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:24FromDiscord<notchris> I think we need a language mascot
18:26:44FromDiscord<Avatarfighter> I really think a dude on a throne with the crown would be fun
18:26:51Zevvhooraay, I got Nim package of the week! What is my prize?
18:26:55ZevvCan I choose the brand?
18:27:02disrupteki got yer throne right here: 🚽
18:27:13FromDiscord<Avatarfighter> perfect
18:27:14FromDiscord<MiniApple> hmm
18:27:20miprinotchris: https://duckduckgo.com/?q=king+nimrod&iar=images&iax=images&ia=images
18:27:34FromDiscord<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:39supakeenZevv: 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:16mipriMiniApple: yes, there are ref and ptr types
18:28:20disruptekpro tip: never threaten zevv with beer.
18:28:30disruptek~manual
18:28:31disbotmanual: 11the Nim Manual is https://nim-lang.org/docs/manual.html -- disruptek
18:28:31notchrisI was thinking more like a cute animal
18:28:32Zevvsupakeen: deal!
18:28:36notchrislike a red panda
18:28:38*kobi7 joined #nim
18:28:41kobi7hi
18:28:43Zevvand I'm closer then you think
18:28:55FromDiscord<haxscramper> We have :nimRawr: for a mascot
18:28:56supakeen:)
18:29:06FromDiscord<MiniApple> wow
18:29:10miprinotchris: humans are cute animals.
18:29:21supakeenalways up for a drink though it's a tad bit difficult right now with everything closed
18:29:26miprigranted King Nimrod is not usually depicted as cute
18:29:30supakeenand if i let you near my house disruptek will follow
18:29:40notchrisi thought he was depicted as evil
18:31:47FromDiscord<haxscramper> Guest post on nim blog: "Implementing disruptek in nim; learn how to create AI in less than X̊̇ͩYͫ̋̅Z̈̈̈ years"
18:33:15Zevvsupakeen: disruptek has seen enough of europe
18:33:23AvatarfighterGuest post: "Becoming one with disruptek"
18:33:47disrupteki think europe has seen enough of disruptek.
18:34:52miprisupakeen: 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:43supakeenprobably flesh it out a bit more over time on what it's supposed to be / what good presentation for it is
18:39:06disruptekthe json parser would be a good demo; too bad it puts our stdlib is such poor light. nice going, zevv.
18:39:18FromDiscord<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:25FromDiscord<Recruit_main707> make json great again
18:39:37Zevvdisruptek: no stdlib has sped up considerably recently
18:39:48disruptekoh shoot.
18:40:02Zevvor was that ar4qs parser, I forgot. Anyway, the demo does not actually capture, it only parses, so it's oranges & apples
18:40:06FromDiscord<Recruit_main707> @nikki those are sometimes outdated
18:40:22disruptekwell, i need to make a compile-time json parser.
18:40:32disruptekmaybe i'll just use your work.
18:40:42Zevvoh what does nim json still not work at compile time? I thought that was long fixed?
18:40:46miprinikki: https://narimiran.github.io/nim-basics/#_who_is_this_for , http://ssalewski.de/nimprogramming.html
18:40:55disruptekno; the problem isn't that it doesn't work.
18:41:05disruptekthe problem is that knuckleheads are directing its design.
18:42:10FromDiscord<nikki> seen the first one; need to see the latter mipri
18:42:14FromDiscord<nikki> thanks!
18:42:43FromDiscord<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:17FromDiscord<Recruit_main707> there is not much info really, just try to create something
18:43:22FromDiscord<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:23FromDiscord<nikki> ya
18:44:29disruptekZevv: also, it has to be as fast for ct constants as jason is for generating them.
18:45:22FromDiscord<nikki> thanks jason'
18:45:26FromDiscord<nikki> (edit) "jason'" => "jason!"
18:45:59*Avatarfighter1 joined #nim
18:46:01FromDiscord<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:18disruptek!repo jason
18:46:19disbothttps://github.com/disruptek/jason -- 9jason: 11JSON done right 🤦 15 29⭐ 1🍴
18:46:29*Avatarfighter1 left #nim (#nim)
18:46:35nikki93o lmao
18:46:42FromGitter<jrfondren> haxscramper: https://nim-lang.moe/on-nim.html#org2435a8a (scripting)
18:47:03FromDiscord<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:10disruptekjason is a little shittier than it should be due to concepts.
18:47:46FromGitter<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:54FromDiscord<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:00FromDiscord<alehander42> man
18:54:04FromDiscord<alehander42> so much traffic
18:54:15FromDiscord<Avatarfighter> what's new alehander!
19:01:28*lritter quit (Quit: Leaving)
19:01:40*stefantalpalaru joined #nim
19:10:52disruptekman, tables.withValue is pretty lame.
19:11:15Zevv98.3% of tables is
19:11:30disruptekthis man measures.
19:12:30FromDiscord<Idefau> i abuse tables
19:12:59Zevvexported from tables.nim: 114 procs, 2 templates and 31 iterators
19:13:06disruptekis that all.
19:13:14FromDiscord<exelotl> lol
19:14:08ZevvI figure 2 to 3 should be enough, which gives me 98.3%
19:16:05FromDiscord<alehander42> we found a pigeon in Saturday
19:16:12FromDiscord<alehander42> but it died last night
19:16:16FromDiscord<alehander42> i think i mishandled it badly
19:16:17FromDiscord<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:20FromDiscord<Idefau> honestly from tables i only use `[]` and `[]=`
19:16:35Zevvalehander42: aw that's sad.
19:16:39Zevvbut you can still eat it probably?
19:16:45disruptekexelotl: but it shadows result and mutables your var arg in any event.
19:16:51FromDiscord<alehander42> zevv dude
19:16:52FromDiscord<alehander42> noo
19:16:54ZevvIdefau: and 'contains'
19:17:00FromDiscord<Idefau> right
19:17:01Zevvso that's my 2 to 3
19:17:13FromDiscord<Idefau> and i also use the iterators
19:17:16FromDiscord<Idefau> pairs
19:17:20FromDiscord<Idefau> keys, values
19:17:21*manjaroi3_ joined #nim
19:17:22FromDiscord<alehander42> what is 2 to 3
19:17:28FromDiscord<nikki> 2..3
19:17:32disruptekzevv only owns one chopstick which suffices for all roles of UTENSIL in his household.
19:17:34FromDiscord<alehander42> a range
19:17:36FromDiscord<Idefau> 2..<3
19:17:37Zevvthe number of exported things tables.nim should actually have. instead or 147
19:17:43FromDiscord<Idefau> litel heart for nim :3
19:17:44FromDiscord<alehander42> this is our range emotion
19:17:48FromDiscord<alehander42> life is precious
19:17:56*manjaroi3_ quit (Client Quit)
19:18:03*TomDotTom quit (Ping timeout: 258 seconds)
19:18:14FromDiscord<nikki> i thought tables was for multiplication
19:18:19Zevvdisruptek: my kitchen has limited storage space. Who has room for 147 utensils anway
19:18:20FromDiscord<nikki> like 2 3 = 6
19:18:28mipri!eval import strutils; echo toSeq(2..<3)
19:18:30disruptektrue, true.
19:18:30NimBotCompile failed: /usercode/in.nim(1, 23) Error: undeclared identifier: 'toSeq'
19:18:32FromDiscord<nikki> it should overload on Two and Three to return Six
19:18:40mipri!eval import sequtils; echo toSeq(2..<3)
19:18:43NimBot@[2]
19:18:44ZevvI 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:44FromDiscord<Idefau> i mean you could use `tables` mixed with macros to make the entire multiplication table at runtime
19:18:47mipriof them s**utils
19:18:47Zevvand it was fabulous
19:18:47disruptektables is for factoring string collisions between 147 names.
19:18:47FromDiscord<Idefau> (edit) "runtime" => "compiletime"
19:19:18FromDiscord<alehander42> yeah
19:19:25FromDiscord<alehander42> we can be more minimal
19:19:29FromDiscord<alehander42> you use the same teeth for all 🙂
19:19:30FromDiscord<nikki> mi nim al?
19:19:40FromDiscord<alehander42> ^ !
19:19:54mipriwhat do the 'mi' and 'al' mean though?
19:20:10FromDiscord<nikki> al is aluminum
19:20:11FromDiscord<nikki> mi idk
19:20:17FromDiscord<Idefau> mi is im but backwards
19:20:19FromDiscord<Idefau> im nim aluminium
19:20:59mipriah right, minim is a palindrome
19:21:09Zevvalunimum
19:21:27FromDiscord<Idefau> i will transform myself into an irc user
19:21:39Zevvyou should
19:21:49FromDiscord<Idefau> nevermind, my znc bouncer is down(?)
19:21:52nikki93does nim prefer irc users
19:21:58FromDiscord<Idefau> i do
19:22:12FromDiscord<Idefau> yo wtf why cant i connect to my znc
19:22:35FromDiscord<Idefau> did the ssh bots finally succeed
19:23:28FromDiscord<Idefau> weird
19:24:42FromDiscord<Idefau> oooOOh right, my wifi went down today, and the rpi disconnected from the internet
19:26:50ForumUpdaterBotNew thread by Wiltzutm: Virus scanner problems after installing Nim 1.4, see https://forum.nim-lang.org/t/6970
19:26:58Zevvooh we made malware
19:27:49*idf joined #nim
19:28:25*avatarfighter[m] joined #nim
19:28:44FromDiscord<dom96> virus scanners are dumb
19:28:59FromDiscord<dom96> oh your binary embeds another binary?
19:29:01FromDiscord<dom96> VIRUS
19:29:49*NimBot joined #nim
19:31:25miprihttps://www.wordnik.com/words/minim - also a word
19:31:30avatarfighter[m]test
19:31:39avatarfighter[m]oh wow matrix is cool
19:32:11FromDiscord<Idefau> minim means minimal in romanian
19:32:41mipriwhat a silly language. it obviously means 1/20th of a scruple
19:33:17FromDiscord<Idefau> lmao
19:38:35idffinally
19:39:04disruptekhave i mentioned that withValue is lame?
19:39:10disruptekwell, it's not. it's awful.
19:39:21idfi dont remember using it
19:44:53disruptekoh, you'd remember.
19:47:52kobi7_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:19kobi7_it's very much alpha, even the details are being fleshed out right now plus i don't have much time
19:48:50kobi7_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:23kobi7_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:34kobi7_from that, each construct knows how to generate a string.
19:49:55kobi7_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:47kobi7_the code remains high level, and nim is kind of like a superset of most languages anyway.
19:51:15kobi7_some things don't exist, like an C# interface, but i can generate something similar with concepts
19:51:57kobi7_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:28kobi7_the namespaces will be folders or files, like we have in Nim
19:53:45kobi7_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:56miprimost 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:24FromDiscord<ElegantBeef> Well some of the dotnet api has a 1:1 relation to nim
19:58:29kobi7_yes, that's true
19:58:40kobi7_but there is now dotnet core which is open source
19:58:55FromDiscord<ElegantBeef> I've thought about Nim -> C# and some things are pretty difficult to replicate
19:58:55kobi7_and you can easily disassemble the dll's dotnet produces back into C#
19:59:19kobi7_so we may have something like a stdlib alternative
19:59:39kobi7_(unless it relies on unmanaged code)
19:59:58FromDiscord<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:12kobi7_ElegantBeef, what things are difficult to replicate?
20:00:25*siul_ quit (Read error: Connection reset by peer)
20:00:28FromDiscord<ElegantBeef> Could always use a `[NimStub]` which allows you to create an empty statement for anything the api doesnt support
20:00:51FromDiscord<ElegantBeef> Well procs/methods are complicated to reason about where to put them since we can declare them anywhere
20:01:29FromDiscord<ElegantBeef> You could make all procs extension methods and static methods inside the class, and methods as member functions
20:01:40kobi7_yes, types and methods will be separate like Nim always does. so basically once we know all the structure, including extension methods
20:01:57kobi7_then we generate from that knowledge, from that tree.
20:02:08FromDiscord<ElegantBeef> Well i'm talking about Nim -> C# 😄
20:02:25FromDiscord<Yardanico> Don't forget that you can't map interfaces to Nim concepts
20:02:30kobi7_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:33FromDiscord<Yardanico> You'll need to do something like in the streams module
20:02:47FromDiscord<Yardanico> a object with pointers to procedures
20:02:56FromDiscord<ElegantBeef> I think that's where a `[NimStub]` attribute will come in handy
20:03:10kobi7_Yardanico: why can't we map interfaces to concepts?
20:03:13FromDiscord<ElegantBeef> Yes you'll have to do write the code twice, but it means you dont have to wrap 1:1
20:03:22FromDiscord<Yardanico> Because concepts are compiletime only
20:03:23FromDiscord<ElegantBeef> Interfaces in C# are runtime usuable, concepts are compiletime
20:03:26FromDiscord<Yardanico> They don't exist at runtime
20:03:38FromDiscord<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:11FromDiscord<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:10kobi7_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:25FromDiscord<Yardanico> but it's still different
20:05:37FromDiscord<ElegantBeef> The point is you can have a list of interfaces in C#, you cannot have a list of concepts in nim
20:06:00kobi7_why can't we? generic T : IConcept ?
20:06:02FromDiscord<ElegantBeef> You can look at the streams module if you want to see an example of the alternative i mentioned
20:06:28FromDiscord<ElegantBeef> Sequences are runtime constructs, and because of that the compiletime concepts arent accessible
20:06:58FromDiscord<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:10FromDiscord<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:51kobi7_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:51kobi7_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:46kobi7_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:37kobi7_Are there any downsides to OOP in Nim? like, things that don't work well enough?
20:13:16FromDiscord<ElegantBeef> Interfaces 😄
20:14:42kobi7_ElegantBeef, i don't know how Nim would do abstract classes, interfaces, method overrides, calling base (java's super keyword), etc.
20:15:37kobi7_but, once the code is checked to compile, truth is, we don't really need them, just the actual implementations.
20:16:37kobi7_know what i mean? but my thinking right now is just get the code as similar as possible
20:18:41kobi7_ok, gtg, thanks for the input
20:19:31*stefantalpalaru quit (Changing host)
20:19:31*stefantalpalaru joined #nim
20:20:53FromDiscord<ElegantBeef> Well something like this is what you could do for interfaces
20:20:54FromDiscord<ElegantBeef> https://play.nim-lang.org/#ix=2BxR
20:20:59FromDiscord<ElegantBeef> But buh bye
20:22:50FromDiscord<Yardanico> We have procCall for base methods
20:24:53kobi7_ElegantBeef, cool example. i think this would be enough for interfaces
20:27:32*PMunch quit (Quit: leaving)
20:27:51kobi7_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:10kobi7_class A : B (inherits from B)
20:29:04kobi7_i think even if i only implement small parts, it can already be useful for porting efforts.
20:29:15kobi7_ok, good night guys
20:29:19*kobi7_ quit (Quit: Leaving)
20:29:30FromDiscord<ElegantBeef> Buh bye for reals now?
20:40:33FromDiscord<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:21FromDiscord<ElegantBeef> Eh https://github.com/bluenote10/oop_utils?
20:42:37FromDiscord<scott> weird, it was just a simple example as a part of a tutorial I could swear
20:43:27FromDiscord<ElegantBeef> No clue then, i know the otherday i basically made a `class` macro which did fuckall
20:43:32leorize[m]1IIRC there's one on nim by example
20:43:50FromDiscord<scott> yup that was it thanks so much leorize
21:04:56FromDiscord<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:41leorize[m]1the term to look for is "command call syntax"
21:06:02leorize[m]1we have terrible discoverability :P
21:06:20leorize[m]1~command
21:06:20disbotno footnotes for `command`. 🙁
21:07:41leorize[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:42disbotcommand: 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:14FromDiscord<scott> thanks
21:09:39*solitudesf quit (Remote host closed the connection)
21:09:57FromDiscord<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:34FromDiscord<scott> but otherwise it's limited to 1 (without MCS) or 2 args (with method call syntax)?
21:10:56FromDiscord<Clyybber> yep
21:11:11FromDiscord<scott> 👍
21:11:40FromDiscord<scott> _begins writing code with only 1 or two arguments per proc exclusively 😁_
21:17:38FromDiscord<nikki> fond memories of tcl
21:21:47Yardanico!status
21:21:48FromDiscordUptime - 1 day, 1 hour, and 45 minutes
21:29:27FromDiscord<Yardanico> btw, the jetbrains nim plugin author fixed the issue I reported with discard quite quickly, and responded about nimsuggest @leorize
21:29:29FromDiscord<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:20leorize[m]1pitch them about PMunch's nimlsp and ask if they wanna help out :P
21:30:49FromDiscord<Yardanico> actually right, it might be easier for them to use LSP instead of talking with nimsuggest directly
21:33:45FromDiscord<Yardanico> yeah, made a comment about nimlsp
21:36:47FromDiscord<Yardanico> seems like they don't have official LSP plugins in JetBrains IDEs though
21:37:02FromDiscord<Yardanico> there's https://github.com/gtache/intellij-lsp and https://github.com/ballerina-platform/lsp4intellij though
21:37:20FromDiscord<Yardanico> wait you can then use nim plugin in jetbrain IDEs just fine with these 🤔
21:37:25FromDiscord<Yardanico> since syntax highlighting is already there
21:38:40FromDiscord<ElegantBeef> I'm a little suprised they dont have LSP support built in
21:39:02FromDiscord<Yardanico> they rely on their own modules too much :)
21:39:14FromDiscord<Yardanico> although it makes sense, they have a lot of experience and IDEs already released
21:39:23leorize[m]1I guess they wanted "immersive and integrated experience"
21:39:33leorize[m]1and LSP is designed for VSCode :P
21:39:42*bung joined #nim
21:39:45FromDiscord<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:44FromDiscord<ElegantBeef> Isnt more VScode standardized it, and it's meant as a general purpose I/O for editors?
21:42:29FromDiscord<Yardanico> from a forum post asking about LSP related to kotlin in 2017
21:42:30FromDiscord<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:36FromDiscord<Yardanico> exactly what leorize said :)
21:42:44FromDiscord<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:12FromDiscord<Yardanico> https://discuss.kotlinlang.org/t/any-plan-for-supporting-language-server-protocol/2471/19
21:43:32FromDiscord<ElegantBeef> Yea i understand that they want much finer control, but a LSP would allow that holdover i mentioned
21:43:49FromDiscord<Yardanico> well but they don't advertise the nim plugin anyway
21:43:56FromDiscord<Yardanico> It's in "beta" if we were to be honest
21:44:09*solitudesf quit (Ping timeout: 260 seconds)
21:44:32FromDiscord<Yardanico> if you add LSP officially, then people will start (ab)using it and complaining about it :)
21:44:32FromDiscord<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:47FromDiscord<ElegantBeef> Since they're in the IDE market, i'd expect they want people to do that 😄
21:44:56FromDiscord<Yardanico> well there is a LSP plugin for their IDEs
21:45:20FromDiscord<ElegantBeef> Not first party though, which is where i'm confused about
21:46:41FromDiscord<Yardanico> it's working btw https://media.discordapp.net/attachments/371759389889003532/768591112469741568/unknown.png
21:46:59FromDiscord<ElegantBeef> Noice
21:47:16FromDiscord<ElegantBeef> I tried a bunch of editors and really sublime was super nice, but nonfree so 😦
21:47:26FromDiscord<Yardanico> I just installed the plugin and did this https://media.discordapp.net/attachments/371759389889003532/768591300710236180/unknown.png
21:47:34FromDiscord<Yardanico> in the plugin configs
21:47:35FromDiscord<Yardanico> and it's working
21:49:13FromDiscord<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:47FromDiscord<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:02FromDiscord<Yardanico> https://media.discordapp.net/attachments/371759389889003532/768592203622514708/unknown.png
21:53:00FromDiscord<Yardanico> https://youtrack.jetbrains.com/issue/NIM-3
21:54:06FromDiscord<ElegantBeef> Yea that's kinda my point speckled, they could offset vscode as a general purpose editor 😄
21:54:16FromDiscord<Yardanico> their IDEs are mostly paid except a few
21:54:20FromDiscord<Yardanico> pycharm/intellij community editions
21:54:46FromDiscord<ElegantBeef> As a C# user i know that too wel 😛
21:54:51FromDiscord<ElegantBeef> (edit) "wel" => "well"
21:55:27FromDiscord<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:46FromDiscord<speckledlemon> so exactly what I said
21:56:16FromDiscord<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:43FromDiscord<Yardanico> well I don't think it's bad, it's just pretty heavy :)
21:57:14bungdoes a program consume stable memory usage is big thing for performance ?
21:58:36FromDiscord<Yardanico> well it improves performance if the program doesn't allocate/deallocate memory often
21:58:52FromDiscord<Yardanico> not the stable memory consumption, but reduction of allocs/deallocs
21:59:51bungah, I see that's related ,thanks!
22:02:16FromDiscord<ElegantBeef> Pooling is an important method performance savings 😄
22:02:57FromDiscord<Yardanico> https://youtrack.jetbrains.com/issue/NIM-13 just thinking of issues I can report :)
22:03:04FromDiscord<Recruit_main707> @Yardanico wait, last time i checked, lsp didnt work
22:03:08FromDiscord<Yardanico> @Recruit_main707 it works just fine
22:03:21FromDiscord<Yardanico> I installed https://plugins.jetbrains.com/plugin/10209-lsp-support
22:03:23FromDiscord<Recruit_main707> which one of the two plugins you used
22:03:31FromDiscord<Recruit_main707> thx
22:03:34FromDiscord<Yardanico> and did this https://media.discordapp.net/attachments/371759389889003532/768595358354898944/unknown.png
22:03:38FromDiscord<Yardanico> in settings
22:04:01FromDiscord<Recruit_main707> id say this one is the one i tried already...
22:04:25FromDiscord<Yardanico> well it works for me in CLion
22:05:07bungI guess it's about nim version
22:05:50FromDiscord<Recruit_main707> trying again
22:06:13FromDiscord<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:32FromDiscord<Yardanico> because shuffle uses a global PRNG instance
22:07:21FromDiscord<Yardanico> no error here
22:07:22FromDiscord<Yardanico> sent a code paste, see https://play.nim-lang.org/#ix=2ByA
22:07:30FromDiscord<ElegantBeef> yea adding onto the result is by definition no side effect
22:07:32FromDiscord<Yardanico> but you'll have to provide the seed to Shuffled of course if you want the results to be random :)
22:07:40FromDiscord<ElegantBeef> If functions couldnt change the result values it's not very useful
22:08:07FromDiscord<ITR> ah, right, random mutates, lol
22:09:38FromDiscord<Yardanico> also I'd suggest you to try out strictFuncs
22:09:44FromDiscord<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:52FromDiscord<Yardanico> https://nim-lang.org/docs/manual_experimental.html#strict-funcs
22:10:04FromDiscord<ITR> ah, nice, ty ^^
22:10:06FromDiscord<Yardanico> it adds deep immutability to refs in funcs
22:10:09FromDiscord<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:21FromDiscord<Yardanico> that won't work obviously
22:10:30FromDiscord<Yardanico> because nimsuggest doesn't support that
22:10:32FromDiscord<nikki> dang (also doesn't work in nimsuggest ya)
22:10:40FromDiscord<nikki> oh i thought they were not impl'ing with nimsuggest
22:10:40FromDiscord<Yardanico> nimlsp is built on nimsuggest
22:10:44FromDiscord<Yardanico> it can't support more than nimsuggest
22:10:55FromDiscord<nikki> i was talking about jetbrains' nim thingy
22:10:58FromDiscord<nikki> that doesn't use nimlsp right
22:11:05FromDiscord<Recruit_main707> no
22:11:14FromDiscord<Recruit_main707> but you can use both at the same time
22:11:14FromDiscord<Yardanico> @nikki it doesn't have any autocompletion at all yet
22:11:24FromDiscord<Yardanico> well, only simple text-based
22:11:28FromDiscord<Yardanico> it doesn'
22:11:44FromDiscord<Yardanico> (edit) "doesn'" => "doesn't have advanced features like go to definition (for other files), autocompletion, hovering, etc"
22:11:51FromDiscord<nikki> https://discord.com/channels/371759389889003530/371759389889003532/768592205551501363 this was using nimlsp?
22:12:27FromDiscord<Yardanico> this is using that nim plugin + LSP plugin for jetbrains IDEs + nimlsp
22:12:38FromDiscord<Yardanico> and nimlsp provides that hovering info
22:13:44FromDiscord<nikki> got it
22:14:35FromDiscord<Recruit_main707> ill use it as a quickfix until they have it implemented in the plugin
22:15:03*unihernandez22 joined #nim
22:16:42FromDiscord<Recruit_main707> @Yardanico what i couldnt get to work was the lsp with .nims and .nimble files
22:16:54FromDiscord<Yardanico> it won't work anyway
22:17:15FromDiscord<Yardanico> well you can try
22:17:18FromDiscord<Yardanico> just add another extension
22:17:34FromDiscord<Yardanico> ahh you mean your issue
22:17:59FromDiscord<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:26FromDiscord<Recruit_main707> im not sure
22:18:56FromDiscord<Yardanico> I don't think nimsuggest supports nims/nimble properly
22:19:24FromDiscord<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:03FromDiscord<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:22FromDiscord<Yardanico> can you show the error in full?
22:21:28FromDiscord<Yardanico> ah I know why
22:21:43FromDiscord<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:48FromDiscord<William_CTO> type mismatch: got <seq[JsonNode]> but expected 'seq[string]'
22:22:01FromDiscord<Yardanico> one way (not the most efficient but will work ok for most cases) is to do something like
22:22:24FromDiscord<Yardanico> sent a code paste, see https://play.nim-lang.org/#ix=2ByH
22:22:53FromDiscord<William_CTO> Thanks. Why is map called mapIt?
22:23:08FromDiscord<Yardanico> because it's a template that injects "it" for you to use
22:23:24FromDiscord<Yardanico> there's normal `map` but it's "less comfortable" to use since it requires you to provide an anonymous proc
22:23:42FromDiscord<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:15FromDiscord<William_CTO> My type for args is `seq[string]` should I chose a different type?
22:24:34FromDiscord<Yardanico> well, that question is unanswerable out of context :)
22:24:39FromDiscord<Yardanico> I don't even know what you're using it for
22:25:03FromDiscord<William_CTO> Fair enough
22:25:16FromDiscord<Yardanico> If it's for config files, I'd choose TOML
22:25:58FromDiscord<William_CTO> Thank you very much
22:26:20FromDiscord<William_CTO> I'm extending and experimenting with the chap application in Nim in Action
22:26:46FromDiscord<William_CTO> I'm adding some commands to the chat app like one to change your username
22:27:20FromDiscord<Yardanico> well, can't you just make an object variant for different types of commands?
22:27:22FromDiscord<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:26FromDiscord<Yardanico> nim's json module serializes them just fine
22:27:38FromDiscord<Yardanico> @William_CTO yeah that'll work too
22:27:43FromDiscord<William_CTO> 👍
23:02:02FromDiscord<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:12FromDiscord<Yardanico> it's in early development yet, vscode plugin is better
23:05:27FromDiscord<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:38avatarfighter[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