<< 03-09-2017 >>

00:02:51dom96awesome :)
00:03:24dom96You might also wish to try separating this code, you're mixing a lot of different things here, including threads which might be to blame for the issues.
00:04:14FromGitter<xmonader> yeah that's my main suspect right now :D :D
00:06:56FromGitter<xmonader> @dom96, You were right. I moved the async code part to another file compiled and ran successfully
00:07:41*Jesin quit (Quit: Leaving)
00:09:39FromGitter<xmonader> froze back again :S
00:14:52dom96hopefully you'll figure it out
00:14:55dom96I'm afraid I must sleep now
00:14:57dom96good night
00:15:11FromGitter<xmonader> Good night ^_^
00:27:12*mahtob joined #nim
00:30:23*mahmudov quit (Ping timeout: 248 seconds)
00:33:11*mahsav joined #nim
00:38:10*loc8 joined #nim
00:40:39*loc8_ quit (Ping timeout: 240 seconds)
01:03:42*relax quit (Ping timeout: 252 seconds)
01:04:52*chemist69 quit (Ping timeout: 246 seconds)
01:17:36*chemist69 joined #nim
01:19:28*Matthias247 quit (Read error: Connection reset by peer)
02:01:44*gangstacat quit (Quit: Leaving)
02:02:30*chemist69 quit (Ping timeout: 240 seconds)
02:04:18*loc8_ joined #nim
02:06:57*loc8 quit (Ping timeout: 260 seconds)
02:16:45*chemist69 joined #nim
02:23:03*dddddd quit (Remote host closed the connection)
02:29:23loc8_Uh, I'm having a problem with sockets
02:29:56loc8_I'm connecting to a telnet server and using `Socket.recv` to fetch data, 1 byte at a time
02:30:27loc8_Looping until there's no more data (the call returns `0`)
02:30:40loc8_The thing is: The call doesn't seem to return 0 even when there's no more data
02:30:52loc8_If I set the timeout to -1 it will just hang there
02:31:10loc8_Does it need a timeout?
02:32:48loc8_I'm pretty sure it should be able to determine the EOF without a timeout
02:34:00*loc8_ is now known as l0c8
02:51:33*loc8 joined #nim
02:53:42*l0c8 quit (Ping timeout: 252 seconds)
03:01:21thomasrossis there a way to update a value in a table from a for loop?
03:01:44thomasrossdo i need to use a different iterator? right now i'm doing for k, v in table: table.someprop = 1
03:05:59thomasrossoh, got it, just needed to use mpairs()
03:19:27*vivus quit (Quit: Leaving)
03:23:10*loc8_ joined #nim
03:23:31*pilne quit (Quit: Quitting!)
03:25:41*loc8 quit (Ping timeout: 240 seconds)
03:28:19loc8_Oh well, looks like I have to parse the `IAC GA` to stop trying to read from the socket
03:35:32*endragor joined #nim
03:41:01thomasrossis it possible to pass by reference to an async proc? i'm just getting illegal capture errors
04:06:29*def-pri-pub joined #nim
04:06:29*def-pri-pub quit (Changing host)
04:06:29*def-pri-pub joined #nim
04:14:35*mwbrown quit (Ping timeout: 240 seconds)
04:15:00*mwbrown joined #nim
04:32:09*def-pri-pub quit (Quit: leaving)
05:03:18*francisl joined #nim
05:12:57loc8_Can anyone give me some clarity on why the socket is behaving like that?
05:13:29loc8_If I try to `recv(10)` on a stream that has less than 10 bytes of data buffered, it will hang
05:15:01loc8_How can I make it simply receive the 9 bytes and stop?
05:46:30*francisl quit (Quit: francisl)
05:57:57*loc8 joined #nim
06:00:31*loc8_ quit (Ping timeout: 248 seconds)
06:27:11*mahtob quit (Remote host closed the connection)
06:45:46*rauss quit (Quit: WeeChat 1.9)
06:49:02*haha_ joined #nim
07:04:47FromGitter<Yardanico> thomasross: no afaik
07:04:52FromGitter<Yardanico> But you can make
07:05:03FromGitter<Yardanico> Your object a ref object
07:16:23*yglukhov joined #nim
07:27:01*miran joined #nim
07:33:33*aziz joined #nim
07:33:50*aziz quit (Client Quit)
07:34:44FromGitter<Yardanico> loc8_ recv(9).:(
07:34:55FromGitter<Yardanico> recv(9) ? :)
07:45:31SusWombatNim is going to be always a little bit slower then c right? cause of the "boilerplate"?
07:45:54SusWombatcode directly written in c i mean
07:46:50*BigEpsilon joined #nim
07:49:51SusWombatnvm forgot to make a release build ...
07:50:16*Yardanico joined #nim
07:51:39Yardanicodom96, really? https://gist.github.com/dom96/da2d4dead6fb00b71312
07:51:46Yardanicomaybe we can remove this link ? :D
07:55:05Yardanicobecause it doesn't count gitter users :)
07:55:43Yardanicoand it seems strange that user record wasn't changed in two years
07:57:41*haha_ quit (Quit: haha_)
08:13:01*Arrrr joined #nim
08:13:01*Arrrr quit (Changing host)
08:13:01*Arrrr joined #nim
08:18:13*Pisuke joined #nim
08:20:05*MyMind quit (Ping timeout: 240 seconds)
08:21:26*claudiuinberlin joined #nim
08:22:43*SusWombat_ joined #nim
08:25:21*SusWombat quit (Ping timeout: 252 seconds)
08:36:51*BigEpsilon quit (Remote host closed the connection)
08:37:08*BigEpsilon joined #nim
09:01:28*thomasross quit (Remote host closed the connection)
09:01:52*thomasross joined #nim
09:05:37*Arrrr quit (Ping timeout: 248 seconds)
09:08:42*Arrrr joined #nim
09:08:42*Arrrr quit (Changing host)
09:08:42*Arrrr joined #nim
09:22:59FromGitter<mratsim> @SusWombat => No, in many benchmarks, naive Nim is faster than naive C.
09:25:53FromGitter<Yardanico> he said "nvm forgot to make a release build" :D
09:36:35*Matthias247 joined #nim
09:37:20FromGitter<mratsim> btw @dom96, I use a package/src/*.nim directory structure for my source files but the “src” gets removed on nimble install. Nimble use the same and the following line as a workaround https://github.com/nim-lang/nimble/blob/master/nimble.nimble#L5. I think it would be much easier to have the option to keep the “src” structure, especially regarding “includes”, what do you think?
09:42:04Yardanicomratsim: also this might help youhttps://gist.github.com/stisa/09474a952a420448778685507d3fbd51
09:42:13Yardanicohttps://gist.github.com/stisa/09474a952a420448778685507d3fbd51
09:48:59*nsf joined #nim
09:55:10*Vladar joined #nim
10:02:04*couven92 joined #nim
10:26:05*ShalokShalom_ joined #nim
10:29:06*ShalokShalom quit (Ping timeout: 252 seconds)
10:40:08*miran quit (Ping timeout: 240 seconds)
10:46:48*vlad1777d joined #nim
11:19:16*dddddd joined #nim
11:29:26Yardanicowow
11:29:59Yardanicoeven if there's not that much comments in the compiler, I still can fix some simple errors
11:30:04Yardanicofor example this https://github.com/nim-lang/Nim/issues/5870
11:32:53YardanicoAraq, where do I put a test-case for https://github.com/nim-lang/Nim/issues/5870 ?
11:33:01Yardanicothere are many folders in "tests" :)
11:34:28Yardanicoah
11:34:29Yardanicoccgbugs
11:35:46Yardanicoor misc
11:35:55*chemist69 quit (Ping timeout: 255 seconds)
11:38:58*ShalokShalom_ is now known as ShalokShalom
11:43:09*haha_ joined #nim
11:50:00*chemist69 joined #nim
11:53:35*haha_ quit (Ping timeout: 248 seconds)
11:55:14*mahmudov joined #nim
11:59:11*PMunch joined #nim
12:27:17*yglukhov quit (Remote host closed the connection)
12:27:56*nsf quit (Quit: WeeChat 1.9)
12:29:23Yardanicohttps://github.com/nim-lang/Nim/pull/6320
12:44:42PMunchHmm, the vim syntax plugin seems to not like the 0'u16 style of int literals
12:44:51PMunchIt thinks it's the start of a string
12:49:14*gangstacat joined #nim
12:55:22FromGitter<ephja> PMunch: this plugin doesn't have the same issues I think https://github.com/baabelfish/nvim-nim
12:55:27FromGitter<ephja> other things are broken though
12:56:00PMunchHmm, that appears to be a bit better all-round though..
12:56:07PMunchWhat are the differences?
12:56:23Yardanicohttps://github.com/baabelfish/nvim-nim#caveats-will-be-fixed-asap
12:56:30Yardanicolol
12:56:30YardanicoLaunching new nimsuggest for every completion
12:57:20FromGitter<ephja> I don't even know if suggestions worked for me
12:57:51Yardanicowell yeah after you learn language and libraries you rarely need suggestions
12:58:31Yardanicoalso nim helps you to write code a bit faster with style insensitivity
12:58:44Yardanicoyou don't need to remember if some proc is camelCase or snake_case
12:59:01PMunchHmm, nvim seems to just not highlight '' strings at all...
12:59:26FromGitter<ephja> would full insensitivity be so bad?
12:59:37Yardanicowhat do you mean by full insensitivity?
12:59:48PMunchI'm guessing Class vs. class
13:00:26PMunchOr maybe While vs. while?
13:00:28FromGitter<ephja> case sensitviity is used for the first character
13:00:30PMunchThat would be interesting
13:00:41YardanicoWhile True:
13:00:49Yardanicolol, looks like visual basic??
13:00:57PMunchWh_ile T_rue: :P
13:01:02Yardanico:D
13:01:16Yardanicow_H_i_L_e t_R_u_E:
13:01:29Yardanicooh wait
13:01:31Yardanicothis works
13:01:34YardanicoLOL
13:01:42PMunchWhat?
13:01:44Yardanicothis works
13:02:01Yardanicoit's a valid "while true"
13:02:04FromGitter<ephja> it's actually "style insensitive"
13:02:26PMunchHuh, so it is :S
13:02:26Yardanicobut I doubt people would write code like this
13:02:31Yardanicoonly for obfuscating
13:02:36PMunchI thought it only applied to variable names
13:02:52Yardanicono
13:02:57Yardanicooh wait
13:03:03YardanicoI thought so
13:03:09PMunchIt works for me
13:03:39PMunchBut since the first letter is case sensitive it doesn't really have any practical purpose
13:03:43Yardanicoyeah
13:03:50PMunchI could see people wanting to do "While True:"
13:04:04FromGitter<ephja> most code relies on similar conventions. it has mostly been helpful for me when interfacing with C code
13:04:12Yardanicowell you can write "True"
13:04:17Yardanicojust "const True* = true"
13:04:29PMunchHaha, of coure
13:04:34PMunchcourse*
13:04:35Yardanicoand about while: maybe template?
13:04:36Yardanicowait a sec
13:05:08PMunchYeah a template should work "template While(block:untyped):untyped = while: block
13:05:18Yardanicoalmost
13:05:20PMunchOh wait, you'll need the statement as well :P
13:05:32Yardanicoyes
13:05:41Yardanicohttps://gist.github.com/Yardanico/706e53f9413b8260e8d3dd4b56ee7d37
13:06:00Yardanicoand combine this with "end" syntax skin :D
13:06:50*relax joined #nim
13:07:10PMunchEnd syntax skin?
13:07:15FromGitter<faustinoaq> Hi Nim community, If you know some of spanish you can listen El Maratón Linuxero live now https://www.youtube.com/maratonlinuxero/live
13:07:17Yardanicowell maybe I'm wrong
13:07:36Yardanicofaustinoaq: I don't know it sadly :)
13:07:46PMunchhttps://www.rosettacode.org/wiki/Loops/Do-while#Nim
13:07:52PMunchSome template work in action :P
13:08:18*Sembei joined #nim
13:08:22Yardanicowell someone should edit many nim solutions on rosetta :)
13:08:28Yardanicomany of them contain typeless arguments in procs
13:08:36FromGitter<faustinoaq> Yardanico, Don't worry 
13:09:02PMunchThey're talking about Nim?
13:09:21YardanicoPMunch, I guess about Linux
13:09:25Yardanico"linuxero"
13:09:40PMunchYeah, but they could have a topic of Nim at the moment
13:09:58*Pisuke quit (Ping timeout: 264 seconds)
13:10:14YardanicoPMunch, ah, there's a mention of "endX" skin
13:10:17Yardanicobut it's not implemented
13:10:19Yardanicohttps://github.com/nim-lang/Nim/blob/a94a0f27f2252e06427364665e1cbb9a6bce5af7/compiler/syntaxes.nim
13:12:00FromGitter<faustinoaq> > They're talking about Nim? ⏎ ⏎ No, Mainly C && C++ but I'll try to mention Nim in the chat
13:12:36PMunchWhat?
13:12:46PMunchI didn't even know nim had syntax skins :S
13:12:56YardanicoPMunch, well they probably will be removed
13:13:25PMunchStill though, quite interesting
13:13:36PMunchI would like a tab skin :P
13:13:46Yardanicoyou can use tabs already
13:13:48Yardanicowith filter
13:13:51Yardanicoone sec :)
13:13:52PMunchI like the idea of one tab == one level of indentation
13:14:04Yardanicohttps://gist.github.com/Yardanico/1ff3181aaf28efada551713652c5eb13
13:14:11FromGitter<abijahm> guy in generics what if i want to use a generic type without passing the type eg.. ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=59ac0023bac826f05476456f]
13:14:20PMunchThen people can decide themselves how they want their indentation to look
13:15:07PMunchWhat is this sorcerous #? syntax Yardanico
13:15:14YardanicoPMunch, filters
13:15:20Yardanicohttps://nim-lang.org/docs/filters.html
13:15:21PMunchNever seen it before :P
13:15:26Yardanicohttps://nim-lang.org/docs/filters.html#available-filters-replace-filter
13:16:05FromGitter<Yardanico> @abijahm you can't
13:16:12FromGitter<Yardanico> because Nim doesn't know if it would be Hut or Mansion
13:17:01FromGitter<Yardanico> Well nim always tries to resolve implicit generics
13:17:05FromGitter<Yardanico> but it can't do it all times
13:17:43YardanicoPMunch, also there's already "end" syntax
13:17:51Yardanicohttps://nim-lang.org/docs/filters.html#available-filters-stdtmpl-filter
13:17:59YardanicoBecause indentation-based parsing is not suited for a templating engine, control flow statements need end X delimiters.
13:18:14PMunchHuh, interesting
13:18:25PMunchOh well, I'm off for a little while. I'll be back
13:18:59FromGitter<Yardanico> @abijahm generics are fully static
13:19:24FromGitter<Yardanico> you can make User constructor
13:19:29FromGitter<Yardanico> or NoHouse type
13:20:03FromGitter<abijahm> thanks
13:20:31Yardanicowell generally you need to create a proc like "newUser"
13:20:40Yardanicoit's not mandatory
13:21:05*dddddd quit (Ping timeout: 248 seconds)
13:21:59FromGitter<Yardanico> @abijahm I'm talking about this: https://gist.github.com/Yardanico/3297222f32cbf932e675c4def451212b
13:22:07FromGitter<Yardanico> so you don't need to specify generic type by yourself
13:22:56*haha__ joined #nim
13:23:30*endragor quit (Remote host closed the connection)
13:23:57*endragor joined #nim
13:25:47*haha__ quit (Quit: haha__)
13:28:24*endragor quit (Ping timeout: 252 seconds)
13:28:54*haha_ joined #nim
13:34:27*dddddd joined #nim
13:35:29*haha_ quit (Ping timeout: 248 seconds)
13:48:28*BigEpsilon quit (Ping timeout: 240 seconds)
13:48:47*relax quit (Ping timeout: 248 seconds)
13:52:30dom96hello guys
13:52:41Yardanicodom96, hi
13:52:51Yardanicooh wait
13:52:53Yardaniconvm
13:53:30*relax joined #nim
13:54:45Yardanicodom96, ehm, why your ip is... strange?
13:55:16dom96Because I'm not identified
13:55:24*dom96 quit (Changing host)
13:55:24*dom96 joined #nim
13:55:30Yardanicoah, ok :D
13:55:30dom96Fixed :)
13:55:46dom96Also I need to move the BNC to our new server
13:55:50dom96it's still running on the old one
13:56:04couven92BNC?
13:57:19dom96look it up
13:57:32Yardanicoah
13:57:35Yardanicobouncer?
13:57:41Yardanicohttps://en.wikipedia.org/wiki/BNC_(software)
13:59:48dom96yep
14:01:25*def-pri-pub joined #nim
14:01:25*def-pri-pub quit (Changing host)
14:01:25*def-pri-pub joined #nim
14:03:03*gokr joined #nim
14:03:35*nsf joined #nim
14:03:44*ShalokShalom quit (Read error: No route to host)
14:03:52*ShalokShalom joined #nim
14:12:41Yardanicodom96, lol https://github.com/nim-lang/Nim/issues/6319#issuecomment-326807193
14:12:47YardanicoI reproduced it 0_0
14:14:09dom96Yep, it's a gotcha
14:14:11dom96replied
14:14:25*miran joined #nim
14:14:48Yardanicoah, I didn't knew about it
14:14:55Yardanicodoes .nims config have the same behaviour?
14:15:36*haha_ joined #nim
14:17:41*Vladar quit (Quit: Leaving)
14:18:21dom96probably
14:18:32dom96might be something to try
14:19:37*relax quit (Ping timeout: 260 seconds)
14:20:35*xet7 quit (Ping timeout: 240 seconds)
14:22:27*yglukhov joined #nim
14:26:38*yglukhov quit (Ping timeout: 240 seconds)
14:34:40FromGitter<abijahm> guys how would you copy values of a tuple to another
14:36:01Yardanicoyour tuples have the same type?
14:36:18Yardanicoif so, just "anothertuple = mytuple" if you've already defined anothertuple and tuple
14:38:05*haha_ quit (Ping timeout: 240 seconds)
14:41:14*BigEpsilon joined #nim
14:41:33*def-pri-pub quit (Ping timeout: 252 seconds)
14:42:27dom96I really wish VS Code would show a little spinner when it runs `nim check`
14:42:34dom96I wonder if that's something the plugin could do
14:44:52*solitudesf joined #nim
14:46:01dom96I love this: https://news.ycombinator.com/item?id=15160347
14:46:21dom96Back when C++ was starting out people called Bjarne's compiler a "pre-processor" and he didn't like it either.
14:47:35*dddddd quit (Ping timeout: 240 seconds)
14:47:41*SgtLion joined #nim
14:50:55*solitudesf quit (Quit: Leaving)
14:51:13*solitudesf joined #nim
14:55:51FromGitter<ephja> Yardanico: correct
14:56:31FromGitter<ephja> a distinct type can be introduced with the 'distinct' keyword, but I dunno if it makes any sense for tuples
14:56:57dom96https://github.com/nim-lang/Nim/issues/2819#issuecomment-326809808
15:03:53*dddddd joined #nim
15:05:17*yglukhov joined #nim
15:08:46*rauss joined #nim
15:14:30*yglukhov quit (Remote host closed the connection)
15:18:59*nsf quit (Quit: WeeChat 1.9)
15:23:46*loc8_ joined #nim
15:23:58*solitudesf quit (Remote host closed the connection)
15:26:25*loc8 quit (Ping timeout: 248 seconds)
15:26:55*Calinou quit (Ping timeout: 248 seconds)
15:32:19*Calinou joined #nim
15:35:29*Arrrr quit (Ping timeout: 248 seconds)
15:39:17FromGitter<BigEpsilon> @Araq, can I ask you a question ?
15:39:18*Calinou quit (Ping timeout: 252 seconds)
15:39:20*haha_ joined #nim
15:39:40FromGitter<BigEpsilon> I'm working on the reorder pragma
15:40:06*Calinou joined #nim
15:40:45FromGitter<BigEpsilon> I'm using a very simple approach to solve the problem of typeSections, VarSections ...
15:41:49FromGitter<BigEpsilon> It works find but I want to known from you if my approach is good before doing the PR ( And check another thing)
15:42:57*dddddd quit (Ping timeout: 248 seconds)
15:43:58*xet7 joined #nim
15:44:20FromGitter<BigEpsilon> with that I'm able to compile that https://gist.github.com/ad73ebfacf130b3a8b86145bc70e83af
15:49:12Yardanicowell I don't really think this is a good feature. I don't know the language where compiler automatically changes places where variables are declared
15:49:41YardanicoIMO
15:50:31Yardanicoit would be harder to read code that uses stuff like that
15:51:13FromGitter<BigEpsilon> In alot of languages, the order of declaration (at the top level, not in functions) does not count.
15:51:46FromGitter<BigEpsilon> It make it easier to organize the code.
15:52:16YardanicoI don't really know languages, can you please name a few?
15:52:30YardanicoI'm fine with reordering "type" sections
15:52:52FromGitter<BigEpsilon> like putting the little utility functions at the and of the file, and the main "important" functions at the top
15:53:23Yardanicowell reorder pragma does that already AFAIK
15:53:27FromGitter<BigEpsilon> Golang is like that
15:53:47FromGitter<BigEpsilon> Yes, but reorder pragma is not complete
15:53:56loc8_Yardanico, no, I mean that if I try to read more data than there is on the socket buffer, it hangs
15:54:01FromGitter<BigEpsilon> And I'm working on completing it
15:54:10loc8_In Python, for example, it would return the data that it could get
15:55:08Yardanicowell I don't really know
15:56:08*dddddd joined #nim
15:57:26dom96Yardanico: Most languages do this
15:58:02dom96BigEpsilon: did you see how the noForward pragma works?
15:58:56FromGitter<BigEpsilon> No I did not
15:59:01FromGitter<BigEpsilon> should I ?
15:59:08*loc8 joined #nim
15:59:13dom96You're working on the same thing so it might be a good idea
15:59:58FromGitter<BigEpsilon> Its different than the reorder pragma ?
16:01:27FromGitter<mratsim> Is there a nim branch with VTable, vtref, vtptr?
16:02:05*loc8_ quit (Ping timeout: 240 seconds)
16:02:11*PMunch quit (Quit: leaving)
16:02:32Yardanicomratsim: IIRC there's a possibility to use "vtref" and "vtptr" with concepts
16:02:35Yardanicohttps://nim-lang.org/docs/manual.html#generics-vtable-types
16:02:42Yardanicomaybe this is not that you're talking about
16:02:52YardanicoAny concept type can be turned into a VTable type by using the vtref or the vtptr compiler magics.
16:02:56FromGitter<mratsim> yes it is but afaik it’s not implemented yet
16:03:16Yardanicoah, yes
16:04:40*endragor joined #nim
16:08:59*endragor quit (Ping timeout: 255 seconds)
16:18:31*def-pri-pub joined #nim
16:23:51*nsf joined #nim
16:29:18FromGitter<ephja> I wonder which bleeding edge Linux distro I should use this time. Arch again perhaps
16:29:52FromGitter<k0pernicus> Arch is my favorite one ;-)
16:38:46FromGitter<mratsim> Arch is awesome. I’ve been using it for 8+ years
16:40:23FromGitter<mratsim> I used Gentoo as well in the past but compiling world on a core 2 duo laptop got tiresome (especially web browsers, gcc and java apps)
16:40:46*Snircle quit (Ping timeout: 246 seconds)
16:43:07dom96Anyone want to add Nim here? https://github.com/tbrand/which_is_the_fastest :)
16:44:45*dddddd quit (Ping timeout: 252 seconds)
16:45:39Yardanicowell jester?
16:46:16dom96asynchttpserver
16:46:26Yardanicodom96, ehm
16:46:27dom96ideally
16:46:30YardanicoMeasuring response times for each framework (middleware). Each framework has to have two features; routing and parsing path parameters.
16:46:59dom96jester then I guess
16:47:32Yardanicoand we can't set number of threads
16:47:45YardanicoI mean there's no multi-threaded web server for nim :)
16:48:19dom96Crystal is single threaded too
16:48:35Yardanicoalso python's japronto is fastest here
16:48:39Yardanicowhy? because it's implemented in C
16:48:44Yardanicousing picohttpparser
16:48:59Yardanicoand also it's "cheating"
16:49:01dom96you can use a trick to scale to multiple cores: SO_REUSE_PORT + launch multiple processes.
16:49:16Yardanicojapronto is fast because of http pipelining
16:49:22Yardanicowhich isn't supported in browsers :)
16:49:34federico3mixing together both single and multithreaded ones is misleading
16:49:58dom96lol, these benchmarks are bullshit anyway
16:50:19ipjkaren't most benchmarks?
16:50:45dom96true that
16:51:45Yardanicowell it actually seems we can use asynchttpserver here
16:51:47federico3some are successfully used to optimize stuff, so no
16:52:05ipjktherby the use "most"
16:53:26*Trustable joined #nim
16:57:42*dddddd joined #nim
16:58:12loc8Is there a way to check if stdin has data? Like `!feof(stdin)`?
17:00:50*Calinou quit (Ping timeout: 240 seconds)
17:00:51Yardanicoloc8, how does it work?
17:01:08loc8How does what work?
17:01:11Yardanicoloc8, !feof
17:01:25dom96loc8: for what purpose do you want to check this?
17:01:33FromGitter<krux02> loc8: you can call C functions
17:01:44FromGitter<krux02> so there is a way to check that
17:02:06Yardanicomaybe in Nim there's a way too?
17:02:16FromGitter<krux02> there should
17:02:33loc8`feof` returns non-zero when the EOF indicator associated with the stream is set, otherwise, it returns zero
17:02:59dom96that's not checking if stdin has data, it's checking whether EOF has been reached
17:03:02dom96Which is slightly different
17:03:09loc8I have a socket IO loop where I read from the socket and want to send data from the stdin
17:03:10FromGitter<krux02> https://nim-lang.org/docs/system.html#endOfFile,File
17:03:14loc8I could use select in C
17:03:24loc8But that wouldn't work with Windows iirc
17:03:36dom96You want to be asynchronous right?
17:03:52loc8That'd be good
17:03:57Yardanicoloc8, krux02 gave you a link
17:03:57dom96Use the same approach that I've used in my chat app: https://github.com/dom96/nim-in-action-code/blob/master/Chapter3/ChatApp/src/client.nim
17:04:08dom96If I had a dollar for the amount of times I suggested this now...
17:04:20loc8krux02, I took a look at that. Didn't quite work
17:04:32FromGitter<krux02> well it should
17:05:11*Calinou joined #nim
17:11:05*Calinou quit (Ping timeout: 240 seconds)
17:12:39*Calinou joined #nim
17:19:49def-pri-pubzacharycarter: Not sure if you're here right now, but I
17:20:05def-pri-pubif you could review those things I posted yesterday that'd help unblock me a little.
17:20:07*def-pri-pub quit (Quit: leaving)
17:23:38FromGitter<abijahm> can one return from templates
17:23:57Yardanicono
17:24:00Yardanicothey're "templates"
17:24:16Yardanicoeverything you write in templates would be directly inserted in a place where you called your template
17:24:28Yardanicowell not always
17:24:36Yardanicothey have some additional features too
17:25:38Yardanicoabijahm, what do you want to do?
17:27:53Yardanicoah
17:28:05Yardanicoif you want to put "return" inside of template to call this template in a proc - you can do that
17:28:15Yardanicoso "return" would be directly inserted in your proc body
17:28:51FromGitter<abijahm> i want to create add values to a tuple ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=59ac3bd3bac826f054772342]
17:29:24FromGitter<abijahm> i want to get the newuser
17:30:09FromGitter<Yardanico> well you can add another argument "retVar" to your template
17:30:14FromGitter<Yardanico> and then use template like that
17:30:37FromGitter<Yardanico> ```add(user, val, newuser) ⏎ # you can do something with newuser``` [https://gitter.im/nim-lang/Nim?at=59ac3c3d66c1c7c4770f28fc]
17:30:54FromGitter<Yardanico> well I can't explain it
17:31:06FromGitter<Yardanico> I don't understand what's your goal
17:31:13*loc8_ joined #nim
17:31:48dom96Nimble 0.8.8 is here https://github.com/nim-lang/nimble/blob/master/changelog.markdown#088---03092017 :)
17:32:06FromGitter<k0pernicus> Youhou! :-)
17:33:35*loc8 quit (Ping timeout: 255 seconds)
17:34:19FromGitter<ephja> @Yardanico I think he wants to define a tuple type with additional fields
17:34:33FromGitter<ephja> @abijahm I think you need to use a macro
17:34:48FromGitter<abijahm> @ephja yah that what i want to do
17:37:28*haha_ quit (Ping timeout: 240 seconds)
17:37:52*_Moz_ joined #nim
17:40:56*_Moz_ quit (Remote host closed the connection)
17:44:04Yardanicowow
17:44:09Yardanico"using" is actually a cool thing
17:44:27YardanicoI want to ask this scary question - when "using" will be "normal", e.g. not experimental?
17:45:34cremGibt es eine Art von "tuple assigment"? Etwa "let (id, desc) = line.split(maxsplit=1)" ?
17:45:44Yardanicocrem, yes, you can use it like that
17:45:55Yardanicobut I don't understand what you've written :)
17:46:11YardanicoI only understood "tuple assigment" and code snippet
17:46:50FromGitter<ephja> @abijahm The simplest way to add fields would be to use inheritance (with or without references)
17:46:50cremНо оно так не компилится. Говорит 'tuple' expected.
17:47:16FromGitter<ephja> this might help you write a macro that takes a tuple https://hookrace.net/blog/introduction-to-metaprogramming-in-nim/#macros
17:47:18Yardanicocrem, it wouldn't compile, yes
17:47:22Yardanicobecause line.split returns a sequence
17:47:24Yardaniconot a tuple
17:47:45Yardanicoeven if you've specified "maxsplit"
17:48:15cremSo, is there a way to convert a sequence to a tuple? It isn't possible to write it shorter than in 3 lines, is it?
17:48:33Yardanicocrem, I have an "unpack" macro
17:49:13Yardanicocrem, https://gist.github.com/Yardanico/3ed3f8d8b6ccd070afd67e8bd26f2914
17:49:16Yardanicosimple macro
17:49:26Yardanicoso yeah, it's more than 3 lines but you can reuse it
17:49:29dom96The length of a sequence is only known at run-time
17:49:38dom96Whereas the structure of a tuple must be known at compile-time
17:49:49Yardanicodom96, well I actually think that it's possible to make line.split generic
17:49:58Yardanicobut this would break older code
17:50:05YardanicoI mean it can return either seq or tuple
17:50:07cremWell, I'm fine with compile-time check and crash on size mismatch.
17:50:19Yardanico(tuple if maxsplit is specified)
17:50:40cremWould tuple to seq assigment work?
17:50:57Yardanicocrem, AFAIK no
17:51:20FromGitter<k0pernicus> @dom96 Simple question on choosenim, is the tool detects if this is the first installation of nim, or not? For example, trying to call the compiler once, or to detect if a nim compiler is « available », something like that… ?
17:51:31Yardanicoit doesn't detect it I think
17:51:41dom96it doesn't
17:52:47Yardanicowell I don't use choosenim because choosenim clones nim repo on every devel update, and also sometimes (rarely, but still) I need to hack the compiler
17:53:47FromGitter<k0pernicus> Ok - no problem if I implement a procedure which detect if this is the first installation? In order to let choosenim manages itself the switch.
17:54:13dom96k0pernicus: please don't complicate things
17:54:13Yardanicocontributions are welcome in all projects :)
17:54:15dom96a flag is fine
17:54:39*haha_ joined #nim
17:54:43FromGitter<k0pernicus> Ok - so the flag will be managed by the installation script later, for example?
17:55:14dom96yep
18:01:52cremIs there a canonical way to reduce bolierplate in "simple assignment" type of "constructor function". I.e. is that a canonical way to write a newObj function: https://pastebin.com/tv0QfcM4 ?
18:02:29cremAh, I could do just {} initialization..
18:02:31cremBut
18:02:39cremI also need new().
18:02:45Yardanicoyou don't
18:02:50*Senketsu joined #nim
18:03:00*Senketsu quit (Remote host closed the connection)
18:03:10Yardanicocrem, you don't need it
18:03:37Yardanicojust WhateverObj(someId: someId, someIntField: someIntField, someTextField: someTextField) would do the job :)
18:04:19cremOk, let me remember. A month ago I read all available nim documentation, and now I don't remember anything. I should have written some code..
18:05:22Yardanicocrem, well yeah, even if you read documentation you still need to write nim code
18:05:29Yardanicoto actually understand how things work :)
18:06:42Yardanicocrem, also (just a note) it's slightly better to use gist for code snippets - 1) it's integrated with gitter 2) it doesn't have ads
18:07:01Yardanicoand Nim on gist is Nim
18:07:10Yardanicowhile pastebin still shows old nim name
18:07:12Yardanico(nimrod)
18:07:59*miran quit (Remote host closed the connection)
18:08:32cremOk, will try it, thanks. Is there a way to dump an object (all fields of it, for debug reasons) without implementing custom $ overload?
18:08:45Yardanicocrem, echo it
18:08:53Yardanicoif it's a "ref" object, use this: echo object[]
18:09:11Yardanico[] gives you object itself from reference
18:09:18FromGitter<k0pernicus> @dom96 And how do you try a new version? Some troubles with nimblepkg...
18:09:28cremIndeed, with [] it works! thanks.
18:09:50Yardanicocrem, well there's automatic dereference it experimental features
18:09:54dom96k0pernicus: Are you trying to compile choosenim?
18:10:17FromGitter<k0pernicus> Yep, compile and run
18:10:56dom96what error are you getting?
18:11:27FromGitter<k0pernicus> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=59ac45cfbc46472974f10ae0]
18:12:27dom96nimble c -r choosenim
18:13:09FromGitter<k0pernicus> Oh ok, I see
18:13:11FromGitter<k0pernicus> Sorry for that
18:13:26cremThere's no way to access last element of a seq with something like [^-1], is there? ^ is for slices only, right?, x[len(x)-1] is the shortest one to do that?
18:13:42Yardanicocrem, seq[^1]
18:13:55Yardanicoit seems you really didn't use nim for a long time :)
18:14:06Yardanicoit's fine though
18:15:10cremIndeed! Thanks. Well, I've read all the docs, wrote 100 lines, and then it seemed all clear. And now 1-2 months later I only have vague memory of features and completely forgot the syntax.
18:15:37FromGitter<abijahm> @ephja thank you inheritance is what i needed
18:16:46FromGitter<k0pernicus> @dom96 Got an error compiling the project
18:16:55FromGitter<k0pernicus> ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=59ac4717ba0f0f6e38120b8a]
18:17:27FromGitter<k0pernicus> And if I try again, the command does not work: ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=59ac4737b16f264642000b27]
18:19:40FromGitter<k0pernicus> Indeed, not `$HOME/.nimble/pkgs/lib/system.nim` in my filesystem…
18:26:47*BigEpsilon quit (Ping timeout: 246 seconds)
18:34:26*BigEpsilon joined #nim
18:43:09dom96"428 messages have been suppressed"
18:43:19*Jesin joined #nim
18:43:20dom96wow, never seen that many suppressed
18:43:57FromGitter<Yardanico> debug build?
18:44:36dom96But anyway... https://github.com/nim-lang/nimble#troubleshooting
18:47:20*qubbler joined #nim
18:48:19qubblerI read on the nim site that it's garbage collected yet it's a systems lang that's very performant. Is the user mostly in control of memory? Where can I read more on how it works with nim?
18:50:13Yardanicoqubbler, you can read something here https://nim-lang.org/docs/gc.html
18:50:36Yardanicoqubbler, well by default GC pretty much does all memory handling
18:50:42*yglukhov joined #nim
18:50:44thomasrossi can't find this mentioned anywhere - what is the value of x if i write `var x: int`? is it null/undefined/?? or what?
18:50:46Yardanicobut surely you can use raw pointers and manual memory
18:50:53thomasrossis it like that for all types?
18:50:53Yardanicothomasross, value types all have default value
18:50:56Yardanicofor int it's 0
18:51:02thomasrossYardanico: where can I find the list?
18:51:02Yardanicofloat is 0.0
18:51:09Yardanicothomasross, list of what?
18:51:15*BigEpsilon quit (Ping timeout: 252 seconds)
18:51:15thomasrossdefault values
18:51:22Yardanicothomasross, well I don't really know
18:51:25Yardanicobut they're really default
18:51:34thomasrossso i'd assume that bool is false?
18:51:36Yardanicoyes
18:51:40thomasrossok
18:51:44thomasrossthanks
18:51:47Yardanicoand ref types don't have default values
18:51:51Yardanicobecause they're references
18:51:55dom96thomasross: you know you can test this easily...
18:51:55thomasrossyeah
18:52:04thomasrossdom96: true
18:52:18thomasrossi do think it'd be helpful to write that in the tutorial though
18:52:39*yglukhov quit (Remote host closed the connection)
18:52:51Yardanicothomasross, it's in manual
18:52:55Yardanicohttps://nim-lang.org/docs/manual.html#statements-and-expressions-var-statement
18:53:00thomasrossoh cool thanks
18:53:03thomasrossforgot to check there
18:53:18YardanicoThe default value depends on the type and is always a zero in binary.
18:53:23Yardanicoso basically in binary it's always 0 :)
18:54:03thomasrosscool
18:54:03cremNim documentation is really good. I think it would be nice to have a links to other parts of documentation (index/stdlib/language manual) at the top of every page, or at least a list to a root documentation page. I find that I frequently need to switch between those pages, and there's no way to go from particular page to other pages other than editing URL. Top bar (Blog/Features/Install/Documentation/...) also
18:54:05cremdisappeares on deeper doc pages.
18:54:16Yardanicocrem, search?
18:54:36Yardanicocrem, and yeah, it disappears because documentation is generated separately
18:54:42Yardanicoby "nim doc2"
18:56:08cremSearch is only good when you know what to search. For things like "how to address last element of seq" you actually have to go to a "language manual" and there's no way to go there from for example "nim standard library" page.
18:56:57cremAnyway, I'm not sure what the problem is, it's just that I found myself editing url too often, which suggests that some important link is missing in content.
18:57:24dom96nothing wrong with editing the URL
18:57:29dom96I do it all the time
18:57:40Yardanicowell manual and stdlib documentation are different things
18:57:45Yardanicomanual is a real manual
18:57:52Yardanicowhich contains language specification
18:57:53*francisl joined #nim
18:58:04cremUsually there is a magic way to go to the root of docs. THat would be https://nim-lang.org/docs/ in this case.
18:58:21Yardanicocrem, well this would require to patch auto-generated doc html
18:59:43Yardanicomanual describes the language itself and its' features
19:02:27cremHow can I create an empty object? var x: MyRefObj = new(MyRefObj) # is there anything without typing MyRefObj twice?
19:02:43Yardanicocrem, you don't need to specify object type :)
19:02:48*xet7 quit (Ping timeout: 240 seconds)
19:02:48Yardanicovar x = new(MyRefObj)
19:02:54Yardanicomaybe you really need to re-read manual?
19:03:07Yardanicoand btw
19:03:13cremAnd I don't seem to need new either.. var x = MyRefObj().
19:03:15Yardanicoyou should use new only for ref object
19:03:16Yardanicoyes
19:03:24Yardanico"new" is used for ref types
19:03:38cremByt type MyRefObj = ref object <- ref type
19:03:54Yardanicocrem, well you use "new" in a procedure which returns ref type
19:03:58Yardanicolike new(result)
19:04:05Yardanicocrem, MyRefObj() is a constructor
19:04:07Yardanicoit does that automatically
19:04:10*xet7 joined #nim
19:04:40cremI thought nim doesn't have constructors. At least that's a great fame of nim, that it misses constructors.
19:04:58cremAnyway, I surely spent more than a week reading nim docs, don't want to do that again. :)
19:05:03Yardanicocrem, well they're "object constructors"
19:05:11Yardanicoso you can't overload object constructor
19:05:23Yardanicoinstead you create a newObj or initObj procedure
19:06:13Yardanicocrem, about docs: even rust have stdlib and manual separately
19:06:19cremBy the way, does initObj usually return object (seems unlikely), or accepts it as a first paramemter?
19:06:49cremI don't say they should not be separate! I just say there's nice to have a way to get from one to another. :)
19:07:09dom96return
19:07:20YardanicoI can't find it here https://doc.rust-lang.org/nomicon/README.html :)
19:07:29cremreturns?.. And magically avoids copying them? that's nice.
19:07:32Yardanicoah
19:07:34Yardanicowrong link
19:07:44Yardanicocrem, what do you mean by copying?
19:07:48Yardanicoyou use
19:07:58Yardanicovar myobj = initMyObj(arguments, for, the, proc)
19:08:13Yardanicocrem, https://doc.rust-lang.org/book/first-edition/
19:08:42YardanicoI can't find a way to get to the stdlib docs here :)
19:09:01cremIn C++ if you would return object from a fuction, it would create and copy it! (there's RVO I know, but it's just optimization).
19:09:26Yardanicocrem, I don't know about that
19:09:38Yardanicoask Araq maybe :)
19:09:51cremOk, maybe the problem was that I don't know whether I should go to stdlib or manual for a particular question. :)
19:09:59Yardanicocrem, as I said
19:10:03Yardanicomanual contains info about the language
19:10:09Yardanicoe.g. syntax
19:10:14cremLike seq and string are core features, and Table is stdlib.
19:10:31Yardanicowell
19:10:35Yardanico"system.nim" is stdlib too
19:10:46Yardanicobut I don't think it's good to make manual even bigger
19:11:10cremAnd also it took ~3 minutes of search to come up with "Table". "map", "dictionary" and "associative array" found nothing for me. :)
19:11:30cremAnyway, instead of complaining (and I didn't intend to!), I'll try to write some more code.
19:11:50Yardanicocrem, you can also use google
19:11:57Yardanico"nimlang dict" - first link is https://github.com/nim-lang/Nim/wiki/Nim-for-Python-Programmers
19:12:00ipjkIn the stdlib manual, it has a pharagraph just for collections
19:12:03Yardanicoand there's https://github.com/nim-lang/Nim/wiki/Nim-for-Python-Programmers#dictionaries
19:12:14cremok, ok :)
19:15:16Yardanicoas I said - a lof of languages don't merge "manual" and "stdlib" too
19:17:08Yardanicobecause mostly you don't need to always go for manual
19:17:24Yardanicoyou can read it once or twice, and you'll understand the language :)
19:23:31*MyMind joined #nim
19:23:35cremI have an object, some of fields of which are refs. What's the easiest way to have them created when I create an object? newObj function explicitly calling new(result.myreffield) for all such fields?
19:24:19Yardanicocrem, result.myfield = @[]
19:24:22Yardanicofor sequence for example :)
19:24:28Yardanicofor string: result.myfield = ""
19:24:38cremno, it's not sequence, it's my ref object.
19:25:08Yardanicocrem, then you can use object construction :)
19:25:08*Sembei quit (Ping timeout: 240 seconds)
19:25:15Yardanicoresult.myfield = MyObject()
19:25:32*Pisuke joined #nim
19:25:50cremBut I need newObj() function anyway, right? There's no way to provide some kind of default value on type definition, is there?
19:26:11Yardanicoyes, you should use newObj procedure
19:26:13cremHm, then they would share the same object anyway, and that's not what I want..
19:26:56Yardanicocrem, can you explain more precisely?
19:26:59Yardanicoor give a code snippet?
19:27:31cremnope, with newObj it's clear.;
19:27:33*haha_ quit (Quit: haha_)
19:27:45Yardanicoit's idiomatic to use newObj and initObj
19:28:08*MyMind quit (Ping timeout: 240 seconds)
19:28:58cremBut when object has ref fields, more often than not you want to create all of them, so it feels like some syntax sugar for that would be benefitial.
19:29:34Yardanicocrem, don't create them then?
19:29:47Yardanicoyou're not forced to initialise all object fields
19:31:22cremYes, but with ref fields I feel forced. :)
19:31:44*yglukhov joined #nim
19:31:46*askatasu1 joined #nim
19:31:58Yardanicocrem, well nim will have default values for strings and seqs
19:32:05*askatasu1 quit (Client Quit)
19:32:37cremCan we squeeze the same change for other ref objects by any chance? :)
19:32:47Yardanicocrem, I'm afraid not
19:32:54Yardanicocompiler shouldn't be too complicated
19:34:00Yardanicocrem, and you can always ask Araq and he'll explain why there's no some feature in nim
19:34:32Yardanicoor ask on forum
19:37:38cremwhy is result.myRefField = MyObj() better than just new(result.myRefFIeld)? Seems to be more typing.
19:38:39Yardanicocrem, who said it's better?
19:39:15cremYardanico | result.myfield = MyObject()
19:39:33Yardanicocrem, I didn't said that it's better
19:39:56Yardanicoand you said that new doesn't good for you
19:40:04*yglukhov quit (Remote host closed the connection)
19:40:11Yardanico*isn't good
19:40:31Yardanicoif you want to have bigger questions and answers - ask all your question on the forum, it's a common thing
19:40:57cremI said that I just didn't want to explicitly initialize fields to default (but non nil) values.
19:41:32cremNo, I don't feel I'm ready to ask. I've written 25 lines today and asked gazillion of stupid questions. :)
19:41:56Yardanicowell you can always ask questions like "why ref objects require explicit initialisation?"
19:51:56*gangstacat quit (Quit: Leaving)
20:03:22Yardanicoguys
20:03:22Yardanicohttps://github.com/alehander42/roswell
20:04:18dom96cool
20:04:46YardanicoI'm checking for new Nim repos almost everyday :)
20:04:51Yardanicoe.g. like "language:Nim created:2017-09-03"
20:05:22dom96i do that too sometimes
20:05:29dom96But I never checked that way
20:05:40dom96I always look for recently updated
20:05:45dom96with >=0 stargazers
20:05:56dom96Sadly Github sometimes fails to give all search results for that
20:06:06Yardanicoyeah
20:10:37*Yardanico quit (Remote host closed the connection)
20:19:21dom96this is a very good way of finding Nim projects
20:19:42dom96Another project idea for you: create a Twitter that tweets out new Nim projects :)
20:20:25dom96I love how many repos there are containing the examples in my book :)
20:28:52federico3I would subscribe to an RSS feed for that
20:30:58dom96huh, I wonder if Twitter feeds support RSS
20:31:04federico3dom96: http://github-trends.ryotarai.info/ - this shows trendy ones rather than new ones
20:35:43*relax joined #nim
20:37:16FromGitter<Bennyelg> Hello
20:39:18FromGitter<Bennyelg> Create something like that in Nim: ⏎ https://gist.github.com/AlexeySoshin/89b53d9bfd6a70014a00774af8632f55#file-concurrency-in-go-concurrent-map-writes
20:44:15FromGitter<Yardanico> Use channels and threads ? :)
20:47:06*SgtLion is now known as SgtSleep
20:47:33FromGitter<Bennyelg> Heheh, I am trying :|
20:47:50FromGitter<ephja>
20:47:59*PMunch joined #nim
20:50:09*SgtSleep quit (Quit: Quit: I'm not sure I purposefully hit the quit button.)
20:51:54*qubbler left #nim (#nim)
20:53:38*Sentreen quit (Ping timeout: 240 seconds)
21:03:22*Trustable quit (Remote host closed the connection)
21:06:44*Sentreen joined #nim
21:13:03*thomasross quit (Remote host closed the connection)
21:13:30*thomasross joined #nim
21:14:10*gokr quit (Ping timeout: 264 seconds)
21:14:28FromGitter<Bennyelg> random float ?
21:15:53FromGitter<ephja> yeah sure I'll have 3
21:16:18FromGitter<ephja> @Bennyelg https://nim-lang.org/docs/random.html#random,float
21:17:49*claudiuinberlin quit (Quit: Textual IRC Client: www.textualapp.com)
21:18:29FromGitter<Bennyelg> I saw that but There is nothing like: rand.randFloat() which generate anything between 0.0 to 1.0
21:18:41FromGitter<Bennyelg> I do not want to pass list into random([0.0, 1.0])
21:22:44FromGitter<ephja> is `random(max=1.0)` different
21:25:09FromGitter<Bennyelg> is not GC-safe as it accesses 'm' which is a globa ⏎ l using GC'ed memory
21:25:17FromGitter<Bennyelg> function is not GC-safe as it accesses 'm' which is a globa ⏎ l using GC'ed memory .. :/
21:25:21FromGitter<ephja> there's also this library https://github.com/oprypin/nim-random
21:25:29FromGitter<ephja> I see
21:26:58FromGitter<Bennyelg> I need probably something like guard: lock ?
21:29:33FromGitter<Bennyelg> https://github.com/nim-lang/Nim/commit/bdf6f59c6d4864d6436f6c517ebab5572d2b937a
21:37:26*PMunch quit (Quit: leaving)
21:38:20FromGitter<Bennyelg> I tried but Without success. ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=59ac764cee5c9a4c5f2ce5cc]
21:40:37*loc8_ quit (Ping timeout: 260 seconds)
21:44:15FromGitter<Bennyelg> Wait till all is done, but still get much less then expected. ⏎ ⏎ ```code paste, see link``` [https://gitter.im/nim-lang/Nim?at=59ac77af162adb6d2e63cb7f]
21:45:08*loc8 joined #nim
21:46:01*vlad1777d quit (Remote host closed the connection)
21:50:25*nsf quit (Quit: WeeChat 1.9)
21:53:51*relax quit (Ping timeout: 252 seconds)
22:00:57*vlad1777d joined #nim
22:01:53*Kingsquee joined #nim
22:22:02*loc8_ joined #nim
22:22:21*loc8 quit (Ping timeout: 240 seconds)
22:25:02*endragor joined #nim
22:25:16thomasrosshmm... when I use mpairs to iterate over a seq I don't get any exception when modifying the seq at the same time but when I use mitems I get an exception. is this a bug or am I doing something wrong?
22:29:36*endragor quit (Ping timeout: 252 seconds)
22:37:53*cspar_ quit (Ping timeout: 248 seconds)
22:42:23*relax joined #nim
22:47:01FromGitter<adamrezich> is there a way to pass static variables to procs as generic params, like in C++?
22:47:43FromGitter<adamrezich> (or something equivalent that allows for the same functionality)
22:50:06dom96static[T] perhaps?
22:50:22FromGitter<adamrezich> sorry, I said procs, I meant types
22:50:45dom96yeah, same answer
22:51:31FromGitter<adamrezich> ah, awesome
22:51:35*relax quit (Ping timeout: 240 seconds)
22:51:52FromGitter<adamrezich> > ote: static[T] is still in development. ⏎ are there any bugs I need to watch out for or anything like that?
22:53:57dom96https://github.com/nim-lang/Nim/labels/Static%5BT%5D
22:54:07dom96:)
23:04:24*def-pri-pub joined #nim
23:04:40*def-pri-pub quit (Changing host)
23:04:40*def-pri-pub joined #nim
23:22:07*ShalokShalom quit (Ping timeout: 260 seconds)
23:31:49*gangstacat joined #nim
23:50:23*loc8 joined #nim
23:53:12*loc8_ quit (Ping timeout: 252 seconds)