<< 19-06-2018 >>

00:11:56*kinkinkijkin joined #nim
00:22:07*xet7 quit (Quit: Leaving)
00:40:55*kinkinkijkin quit (Quit: Leaving)
00:43:08*Cthalupa joined #nim
00:55:53*tribly quit (Quit: WeeChat 2.1)
00:57:20*tribly joined #nim
01:00:07*skellock joined #nim
01:01:33*skellock quit (Client Quit)
01:01:53*skellock joined #nim
01:02:17*skellock quit (Client Quit)
01:03:47*cakesauce joined #nim
01:16:08FromGitter<honewatson> @sivakon Async Httpserver threaded on Linux actually has comparable performance to Golang fasthttp. Threaded Async Httpserver offers no performance gains on Mac which the app server repo uses to test.
01:47:39*gsingh93 joined #nim
01:53:05*SenasOzys quit (Ping timeout: 255 seconds)
01:57:59FromDiscord<2vg> @honewatson is that true? Did you measure the benchmark?
02:02:06*gsingh93 is now known as gsgx
02:16:39*cakesauce quit ()
02:23:40*sz0 quit (Quit: Connection closed for inactivity)
03:09:54*Electrux joined #nim
03:56:36*endragor joined #nim
03:58:41*cspar joined #nim
04:00:43*tiorock joined #nim
04:00:43*tiorock quit (Changing host)
04:00:43*tiorock joined #nim
04:00:43*rockcavera is now known as Guest22777
04:00:43*Guest22777 quit (Killed (niven.freenode.net (Nickname regained by services)))
04:00:43*tiorock is now known as rockcavera
04:08:57*Electrux quit (Quit: WeeChat 2.1)
04:31:13*xkapastel quit (Quit: Connection closed for inactivity)
04:33:15FromGitter<honewatson> I compared the difference between only fasthttp and no other framework
04:33:31FromGitter<honewatson> apart from Async Httpserver
04:35:42FromGitter<honewatson> I created a simple router for multithreaded Async Httpserver to test and implementation looks like this
04:36:06FromGitter<honewatson> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5b28883659799e701728fc25]
04:36:45FromGitter<honewatson> Note mine did not check request method
04:43:23FromGitter<Varriount> Where are the threads?
04:55:00FromGitter<honewatson> in run
04:56:12FromGitter<honewatson> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5b288cebd2abe466886fdf8f]
04:57:51FromDiscord<2vg> If it is a local benchmark it seems to be meaningless.
05:01:28FromGitter<honewatson> Sure, but they are all fairly meaningless IMO if they don't benchmark meaningful data access
05:11:16*Cthalupa quit (Remote host closed the connection)
05:12:19*Cthalupa joined #nim
05:17:59*miran joined #nim
05:27:16*SenasOzys joined #nim
05:31:01*Cthalupa quit (Quit: ZNC 1.6.6+deb1 - http://znc.in)
05:34:45*Cthalupa joined #nim
05:35:39*WA9ACE left #nim (#nim)
05:37:42*sakalli_ joined #nim
05:38:28*nsf joined #nim
05:42:30*sakalli_ quit (Client Quit)
05:43:42*sakalli_ joined #nim
05:47:05*sakalli_ quit (Client Quit)
06:06:57*miran quit (Ping timeout: 264 seconds)
06:20:19*livcd joined #nim
06:44:07FromGitter<alehander42> can I just add debugInfo in a nim.cfg
06:44:16FromGitter<alehander42> without : value
06:46:39Araqyes
06:52:38*SenasOzys quit (Remote host closed the connection)
06:53:13*SenasOzys joined #nim
07:00:51*SenasOzys quit (Ping timeout: 260 seconds)
07:11:08*PMunch joined #nim
07:22:25*dddddd joined #nim
07:30:39*jjido joined #nim
07:35:33*jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
07:47:43*Cthalupa quit (Read error: Connection reset by peer)
07:48:05*Cthalupa joined #nim
07:55:12*Cthalupa quit (Ping timeout: 245 seconds)
08:04:12*floppydh joined #nim
08:05:38*Cthalupa joined #nim
08:34:30*d10n-work quit (Quit: Connection closed for inactivity)
08:36:22*yglukhov[i] joined #nim
08:36:57*yglukhov[i] quit (Read error: Connection reset by peer)
08:37:32*yglukhov[i] joined #nim
08:50:01FromGitter<mratsim> @Vindaar, Are you working at CERN? I met some CERN people yesterday that organises this Machine Learning challenge: https://www.kaggle.com/c/trackml-particle-identification, I try to tell them stop using Python + C, try Nim ;)
08:55:25FromGitter<mratsim> By the way Araq, w.r.t. to packedJSON, besides representing JSON as a string, are there any other techniques that contributed significantly to parsing throughput and memory use? I have several GBs of go game files stored in this format: https://homepages.cwi.nl/~aeb/go/misc/sgfnotes.html#variations and I need a fast and memory efficient parser.
09:11:12FromGitter<Vindaar> @mratsim: Yes and no. I'm not working at CERN full time. But I'm a CERN user and part of an experiment at CERN (really small, not related to LHC). I'm down there once every 2 months or so. :) Most physicists unfortunately only program because they have to. And everyone involved at LHC is so invested in ROOT, they don't want to spend the time to learn anything else / reimplement stuff (to an extent that's
09:11:12FromGitter... understandable, but ROOT really is quite horrible, imo...). But I had no idea there were machine learning challenges organized by CERN people. Maybe I need to take a look at that, hehe. The people organizing that stuff might be more open to stuff besides Python and C++. ⏎ Where did you meet them?
09:13:13dom96I worked at CERN for 9 months and submitted a Nim talk to a little event organised by their IT team (can't remember the name). They rejected me :(
09:13:45dom96Although to be fair, the topic of the talks was "UI" (lame)
09:16:26FromGitter<Vindaar> Oh, I had no idea. That's cool! When was that? ⏎ But then you know there's a lot of lame stuff going on there, haha. Stupid of them not to accept you, but well. Not unexpected. :/
09:19:09dom961.5 years ago
09:21:25FromGitter<mratsim> I met them in Paris: https://www.meetup.com/Paris-Machine-learning-applications-group/events/251281454/
09:21:28livcdheard lots of cern people are cocky and full of themselves
09:23:07*cspar quit (Ping timeout: 245 seconds)
09:24:32*cspar joined #nim
09:26:20FromGitter<Vindaar> dom96: Maybe we ran past one another then :) ⏎ livcd: quite a few surely are! Lots of nice people down there too, though
09:26:29*elrood joined #nim
09:27:30dom96Vindaar: perhaps :)
09:29:16livcdnice people are cocky and full of themselves as well
09:29:25livcdthey are nice because they know you :D
09:29:50FromGitter<Vindaar> maybe I should have said humble then :P
09:29:59livcd(have 3 acquaintances of mine that work there)
09:30:04FromGitter<mratsim> @livcd I guess it’s not CERN people that go out, because in my experience most I met were super friendly. I went to Haskell meetup at CERN in the past, and when I worked in Geneva I had collegues who were working at CERN before working at my company of the time.
09:50:32FromGitter<tim-st> is there a package that allows importing packages from golang? this doesnt seem to support it: https://github.com/stefantalpalaru/golib-nim
09:51:08Yardanicohow would it work? I don't think there is
09:51:21Yardanicoyou'll probably need to interface with Go via C FFI
09:51:40FromGitter<tim-st> via gccgo or dynlib in worst case
09:51:45Yardanicobut I'm don't really know, I've never used Go :)
09:52:33dom96tim-st: sounds like a fun project, do it :)
09:53:34FromGitter<tim-st> dont know think my skills are good enough, maybe I would directly implement a transpiler because nim should support most concepts from golang besides channels I think
09:54:07FromGitter<tim-st> btw is that allowed to just translate all source code from go^^ ?
09:54:35livcdwould not it work by building a shared library of that go pkg ?
09:54:49FromGitter<tim-st> yes, that's what I called "worst case"
09:55:22FromGitter<tim-st> there is nimpy that allows super easy native python usage in nim, I hoped there was something for golang too
09:56:01Yardanicowell, golang is a direct competitor to Nim :P
09:56:22Yardanicoand Python is oftenly used as a scripting language for compiled languages (e.g. for games)
09:56:24FromGitter<tim-st> I know, but why not support these big ecosystem
09:56:27FromGitter<alehander42> I think a transpiler would be a lot of work
09:56:57FromGitter<alehander42> I mean, you can write a go 2 nim transpiler that kinda works for a lot of stuff very very quickly!
09:57:27FromGitter<alehander42> but the last 20% of the work would take 10x more time
09:57:36Yardanicobut almost every big/medium library in go will probably use its' advanced features
09:57:38Yardanicolike channels, etcv
09:57:44FromGitter<alehander42> but it's a fun project
09:57:57Yardanico@alehander42 do you have any plans about py2nim btw?
09:58:03FromGitter<alehander42> but interfacing with go seems better
09:58:34FromGitter<alehander42> @Yardanico well, not really having a usecase for it right now, and not a lot of time
09:58:47Yardanicook, just asking :)
09:58:50FromGitter<alehander42> but it's a very fun project, I'd love to improve it one day
09:58:56FromGitter<alehander42> or get some contributors :(
10:00:03Yardanico@alehander42 lol
10:00:03Yardanicohttps://en.wikipedia.org/wiki/Nim_(programming_language)#py2nim
10:00:10Yardanicosomeone added it to nim's wikipedia page :)
10:00:12FromGitter<mratsim> btw, new runtime is now for v1? https://github.com/nim-lang/Nim/milestone/2
10:00:15FromGitter<tim-st> btw anyone knows how gccgo works? do they transpile go to c on the fly and could these c files saved somehow?
10:00:29Yardanicowell, it probably works like usual GCC
10:00:32FromGitter<alehander42> when zah started py2nim I was so hooked in, but just no time
10:00:44FromGitter<alehander42> @Yardanico hahaha yeah I saw it once, I was very suprised
10:00:52FromGitter<mratsim> https://github.com/yglukhov/nimpy should be added to wikipédia too ;)
10:01:33FromGitter<tim-st> If python support in nim like nimpy would be "officially" supported, I think that would directly pull quite a few people
10:01:55Yardanicobut they would expect that it will work for any python libraries
10:02:02Yardanicobecause most of python projects use third-party libs
10:02:08FromGitter<tim-st> it does!
10:02:36FromGitter<tim-st> it calls python directly natively
10:04:03Yardanicooh, sorry, I thought you were talking about py2nim
10:04:49FromGitter<tim-st> this would be cool, too. But I cannot imagine 100% support, on `grumpy` they gave up it seems
10:05:04*noonien joined #nim
10:05:17Yardanicowell, nim has one advantage for grumpy-like project: it's closer to python in syntax and some other stuff
10:05:47FromGitter<tim-st> I think they already had all this, but than faced big problem about cyclic imports or similar
10:10:24livcduhm someone just reverse engineered diablo 1 :O
10:12:30Yardanicoit's cool to see new people on nim forum :)
10:12:56Yardanico(and just generally new people coming to Nim)
10:21:54*floppydh quit (Quit: WeeChat 2.1)
10:26:23Araqmratsim: I don't know.
10:26:49FromGitter<mratsim> Regarding packedjson or newruntime?
10:27:56*cspar quit (Ping timeout: 260 seconds)
10:40:57Araqpackedjson
10:50:05*devilox joined #nim
10:53:42FromGitter<bevo009> Could some one clarify concatenation in Nim for me? ⏎ I was following this here: https://scripter.co/notes/nim/#string-concatenation ⏎ "Either & or ,(comma) can be used to concatenate string in echo." ⏎ @Yardanico commented: "comma doesn't concat though, it's just that echo accepts any number of arguments." [https://gitter.im/nim-lang/Nim?at=5b28e0b6479ca26689684405]
10:53:53Yardanicoyes, comma doesn't concat
10:53:59Yardanicoecho 1, 2 is similar to echo(1, 2)
10:54:06FromGitter<bevo009> So...how would you precisely describe the examples below compared to each other, to a noob? ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=5b28e0cd960fcd4eb90c55c9]
10:54:28Yardanicobecause echo takes "varargs" - variable number of arguments
10:54:58FromGitter<Yardanico> @bevo009 on your second line you call `echo` with two arguments - "Hello" and "World"
10:55:24FromGitter<Yardanico> and on your first line you concatenate "Hello" with "World" and call echo on result of the concatenation
10:55:52Yardanico!eval echo(1, 2); echo 1, 2
10:55:54NimBot12↵12
10:55:58FromGitter<bevo009> Is the second line an output representation of a concatenated string?
10:56:18FromGitter<Yardanico> "echo" concats all arguments by itself
10:56:28FromGitter<Yardanico> well, it doesn't concat actually, but it writes them one-by-one to stdout
10:57:10FromGitter<bevo009> So line 1 and line 3 are both concatenation?
10:57:29FromGitter<Yardanico> yes, & is a concatenation operator for strings
10:59:23FromGitter<bevo009> cheers for clearing that up
11:00:42FromGitter<Yardanico> just a simple example"
11:01:12FromGitter<bevo009> @yardanico , what does !eval mean?
11:01:21FromGitter<Yardanico> ^custom echo for strings only
11:01:33FromGitter<Yardanico> @bevo009 it's a command for NimBot (IRC bot written in Nim)
11:01:43FromGitter<Yardanico> it asks NimBot to evaluate nim code through play.nim-lang.org
11:01:48FromGitter<Yardanico> https://play.nim-lang.org
11:02:29FromGitter<bevo009> The 'create gist' feature is broken on the playground
11:02:42FromGitter<bevo009> otherwise I'd use that
11:02:51FromGitter<Yardanico> you can AFAIK
11:03:00FromGitter<Yardanico> try to !eval echo "hello"
11:03:16FromGitter<bevo009> !eval echo "hello"
11:03:18NimBothello
11:03:30FromGitter<bevo009> ahhh
11:03:36FromGitter<bevo009> only I can see that
11:03:40FromGitter<Yardanico> no
11:03:45FromGitter<Yardanico> everyone can see it :)
11:03:59FromGitter<alehander42> I SEE IT
11:04:05FromGitter<bevo009> haha
11:04:19FromGitter<bevo009> I get it no...cheers
11:04:49FromGitter<bevo009> that's awesome
11:05:10*cspar joined #nim
11:05:17FromGitter<Yardanico> https://scripter.co/notes/nim/#string-concatenation author talks here about concatenating strings *only* for an echo call, but yeah, that wording is not the best
11:06:04FromGitter<bevo009> not technically concatenation though, right?
11:06:17FromGitter<bevo009> printing one straight after another
11:06:36*floppydh joined #nim
11:06:37FromGitter<Yardanico> yeah, it's not technicall concatenation
11:06:46*SenasOzys joined #nim
11:07:16FromGitter<Yardanico> you can read about nim's invocation syntax here - https://nim-lang.org/docs/manual.html#procedures-command-invocation-syntax
11:08:01FromGitter<Vindaar> @kaushalmodi ping ^
11:09:15FromGitter<bevo009> I searching the manual/tutorial for concatenation etc which yielded zero results, ⏎ but searching for the `&` operator led me to reading the associated procs: https://nim-lang.org/docs/system.html#%26,string,char
11:09:45FromGitter<bevo009> Although the word 'concatenation' is right there in the proc description
11:09:58FromGitter<kaushalmodi> @Yardanico Hey, I didn't use the word "only" :)
11:10:06FromGitter<bevo009> I think I need a doc, on how to read the docs :)
11:10:25FromGitter<kaushalmodi> I just wanted to note that users can use either & or , to concatenate strings in echoes.
11:10:37FromGitter<Yardanico> but , is not for concatenation, it just looks like it is
11:10:41FromGitter<kaushalmodi> You cannot use , in regular concats. Isn't that correct?
11:10:48FromGitter<Yardanico> , is not for concat at all
11:10:59FromGitter<Yardanico> echo 1, 2 is equivalent for echo(1, 2)
11:11:04FromGitter<Yardanico> which calls echo with two arguments
11:12:13FromGitter<Yardanico> @bevo009 there is a note for concat for strings in tutorial 1
11:12:28FromGitter<Yardanico> https://nim-lang.org/docs/tut1.html search for "concat"
11:13:16*floppydh quit (Quit: WeeChat 2.1)
11:13:23FromGitter<bevo009> This is all I got searching that: https://nim-lang.org/docs/sequtils.html#concat,varargs%5Bseq%5BT%5D%5D
11:14:07FromGitter<Yardanico> well, search in docs only works for library documentation, not for other stuff like manual/tut1/tut2
11:14:30FromGitter<kaushalmodi> I'll fix that , doesn't technically concat
11:14:59FromGitter<Yardanico> @kaushalmodi it's possible because of https://nim-lang.org/docs/manual.html#procedures-command-invocation-syntax and `varargs`
11:15:36dom96Offtopic: Any of you guys work at Spotify or know someone that does?
11:15:38FromGitter<bevo009> @Kaushal Modi no offence bro, I just wanted a precise definition of what was happening there
11:16:08FromGitter<bevo009> I've learnt a few handy tips off your blog already
11:16:58*mostly-harmless quit (Ping timeout: 260 seconds)
11:26:47FromGitter<tim-st> I try to to see the intrnal difference between proc t(x: var T) and proc t(x: T); it seems the first is passed with two ** the second with one *; when I'm building a transpiler, I could always use the var type, but will this have influence on performance?
11:27:07FromGitter<tim-st> two asterisk, one asterisk
11:30:23FromGitter<tim-st> ok, found an anwer on stackoverflow, shoudnt be too much overhead, maybe nothing
11:30:54FromGitter<Yardanico> "var" is for pass-by-reference AFAIK
11:31:07FromGitter<Yardanico> you can just use "ref" type instead if you want (but you're not required to)
11:32:22FromGitter<tim-st> the problem in golang is, they pass also bei ref if they dont change the object, in nim I only pass by var if I change something, so in golang I would translate to alway var T where they use pointer
11:32:33FromGitter<tim-st> *by
11:33:37FromGitter<Yardanico> well, if you have a "ref" object in Nim you will always pass it by reference because it's ref :)
11:34:07FromGitter<mratsim> if copying a stack type is too heavy (more than 3 machine words) it’s passed by hidden pointer anyway in Nim
11:34:33FromGitter<tim-st> I took a look at the c source code; as I wrote above: one time it's one asterisk, by var type it's two asterisk
11:34:43FromGitter<mratsim> use var/ref/stack for intent. don’t try to optimize the fuction signature by passing a vr
11:34:48FromGitter<mratsim> var
11:35:12FromGitter<mratsim> if you want to optimize that use the {.inline.} or template
11:35:24FromGitter<tim-st> it's not an optimization, it's needed because I cannot prove that non var is sufficient
11:35:36FromGitter<tim-st> when transpiling from golang
11:35:52FromGitter<Yardanico> just use "ref" then?
11:35:55FromGitter<Yardanico> it will be much simpler
11:36:26FromGitter<mratsim> py2nim uses ref everywhere. (but in Python everything is a ref so …)
11:36:34FromGitter<tim-st> where is the difference in var and ref?
11:36:56FromGitter<Yardanico> @tim-st if you create a ref object, it's always passed by reference to all procs, etc
11:37:01FromGitter<Yardanico> yeah
11:37:24FromGitter<tim-st> so if I can use both, which one is prefered^^
11:37:45FromGitter<tim-st> I mean var and ref
11:38:15FromGitter<Yardanico> maybe https://forum.nim-lang.org/t/1207 can help
11:39:04FromGitter<tim-st> I just ask, because I never used ref (besides on ref objects)
11:39:16FromGitter<Yardanico> well, you can use "ref" for any type
11:39:33FromGitter<mratsim> Go primitive types —> Nim types
11:39:45FromGitter<mratsim> deson’t go has a distinction for mutability?
11:40:22PMunchtim-st, maybe this'll help: https://peterme.net/nim-types-originally-a-reddit-reply.html
11:41:01YardanicoPMunch, for me font rendering is a bit broken
11:41:12PMunchYeah I just noticed..
11:41:13FromGitter<mratsim> (https://files.gitter.im/nim-lang/Nim/YsvS/2018-06-19_13-41-02.png)
11:41:22FromGitter<mratsim> the code tag are broken, this wasn’t like this before
11:41:23PMunchIt's a bug in the CSS
11:41:29PMunchYeah
11:41:47FromGitter<mratsim> if T is a ref type, it’s on heap
11:41:54FromGitter<mratsim> otherwise it is not
11:41:58FromGitter<tim-st> so, as I assumed above: if I can use var I should prefer var over ref?
11:42:00PMunchI added line numbers to longer code blocks, and it required modifying some styles. Messed up and added this to the code tag and not to some combination of code and pre..
11:42:26PMunchtim-st, yes
11:42:31FromGitter<mratsim> @tim-st, does go has something similar to let vs var/let mut?
11:42:42FromGitter<Yardanico> @tim-st yes, but if you need "var" everythere - maybe it's better to use "ref" :)
11:43:24PMunchYeah it really depends on the use-case
11:43:27FromGitter<tim-st> @mratsim yes they have var and declare using `:=` if I remember correct and additonally you can pass by `*`
11:43:54FromGitter<mratsim> what I mean is can go declare an immutable variable
11:44:42FromGitter<tim-st> using `:=` I think, but my last go code is longer ago^^
11:44:56FromGitter<mratsim> if it can, it’s trivial, let maps to there immutable equivalent
11:45:01FromGitter<mratsim> their*
11:45:16FromGitter<mratsim> and var to everything else.
11:45:20FromGitter<tim-st> yes, but this complete thing was more about passing by `*`
11:45:39FromGitter<tim-st> @mratsim yes, `var` everywhere else was also my idea
11:45:57FromGitter<mratsim> primitive types (int, float) should be passed using a var
11:46:10FromGitter<mratsim> tuple as well
11:46:21FromGitter<mratsim> user defined types should be ref
11:47:03FromGitter<mratsim> start with that, see the problems, and refine, otherwise you will be chasing after rainbows/talking in conceptual issues)
11:47:15FromGitter<mratsim> in circle about conceptual issues*
11:47:37FromGitter<tim-st> ok, thanks for the help :)
11:48:04FromGitter<mratsim> to ease testing both, the transformation go ref —> Nim var, or go ref —> Nim ref should be parametrised.
11:48:20FromGitter<mratsim> by a const for example
11:48:28FromGitter<tim-st> ok
11:50:02FromGitter<mratsim> you can check c2nim pas2nim and py2nim and maybe nimborg as reference project (not sure if nimborg does conversion, I don’t remember)
11:50:40FromGitter<tim-st> ok, thanks
11:52:42*enthus1ast joined #nim
11:59:51FromGitter<kaushalmodi> @bevo009 Hey, no offense was taken in the first place. This is a prime example of how one could learn by sharing :). I am just sharing my notes that I update as I am learning Nim ( I am no Nim guru. So bring up your confusions and doubts over here. :)). One thing is for sure, that all the code in my notes *works* as the results are not copy/pasted by live evaluated before publishing to my blog. Glad you found it
11:59:51FromGitter... useful. To others reading this, it would be great if they picked up one section from my notes that's their favorite, and proof-read it :) https://scripter.co/notes/nim/.
12:02:11FromGitter<kaushalmodi> And thanks to @Vindaar for the ping. @Yardanico Yes, I'll fix my notes and make them technically correct regarding echo and commas.
12:07:21FromGitter<kaushalmodi> PMunch: TIL that you had already converted that famous Reddit answer of yours to this blog post: https://peterme.net/nim-types-originally-a-reddit-reply.html. I had already added that golden answer to my notes :). I'll start following your blog now.
12:07:39*floppydh joined #nim
12:18:22*mostly-harmless joined #nim
12:22:05*xet7 joined #nim
12:28:36bevo@kaushalmodi most languages have 4 or 5 excellent books you can cross-reference, with Nim being young we're pretty limited, so we have to ask annoying questions to fill in the blanks
12:29:05bevoAppreciate you've been logging as you learn
12:32:54*mostly-harmless quit (Ping timeout: 268 seconds)
12:36:59FromGitter<ephja> PMunch: the code elements are inline and they have a margin so they appear on top of other text for me
12:38:45FromGitter<bevo009> Actually I do have one more question I couldn't find much info on ⏎ Is `func` an exact alias for `proc`?
12:38:52Yardanicono
12:39:07Yardanico(as far as I know)
12:39:43FromGitter<bevo009> what is the difference?
12:41:12FromGitter<Vindaar> it's an alias for a `proc` with the `.noSideEffects.` pragma
12:41:31*nsf quit (Quit: WeeChat 2.1)
12:41:50FromGitter<Vindaar> It was only an alias in the past. The change happened after v0.18.0 came out, which is probably why you didn't find anything on it :)
12:42:01Yardanicoin the future `func` is supposed to do more than that
12:42:21FromGitter<bevo009> oh ok, I did see talk about that, but no final resolution
12:50:54PMunchephja, yeah I know. I don't have the SSH key to my server on my work machine, so I'll have to fix it when I get home.. Basically the "code" element in the CSS is supposed to be "pre > code"
12:51:44PMunchkaushalmode, haha thanks :) I turned it into a post quite a while ago, and I think it's the post I've referred to the most
12:52:32PMunchI'm unfortunately so busy writing fun Nim projects that I forget to write about them, I should certainly get better at that :P
12:54:24*mostly-harmless joined #nim
12:55:39*devilox quit (Quit: Page closed)
12:59:33*xkapastel joined #nim
13:01:18FromGitter<mratsim> I’m plagued by the same. I’m so busy writing fun Nim stuff that I can’t even start rewriting my website/blog (I’m losing too much time in Wordpress/Medium formatting …)
13:02:13dom96Set up some static blog generator :)
13:03:05PMunchI've been using CouchCMS
13:03:49PMunchPretty neat in the way that you can define whatever HTML/CSS you want and then it will automatically generate a administration page where you can publish/unpublish/edit/track etc. your content
13:03:52PMunchPretty neat
13:04:12FromGitter<mratsim> I have a Gatsby prototype running, The blocking point is the “Hero image” :P
13:04:30PMunchYou just throw in some PHP tags telling it what's supposed to be editable, and it auto-generates the rest
13:04:48FromGitter<mratsim> posts are in markdown and pulled with GraphQL which is quite fancy
13:05:24FromGitter<mratsim> but it makes writing dual language blogs easier, I can tag with specific language.
13:07:52*SenasOzys quit (Remote host closed the connection)
13:07:53FromGitter<Vindaar> @mratsim @narimiran and possibly others: main reason I personally use Python is scipy's curve_fit. I want a non linear least squares solver in Nim (Levenberg Marquardt I suppose). I checked and found 3 C libraries, which should be easy to wrap: lmfit (http://apps.jcns.fz-juelich.de/doku/sc/lmfit), levmar (http://users.ics.forth.gr/~lourakis/levmar/) and mpfit (http://cow.physics.wisc.edu/~craigm/idl/cmpfit.html).
13:07:53FromGitter... Does anyone have experience with any of them? Or can tell me "stupid, do xy instead!"
13:08:57*endragor quit (Remote host closed the connection)
13:09:02Araqanybody who wants to take over nimpretty? I should work on more pressing things
13:09:21Araqit works solidly for anything I threw at it, which admittedly wasn't much
13:09:24*endragor joined #nim
13:09:42FromGitter<mratsim> @Vindaar, stupid, use Arraymancer’s Least Square Solver instead: https://github.com/mratsim/Arraymancer/blob/afc0c213316b4d98002fbb118551a4de9b67e217/src/linear_algebra/least_squares.nim#L37
13:09:57FromGitter<mratsim> ah non-linear
13:10:05FromGitter<Vindaar> yep.. :/
13:11:45FromGitter<mratsim> for non-linear stuff I just throw gradient boosted trees at a problem or neural networks, they can approximate everything in Machine Learning
13:12:30PMunchmratsim, well that's the beauty of CouchCMS, I wanted to add tags to easily sort on topic. Just created the HTML layout for the tags page, and added a PHP tag in the post saying there should be a link to that page. Then CouchCMS added a checkbox in my admin page allowing me to choose tags.
13:13:06FromGitter<Vindaar> @mratsim Well, they surely can. But how do I extract the optimized parameters + errors and a chi^2/dof from that?
13:13:37*endragor quit (Ping timeout: 248 seconds)
13:14:07FromGitter<mratsim> different concerns ;), we don’t use Chi2 in ML, and for errors we use cross-validation to make sure the model generalize well
13:14:16FromGitter<Vindaar> exactly :)
13:14:24FromGitter<kaushalmodi> This could be a trivial task for macros and Windows terminal users: https://github.com/nim-lang/Nim/issues/8070
13:16:13*Vladar joined #nim
13:17:34PMunchAraq, do you have nimpretty working?
13:17:41YardanicoPMunch, it does work
13:17:51Yardanicoyou can already try it yourself
13:19:33*enthus1ast quit (Ping timeout: 264 seconds)
13:20:22FromGitter<mratsim> @PMunch this is what it looks like at the moment
13:20:29FromGitter<mratsim> (https://files.gitter.im/nim-lang/Nim/HRkr/2018-06-19_15-20-00.png)
13:21:18*enthus1ast joined #nim
13:22:17PMunchHmm, interesting
13:29:56*qwertfisch is now known as gruenfisch
13:32:43*endragor joined #nim
13:33:18*gruenfisch is now known as qwertfisch
13:36:23PMunchYardanico, is it a separate project, or a secret flag to the compiler?
13:37:05*endragor quit (Ping timeout: 248 seconds)
13:37:12YardanicoPMunch, it's a separate tool in tools dir
13:37:20YardanicoPMunch, you need to manually compile it
13:38:03PMunchAah
13:41:11FromGitter<tim-st> here is again a silent crash, the first definition shouldnt compile, or?
13:41:16FromGitter<kaushalmodi> Yardanico: Maybe it should be added to `koch tools` in devel?
13:41:32Yardaniconot yet probably
13:43:52PMunchHmm, interesting
13:44:19*leru joined #nim
13:44:51PMunchWhat does it prettify so far? It seems to wrap lines that are too long, and it crated spaces around "<". But apart from that it didn't seem to do a whole lot
13:44:52*leru quit (Client Quit)
13:45:01*leru_ joined #nim
13:45:16FromGitter<kaushalmodi> @mratsim I don't know react, graphql, etc, else I would have tried Gatsby. Talking about multi-language posts, tagging/taxonomy, etc. Hugo (which I use) supports those natively.
13:46:10PMunchOh wait, it actually does quite a bit
13:46:12PMunchCool
13:47:36PMunchHmm is ; preferred as the procedure argument divider?
13:47:53FromGitter<mratsim> Well I didn’t know about GraphQL before but it’s not that hard and Gatsby comes with a GraphQL query tester tool
13:48:15YardanicoPMunch, I don't really know about that, better ask dom96 or Araq :)
13:48:22YardanicoAFAIK Araq prefers ;
13:48:26FromGitter<mratsim> React, I try to use it a bit but I’m like a super beginner as well. The only way I learn is by doing.
13:48:40FromGitter<kaushalmodi> @mratsim The thing is that I haven't yet dipped my feet in JavaScript family of languages. So there's a steep learning curve for me..
13:48:47dom96`;` is unambiguous but I hate it
13:49:07Araqnimpretty uses ';'. You wanted opinionated, you got opinionated
13:49:14FromGitter<mratsim> ah I see. I’m pretty sure I don’t use Javascript like the rest of the planet anyway
13:49:33Yardanicotime to replace all , with ; in my projects? :D
13:49:35FromGitter<kaushalmodi> `;` breaks the type propagation in parameters, so its preference between different types parameters makes sense.
13:49:43dom96oh god, please change nimpretty
13:49:49FromGitter<kaushalmodi> Yardanico: No, Not all!!
13:50:02Yardanicowell I like it :P different from other languages
13:50:17PMunch; is inconvenient to type on many layouts though..
13:50:23PMunchOr at least more inconvenient than ,
13:50:33dom96`;` only makes sense for implicit generics AFAIK
13:50:34Yardanicowell, of course
13:50:36dom96and aren't those now removed?
13:50:43Yardanicodom96, it also makes sense for "using"
13:50:43FromGitter<mratsim> what?
13:51:17FromGitter<mratsim> implicit generics are things like `proc foo(s: seq): auto`?
13:51:25PMunchHmm, it seem to get confused around ` in quote do blocks
13:51:33dom96no, things like `proc foo(s): auto`
13:51:40Yardanicothese still exist
13:51:47Yardanico"auto" wasn't removed, was it?
13:51:54Yardanicoah, I get it
13:51:57dom96It wasn't
13:51:57FromGitter<mratsim> the implicit type of s
13:51:59Yardanicoyeah, typeless arguments were removed
13:52:15Yardanicobut you can use "using" statement to not repeat type in arguments every time
13:52:27Yardanicoso ; is required for it if you have more than 1 argument in your proc
13:52:46PMunchYardanico, using statement?
13:52:49YardanicoPMunch, yes
13:53:10Yardanicohttps://nim-lang.org/docs/manual.html#statements-and-expressions-using-statement
13:53:11PMunchIsn't multiple types in the argument list just solved like this: "arg1, arg2, arg3: int, arg4: string"
13:53:32YardanicoPMunch, well, but what if you don't want to repeat argument type every time (if argument name is the same)?
13:53:50PMunchOooh, that's fancy
13:53:53PMunchNever seen that before
13:54:00dom96AFAIK there is absolutely no need for ';' now that typeless args are gone
13:54:12Yardanicodom96, how would you use https://nim-lang.org/docs/manual.html#statements-and-expressions-using-statement without ";" ?
13:54:52dom96Huh? The example doesn't even use ';'
13:55:00dom96The types are bound to the names
13:55:04dom96You don't need ';'
13:55:11FromGitter<alehander42> no, you do need `;`
13:55:12Yardanicoyou do
13:55:21FromGitter<alehander42> when you have a(b, c: int)
13:55:25Yardanico"a, b: int" is ambiguos if you made "a" from "using" statement
13:55:29FromGitter<alehander42> yeah
13:55:41FromGitter<alehander42> I was suprised too when I found it
13:56:05Yardanicoand btw, very few people even know about the existence of "using" statement :P
13:56:42dom96Well, w/e
13:56:49PMunchFor this you need it: http://ix.io/1dUL/
13:56:54PMunchBut not without arg3
13:56:54dom96We shouldn't be using `;` everywhere for the sake of this tiny feature
13:56:58PMuncha3, sorry
13:57:12FromGitter<narimiran> does nimpretty force only one empty line between procs?
13:57:32PMunchThis works: http://ix.io/1dUM/
13:57:37FromGitter<alehander42> yeah, nimpretty shouldn't use `;` if possible
13:57:40Yardanicowell, no one said that nimpretty is ready-to-use :P
13:58:03dom96There will be a lot of arguments about nimpretty style
13:58:08Yardanicoit's ready-to-test
13:58:12dom96Can't wait
13:58:18dom96/s
13:58:39FromGitter<narimiran> great bikeshedding material!
13:58:53Yardanicodom96, yeah, same as with case insensitivity or space-only indentation
13:58:54PMunchnarimiran, doesn't look like it
13:59:15FromGitter<ephja> I've started using ";", but "a, b, c: T, d: U" might not be less readable
13:59:26FromGitter<narimiran> great, then i might use it one day, because sometimes i really need two empty lines, readability-wise
13:59:45dom96`type\n FooBar = object` vs. `type FooBar = object` is something that comes to mind
13:59:48PMunchIs it on purpose that it splits $ calls? e.g. "This is an int: " & $ myIntVariable
13:59:58PMunchNotice the space between $ and myIntVariable
14:03:45FromGitter<ephja> many of my procs have generic parameters so I don't have much use for 'using' atm
14:04:39FromGitter<ephja> btw, who said it was better to have one type for each matrix variation? madness :p
14:10:55FromGitter<mratsim> a go developer?
14:11:41FromGitter<ephja> Nim dev :p
14:11:56AraqPMunch, nah, that's a bug lol
14:13:00FromGitter<mratsim> When you say “type”, do you mean Matrix\[int32\] vs Matrix\[int64\] vs Matrix\[float32\] or Mat3x3 vs Mat4x4 vs ...
14:13:12FromGitter<mratsim> or both?
14:18:34PMunchAraq, ah okay good :P I was scared there for a second. It also seems to be struggling in quote do blocks around ``. It tries to merge things like "var `myVarSym`" into "var`myVarSym`" and split things like "`myVarSym`.coolProc" into "`myVarSym`. coolProc"
14:20:14PMunchAnd it turns "cast[pointer](cast[int](buffer) + size))" into "cast[pointer]( cast[int](buffer) + size)" which looks a bit strange
14:21:35*nc-x joined #nim
14:22:01*nc-x quit (Client Quit)
14:24:11*PMunch quit (Quit: Leaving)
14:27:35*yglukhov[i] quit (Remote host closed the connection)
14:28:11*yglukhov[i] joined #nim
14:29:43FromGitter<survivorm> Good thing is to make "sanity check" after such thing - compile and make tests (if any)
14:30:14FromGitter<survivorm> but for that, nimpretty must know a compilation entry point
14:31:05*yglukhov[i] quit (Remote host closed the connection)
14:34:39FromGitter<mratsim> the quasiquoting in quote do ignores dot expression and brackets, it just interpolates with the first found identifier :/
14:35:17FromGitter<mratsim> https://github.com/nim-lang/Nim/issues/7726
14:36:49Yardanicobest way to test nimpretty - test it on the compiler itself and on top 50 nim projects (to ensure that nimpretty doesn't change any semantics)
14:37:10Yardanicobecause compiler and most popular nim projects have tests
14:37:19AraqYardanico, yeah, that's when I said to myself "time for others to step in" :P
14:37:27dom96mratsim: yep, I noticed that too.
14:47:51*nsf joined #nim
14:57:39*miran joined #nim
15:01:53*tax joined #nim
15:08:56FromGitter<kaushalmodi> @Yardanico @bevo009 How does this look? https://scripter.co/notes/nim/#echo-with-multiple-arguments
15:09:02*Trustable joined #nim
15:09:31Yardanico@kaushalmodi that's ok :)
15:16:32*Trustable quit (Remote host closed the connection)
15:19:26*Trustable joined #nim
15:29:45*PMunch joined #nim
15:32:53*btbytes joined #nim
15:34:17*yglukhov[i] joined #nim
15:41:25shashlickso do you have a volunteer for nimpretty already?
15:43:26FromGitter<ephja> I'll try it
15:45:11*cspar quit (Ping timeout: 276 seconds)
15:46:26*cryptocat1094 joined #nim
15:59:39*btbytes quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:00:40*btbytes joined #nim
16:01:38*floppydh quit (Quit: WeeChat 2.1)
16:13:50FromGitter<mratsim> by the way, why was toOpenArray chosen to have “first + last” parameter instead of “first + len” parameter? @Araq. https://github.com/nim-lang/Nim/blob/devel/lib/system.nim#L4215
16:16:31Araqbecause a[x..y] should be transformed into toOpenArray(a, x, y) by a TR macro
16:16:48Araqand the transformation is easier to get right when it's trivial
16:21:06FromGitter<mratsim> “[it] is easier to get right when it's trivial” ©Araq
16:21:12FromGitter<mratsim> =)
16:25:30FromGitter<Varriount> I <3 toOpenArray
16:25:35FromGitter<kaushalmodi> Anyone here using Emacs 25+ who can help me out with getting Nim to work with the Emacs Modules feature?: https://github.com/yuutayamada/nim-emacs-module/issues/2
16:26:54FromGitter<kaushalmodi> Non-emacs users can also probably help here as this has to do with writing Nim wrappers for C headers.
16:27:31FromGitter<Vindaar> @kaushalmodi I'll take a look at it tomorrow evening :)
16:27:46FromGitter<kaushalmodi> @Vindaar Thanks!
16:28:13FromGitter<kaushalmodi> I'll see what I can learn about C headers and Nim wrappers in the mean time :)
16:29:11FromGitter<kaushalmodi> Related: I was able to get this tutorial on Emacs Module working: http://diobla.info/blog-archive/modules-tut.html. Now need to translate that to a Nim wrapper based flow.
16:29:59FromGitter<7sDream> does Nim has tail recursive optimization, or how can I enable it?
16:30:19FromGitter<kaushalmodi> For when you look at this later.. the no. 1 issue seems that `#include <emacs-module.h>` is not present in the Nim created .c file in the nimcache.
16:30:50*nsf quit (Quit: WeeChat 2.1)
16:30:59*cspar joined #nim
16:43:00Yardanico@7sDream C compiler has it
16:43:05Yardanicoit's enabled in release mode
16:43:10Yardanicowell, not all C compiler have it
16:43:27*btbytes quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
16:44:14FromGitter<7sDream> let my try ... I use 7.2
16:45:22FromGitter<7sDream> yes, confirm it
16:45:52*leru_ quit (Remote host closed the connection)
16:46:00FromGitter<7sDream> `-d:release` enable it in my condition
16:46:17FromGitter<ephja> what prevents range references from being implemented without compiler support?
16:46:32FromGitter<7sDream> So, I think I need to use -d:release everytime, otherwise my program will stack overflow.......
16:47:47Yardanicowell, main rule - don't write recursive stuff, it's not very important
16:47:59Yardanico*it's not really needed
16:48:21FromGitter<Varriount> Plus, recursive algorithms are usually harder to understand.
16:49:30*tax quit (Quit: Leaving)
16:49:45Araq7zsDream: --stackTrace:off also does the trick
16:52:05FromGitter<mratsim> I don’t agree that recursion is harder.
16:52:22FromGitter<mratsim> for/while hides the intent of the code
16:52:35FromGitter<mratsim> @7sDream - check this thread: https://forum.nim-lang.org/t/3931
16:52:39Araqrecursion is harder.
16:52:49*btbytes joined #nim
16:53:01Araqcreate a non-trival O(?) behaviour with for loops
16:53:04FromGitter<7sDream> I will look
16:53:11Araqand try the same with recursion.
16:53:27Araqwith recursion it's easy to do. I doubt it can be done with for loops
16:53:38FromGitter<mratsim> I wasn’t talking about optimization, I was talking about understanding
16:53:59FromGitter<7sDream> am trying to use Nim to introduce some functional concepts, so temporary recursion is important to me. Although I usually use it rarely
16:54:00Araqwhat is harder to analyse can't be easier to understand
16:54:24FromGitter<mratsim> Maths disagree with you :p
16:54:36FromGitter<Vindaar> I agree with @mratsim. Some things are just nicer in a recursive fashion (e.g. Fibonacci)
16:55:03FromGitter<mratsim> some concepts are easy to grasp and hard to implement right
16:55:06Araqwhich branch of maths? the one that uses ∑ over recursion? :P
16:56:26FromGitter<mratsim> @7sDream - https://github.com/vegansk/nimfp or https://github.com/alehander42/zero-functional, I also did my nim project euler solutions using a functional approach: https://github.com/mratsim/nim-projecteuler though note that those were done in my first weeks of Nim so ...
16:57:13FromGitter<7sDream> Awesome, I will check them!
16:57:34Araqin the Nim compiler we have plenty of run-away recursions. these all need to be protected by internal counters
16:57:55Yardanicoso am I correct that the most part of https://github.com/alehander42/zero-functional repo is benchmarks in C++ ? :P
16:58:00Araqproblem is these cannot written iteratively.
16:58:05Yardanico(comparing C++ vs nim)
16:58:20Araqbut recursion is pretty far from an "elegant" solution IMO.
16:58:28FromGitter<mratsim> well it’s just that C++ is taht verbose :p
16:59:09*cspar quit (Ping timeout: 264 seconds)
17:00:50FromGitter<mratsim> This is my latest recursive proc: https://github.com/status-im/nim-stint/blob/master/stint/private/as_words.nim#L15-L30, to work on a recursive type UintImpl of UintImpl of UintImpl … with lo, hi: uint64 at the very end.
17:01:39FromGitter<mratsim> basically a binary tree, an iterative proc would be harder to follow in my opinion
17:03:05FromGitter<mratsim> this is similar to “traverse all the leaves of a binary tree in order"
17:03:15Araqwell there is some merit in using the call stack instead of an explicit stack.
17:03:39Araqthe problem is that the implicit stack tends to break far more quickly in a production setting
17:03:54Araqas you have little to no control over it.
17:04:02FromGitter<mratsim> I don’t need 2000 stack limit ;)
17:04:35FromGitter<mratsim> but I agree
17:24:00isenenimcache is created in my home directory. Can I make nim create it in another location (permanently)?
17:24:55FromGitter<Varriount> @7sDream You can also enable just tail call optimization using `-foptimize-sibling-calls` I think.
17:25:04dom96isene: https://forum.nim-lang.org/t/3897
17:26:51Yardanicodom96, btw, about https://forum.nim-lang.org/t/3946 - isn't it possible to implement (maybe in future) separation of login and display name? So by default every user will have his display name = login, but he can change that
17:27:11dom96Why wouldn't it be possible?
17:27:28FromGitter<ephja> SSDs seem to have been able to endure a huge amount of writes for many years now
17:27:39dom96I guess what you're asking is whether it's something I would do
17:27:46dom96Not in the foreseeable future
17:28:28dom96The reason I don't allow nickname changes is because it breaks mentions
17:28:34dom96a display name wouldn't solve this
17:29:53FromGitter<7sDream> @Varriount `-t:-foptimize-sibling-calls` add the opt arg to gcc
17:30:37FromGitter<7sDream> but when not in release mode, nim gen code for debug info, and the code can't be optimization
17:30:46*btbytes quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:31:03FromGitter<7sDream> Just tried
17:31:22*btbytes joined #nim
17:31:35*btbytes quit (Client Quit)
17:32:25FromGitter<7sDream> (https://files.gitter.im/nim-lang/Nim/pWsG/image.png)
17:32:26*cspar joined #nim
17:33:10Yardanico@7sDream did you do "--stacktrace:off" as Araq told you?
17:34:22FromGitter<7sDream> No, let me try now
17:35:25*btbytes joined #nim
17:35:52cryptocat1094How is `parallel' implemented?
17:36:06FromGitter<7sDream> stacktrace take me to a Segmentation fault :/
17:36:27FromGitter<7sDream> will give you a online MWE, wait me
17:36:34Yardanicowith -t:-foptimize-sibling-calls ?
17:36:46FromGitter<7sDream> even without it
17:37:11FromGitter<7sDream> but `-d:release ` works well
17:37:58FromDiscord<treeform> is there a doc on how to use nimpretty?
17:38:20Yardaniconot yet because it's not yet complete. you can just compile it (it's in tools folder), and then run it on your file
17:38:37FromDiscord<treeform> ok
17:39:25FromDiscord<treeform> I really hope nimpretty is good, for the little go I did i really liked the idea of go's fmt, no more syntax bike shedding.
17:39:39Yardanicowell, try it, it has bugs
17:39:52Yardanicoand you can help by reporting them :P
17:40:49*xet7 quit (Remote host closed the connection)
17:41:27FromGitter<ephja> -funrolls \o/
17:42:02AraqI'm adding my nimpretty tests
17:42:40Araqthe reported bugs are easy
17:42:45FromDiscord<treeform> nice, I would like to help with nimpretty
17:43:21FromDiscord<treeform> hmm i ran the current devel version, it says a bunch of "Hint: line too long [LineTooLong]"
17:43:23dom96oh we will bikeshed
17:43:24FromDiscord<treeform> but does not reformat the file
17:43:32dom96bikeshed about what nimpretty should do :)
17:44:37FromDiscord<treeform> the idea with a code formatter is that all bikeshedding goes critical and condenses into a black hole never to come out again.
17:45:44FromDiscord<treeform> does it supposed to only complain? or does it actually reformats stuff?
17:45:49Yardanicoit does
17:45:51Yardanicolook in files
17:46:03FromDiscord<treeform> oh it does not replace, i see now
17:46:15FromGitter<ephja> not a fan of Foo[A, B, C,\nD,...] if it's not vertical aligned but w/e as long as it's consistent. it does break slightly before 80 columns though
17:46:29FromGitter<7sDream> interesting, it fails only when the recursive more then 87320 times...
17:46:41YardanicoAraq, by the way, why does it make a backup if it doesn't overwrite the file?
17:46:52Araqbecause I'm changing it
17:47:00Araqit will soon overwrite the file
17:47:37YardanicoAraq, also it seems that nimpretty inserts a space before "import a, b, c d" if it's on the first line
17:47:42Araqhow can we ensure 'nimpretty' was run over the file in PRs?
17:48:53Yardanicowell, that's not the simplest thing - maybe we can use github webhooks to check that?
17:49:26*nsf joined #nim
17:50:33FromGitter<ephja> will it not show LineTooLong eventually?
17:50:51cryptocat1094Hm, why is "parallel"'s implementation empty?
17:50:51FromDiscord<treeform> yeah so it created a ton of syntax errors ...
17:51:13Araq:-)
17:51:23Araqtreeform, can you gist your testfile?
17:51:52FromDiscord<treeform> no its a private file, but I will get the errors to you
17:51:57FromDiscord<treeform> they are all around comments
17:52:55YardanicoAraq, it replaced proc `cookies=` with proc `cookies = ` (although it still works), is that correct?
17:53:05YardanicoI always though that you need to write it without spaces :D
17:53:12Yardanico(and it won't work otherwise)
17:53:20YardanicoBut it seems like it's more flexible
17:53:32Araqthe backticks work badly in general :P
17:53:37*Trustable quit (Remote host closed the connection)
17:57:06FromDiscord<treeform> Araq, https://gist.github.com/treeform/dd1fe2078714c0aa5e732902f8765c0c
17:57:13FromDiscord<treeform> its comments are tipping it up
17:58:30YardanicoAraq, ok, found another issue with comments - https://gist.github.com/Yardanico/4cc4e54b75dd25a40038d8a79d56774e . nimpretty moves # (normal comment) on the same line to the doc comment
18:00:09dom96Araq: cp module.nim module.nim.old && nimpretty module.nim && diff module.nim module.nim.old | wc -l # Check that this isn't above some value
18:01:16iseneNew to nim. Excuse my ignorance. How do I use the Mersenne Twister (https://nim-lang.org/docs/mersenne.html#getNum,MersenneTwister) to generate a random number from 1 to 6 (a dice roll)?
18:01:27Yardanicoisene, you can use random module for stuff like that
18:02:00Yardanico!eval import random; echo(rand(5) + 1)
18:02:03NimBot6
18:02:09Yardanicoor, if you really want to use mersenne twister
18:02:17iseneYardanico: Nope - the random module gives a very poor random distribution... very poor.
18:02:34Yardanicodid you do "randomize()"?
18:02:39iseneYup
18:02:50YardanicoWell, as docs say in https://nim-lang.org/docs/mersenne.html#getNum,MersenneTwister
18:02:59Yardanico1) create an object holding mersenne twister state
18:03:09Yardanicolike "let myrng = newMersenneTwister(myseed)"
18:03:25Yardanicoand then get random number from 0 to uint32 with myrng.getNum()
18:03:28iseneWhat I am wondering is how to get the result to be 1-6
18:04:05Yardanicohmm
18:04:09FromGitter<7sDream> @Yardanico https://glot.io/snippets/f24z1p4ybv , the MWE of the segmentation fault caused by `--stacktrace:off`
18:04:39FromGitter<7sDream> work well when use `-d:release`
18:04:53FromGitter<7sDream> cc @Araq
18:05:29Araqisene: very poor? it uses a state-of-the-art algorithm
18:08:10Araq!eval import random; echo(rand(1..6))
18:08:13NimBot6
18:08:17Araq!eval import random; echo(rand(1..6))
18:08:20NimBot6
18:08:22YardanicoAraq, you're not calling randomize() :)
18:08:31Yardanico!eval import random; randomize(); echo(rand(1..6))
18:08:33Araq!eval import random; randomize(); echo(rand(1..6))
18:08:34NimBot4
18:08:36NimBot6
18:08:41Araq!eval import random; randomize(); echo(rand(1..6))
18:08:44NimBot1
18:08:46Araq!eval import random; randomize(); echo(rand(1..6))
18:08:47NimBotCompile failed: <no output>
18:08:51Araqlol
18:08:57Araq!eval import random; randomize(); echo(rand(1..6))
18:09:00NimBot2
18:09:27Araqit's super random, even crashes randomly
18:09:29FromGitter<ephja> it's kind of subjective, but it does seem decent considering the small state space. I wonder what his use case is
18:09:42Araq!eval import random; randomize(); echo(rand(1..6))
18:09:45NimBot2
18:10:14Araqno! that should have been 3 here!
18:10:21Araq;-)
18:11:38FromGitter<ephja> this is with different seeds every time though, but at least we can deduce that it doesn't do "return 4"!
18:11:51FromGitter<Vindaar> @isene: something like this should work: ⏎ ⏎ ```code paste, see link``` ⏎ ⏎ plotting the distributions shows it's pretty flat. Not entirely sure, if that naive division introduces any bias (not working on stuff like that usually..). Highest bin is 166,973, lowest 166,414. Guess that is a reasonable deviation based on statistics.. [https://gitter.im/nim-lang/Nim?at=5b2947675862c35f47b218d9]
18:16:04FromGitter<Vindaar> (ok, if you want them as ints, you still need to round those floats of course
18:16:07FromGitter<Vindaar> )
18:16:15iseneThe use case is this: http://isene.org/cgi-bin/O6.rb (written in Fortran - looking to rewrite in nim)
18:16:55miranisene: how/why is std.random bad for this?
18:17:07dom96!eval import random; randomize(); for i in 0..3: echo(rand(1..6))
18:17:09NimBot1↵5↵4↵2
18:17:22dom96seems random enough to me
18:18:41Araqdom96: well there are books written about this subject. ;-)
18:18:46FromGitter<mratsim> @isene, MersenneTwister is a flawed PRNG, really, don’t use it
18:19:08iseneWith this code (http://dpaste.com/07DQZVZ) I got crazy results (like 39 critical and -21 fumble) within just a few tries (chances of me getting hit by a meteor in the meantime is slightly bigger)
18:19:14FromGitter<ephja> I thought he was using the 'random' module (xoroshiro128+)
18:19:42FromGitter<ephja> yeah, he is
18:19:44dom96isene: Maybe only call `randomize` once at the start
18:19:55FromGitter<mratsim> yes
18:20:01mirandom96: this is the first thing i noticed too
18:20:02Araqyeah, don't call randomize() in this way
18:20:10FromGitter<mratsim> randomize is to get an initial seed
18:20:15Araqit makes things far worse than calling it once
18:20:17FromGitter<mratsim> you are initializing the seed every time
18:20:31iseneSo, that's what's wrong?
18:20:41FromGitter<mratsim> you might as well read from /dev/urandom in that case
18:20:41dom96Honestly, I have to wonder, why do we force users to call `randomize`?
18:20:48FromGitter<kaushalmodi> Jumping on this `randomize` train.. I was surprised too when I realized that that was needed
18:20:57dom96It's not intuitive at all
18:21:00FromGitter<kaushalmodi> https://scripter.co/notes/nim/#call-randomize-before-rand
18:21:17FromGitter<mratsim> for me it’s intuitive :?
18:21:21miranso something like: either supply a seed, or randomize is called for you?
18:21:22FromGitter<7sDream> like `srand(time(NULL))` in c...
18:21:34FromGitter<kaushalmodi> > It's not intuitive at all ⏎ ⏎ +1
18:21:44Araqwe checked the other languages.
18:21:54Araqsome default to an implicit randomize(), some don't.
18:22:00iseneSo, any suggestions as to what I should do there?
18:22:04FromGitter<mratsim> in Machine learning and Monte Carlo simulation we always initialize with random_seed(foobar) or call a randomize function
18:22:25FromGitter<mratsim> call randomize() in the global scope remove it from your D function
18:22:29miranisene: put `randomize` after the import, and then test it on 1_000_000 samples? :)
18:22:36FromGitter<ephja> yes but this relies on a global variable for convenience
18:22:40isenemiran: ok
18:22:59*endragor joined #nim
18:23:10*Vladar quit (Quit: Leaving)
18:23:13FromGitter<kaushalmodi> @mratsim You can still set a fixed seed using `randomize(foobar)`
18:23:17FromGitter<mratsim> @ephja there is no way around having a global to hold the state
18:23:23AraqI think it's fair that the non-determinism between program runs is not done implicitly
18:23:29FromGitter<mratsim> ^
18:24:14dom96Hrm, I dunno. People expect `random` to give random results.
18:24:19FromGitter<mratsim> @kaushalmodi I know, what I mean is that calling randomize() manually to source from /dev/urandom is not unintuitive in all domains
18:24:39Araqit does give random results.
18:24:47FromGitter<kayabaNerve> dom96: I thought it always returned 4
18:24:50dom96They already know that they need to set the seed to something deterministic when testing.
18:24:57FromGitter<mratsim> xkcd? :P
18:25:02FromGitter<kayabaNerve> @mratsim Ofc
18:25:43FromGitter<ephja> 5 is more random I think
18:26:17miranagree with dom96
18:26:57FromGitter<mratsim> I don’t really care =)
18:27:17*endragor quit (Ping timeout: 245 seconds)
18:27:25iseneYEAY! Seems to work just fine now. Thanks guys :-)
18:27:49Araqhere is an objective argument:
18:27:52Araq proc randomize*() {.benign.} =
18:27:52Araq ## Initializes the random number generator with a "random"
18:27:52Araq ## number, i.e. a tickcount. Note: Does not work for NimScript.
18:27:54Araq let now = times.getTime()
18:27:56Araq randomize(convert(Seconds, Nanoseconds, now.toUnix) + now.nanosecond)
18:28:03mirannobody would put `seed(42)` into a loop or function that is called repeteately, while, as we can see, somebody does that with `randomize`
18:28:07Araqis impossible to optimize out if called implicitly.
18:28:33Araqmiran: that only means we should rename randomize() to something better.
18:28:44dom96here is an objective argument: isene wouldn't need help if this was implicit
18:28:46FromGitter<mratsim> random_seed
18:28:54Araqthat means if called implicitly, I import random and the time based stuff ends up in my .exe
18:29:06Araqwhether I need it or not.
18:29:07FromGitter<ephja> I like implicit determinism
18:29:16FromGitter<mratsim> here is an objective argument: isene wouldn’t need help if there was an “How to use this library” ;)
18:29:30miran@ephja: i do too - when i'm not importing `random` ;)
18:30:04FromGitter<mratsim> so RFC?
18:30:13FromGitter<mratsim> (going out so not me)
18:30:24FromGitter<kaushalmodi> > RFC? ⏎ ⏎ yes please. I have +1 for actual randomization :)
18:30:52Araqso rename randomize() to setSeedFromCurrentTime()
18:31:08FromGitter<kaushalmodi> Araq: how about setRandSeed
18:31:21Araqbut don't call it implicitly, can't optimize it out then
18:31:42FromGitter<kaushalmodi> A perspective from another language: SystemVerilog.. randomization is implicit
18:32:01FromGitter<kaushalmodi> Users wanting determinism pass a `-seed=NNN` switch
18:32:20Araqnothing that was said here addresses my dead-code-elimination point.
18:32:55dom96Araq: Call it in `rand`?
18:33:08dom96instead of globally?
18:33:16FromGitter<kaushalmodi> Araq: Can something like `when defined(seed):` optimize this?
18:33:22dom96As far as languages go, I bet Python does it implicitly
18:33:27Yardanicoof course
18:33:28iseneIn Julia it is implicit. In Fortran it depends on the implementation (in gfortran it is implicit)
18:33:30mirandom96: yup
18:33:37Araqand C++ doesn't.
18:33:41Yardanicodom96, "explicit is better than implicit" and they do it :)
18:33:45dom96#ImplicitClub :P
18:33:57Araqreal systems programming languages don't do it :P
18:34:01FromGitter<ephja> dom96: call it there just the first time or what? o.O
18:34:07dom96ephja: yep
18:34:14dom96Easy to store a flag somewhere
18:34:15iseneAraq: Fortran is more real than Real ;-P
18:34:25dom96Araq: So did I solve your dead-code-elim problem?
18:34:36miranyou imported `random` - you want random stuff. if you want "deterministic random" - set a seed yourself. #implicitClub
18:34:40Araqyou did, but your suggestion is terrible :P
18:34:56dom96Sounds like a subjective opinion to me
18:34:58Araqand in fact
18:35:01Araqyou're wrong
18:35:12dom96Don't devolve your objective argument into subjectivity :P
18:35:16Araqobviously I want to call 'rand' when I import the module
18:35:25Araqbut I don't necessarily want the time dependency
18:35:41Araqand yet you add it.
18:35:51dom96so add a `seed` parameter to `rand`
18:35:57Araqso ... no, you haven't addresses it
18:36:02dom96*optional parameter
18:36:16iseneI'm glad I started a discussion :-)
18:36:25Araqyou know the state can be passed explicitly already, right?
18:36:36miranisene: oh, discussions are what we are best at
18:36:53miranthe results for these discussions? not so much.... :)
18:37:08Araqin the end we deprecate useful features.
18:37:09miran*for -> from
18:37:34Araqbecause somebody out there "misused" it, didn't read the docs or something similar
18:37:45dom96An API shouldn't be so easy to misuse
18:37:56dom96Everybody stumbles upon this
18:37:58dom96Even I did
18:38:18dom96And the problems you are coming up with can be fixed easily
18:38:33dom96The evidence is there that this is causing issues for people
18:45:44FromGitter<Vindaar> I don't want to interrupt your important (:P) discussion, but a question regarding C FFI: If I have a proc with a `ptr cdouble` argument (as a Nim proc, which is handed to C), how do I get an unchecked array from the `ptr`?
18:46:12FromGitter<ephja> but very few people need determinism so if you can signal it explicitly then that's fine imo. anyway, creating your own global would involve very little work
18:46:29Yardanico@Vindaar maybe https://forum.nim-lang.org/t/3893#24246 can help ?
18:46:57FromGitter<Vindaar> Yardanico: thanks, I'll take a look
18:47:01FromGitter<ephja> you could specify an arbitrarily large array size
18:47:38Araqwhatever, I gave an objective reason, you haven't solved it and I don't agree that "X stumbled upon this" when we don't know how many DIDN'T stumble upon this is a good way to deal with these things.
18:50:06Araqif Visual Basic programmer migrate to Nim and struggle with 'var' vs 'let' do we then create an RFC that 'let' should be removed from the language?
18:50:28Araqbecause there is evidence that it is causing issues for people?
18:50:37YardanicoAraq, I wonder how much Node people will struggle with "const" :P
18:50:40Yardanicoin Nim
18:50:51FromGitter<Vindaar> Yardanico: thanks, that works perfectly fine :) For some reason I didn't think about trying ptr UncheckedArray, hehe.
18:50:58Yardanicowell, not node programmers, but js programmers
18:52:10FromGitter<kaushalmodi> OK, this rand discussion is going off track.. the let/var/const etc are language concepts.. whereas to me, a rand() proc produces random output unconditionally. Currently the condition is that randomize() be called first.
18:52:27YardanicoI usually call randomize() after import
18:53:15FromGitter<kaushalmodi> To me a rand() should be deterministic only if the user intentionally wanted so.. by intensionally setting a seed.
18:55:11FromDiscord<treeform> I agree with all of you guys.
18:55:42FromDiscord<treeform> both setting seed at start and not setting seed at start are valid options with good arguments.
18:56:15FromDiscord<treeform> its in the docs what it does, so both ways are fine with me.
19:00:53FromGitter<kaushalmodi> Windows Console users: Is it safe to assume the default foreground to be white, and default background to be black? I googled around, but couldn't find anything conclusive.
19:01:26*jjido joined #nim
19:02:28FromGitter<kaushalmodi> Ref: https://github.com/nim-lang/Nim/pull/8073
19:04:39*noonien quit (Quit: Connection closed for inactivity)
19:04:45FromGitter<zetashift> I use cmder and the default foreground color is white\green and the console background is black/transparenty
19:05:10FromGitter<zetashift> but cmder just uses conemu/cmd.exe so in general I think it'll be black and white
19:06:05Araqwhy do you need to assume anything?
19:06:26FromGitter<ephja> @zetashift by default? I see cmd/bash/powershell listed
19:07:01FromGitter<ephja> unless it's spawning children from cmd or something
19:08:17FromGitter<zetashift> yea by default
19:09:38FromGitter<kaushalmodi> Araq: I cannot figure out from the API how to set the console's default fg/bg
19:09:52FromGitter<kaushalmodi> https://docs.microsoft.com/en-us/windows/console/setconsoletextattribute
19:10:05FromGitter<kaushalmodi> .. and I don't use Windows.. just trying to improve that PR
19:10:29FromGitter<Vindaar> Doesn't PowerShell use blue background + white font by default?
19:10:36FromGitter<ephja> setForegroundColor/setBackgroundColor on stdout?
19:11:01FromGitter<kaushalmodi> @ephja Yes, this is about figuring out the default fg/bg values
19:11:13FromGitter<kaushalmodi> See that PR
19:13:51Yardanico@kaushalmodi do you understand that people can change their background color almost in every terminal?
19:15:07Yardanicoeven in windows cmd
19:15:12FromGitter<kaushalmodi> Yardanico: I do.. so am asking for help from folks familiar with Windows Console
19:19:14*jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:22:52FromGitter<ephja> "To reset colors to their defaults, use ESC[39;49m (not supported on some terminals), or reset all attributes with ESC[0m. Later terminals added the ability to directly specify the "bright" colors with 90-97 and 100-107."
19:23:55FromGitter<kaushalmodi> The PR adds the ESC[39;49m support.. I am trying to do the equivalent thing for Windows
19:24:27FromGitter<kaushalmodi> The resetting using ESC[0m and bright color support is already there in terminal.nim.
19:27:05FromGitter<kaushalmodi> Yardanico: The PR sets fg to white and bg to black only if user uses the new fgDefault and bgDefault enum vals on Windows. On non-Windows, those enums do the "right thing" i.e. use the 39/49 esc values
19:28:05FromGitter<kaushalmodi> The right thing for Windows Console behavior would be to somehow get the fg/bg defaults that the user customized.. but I cannot figure out how to do that.
19:30:56FromGitter<ephja> https://github.com/nim-lang/Nim/blob/master/lib/pure/terminal.nim#L201 that's not quite the same thing though
19:32:04FromGitter<ephja> if it's not process-dependent
19:32:10FromGitter<kaushalmodi> right?
19:32:38FromGitter<ephja> I think so, which is why it's being called at the module scope
19:33:01FromGitter<kaushalmodi> @ephja I want to do the stuff in Windows like I do in this screenshot: https://github.com/nim-lang/Nim/pull/8073#issue-195901217
19:33:35FromGitter<kaushalmodi> There should be some "default" fg/bg to fall back to when I want to retain just the styles(bold, italics, etc.)
19:34:03*btbytes quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:34:36FromGitter<kaushalmodi> notice how the `fgDefault` in `fgRed, "red text ", styleBright, "bold red", fgDefault, " bold text"` brings only the fg color to the default value, leaving that bold style untouched.
19:35:10Araqkaushalmodi: I can see to make your code work on windows, but I don't remember the Win API details
19:36:04*jjido joined #nim
19:36:22FromGitter<kaushalmodi> @Varriount you mean assign the "default" fg/bg colors to `let` vars in the body of `terminal` module?
19:37:39FromGitter<kaushalmodi> But then I cannot leave the `lookup` as constants inside `setForegroundColor` and `setBackgroundColor`.. hmm
19:39:01FromGitter<kaushalmodi> Araq: Thanks. All I got was this: https://docs.microsoft.com/en-us/windows/console/setconsoletextattribute
19:39:58*jjido quit (Client Quit)
19:40:24*beatmox quit (Remote host closed the connection)
19:40:32Araqhttps://docs.microsoft.com/en-us/windows/console/getconsolescreenbufferinfo
19:40:54Araqhttps://docs.microsoft.com/en-us/windows/console/console-screen-buffer-info-str has the field WORD wAttributes;
19:40:55*beatmox joined #nim
19:41:49Araqso you need to OR this word with your foreground color word. or something like this
19:43:13FromGitter<kaushalmodi> Araq: Setting the fg color is understood. The unknown is figuring out the default fg/bg colors
19:43:39FromGitter<kaushalmodi> What @Varriount suggested would work.. but I'd rather have someone with a Windows devel env implement that
19:47:08elroodyou cannot rely on any "default" colour scheme anyway
19:50:35FromGitter<kaushalmodi> elrood: Atleast it works quite fine on GNU/Linux systems
19:50:44FromGitter<kaushalmodi> (https://files.gitter.im/nim-lang/Nim/XQkf/image.png)
19:50:53*yglukhov[i] quit (Ping timeout: 256 seconds)
19:52:28FromGitter<kaushalmodi> here I changed the default fg/bg to black/green (I know.. not pretty.. just to test this :P), and the 39/49 escape codes worked great!
19:53:15FromGitter<kaushalmodi> Here's with my usual defaults (white/black):
19:53:23FromGitter<kaushalmodi> (https://files.gitter.im/nim-lang/Nim/EAAT/image.png)
19:53:55FromGitter<kaushalmodi> The last parts "bold text" is where I use the new enums (in that PR) `fgDefault` and `bgDefault`
20:08:22FromGitter<tim-st> how does this work? https://nim-lang.org/docs/macros.html#statements-assignment
20:08:36FromGitter<tim-st> I have `import macros` and `var stmtList = newNimNode(nnkStmtList)`
20:08:51FromGitter<tim-st> then can I add the code to the stmtList?
20:10:22FromGitter<tim-st> Oh, I got it...
20:14:21FromGitter<tim-st> No, doesnt work, these single example code with `AST:` in front are not really helpful since they dont work...
20:14:39FromGitter<tim-st> (out of the box)
20:15:11*dzho is now known as deejoe
20:15:15*deejoe is now known as dzho
20:18:18dom96yeah, they're confusing
20:18:47dom96The syntax is: newTree(nnkStmtList, newTree(nnkBlock, ...))
20:18:58dom96vs. nnkStmtList(nnkBlock(...))
20:19:03FromGitter<tim-st> thanks, tree in front makes sense^^
20:20:42FromGitter<tim-st> but it's extremely useful to transpile to nim using this AST
20:32:22*jjido joined #nim
20:35:37*miran quit (Ping timeout: 260 seconds)
20:57:33*cryptocat1094 quit (Quit: later)
21:08:13*nsf quit (Quit: WeeChat 2.1)
21:12:05*btbytes joined #nim
21:13:35Araqboo! triggered! "transpile" detected :D
21:14:37FromGitter<tim-st> but to nim this time^^
21:14:44Araqoh well. new policy. don't talk about the word "transpile" in #nim. People are free to use it and will secretly gain negative points :P
21:15:35FromGitter<tim-st> I think it was another person that introduced the word today^^
21:15:45Araqthe persons who get more than 4 negative points need to send me some local brand of beer
21:16:00Araqor tea.
21:16:12FromGitter<tim-st> I think about adding the word to my adblock
21:18:33FromGitter<Vindaar> Sweeeeet! Wrapped cMPFIT and managed to write a wrapper that's super simple to use for it :D I won't be dependent on curve_fit anymore, yay. Will clean it up tomorrow and create a nimble package :)
21:19:30FromGitter<tim-st> btw I thought nim was case insensitive, but I can do `type Type = object` ?
21:20:03FromGitter<Vindaar> @tim-st it's case insensitive except for the first letter!
21:20:19FromGitter<tim-st> ah, good to know, thanks
21:20:49Araqyeah. and eventually we will have tooling that makes use of this feature.
21:22:21elrood← might have already qualified. any preference as to which kind of beer or tea?
21:25:09Araqno dark beer please and no fruity teas
21:28:05FromGitter<Varriount> Aw, I like fruit teas
21:29:56*find0x90 joined #nim
21:30:45dom96Maybe I should get NimBot to make noises when someone says "transpile" :P
21:31:45FromGitter<Varriount> @kaushalmodi I can test any code you write on Windows
21:32:02*enthus1ast quit (Ping timeout: 260 seconds)
21:33:30*enthus1ast joined #nim
21:43:29*NimBot joined #nim
21:51:36FromGitter<Systra72_twitter> What is the reason fmt (in strformat) do not accept any string, only raw string literals?
21:56:10*btbytes quit (Quit: Textual IRC Client: www.textualapp.com)
21:56:18FromGitter<kaushalmodi> @Varriount Done! 100% Windows untested commit added to #8073; only tested to compile in GNU/Linux :)
22:03:52*elrood quit (Quit: Leaving)
22:07:33FromGitter<mratsim> @Vindaar cast\[ptr UncheckedArray\cdouble\ (yourCpointer)
22:07:43FromGitter<mratsim> ah I’m missing a bracket
22:09:05*find0x90 quit (Quit: find0x90)
22:09:12*jjido quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
22:10:05*jjido joined #nim
22:11:40FromGitter<Vindaar> @mratsim Yep, thanks! yardanico sent me a link to the forums. My issue was that I didn't think I had to cast it to a `ptr UncheckedArray`. I only tried a raw `UncheckedArray`.
22:15:42FromGitter<mratsim> If you have issue interfacing with C, it’s probably already solved in Arraymancer ;) https://github.com/mratsim/Arraymancer/blob/master/src/tensor/data_structure.nim#L216
22:19:50FromGitter<Vindaar> Hehe, you're right. And indeed I've looked at the Arraymancer's source often enough. For some reason I didn't think about it for this though :)
22:20:56*jjido quit (Ping timeout: 256 seconds)
22:22:36xomachine[m]I've just found that at latest versions of Nim in the devel branch, the Nim compiler adds ".exe" to the underlying C compiler when --os:windows. Why it has been done? Is there a way to avoid it (I use winegcc on linux with --os:windows, and this change breaks my stuff)
22:32:36*PMunch quit (Quit: leaving)
22:36:46FromDiscord<2vg> Is nest stable?
22:36:46FromDiscord<2vg> I look like a very nice routing module.
22:36:47FromDiscord<2vg>
22:36:47FromDiscord<2vg> https://github.com/kedean/nest
22:42:31AraqSystra72_twitter because the format string is parsed at compile-time.
22:42:51Araqxomachine[m]: it always did that afaict.
22:43:26Araqor maybe it is an oversight caused by the massive refactorings in the compiler's code
23:17:29*cspar quit (Ping timeout: 276 seconds)
23:42:32FromGitter<Varriount> 2vg: Any documentation?
23:46:46FromGitter<fedkanaut> How do you transmit arguments using the events library? The compiler doesn't like it when I use an inheritee of EventArgs for my callback's arguments.