00:03:33*zolk3ri quit (Quit: Lost terminal)
00:08:48FromGitter<Varriount> @zacharycarter That's a 90's technique you're using there. :3
00:09:34FromGitter<Varriount> Though, that kind of style seems to be regaining popularity lately
00:10:40FromGitter<zacharycarter> heh
00:10:58FromGitter<zacharycarter> I've always been a fan
00:24:10*def-pri-pub joined #nim
00:24:29*couven92 quit (Quit: Client Disconnecting)
00:30:00*Demos quit (Quit: Demos)
00:30:26*Demos joined #nim
00:39:10FromGitter<zacharycarter> you know what I'm not a fan of? this art thing
00:48:45*vlad1777d joined #nim
00:56:32*JappleAck quit (Quit: Leaving)
01:17:31*marcux joined #nim
01:29:49*def-pri-pub quit (Quit: Leaving.)
01:31:16*kunev quit (Ping timeout: 258 seconds)
01:31:46FromGitter<zacharycarter> yay!
01:32:01FromGitter<zacharycarter> (https://files.gitter.im/nim-lang/Nim/2497/Screen-Shot-2017-10-10-at-9.31.26-PM.png)
01:32:28*marcux quit (Ping timeout: 255 seconds)
01:33:19*kunev joined #nim
01:46:20*d10n-work quit (Quit: Connection closed for inactivity)
01:47:32*vlad1777d quit (Remote host closed the connection)
01:47:45*chemist69 quit (Ping timeout: 258 seconds)
01:48:06FromGitter<zacharycarter> now I need a way to create animation definitions easily
02:01:31*chemist69 joined #nim
02:04:39*smt` quit (Ping timeout: 246 seconds)
02:10:36*Demos quit (Quit: Demos)
02:10:45*Tanger quit (Read error: Connection reset by peer)
02:20:52*NimBot joined #nim
02:24:05*Serenit0r joined #nim
02:27:29*Serenitor quit (Ping timeout: 246 seconds)
02:43:17*GaveUp quit (Ping timeout: 260 seconds)
02:45:49*GaveUp joined #nim
02:51:30*Snircle quit (Quit: Textual IRC Client: www.textualapp.com)
03:10:04*libman quit (Quit: Connection closed for inactivity)
03:13:32*def-pri-pub joined #nim
03:13:40*def-pri-pub quit (Client Quit)
03:14:02*Demos joined #nim
03:26:06*endragor joined #nim
03:27:22*Demos quit (Remote host closed the connection)
04:26:36FromGitter<Varriount> @zacharycarter You could always hire an artist. :3
04:37:35*shashlick quit (Quit: Leaving)
04:38:35*Yardanico joined #nim
04:41:17*shashlick[m] joined #nim
04:45:10*ftsf quit (Quit: Leaving)
04:46:51*shashlick[m] is now known as shashlick
05:00:34*endragor quit (Remote host closed the connection)
05:02:05*miran joined #nim
05:16:01*endragor joined #nim
05:20:53*endragor quit (Ping timeout: 258 seconds)
05:25:41*Yardanico quit (Remote host closed the connection)
05:46:05*endragor joined #nim
05:49:32*dddddd quit (Remote host closed the connection)
05:53:11*JappleAck joined #nim
06:13:11*PMunch joined #nim
06:19:35*Vladar joined #nim
06:38:26*nsf joined #nim
06:39:35*miran quit (Ping timeout: 240 seconds)
06:53:14PMunchWhy is echo in Nim js target bound to putting stuff in the DOM?
06:53:25PMunchWouldn't it make more sense if it was console.log?
06:57:38JappleAckanyway, there's stdout.writeline for that
06:58:37PMunchecho is just a lot easier to type..
07:01:12FromGitter<gokr> Sidenote: We use Matrix and the Riot client for internal communication at Evothings, it's kinda like an "advanced Gitter". Works quite nicely, and has a similar mobile app like gitter.
07:02:30AraqPMunch: echo uses console.log ?
07:02:53JappleAckpssst, wanna cheat, kid? `proc p(args: varargs[string]) = stdout.writeline(args)`
07:03:14FromGitter<gokr> @Araq I am spawning threads (threadpool) from Jester but... seem to experience blocking on the 3rd or so, which seems... oddish. Any hints? I guess echo is a nono from different spawned threads right?
07:03:44Araqwe have a new threadpool in the works
07:04:06Araqthe old is allowed to block because 'spawn' is about parallelism, not concurrency
07:04:22Araqbut luckily for you I changed my mind
07:04:23FromGitter<gokr> Right, but... how/when can I control number of threads on it?
07:04:45FromGitter<gokr> The old I mean.
07:05:40AraqsetMinPoolSize ? https://nim-lang.org/docs/threadpool.html
07:05:41FromGitter<gokr> It would be fine if it blocked... say on the 10th or 20th (for my case) but the 3rd seems odd.
07:05:50FromGitter<gokr> Ah, duh.
07:06:19FromGitter<gokr> Ok, so for some reason... it probably picks min - which is 4?
07:06:20AraqI need to merge the new thread pool PR ...
07:06:40Araqmin is 4 or #number_of_cpus, I forgot
07:06:49FromGitter<gokr> Ok, cool. Thanks.
07:07:10AraqI would use async with multiple processes though
07:07:11PMunchAraq, not unless you specify -d:nodejs it seems
07:07:26AraqPMunch: I use it in karax without -d:nodejs
07:07:36Araqthis was changed, maybe update your Nim?
07:07:46PMunchI tried to add an echo in a karax callback and it puts it in the dom
07:07:52PMunchOld Nim version is likely
07:08:04PMunchI'm running 0.17.0 on this machine
07:08:11Araquse 0.17.2
07:09:26Araqgokr: I continue to not really understand why async is paired with threading, you need to run multiple processes anyway to get some crash safety, no?
07:10:42Araqand jester needs to put behind ngnix or similar, our asynchttpserver still has security problems :-)
07:11:59FromGitter<ephja> was the current implementation of channels considered slow?
07:13:22Araqephja: its performance is ok, not great and it doesn't use any lockfree fancy stuff
07:13:22*PMunch_ joined #nim
07:13:46FromGitter<ephja> ok
07:14:29FromGitter<ephja> it's only a chat client anyway :p
07:14:50Araqbut consider to patch them instead of "I can write a better one". chances are high that you can't. :P
07:14:58*PMunch quit (Disconnected by services)
07:15:02*Arrrr joined #nim
07:15:02*Arrrr quit (Changing host)
07:15:02*Arrrr joined #nim
07:15:11*PMunch_ is now known as PMunch
07:15:51*claudiuinberlin joined #nim
07:17:49FromGitter<gokr> @Araq I get async since I use Jester for the REST API. The rest is via threads, I run the MQTT library in its own thread and use channels to talk to it, so that I can have a single MQTT connection. I use one thread from the threadpool for each long running job.
07:18:46Araqinteresting. how do you know what is a long running job?
07:18:53FromGitter<gokr> And... crash safety? For this case its a small server meant to run on a raspberry.
07:19:13FromGitter<gokr> A long running job = compile an Arduino program. Or compile and flash it.
07:19:27FromGitter<gokr> So I know they are long running ;)
07:20:10FromGitter<gokr> And I didn't want to end up "stuck" on something not playing well with async - so I felt a it was a perfect thing to use the threadpool for.
07:21:07FromGitter<gokr> So each job typically writes files onto disk, starts external programs (compilation etc) and then at the end writes some file, sends some MQTT "results" etc.
07:23:03Araqoh my a server on a raspberry, alright :D
07:23:22FromGitter<gokr> It works great. It's for children education.
07:23:45FromGitter<gokr> So price point etc is perfect.
07:26:32FromGitter<gokr> Personally I am still weary of "async". I don't consider Nodejs development experience to be that gratifying - and its solely built around it and I presume the "pillar" of async.
07:27:34FromGitter<gokr> And in a mixed environment like Nim - I just don't want to go the "ok, let's only use async" just to get bitten down the road by "oh, shit, this call is blocking...".
07:27:56FromGitter<gokr> Which btw is what already happened with the MQTT lib.
07:28:23FromGitter<mratsim> @Araq, do you have any further plans for OpenMP? (atleast disabling stacktraces in an OpenMP block for example)
07:29:29Araqmratsim: It's pity that OpenMP is so much faster than my parallel statement :P
07:30:16AraqPRs are welcome, but note that an "OpenMP block" is not local reasoning
07:30:24FromGitter<gokr> I would rather like to see MUCH simpler inter thread communication. I find the current style with setting up one or two channels, using object variants for messages yaddayadda - it's quite a bit of boilerplate. With some Araq-macro-magic we should be able to make it much nicer, no?
07:30:29Araqit can call a proc that has stacktraces enabled ...
07:30:51FromGitter<gokr> Perhaps that "magic" was the earlier Actor thingy, or?
07:31:11AraqActors were succeeded by 'spawn'
07:32:12Araqwe're thinking about a general "reification" mechanism that can cover both spawn and await fwiw
07:33:26Araqby reification I mean a general callToTask(f(a, b, c)) construct that converts a function call into a "callable" object
07:33:27FromGitter<gokr> Ah, ok. And ... are there also plans to make Nim "compete" with the Go/Erlang models?
07:33:55FromGitter<gokr> right
07:36:59Araqmy current plans are to compete better with C++. :D in my quest to find the perfect GC I arrived at a C++like model, we'll see where it leads us
07:37:45Araqthat said, the channels/object variants are not necessary with 'spawn'
07:37:56Araqlet result = spawn f(args)
07:38:10Araqwhat's simpler than that?
07:39:19*yglukhov joined #nim
07:39:56AraqI think the only problem is that you cannot use 'spawn' in your case?
07:40:07*yglukhov quit (Read error: Connection reset by peer)
07:40:28*yglukhov joined #nim
07:44:14FromGitter<krux02> what is GC?
07:44:47Araqgarbage collector?
07:44:51Arrrrgame cube
07:45:08FromGitter<krux02> graphics card
07:45:13FromGitter<krux02> thanks
07:46:16FromGitter<krux02> In C++ the shared_ptr is designed to share ownership also between threads
07:47:57FromGitter<krux02> I like the c++ gc model. But it is often misused. A lot of people don't get it and put shared_ptr everywhere
07:48:22FromGitter<krux02> make everything a shared_ptr
07:48:29FromGitter<krux02> I've seen smart people do it
07:48:57FromGitter<krux02> In Nim people also do the same, they use ref everywhere
07:49:10FromGitter<Bennyelg> Guys, did you saw how Scala came popular in the past 2 years?
07:49:32FromGitter<krux02> well I used scala around 2010
07:49:42FromGitter<krux02> and when I talked about it people looked at me weird
07:49:46FromGitter<Bennyelg> It became populate because Apache Spark
07:49:56FromGitter<krux02> similar to how people look at me now
07:50:01FromGitter<Bennyelg> lol
07:50:06ArrrrWas the problem with ref?
07:50:35FromGitter<Bennyelg> If someone will develop something like Apache Spark on nim then, be sure the rush to nim will be soon after.
07:50:52Arrrr*What is
07:51:11FromGitter<Bennyelg> Currently At work Im working as a `Big Data Engineer` & I develop in 4 different languages :|
07:51:25FromGitter<Bennyelg> Go, Python, Scala and some ruby
07:51:32FromGitter<krux02> Arrrr: well for small objects it has noticable memory overhead and it has GC costs. And for at least 90% of the use cases it is just not necessary
07:52:01FromGitter<gokr> @Araq I started with FlowVars actually for collecting the result from each job - a JsonObject. I had a table of FlowVars for all spawned jobs. That was accesible from the main Jester thread, all good. Then I introduced MQTT and it all fell apart a bit.
07:52:24FromGitter<krux02> @Bennyelg I like those names "Big Data Engineer"
07:52:35FromGitter<Bennyelg> lol
07:52:43FromGitter<krux02> in then years people will laugh about what you call "Big Data" today
07:52:46FromGitter<Bennyelg> this is how they title me
07:52:59FromGitter<Bennyelg> that's for sure
07:53:01FromGitter<mratsim> Hopefully I'll become a "Deep Learning Engineer" as well ;)
07:53:08FromGitter<Bennyelg> the data grow very fast
07:53:27FromGitter<Bennyelg> I am working we ML guys they are all doctors in this area
07:53:30FromGitter<krux02> I am ok to be called "computer guy" who does "computer stuff"
07:53:47FromGitter<Bennyelg> working with xGBoost, tensorflow, pandas etc
07:54:16FromGitter<Bennyelg> working with*
07:54:18FromGitter<gokr> Don't recall what made me stop trying to use them - I think it was that... when a job request comes in via MQTT, the spawn of the job happens in the MQTT thread. Which ... is not the Jester thread of course, so... oops. The FlowVar table needs to live in a single thread, so ... only a single thread should spawn jobs. But I had two threads, Jester and MQTT.
07:55:04FromGitter<krux02> In my opinion being a doctor in computer science is overrated. The most people in this field that I admire don't have that degree, and a lot of people who do have that degree became self centered dickheads.
07:55:29FromGitter<krux02> but that is just from my perspective
07:55:35FromGitter<Bennyelg> I agree, but they are all very very smart and young
07:55:54FromGitter<Bennyelg> they serve in the military in special units in israel within department called 8,200
07:56:19FromGitter<Bennyelg> they are very smart guys and the most important thing they are very hamble
07:56:21*claudiuinberlin quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
07:56:37FromGitter<krux02> well military is not something that impresses me
07:56:46*gangstacat quit (Quit: Ĝis!)
07:57:08FromGitter<Bennyelg> In israel, if you are in those areas it should, because very hard to reach to those places
07:57:30FromGitter<gokr> @Araq Are you also keeping track of what the pony guys are doing?
07:58:10FromGitter<Bennyelg> In Israel you must serve from 18 to 21 years old, you can't avoid it unless you are idiot or can't take care of yourself
07:58:12Araqnot really, Pony makes Rust look like a Ruby
07:58:16FromGitter<krux02> Well I only look at languages that I at least used once in the past
07:59:00*claudiuinberlin joined #nim
07:59:04AraqRust has owned and borrowed pointers, Pony has 5 different pointer types iirc
07:59:27Araqand then they don't even use them to avoid a GC
07:59:53Araqbut that's the look from an outsider. in practice it might be a joy to program in and Rust isn't.
08:10:08Araqkrux02: ever implemented a seq/vector that has no 'cap' field? you can avoid it by having cap = nextPowerOf2(len) and if isPowerOf2(len): resize()
08:10:40Araqyou need to double the number of elements then though, other factors won't work
08:12:18FromGitter<krux02> then the seq/vector always needs to be reallocated when it is resetted
08:12:35FromGitter<krux02> it is a very common use case to avoid reallocation by resetting a vector
08:13:16Araqyes but a (ptr, len) pair is also a slice.
08:13:34Araqso a seq has the same representation as a slice
08:13:46AraqI wonder if that helps for anything
08:14:23FromGitter<krux02> I don't think so
08:14:32Araqon the other hand you can also just ask the allocator for the capacity, it should know
08:14:47FromGitter<krux02> a ptr len pair doesn't own the underlying data, a seq does
08:15:50FromGitter<krux02> I think it should be possible to convert an arbitrary ptr len pair to an openarray argument
08:16:47FromGitter<krux02> an openarry argument is internally a ptr len pair, so I think it should be possible to do something like this:
08:17:50FromGitter<krux02> sort(myvec[3..7], cmp)
08:19:11FromGitter<krux02> the problem is myvec[3..7] doesn't return a ptr len pair, but copies a slice from the vector/seq
08:20:29*claudiuinberlin quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
08:20:47Araqyeah I know
08:21:21Araqit's on my radar but I never have to sort only a slice of the data :P
08:21:30Araqwhen does that come up?
08:23:16FromGitter<krux02> well I had a use case for it
08:24:18FromGitter<krux02> In computer graphics, it is common to have all meshes in a sigle array and define a mesh simply with a starting index and and a count of elements
08:25:03FromGitter<krux02> there it would be very helpful to pass just the data of a single mesh to a function that has an openarry argument
08:25:46FromGitter<krux02> also when implementing the algorithm itself.
08:26:26FromGitter<krux02> quicksort is defined to only sort a subregion of the data
08:26:47FromGitter<krux02> so there it would be helpful to just write this:
08:27:35FromGitter<krux02> qsort(data[0..<x], cmp) ; qsort(data[x..^1], cmp)
08:27:38*endragor quit (Remote host closed the connection)
08:28:08FromGitter<krux02> and the rotate that I implemented in algorithm is basically only useful when I can apply it on a subregion of the data
08:28:44*endragor joined #nim
08:32:32FromGitter<gokr> @Araq Read this and it explains the different references in Pony quite well: http://jtfmumm.com/blog/2016/03/06/safely-sharing-data-pony-reference-capabilities/
08:32:47FromGitter<gokr> I mean "I read this and..."
08:33:41FromGitter<gokr> Kinda intriguing.
08:37:11FromGitter<mratsim> Someone now working at Google Deepmind implemented a Go bot using Monte Carlo in Pony and Rust if you want to compare the codebases https://github.com/Mononofu/pony-mcts
08:43:17*endragor quit (Remote host closed the connection)
08:43:55Araqcan't compare them, the Rust code is 5+ files, the Pony is a single file, they are differently structured
08:44:16*vlad1777d joined #nim
08:44:41FromGitter<tulayang> @dom96 I have some questions: how do you consider about the Large File Transfers of ``asynchttpserver``? Will there be some streaming API? I noticed that a new ``FutureStream`` was provided in stand lib. But it just seems to be consuming memory.
08:45:32*gangstacat joined #nim
08:45:52*claudiuinberlin joined #nim
08:50:12*endragor joined #nim
08:56:52FromGitter<BigEpsilon> @Araq , for the reorder pragma
08:57:02FromGitter<BigEpsilon> in order to expende includes
08:57:35FromGitter<BigEpsilon> I use the functions: lookupPackage, getModulename and checkModuleName
08:57:48FromGitter<BigEpsilon> which are lockated in importer
08:57:56FromGitter<BigEpsilon> which calls passes
08:58:02FromGitter<BigEpsilon> which calls reorder
08:58:11FromGitter<BigEpsilon> -> circular dependency
08:58:25Araqmove these to their module then
08:58:29FromGitter<BigEpsilon> I created a new module called "modulenames"
08:58:36FromGitter<BigEpsilon> is that ok for you ?
08:58:46FromGitter<BigEpsilon> it contains the three procs
08:58:59Araqname it modulepaths
08:59:07FromGitter<BigEpsilon> ok thanks
09:00:19Araqgokr: didn't make me change my opinion about Pony. 6 different capabilities that seem very comparable to Rust, but Rust doesn't require a complex share-nothing-distributed-GC runtime
09:00:52*claudiuinberlin quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:01:51FromGitter<gokr> @Araq Ok, I found it interesting though. I mean, it seems fairly understandable - modelling "single writer multiple readers" etc.
09:02:26Araqtrue once you replace the names internally with synonyms that make sense (wtf is trn again?)
09:02:35FromGitter<gokr> @mratsim Btw, that pony MCTS didn't use a single Pony "behavior" AFAICT.
09:04:40Araqgokr: in practice Pony might be MUCH better though since it doesn't assume every piece of code is prone to data races :-)
09:04:43FromGitter<tulayang> @dom96 I have to get off work, so (if any) I guess some forms it may be: ⏎ This form? ⏎ ⏎ ```code paste, see link``` ⏎ ... [https://gitter.im/nim-lang/Nim?at=59dddeaae44c43700a1c1fe3]
09:04:49FromGitter<gokr> trn was the concept of having a transitional (thus the name) reference that allowed single writer, multiple reader aliases - but can be turned to a val (immutable value) at the end.
09:06:14AraqPony's benefit seems to be its explicit 'actor' concept, Rust simply assumes all pointers that run serially are dangerous anyway. Which is true when you don't have a GC...
09:06:26FromGitter<gokr> The idea being... that since you are in a single actor (single thread) you can allow single-writer-multiple-readers. But if you want to send it away to someone at the end - it's very valuable to have the restriction of only a single writer - because then you can "give that up" (they say "consume") and turn it into a single immutable value (val) that you can send around.
09:06:53PMunchAraq, the genui code now includes an example of styling
09:06:55*PMunch quit (Quit: Leaving)
09:07:03Araqyou don't have to explain to me the blog post ;-)
09:07:12FromGitter<gokr> Sure, sorry.
09:07:39FromGitter<mratsim> I had trouble understanding pony behaviours as well
09:08:43FromGitter<gokr> @mratsim Ok? AFAIK the behaviors are the "methods" that actually run concurrently. The whole basis of Actors.
09:10:30AraqI like locking. There, I said it.
09:10:48AraqI know how to make locking safe, free of data races, free of deadlocks.
09:11:04*claudiuinberlin joined #nim
09:11:16AraqI don't know to fight message passing with its possible life locks. :P
09:19:00FromGitter<gokr> @Araq I can definitely sympathize with that :)
09:19:59FromGitter<gokr> So... you mentioned some "One Ring To Rule Them All" approach brewing? I am curious in which direction Nim is going when it comes to multithreading.
09:21:10Araqgokr: I hope to have a post that explains it as well as a prototype by the end of this week, just be patient please
09:22:13Araqgokr: ParaSail has been a major source of inspiration
09:23:21FromGitter<gokr> @Araq oh wow, this week? Cool! hum... ok, more reading to do ... ParaSail...
09:24:21*endragor quit (Ping timeout: 240 seconds)
09:28:17FromGitter<mratsim> Apparently rayon in Rust is quite good as well, competitive with OpenMP for data parallel tasks
09:28:35FromGitter<mratsim> And crossbeam for lock free data structure
09:42:47*claudiuinberlin quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
09:42:55*PMunch joined #nim
09:43:10FromGitter<mratsim> According to this blog post: http://conscientiousprogrammer.com/blog/2012/10/17/learning-about-parasail-a-new-parallel-programming-language/ Parasail has assignment by copy, with move and swap behind the scene, and GC through memory region
09:43:29*claudiuinberlin joined #nim
09:51:45alexdaynice blog
09:56:50FromGitter<gokr> @Araq Ooooohhh... I now discovered why I block after about 4 spawns. It turns out... if the proc I spawn return something (string, JsonNode, doesn't matter) then... it blocks on the fifth spawn.
09:56:59FromGitter<gokr> setMinPoolSize didn't matter at all.
09:57:22FromGitter<gokr> So... something fishy with FlowVars?
09:57:43Araqsurely looks like it
09:58:08FromGitter<gokr> I will cook up a snippet
09:58:32*Vladar quit (Remote host closed the connection)
10:01:49*Vladar joined #nim
10:03:18livcdis there something like goimports for nim ?
10:03:43*endragor joined #nim
10:04:04Araqwhat's goimports?
10:04:23*claudiuinberlin quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:04:48livcd goimports updates your Go import lines, adding missing ones and removing unreferenced ones.
10:07:56FromGitter<gokr> @Araq Shit, not... entirely that easy. I bet this is async messing with spawn somehow. Argh.
10:23:51*Yardanico joined #nim
10:29:47*mal`` quit (Quit: Leaving)
10:34:14*mal`` joined #nim
10:34:28*azur_kind joined #nim
10:37:18FromGitter<gokr> @Araq Ok, new findings. It seems it's execCmdEx("blabla") that blocks things, and it depends on what I run in there. If I just do "sleep 3" it all works. If I run the arduino command line to compile stuff, it will block on the 4th.
10:38:01FromGitter<gokr> Perhaps something with stdin/stdout and child processes yaddayadday.
10:40:49FromGitter<Yardanico> maybe you can try this https://github.com/cheatfate/asynctools ?
10:40:58Yardanico"Asynchronous process manipulation facility with asynchronous pipes as standart input/output/error handles, and asynchronous.
10:41:08Yardanicoit has some async clones of sync stdlib modules
10:41:56euantorAn async process type would be really useful in the stdlib
10:52:49*smt joined #nim
10:54:11*Yardanico quit (Remote host closed the connection)
11:01:58*Snircle joined #nim
11:08:09*couven92 joined #nim
11:09:06Serenit0rthx for yesterday Araq I've now been able to isolate the functionality for embedded nimscript https://github.com/Serenitor/embeddedNimScript
11:10:41*PMunch_ joined #nim
11:13:34*PMunch quit (Ping timeout: 264 seconds)
11:15:58*PMunch_ is now known as PMunch
11:23:27AraqSerenit0r: in state.nim please use object instead of tuple
11:24:33AraqsetupNimsript # typo
11:27:33Araqapart from that, pretty nice
11:47:22Serenit0rAraq: thanks. using object over tuple purely due to convention or are there practical reasons?
11:49:09Araqwell (identCache, sym, more_strange_thingsHere) is not a very readable tuple
11:49:16*Yardanico joined #nim
11:51:43Serenit0riirc that would be valid tuple syntax too though (cache: identCache, mySym: sym, myStrangeThings: more_strange_thingsHere)
11:53:46*azur_kind quit (Read error: Connection reset by peer)
11:57:42Serenit0rbut yea the object constructor syntax with the object's type at the front is probably optimal in terms of readability
12:10:06subsetparkI was speaking to a pony programmer this weekend
12:11:06subsetparkHe said pony is a joy to program for concurrent applications - but there’s quite a lot of overhead so it doesn’t make you want to use it for general purpose programming
12:18:58FromGitter<gokr> Interesting.
12:29:19*endragor quit (Remote host closed the connection)
12:30:25*endragor joined #nim
12:35:05*dddddd joined #nim
12:37:10*claudiuinberlin joined #nim
12:51:51Arrrris it possible to break named blocks from inside a template that is not dirty?
12:51:59Arrrri thought maybe i could inject the block
12:53:00*Jesin quit (Quit: Leaving)
13:09:48Yardanico:D https://isitmaintained.com/project/nim-lang/nim
13:10:03Yardanicobut actually these stats are nothing
13:10:29Yardanicorust is a *bit* better at resolution time
13:13:50Yardanicooh there's so many of them https://shields.io/
13:15:21*endragor quit (Remote host closed the connection)
13:16:25Yardanicobtw, we can make something like this: https://github.com/nodejs/help
13:16:33Yardanicoor no, we have a forum already :)
13:17:42*xet7 quit (Ping timeout: 246 seconds)
13:18:27*retropikzel joined #nim
13:22:36*PMunch_ joined #nim
13:25:03*PMunch quit (Ping timeout: 246 seconds)
13:27:35*PMunch_ is now known as PMunch
13:30:14*claudiuinberlin quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:31:38*xet7 joined #nim
13:35:38*retropikzel quit (Ping timeout: 255 seconds)
13:36:32*endragor joined #nim
13:36:50*retropikzel joined #nim
13:40:35*endragor quit (Ping timeout: 240 seconds)
13:41:17*xet7 quit (Quit: Leaving)
13:49:32*claudiuinberlin joined #nim
13:58:12FromGitter<Grabli66> Hi. How to allocate ptr object? I tried with "new", and "alloc". No luck
14:00:28cremAh, alloc should also work. In any case it seems that type cast is needed.
14:01:27*crem wrote 1 line of nim code per month within last 10 year, in average.
14:02:11*PMunch quit (Quit: Leaving)
14:02:45*claudiuinberlin quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
14:09:24*claudiuinberlin joined #nim
14:12:51FromGitter<Grabli66> Good. It works. But another problem. When i am trying to free that object from free pascal with "freemem" i get access violation error. May be anyone know how to free that object?
14:15:28*nsf quit (Quit: WeeChat 1.9)
14:17:15AraqGrabli66: with dealloc. never mix allocators
14:18:39YardanicoGrabli66: nim wouldn't be aware that this memory was freed
14:18:54FromGitter<Grabli66> I am creating ptr object in DLL, written in nim. But i free that object in programm, written in free pascal.
14:19:48FromGitter<Grabli66> I need create object in dll, and use it in free pascal :)
14:20:53*Jesin joined #nim
14:27:22*retropikzel quit (Ping timeout: 255 seconds)
14:29:57*retropikzel joined #nim
14:31:15FromGitter<mratsim> What kind of convoluted codebase are you working on
14:32:42FromGitter<Grabli66> Maybe you are right, i do something wrong :)
14:32:50FromGitter<Grabli66> I need to think
14:33:29FromGitter<andreaferretti> or just offer a function to free it in your dll, which calls dealloc
14:34:29FromGitter<Grabli66> Yes. I also thought about "free" proc in dll.
14:35:15FromGitter<Grabli66> It works :)
14:36:59*marcux joined #nim
14:38:31*azur_kind joined #nim
14:50:13*yglukhov quit (Remote host closed the connection)
14:54:25*yglukhov joined #nim
14:57:00*sz0 joined #nim
14:57:04*miran joined #nim
14:59:10*yglukhov quit (Ping timeout: 264 seconds)
15:12:22*yglukhov joined #nim
15:21:44*Yardanico quit (Ping timeout: 255 seconds)
15:32:19*endragor joined #nim
15:33:27*miran quit (Ping timeout: 240 seconds)
15:36:39*nsf joined #nim
15:37:02*endragor quit (Ping timeout: 255 seconds)
15:38:41*Yardanico joined #nim
15:41:08*couven92 quit (Read error: Connection reset by peer)
15:46:14*miran joined #nim
15:47:52Yardanicois it possible to do something like this without a macro?https://gist.github.com/Yardanico/851a97914bb196f85affe69e5b0eb153
15:48:48Yardanicoah, it seems it's not
15:48:52YardanicoI mix run-time and compile-time here
15:49:02Yardanicoso probably a macro
15:50:48*Trustable joined #nim
15:56:49*claudiuinberlin quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
15:57:37Yardanicowell IDk why it's deleted
15:57:58Yardanicoanyway I just was playing around and it's VERY easy to implement "readLn" like in Pascal
15:59:23Arrrrhow does it work?
16:00:42Yardanicothis is a hacky solution (you can instead check type in a macro and generate assignment based on that type, but this is more code) - https://gist.github.com/Yardanico/d98fd78eb23bf51e76cbe1149899ea0a
16:00:54Yardanicoit seems I'm blacklisted by github
16:01:06YardanicoI can't see my gists in anonymous mode
16:01:42YardanicoI just commented here
16:01:46Yardanicoand I can't see my comment
16:03:21Yardanicowait what
16:03:44YardanicoAraq commented on pull request nim-lang/Nim#6418 @Araq As pyloor said, make it "the len of the HTTP Version string may not be bigger as 8 chars."
16:03:48Yardanicobut I don't see that comment LOL
16:03:54Yardanicodo you guys see it? https://github.com/nim-lang/Nim/pull/6418#issuecomment-335860401
16:04:08YardanicoWe're currently experiencing high replication delay on our primary database cluster. Recently performed site actions may not appear in the UI.
16:04:51Yardanicogithub, why
16:09:24FromGitter<mratsim> I'm more interested in why you directly assumed that you were blacklisted 
16:10:16Yardanicobecause I was blacklisted once, but I heard github does that only once If you're a human :)
16:10:33YardanicoIt has automatic "anti-spam" and false-positives
16:10:48Yardanicoso I though maybe I was blacklisted for the second time
16:12:32*dhalinar joined #nim
16:12:47YardanicoArrrr, https://gist.github.com/Yardanico/d98fd78eb23bf51e76cbe1149899ea0a
16:13:00Yardanicooh, it's still 404
16:16:21*ShalokShalom_ joined #nim
16:16:58Yardanicook it seems to be working again
16:19:11*azur_kind quit (Remote host closed the connection)
16:19:27*ShalokShalom quit (Ping timeout: 240 seconds)
16:25:32Arrrrah, interesting
16:25:59*TjYoco joined #nim
16:32:29*dhalinar quit (Ping timeout: 258 seconds)
16:33:56*dhalinar joined #nim
16:44:31shodan45Yardanico: omg welcome to "real" IRC :P
16:44:47Yardanicoshodan45, well I use IRC on Linux :)
16:44:50Yardanicoand gitter on windows :0
16:48:23shodan45Yardanico: well then even better... welcome (back?) to a real OS :P
16:48:40Yardanicowell I just play games on windows, nothing more :D
16:48:45*libman joined #nim
16:52:49*claudiuinberlin joined #nim
16:52:56shodan45Yardanico: I used to play most games on linux.... then my AMD gfx went into "omg SO OLD mode" and I had to use the open source driver....
16:53:24shodan45so, oddly, until I buy a new GPU, I have to boot into windows
16:53:34Yardanicoshodan45, well I have no problems with proprietary nvidia driver :)
16:54:10Yardanicojust a lot of games are not available on linux
16:55:06shodan45yeah, true. But I kind of think of it like being a vegetarian - you just have to eat/game differently ;)
16:55:12*tax joined #nim
16:57:05shodan45Some VERY good games run just fine on linux. Like Factorio.
17:00:23shodan45although I'm biased on that one.... I have ~650 hours on it
17:00:29*claudiuinberlin quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:01:52YardanicoI like FPS-like games :)
17:02:54Yardanicois it only for me or it seems github updated main feed?
17:05:50Yardanicoand they've added this - https://github.com/dashboard/discover
17:07:20*claudiuinberlin joined #nim
17:07:27*claudiuinberlin quit (Client Quit)
17:07:27*dhalinar quit (Ping timeout: 240 seconds)
17:15:17*yglukhov quit (Remote host closed the connection)
17:16:48*yglukhov joined #nim
17:19:04*SusWombat joined #nim
17:21:31*yglukhov quit (Ping timeout: 255 seconds)
17:26:56*TjYoco quit (Quit: Leaving)
17:29:28*MyMind joined #nim
17:30:21*Sembei quit (Ping timeout: 240 seconds)
17:36:21*Vladar quit (Remote host closed the connection)
17:38:42*Jesin quit (Ping timeout: 260 seconds)
17:39:15*smt` joined #nim
17:42:01*smt quit (Ping timeout: 240 seconds)
17:42:04*Jesin joined #nim
17:43:35*vlad1777d quit (Ping timeout: 255 seconds)
17:48:37*obadz quit (Ping timeout: 260 seconds)
17:49:04*obadz joined #nim
17:56:22*vlad1777d joined #nim
18:01:37*Arrrr quit (Ping timeout: 248 seconds)
18:02:08*vlad1777d quit (Ping timeout: 240 seconds)
18:02:12*Arrrr joined #nim
18:02:12*Arrrr quit (Changing host)
18:02:12*Arrrr joined #nim
18:04:42*claudiuinberlin joined #nim
18:06:42*rauss quit (Read error: Connection reset by peer)
18:08:26shodan45anyone use nimqml lately?
18:08:28*rauss joined #nim
18:15:14shodan45I'm trying to figure out if it supports macos (I don't have access to any macs...)
18:16:39*yglukhov joined #nim
18:17:00Yardanicoshodan45, well there's probably
18:17:07Yardanicojust try it :)
18:17:37*Serenit0r quit (Ping timeout: 248 seconds)
18:17:45shodan45Yardanico: yeah, I've seen that... I don't have a mac to try it
18:19:17shodan45I just want to make sure it supports macos before I start using it... I need to support win/mac/linux
18:21:19*yglukhov quit (Ping timeout: 248 seconds)
18:21:21Yardanicoshodan45, well I maybe can try it tomorrow
18:21:25YardanicoI have hackintosh on my pc :)
18:21:37Yardanicobut I almost don't use it
18:25:56*SusWombat quit (Remote host closed the connection)
18:27:35FromGitter<mratsim> What does teardownForeignThreadGC do? https://nim-lang.org/docs/system.html#tearDownForeignThreadGc.t, ⏎ ⏎ I have segfault/Attempt to read from nil with OpenMP and I suspect it’s due to GC collecting short-lived variables. I have no issue when not compiling with OpenMP
18:28:18*Demos joined #nim
18:37:04*Ven joined #nim
18:37:28*Ven is now known as Guest75286
18:41:32*Guest75286 quit (Ping timeout: 255 seconds)
18:48:01*claudiuinberlin quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
18:58:07*tax quit (Quit: Leaving)
19:00:13*claudiuinberlin joined #nim
19:04:42*retropikzel quit (Quit: Connection closed for inactivity)
19:09:50shashlickehmry: Thanks for suggesting Matrix + Riot, seems like a very effective combo. I can also move my slack hacks over here.
19:17:19ehmryshashlick: yea, I like it
19:37:46*Arrrr quit (Read error: Connection reset by peer)
19:43:07*yglukhov joined #nim
19:45:24*nsf quit (Quit: WeeChat 1.9)
20:13:48*Trustable quit (Remote host closed the connection)
20:14:27*claudiuinberlin quit (Quit: Textual IRC Client: www.textualapp.com)
20:22:31*Demos quit (Quit: Demos)
20:22:58*Demos joined #nim
20:33:20*gangstacat quit (Quit: Ĝis!)
20:35:23*gangstacat joined #nim
20:36:24*obadz quit (Quit: WeeChat 1.9.1)
20:42:14*Yardanico quit (Remote host closed the connection)
20:45:29*ipjk joined #nim
20:47:10*Jesin quit (Quit: Leaving)
20:51:21*obadz joined #nim
20:57:51*nsf joined #nim
21:01:36*xet7 joined #nim
21:15:43*miran quit (Ping timeout: 248 seconds)
21:26:02*vlad1777d joined #nim
21:34:09*dhalinar joined #nim
21:38:29*vlad1777d quit (Ping timeout: 255 seconds)
21:51:17*vlad1777d joined #nim
21:59:35*ShalokShalom_ quit (Ping timeout: 240 seconds)
22:04:56*nsf quit (Quit: WeeChat 1.9)
22:05:25*Etheco joined #nim
22:11:46*Demos quit (Quit: Demos)
22:16:35*endragor joined #nim
22:17:29*vlad1777d quit (Ping timeout: 258 seconds)
22:20:49*endragor quit (Ping timeout: 248 seconds)
22:28:42*Demos joined #nim
22:32:34*vlad1777d joined #nim
22:33:17*Demos quit (Ping timeout: 260 seconds)
22:38:08*Demos joined #nim
22:39:13*Demos quit (Client Quit)
22:39:57*Demos_ joined #nim
22:41:54*couven92 joined #nim
22:50:35*dhalinar quit (Ping timeout: 240 seconds)
23:08:09*Demos_ quit (Quit: Demos_)
23:08:28*Demos joined #nim
23:16:23*nub_ joined #nim
23:16:40*sz0 quit (Quit: Connection closed for inactivity)
23:17:09*nub_ quit (Client Quit)
23:20:59*vlad1777d quit (Remote host closed the connection)
23:24:31*Demos quit (Remote host closed the connection)
23:24:55*Demos joined #nim
23:31:51*Demos quit (Ping timeout: 258 seconds)
23:31:55FromGitter<zacharycarter> o/
23:36:08*yglukhov quit (Remote host closed the connection)
23:42:26FromGitter<zacharycarter> hrm how am I going to do lighting and shadows
23:42:28FromGitter<zacharycarter> https://imgur.com/a/Hzjk4
23:55:44*gangstacat quit (Ping timeout: 255 seconds)
23:56:09*gangstacat joined #nim
23:56:23*ipjk quit (Read error: Connection reset by peer)