<< 25-05-2016 >>

00:01:45*yglukhov joined #nim
00:06:08*yglukhov quit (Ping timeout: 244 seconds)
00:08:16*Demon_Fox quit (Quit: Leaving)
00:16:23libmanIs anyone working on improving https://github.com/TechEmpower/FrameworkBenchmarks/tree/master/frameworks/Nim for the next round?
00:23:59*PMunch quit (Quit: leaving)
00:24:15*PMunch joined #nim
00:27:15Araq_libman: not really, but I can try
00:28:14libmanI think this should be priority #1, and then the #1 marketing focus for recruiting Python programmers.
00:30:17libmanIt doesn't even have to be a framework. Maybe some special C / asm optimizations for server concurrency in generated code?
00:36:55Araq_yeah I know that you think that, but I couldn't care less about this benchmark
00:37:09*PMunch quit (Quit: leaving)
00:38:13*yglukhov joined #nim
00:39:56*gagagugu joined #nim
00:41:49*tautologico joined #nim
00:42:40*yglukhov quit (Ping timeout: 244 seconds)
00:48:33zodiak_tbh, and jst my 2c for what it's worth, benchmarks are great and all, but, having a v1.0 is +way+ more notable ;)
00:48:56zodiak_even if 0.14 gets called 1.0 .. it will bring in lots of peeps
00:49:13zodiak_(not sure what needs fixed or done before that mind you)
00:53:09*libman quit (Remote host closed the connection)
00:54:07*dhk quit (Ping timeout: 252 seconds)
01:14:31*yglukhov joined #nim
01:19:04*yglukhov quit (Ping timeout: 264 seconds)
01:20:31*dhk joined #nim
01:38:30*yglukhov joined #nim
01:42:33*yglukhov quit (Ping timeout: 240 seconds)
02:15:01*yglukhov joined #nim
02:19:22*yglukhov quit (Ping timeout: 252 seconds)
02:19:29*sora quit (Remote host closed the connection)
02:39:17*yglukhov joined #nim
02:43:44*yglukhov quit (Ping timeout: 272 seconds)
02:46:50*space-wizard joined #nim
02:51:22*|2701 quit (Quit: Connection closed for inactivity)
02:55:14*space-wizard quit (Quit: My Mac has gone to sleep. ZZZzzz…)
03:08:43*fastrom joined #nim
03:15:26*yglukhov joined #nim
03:19:54*yglukhov quit (Ping timeout: 260 seconds)
03:30:07*fastrom quit (Quit: Leaving.)
03:39:21*dhk quit (Ping timeout: 240 seconds)
03:51:29*yglukhov joined #nim
03:55:19*fastrom joined #nim
03:55:41*yglukhov quit (Ping timeout: 240 seconds)
04:15:06*bjz_ joined #nim
04:15:53*yglukhov joined #nim
04:16:29*bjz quit (Ping timeout: 260 seconds)
04:19:52*space-wizard joined #nim
04:20:12*yglukhov quit (Ping timeout: 246 seconds)
04:21:15*dhk joined #nim
04:23:48*space-wizard quit (Read error: Connection reset by peer)
04:25:55*dhk quit (Ping timeout: 260 seconds)
04:26:05*space-wizard joined #nim
04:38:04*zacts quit (Ping timeout: 260 seconds)
04:51:56*yglukhov joined #nim
04:53:19*zacts joined #nim
04:56:09*yglukhov quit (Ping timeout: 250 seconds)
04:58:14*bjz joined #nim
04:59:52*bjz_ quit (Ping timeout: 264 seconds)
05:16:32*yglukhov joined #nim
05:21:36*yglukhov quit (Ping timeout: 276 seconds)
05:40:27*yglukhov joined #nim
05:44:35*yglukhov quit (Ping timeout: 244 seconds)
05:57:30*gagagugu quit (Ping timeout: 260 seconds)
06:14:00*gagagugu joined #nim
06:24:32*space-wizard quit (Quit: My Mac has gone to sleep. ZZZzzz…)
06:44:36*filcuc joined #nim
06:55:51*yglukhov joined #nim
07:40:37*bjz_ joined #nim
07:42:23*bjz quit (Ping timeout: 258 seconds)
07:54:54*Arrrr joined #nim
07:54:54*Arrrr quit (Changing host)
07:54:55*Arrrr joined #nim
08:12:39*zodiak joined #nim
08:15:03*zodiak_ quit (Ping timeout: 240 seconds)
08:16:22*Trustable joined #nim
08:18:08*zacts quit (Ping timeout: 272 seconds)
08:32:34*_stowa quit (Ping timeout: 260 seconds)
08:40:05*zacts joined #nim
09:04:36*regtools joined #nim
09:13:22*Pisuke joined #nim
09:24:06veganskAraq_, hi. Can you help me with https://github.com/nim-lang/Nim/issues/4214? Is it enough to check in ``semasgn.nim:newAsgnCall`` if the assigned value's type has destructor and call it?
09:27:57Araq_how would that help?
09:28:25Araq_by that logic you could move the destructor logic into your assignment operator
09:28:41Araq_which effectively turns it into a move.
09:30:06veganskI don't need move semantic in assigment operator.
09:30:48*Parashurama joined #nim
09:32:04Araq_yet that is the patch you propose
09:33:53*Parashurama left #nim (#nim)
09:34:08veganskOk, what if I need to create another copy ``var y = x`` and use them independently?
09:36:03*Parashurama joined #nim
09:40:30veganskThe problem is that I can't create smart pointer with the reference count for example when I use the constructor like this: ``proc initData(s: string): Data``. And I must use workaround: ``proc initData(d: var Data, s: string)``
09:41:14veganskI wrote about the same problem in stdlib, see my comment about SharedString in the issue
09:42:00Araq_here is what you need to do: write a spec of how it should work.
09:43:02Araq_it's tricky and I don't know how it should work, hence I don't know what to do with assignments and destructors.
09:43:32Araq_the c++ solution is that the optimizer is allowed to optimize them away, but not required to do so.
09:43:43Araq_(roughly speaking)
09:47:05*fastrom quit (Quit: Leaving.)
09:50:07*fastrom joined #nim
09:52:14veganskI think that the easiest solution is to call destructor for the temporary object. And use constructor with ``var`` parameter if we need move semantic.
09:54:28Araq_but var foo = constructor() should not produce (tmp = constructor(); assign(foo, tmp); destroy(tmp)), that's madness
09:55:02*fastrom quit (Ping timeout: 272 seconds)
09:58:37*vendethiel quit (Ping timeout: 252 seconds)
09:59:01*vendethiel joined #nim
09:59:13*gagagugu quit (Quit: Leaving)
10:01:16veganskOk, here we may not use assignment overloading, but what we need to do if we use reference: ``var foo = getDataRef()[]``?
10:06:13ParashuramaAraq_: changes reverted on parseBiggestFloat
10:07:48ParashuramaAraq_: BTW do you have any idea why I might get a segfault inside popFrame().
10:08:11Araq_tiny C bug.
10:08:17ParashuramaAraq_: only if using TCC (no crash on clang or gcc)
10:08:32ParashuramaAraq_: that's what I thought
10:09:12ParashuramaBut I'm not sure we can do anything about it. It doesn't appear the devs are it very active.
10:09:40*sora joined #nim
10:10:03ParashuramaAraq_: I can switch compiler, but TCC is awesone for its compile times in debug mode.
10:10:30ParashuramaIt feels like i'm using a scripting language on small modifications.
10:28:45cheatfateParashurama, if popFrame makes sigfault, then you smash stack for some reason...
10:29:00cheatfateit can happens if you declare stack array and dont check it bounds...
10:29:17cheatfatelimits...
10:30:14Parashuramacheatfate: As I said, it only happen with tinyCC. if using --stackframe:on.
10:30:53Parashuramaand checking with gdb the framepointer global variable is NULL when it segfault
10:31:31ParashuramaThe biggest problem I have is that I can't reproduce the issue in a smaller program.
10:34:13Parashuramacheatfate: It *might* be a problem on my end, the stack is usually not stored near the stack.
10:34:16*filcuc_ joined #nim
10:34:48Parashurama*the global variable are are usually not stored near the stack.
10:37:24*filcuc quit (Ping timeout: 260 seconds)
10:40:35cheatfateParashurama, it depends on stack size
10:40:37*Heartmender quit (Remote host closed the connection)
10:40:56cheatfateand possibility of your code to fit stack size
10:44:59*sora quit (Ping timeout: 250 seconds)
10:45:31*nsf quit (Quit: WeeChat 1.4)
10:45:36Parashuramacheatfate: I hadn't thought of that. I can try to disable all code that make use of stack array, and see if it still triggers.
10:46:12ParashuramaI'm not using alloc and friends.
10:46:14cheatfateParashurama, i think the most easy way will be increase stack size by compiler option
10:46:41*Heartmender joined #nim
10:46:49cheatfateincrease it like 10x size of original stack size and check...
10:47:03*Heartmender is now known as Guest46028
10:47:46ParashuramaAs in compiler flag or system flag. I can use setrlimit on linux
10:51:06cheatfateI dont think you can use setrlimit, because process already mapped to memory so stack is already allocated, and i think setrlimit is just modifiying environment for your child processes
10:52:24cheatfateI think linux ELF executable must have size of stack in header, like in windows
10:52:36Parashuramacheatfate: Okay so set the system limit to 64M and still the same result. see gdb stacktrace on https://github.com/nim-lang/Nim/issues/4205
10:54:33cheatfateParashurama, can i see C code of your "proc split()"
10:59:18Parashuramacheatfate: Actually the segfault happen somewhere else in the code, it is only if i call this function that this crash later. I added the code to the issue
10:59:19*PMunch joined #nim
11:01:22cheatfateParashurama, take a look on code, you allocating `tuple` in stack and then returning pointer on it to caller... and this is a problem
11:02:32cheatfateif you use such practic in your code, value of such tuple in stack can be smashed
11:02:40veganskAraq_, is there any way to detect that the expression creates temporary object? The problem is that ``var x = initData()`` must use move semantics or must destroy temp object after assignment, and ``var y = x`` must not destroy x variable
11:02:48*arnetheduck joined #nim
11:03:52Araq_vegansk: I envisioned the .constructor pragma for that... so constructors needs to marked as such
11:04:09Parashuramacheatfate: I'm not sure I understand what you mean. result is a tuple declared on the stack and returned as value, not as reference.
11:04:55Parashuramacheatfate: xanchor is an enum not an object/ref object
11:06:11Parashuramacheatfate: to put it simply. the enum value is a bit field, and split separate two component and return them in a tuple.
11:06:15cheatfateParashurama, could i get part of `caller` code where it call to `split` and process results
11:06:33*feixingjun joined #nim
11:09:13veganskAraq_, can we treat any function that returns some object as constructor?
11:09:34*fastrom joined #nim
11:10:33Parashuramacheatfate: yes but that will have to be in half an hour. i have to eat. later.
11:40:44*nchambers is now known as MorganFreeman
11:42:26*MorganFreeman is now known as nchambers
11:44:52Parashuramacheatfate: so I put the code you requested in the issue.
11:49:19cheatfateParashurama, code is looks valid, but i'm not sure about returning structs from functions... it looks like it depends on the compiler...
11:51:05Parashuramacheatfate: exactly i jsut tried various procs see issue
11:54:08cheatfateParashurama, it looks like TCC not properly handle `struct` as return value
11:54:16cheatfateso yeah, its TCC bug
11:55:50Parashuramacheatfate: Okay, I will tried to reproduce the issue with pure C using tinyCC and contact the TCC dev if I can.
11:56:13Parashuramacheatfate: thanks for the help.
11:56:37cheatfateParashurama, looks like TCC stoped development in 2013...
11:58:21Parashuramacheatfate: :( that's annoying. It's very useful for usage like this. I mean it isn't very optimized compared to GCC or clang, but it compile very quickly and that's perfect for dev in Nim
12:00:17cheatfateParashurama, you can always start a fork or (whispering) `ask Araq to help`, i'm not so strong with compilers as Araq
12:02:53Parashuramacheatfate: I'm pretty sure he is far too busy for that. And while I would say i know C quite well, I'm not so sure I'm up to the task of maintaining a fork of a multi-platform C compiler like TCC.
12:04:49cheatfateParashurama, but you can just patch this bug and continue to use your lovely TCC :)
12:13:37Parashuramacheatfate: Yeah, if I can actually track it down. struct return value are supposedly supported: see tcc change-log: http://bellard.org/tcc/changelog.html
12:23:51*nsf joined #nim
12:47:51cheatfateParashurama, maybe with "nim's overhead on type casting" TCC produces wrong code
12:49:56Parashuramacheatfate: Actually I just managed to reproduce the issue in pure C by emulating Nim Frames in nested function calls.
12:53:53cheatfateParashurama, and what is your verdict?
12:53:55Parashuramacheatfate: simply returning a struct inside nested functions trigger a crash at depth = 3
12:54:34cheatfatehmm very low depth...
12:56:06ParashuramaI'm not sure where to start, but if you want to help I can give you the c code. I don't think its going to be an easy fix. :)
12:56:42Parashuramacheatfate: I have never seriously looked inside a compiler before.
12:56:56cheatfateParashurama, i'm too :) but gist c code
12:57:54*bjz_ quit (Ping timeout: 276 seconds)
12:58:22Parashuramacheatfate: see: https://gist.github.com/Parashurama/77db05d4969d28c5eb36db9d4f648384
13:07:33*bjz joined #nim
13:08:08Parashuramacheatfate: okay got exactly same result with latest TCC on Linux 64bits
13:12:20Parashuramacheatfate: BTW I found more recent activity: http://repo.or.cz/w/tinycc.git
13:35:42*vendethiel- joined #nim
13:36:00*vendethiel quit (Ping timeout: 260 seconds)
13:36:35*bjz quit (Max SendQ exceeded)
13:37:50*bjz joined #nim
13:40:31*dhk joined #nim
14:00:27*cheatfate quit (Read error: Connection reset by peer)
14:14:42*feixingjun quit (Quit: Page closed)
14:18:42*Parashurama quit (Quit: ChatZilla 0.9.92 [Firefox 46.0/20160425115046])
14:19:46*Demon_Fox joined #nim
14:42:25*PMunch quit (Ping timeout: 252 seconds)
14:43:10*sorakun joined #nim
14:51:17*gagagugu joined #nim
14:52:08kierany quick-and-dirty way to dump a data structure made of object refs as a string?
14:53:25dom96you mean to serialise it?
14:53:40kieryeah
14:56:47kierah just spotted the marshal module
15:09:02*cheatfate joined #nim
15:11:51*chrisheller quit (Remote host closed the connection)
15:12:49*nsf quit (Quit: WeeChat 1.4)
15:35:02*cheatfate quit (Read error: Connection reset by peer)
15:38:06*mwbrown joined #nim
15:46:40*arnetheduck quit (Ping timeout: 264 seconds)
15:53:13*cheatfate joined #nim
15:56:04*chrisheller joined #nim
15:58:03*chrishel_ joined #nim
16:01:37*chrisheller quit (Ping timeout: 252 seconds)
16:04:12*kulelu88 joined #nim
16:11:46*chrishel_ quit ()
16:15:22*filcuc_ quit (Read error: Connection reset by peer)
16:41:00*nsf joined #nim
16:48:59*yglukhov quit (Ping timeout: 244 seconds)
16:52:29*space-wizard joined #nim
16:53:04*space-wizard quit (Max SendQ exceeded)
16:53:45*space-wizard joined #nim
16:53:59*sorakun quit (Remote host closed the connection)
17:03:52*libman joined #nim
17:04:43cheatfateAraq_, what do you think about to add generator as `mget` to sharedtables.nim so we can lock table, yield value, unlock table... so value would be threadsafe to use
17:04:49*gagagugu quit (Remote host closed the connection)
17:06:50*gagagugu joined #nim
17:08:27*|2701 joined #nim
17:08:40*gokr left #nim (#nim)
17:24:38*wuehlmaus quit (Quit: Lost terminal)
17:25:33zodiakdom96: hola, sorry to pester, did you see the recent stacktraces for jester/callbacks with nim-devel I sent over ?
17:25:59dom96zodiak: yeah, I replied to you
17:26:01zodiakdon't want to create a ticket - mostly due to I will post something biz-sensitive ( i am sure I will goof up :)
17:26:25dom96dom96> that sucks, can you add an 'echo' above this line? https://github.com/dom96/jester/blob/master/jester.nim#L99
17:26:25dom96[11:20:36] <dom96> to echo `status.repr` and `headers.repr`
17:26:35zodiakaahhh.. didn't see that. can do.
17:28:21*TheLemonMan joined #nim
17:29:29Araq_cheatfate: mget returns an address. something modifies the table in parallel, causes relocations, kaboom, address is not safe to use
17:30:15*elrood joined #nim
17:32:07cheatfateAraq_, i will try to gist my idea
17:36:25*yglukhov joined #nim
17:37:38zodiakdom96: the header looks right to me .. content length is set to the same as the success results
17:37:47zodiakbut then, I could be looking at the wrong thing
17:38:18dom96very strange
17:38:46dom96another thing you could try is using gdb and seeing what you can diagnose with it
17:38:53dom96or compiling with --gc:markandsweep
17:39:09*Jesin quit (Quit: Leaving)
17:39:29*Jesin joined #nim
17:40:30zodiakrunning with mark and sweep. mean latency appears to go up but, hopefully it's a gc marking issue or.. some such
17:41:10*yglukhov quit (Ping timeout: 272 seconds)
17:41:11zodiakleaving it running
17:47:07zodiakupto 4500 requests and running fine
17:47:10zodiakworks for me :)
17:51:03dom96Cool. That suggests that there is an issue with the default GC. Are you sure you're using devel?
17:51:53dom96You can check with `nim -v`
17:55:08*fastrom quit (Quit: Leaving.)
17:56:21libmanDid I miss anything? Is Nim now going to win the next Web Frameworks benchmark round? :P
17:56:50*yglukhov joined #nim
17:59:22dom96libman: I doubt it
17:59:42libmanC'mon, Nim, you can do it. Give me an excuse to use you!
18:00:13libmanRight now Go is the winner of those benchmarks as far as I'm concerned.
18:00:52libmanYou're gonna take that from some simplistic language that doesn't use an optimizing C compiler backend?
18:01:18*gagagugu quit (Quit: Leaving)
18:02:00*lubos_cz joined #nim
18:02:49cheatfateAraq_, please take a look on my idea https://gist.github.com/cheatfate/d817fb9b379024813440cb4246d56cbb
18:08:07*gagagugu joined #nim
18:09:00Araq_cheatfate: that's equivalent to a template
18:18:26cheatfateAraq_, yeah but i think you are right... it can be done with template but i so need it...
18:19:02Araq_so add it, it's finally something that's really safe ;-)
18:19:40cheatfateAraq_, i'm stuck with name for this template :)
18:19:58Araq_'withVal'
18:23:25Araq_libman: if you base your language choice on something that won't ever be your realworld problem (aka how many stupid tiny dummy requests can my server handle per second), then so be it.
18:24:01Araq_I instead prefer to use a language that allows me to write 'assert'.
18:24:23libmanI think https://www.techempower.com/benchmarks/ tests are pretty relevant as far as benchmarks go.
18:24:24Araq_that's right, Go lacks 'assert' and you cannot implement it on your own either.
18:25:44libmanI'm thinking as an economist. People don't switch from Python unless they have specific dollars-and-cents reasons to do so.
18:26:07libmanTwitter switched from RoR to Java for performance reasons.
18:26:30*wuehlmaus joined #nim
18:27:05*lubos_cz quit (Ping timeout: 260 seconds)
18:27:52Araq_by that logic they would never have picked Python to begin with.
18:28:06Araq_since it never won any benchmarks as far as I'm concerned.
18:29:49Araq_Twitter switched to Java. Not to C. why? because it's about *tradeoffs*, not about "who is fastest".
18:29:59dom96libman: Go isn't even the fastest for those benchmarks
18:30:26dom96For most of them it's either Java or C++
18:30:43libmanIt's close to fastest if you average together different tests, esp weighed by importance.
18:30:57tautologicotwitter switched to the JVM and via Scala, not Java
18:31:03libmanBut I'm also excluding everything that's not copyfree, which is anything that depends on Java.
18:32:00ldleworkertautologico: Araq_'s point seems to apply even stronger in that case
18:32:19ldleworkerlibman: but basically it sounds like your appeal has been answered
18:32:25libmanfasthttp-postgresql is #1 on "data updates" test, #2 on "single query", #6 on "multiple queries"
18:34:02dom96libman: If this is important to you then why not help us make asynchttpserver faster?
18:34:04libmanNim would have a great selling point for Python programmers when they need something faster / more scalable. It needs to show itself faster than Java and Go.
18:34:27ldleworkerNim is already faster and more scalable than Python
18:34:33libmanThat's way over my head, I don't specialize in this.
18:35:03libmanNim is not competing with Python for code that doesn't need to be fast.
18:35:11ldleworkerYes it is
18:35:22ldleworkerNim also provides safety
18:35:37*yglukhov quit (Remote host closed the connection)
18:35:40ldleworkerAs a Python programmer I don't even consider Java and Go
18:35:41libmanAt least that's not a top selling point for the majority of Python programmers.
18:35:58ldleworkerI'm a +10 professional and "speed" and "safety" are exactly why I moved to Nim
18:36:48libmanWhat's a "+10 professional"?
18:36:52ldleworkeryears
18:37:01libmanok
18:37:03ldleworkerBut I don't need so much speed as to warrant not having assert in my language or dealing with the java-ecosystem
18:37:16ldleworkerIE, the answer you recieved all along
18:37:19ldleworkerits about tradeoffs
18:37:53Araq_libman: https://github.com/lpereira/lwan wrap this in Nim and start winning benchmarks.
18:37:55dom96ldleworker: How's the game dev going?
18:38:00ldleworkerAraq_: heh
18:38:04ldleworkerdom96: non-existent
18:38:09*yglukhov joined #nim
18:38:10dom96ldleworker: D:
18:38:19dom96ldleworker: I'm working on something :)
18:38:32ldleworkerdom96: don't worry, my interests are driven by a huuuuuuuge wheel wherein each takes a tiny slice
18:38:33dom96But I shouldn't say that, people in here want me working on other things :P
18:38:45ldleworkerWhile "nim gamedev" has moved on, it'll be back I'm sure
18:39:29libmanI agree that it's about tradeoffs, I just think Nim's performance attribute in a programming language decision making matrix could be easily improved by focusing on the most frequent bottlenecks that people measure, like data serialization and HTTP responses-per-second throughput.
18:40:17ldleworkerSure, but then you said a bunch of other stuff.
18:40:22dom96libman: It doesn't matter whether you specialise in this or not. I certainly don't.
18:40:23libmanAlso, lwan is GPL.
18:43:43*Jesin quit (Quit: Leaving)
18:45:08*Pisuke quit (Ping timeout: 272 seconds)
18:47:08tautologicothe language is not 1.0 yet
18:47:20tautologicoI think performance tuning can come after stabilization
18:54:26dom96true
19:06:23Araq_nevertheless there is much to be learned from lwan: https://tia.mat.br/posts/2012/09/29/asynchronous_i_o_in_c_with_coroutines.html
19:07:02*yglukhov quit (Remote host closed the connection)
19:11:05*yglukhov joined #nim
19:14:14*GangstaCat quit (Ping timeout: 260 seconds)
19:16:42*PMunch joined #nim
19:16:45*GangstaCat joined #nim
19:36:26*Mat4 joined #nim
19:37:19*sorakun joined #nim
19:37:49*Arrrr quit (Quit: WeeChat 1.4)
19:38:33*space-wizard quit (Quit: My Mac has gone to sleep. ZZZzzz…)
19:47:57zodiakdom96: I am using nim-devel master (as of last night) but I was using the boehm gc. That said, I was using boehm because it gave me a latency of like 30ms, as opposed to 110ms using the default gc
19:48:13zodiakI forgot I was using boehm until I opened up the nim.cfg for the service
19:48:32zodiakbut that's a pretty hefty penalty to pay for a microservice (3x the latency on the same code)
19:48:41zodiakmark and sweep is the winner :)
19:48:51dom96Can you see if the default GC also crashes?
19:48:57zodiakrunning it now Sir
19:49:09dom96Thanks :)
19:49:22zodiaknp. anything to make things saner/safer/sager
19:54:22*yglukhov quit (Remote host closed the connection)
19:57:45*space-wizard joined #nim
20:03:19cheatfateAraq is it possible to to make with templates `if someExpresion: body1 else: body2`?
20:06:42zodiakdom96: 12000 reqs+ and still ticking away.. think default gc is good (yay!)
20:07:06dom96zodiak: strange
20:07:40dom96Araq_: Any predictions why boehm might crash but others work?
20:07:49zodiaksomewhat.. as long as it's relatively stable on one gc, I don't mind :)
20:10:13*lubos_cz joined #nim
20:11:51*yglukhov joined #nim
20:11:57*libman quit (Remote host closed the connection)
20:16:31*enquora joined #nim
20:16:45*yglukhov quit (Ping timeout: 260 seconds)
20:23:44*Mat4 left #nim (#nim)
20:29:09Araq_cheatfate: yes, via 'do' notation
20:29:27Araq_dom96: no idea.
20:29:28cheatfateAraq_, could you please point me to example
20:29:52Araq_template foo(a, b: untyped) = ...
20:29:55Araq_foo:
20:29:59Araq_ echo "a"
20:30:01Araq_do:
20:30:04Araq_ echo "b"
20:33:06cheatfatebig thanks
20:38:38*yglukhov joined #nim
20:43:13*yglukhov quit (Ping timeout: 252 seconds)
20:43:30*Matthias247 joined #nim
20:45:49*enquora quit (Quit: enquora)
20:52:14*space-wizard quit (Ping timeout: 260 seconds)
20:53:26*space-wizard joined #nim
20:56:02*irrequietus joined #nim
21:03:45*dhk quit (Quit: Leaving)
21:08:51*gagagugu quit (Quit: Leaving)
21:09:01*space-wi_ joined #nim
21:09:07*TheLemonMan quit (Quit: "It's now safe to turn off your computer.")
21:09:48*space-wi_ quit (Max SendQ exceeded)
21:10:33*space-wi_ joined #nim
21:11:21*space-wizard quit (Ping timeout: 246 seconds)
21:15:06*yglukhov joined #nim
21:19:03*yglukhov quit (Ping timeout: 240 seconds)
21:20:49flyxI removed quite some templates from my code, but I still get the same error for https://github.com/nim-lang/Nim/issues/4138 (branch is updated on github)
21:21:32flyxI don't think the templates in fastparse.nim are the problem, it's rather something in serialization.nim
21:31:48flyx… and now I found the error in my code
21:37:07dom96please show us the error in the GH issue
21:40:37flyxdone
21:44:15*sorakun quit (Quit: No Ping reply in 180 seconds.)
21:45:31*sora joined #nim
21:51:25*yglukhov joined #nim
21:52:25*sora quit (Ping timeout: 260 seconds)
21:52:38*sora joined #nim
21:53:09*gokr joined #nim
21:54:56gokrIdiotic question: Do we have something akin to Ruby or Smalltalk Symbols in Nim? Canonicalized strings basically?
21:55:49*yglukhov quit (Ping timeout: 260 seconds)
21:56:35gokrand no, I can't use enums since I need them to be dynamic. I guess I will just use some table.
22:08:26dom96gokr: Not familiar with those, link?
22:08:46gokrEhm... In Ruby it's like :foo
22:08:51gokrIn Smalltalk its #foo
22:09:36gokrIt's basically a subclass of String - but it's checked against a dictionary first so that you only ever get one instance of a specific string.
22:10:19gokrThey are generally used as "enums" and similar in those languages.
22:10:48gokrJust curious if I had missed something like that in Nim.
22:12:10gokrObviously since they are canonicalized you can use them as keys based on identity instead of character contents.
22:13:14gokrIn other words, their hash method just uses the identityHash.
22:14:42*sora quit (Ping timeout: 246 seconds)
22:15:21*sora joined #nim
22:15:22*yglukhov joined #nim
22:18:37Araq_gokr: easy enough to get them via a macro and a .compileTime var that keeps the set of strings
22:19:10fowlI did that with a compile time TTable[string,int] before
22:19:25gokrMmmm, I need to be able to create them dynamically.
22:19:28gokrBut ok
22:19:40*yglukhov quit (Ping timeout: 244 seconds)
22:19:48*elrood quit (Quit: Leaving)
22:20:25*sora quit (Read error: Connection reset by peer)
22:20:51fowlDynamically creating symbols used to create a limit on how long your rails app could run before running out of memory (they were never garbage collected)
22:28:39*mwbrown quit (Quit: Leaving)
22:29:23*Matthias247 quit (Read error: Connection reset by peer)
22:34:25*gagagugu joined #nim
22:40:20*bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
22:41:04*tautologico quit (Quit: Connection closed for inactivity)
22:43:59dom96cool. TIL we got .compileTime. vars.
22:51:33*yglukhov joined #nim
22:56:07*yglukhov quit (Ping timeout: 260 seconds)
22:58:41*gagagugu quit (Ping timeout: 240 seconds)
22:59:14*GitGud joined #nim
23:02:52*GitGud is now known as gagagugu
23:05:08*bjz joined #nim
23:07:15*bjz quit (Max SendQ exceeded)
23:08:04*bjz joined #nim
23:12:19*space-wizard joined #nim
23:12:46*space-wi_ quit (Read error: Connection reset by peer)
23:12:49*bjz quit (Ping timeout: 260 seconds)
23:16:05*yglukhov joined #nim
23:20:30*yglukhov quit (Ping timeout: 246 seconds)
23:21:34*irrequietus quit ()
23:22:32*vendethiel- quit (Ping timeout: 244 seconds)
23:29:40*Demon_Fox quit (Quit: Leaving)
23:30:40*libman joined #nim
23:30:44*tautologico joined #nim
23:38:12cheatfateAraq_, for some reason your idea could not be compiled https://gist.github.com/cheatfate/622f3720ee04c6a7b82ed18dac594723
23:38:28cheatfateError: expression 'echo ["a"]' has no type (or is ambiguous)
23:38:42*gokr quit (Ping timeout: 244 seconds)
23:41:45libmanlol@ http://www.ibm.com/developerworks/aix/library/au-aix-nim-cheat-sheet/
23:43:57libmanProgramming these days involves a lot of googling for answers. You don't want every n00b annoying you with "boo hoo hoo, my /usr/local/lib/system.nim is /opt/nim/lib/system.nim" problems.
23:44:50libmanShould have consulted me before choosing the name. Because I'm always right. :P
23:46:28Araq_cheatfate: will look into it tomorrow. seems like a compiler bug. (yay)
23:46:29libmanI would have picked a name that is unique to Google. Like n33mr00d. ;)
23:49:05libmanMaybe rename the language with every version: n1m, n2m, n3m, etc. :P
23:50:35libmanMaybe throw some Chinese phonetics into it, like 尼m.
23:51:32*libman gets sedated and dragged off back to his padded room.
23:52:04*yglukhov joined #nim
23:56:21*yglukhov quit (Ping timeout: 240 seconds)