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:23 | libman | Is 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:15 | Araq_ | libman: not really, but I can try |
00:28:14 | libman | I think this should be priority #1, and then the #1 marketing focus for recruiting Python programmers. |
00:30:17 | libman | It doesn't even have to be a framework. Maybe some special C / asm optimizations for server concurrency in generated code? |
00:36:55 | Araq_ | 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:33 | zodiak_ | 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:56 | zodiak_ | even if 0.14 gets called 1.0 .. it will bring in lots of peeps |
00:49:13 | zodiak_ | (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:06 | vegansk | Araq_, 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:57 | Araq_ | how would that help? |
09:28:25 | Araq_ | by that logic you could move the destructor logic into your assignment operator |
09:28:41 | Araq_ | which effectively turns it into a move. |
09:30:06 | vegansk | I don't need move semantic in assigment operator. |
09:30:48 | * | Parashurama joined #nim |
09:32:04 | Araq_ | yet that is the patch you propose |
09:33:53 | * | Parashurama left #nim (#nim) |
09:34:08 | vegansk | Ok, what if I need to create another copy ``var y = x`` and use them independently? |
09:36:03 | * | Parashurama joined #nim |
09:40:30 | vegansk | The 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:14 | vegansk | I wrote about the same problem in stdlib, see my comment about SharedString in the issue |
09:42:00 | Araq_ | here is what you need to do: write a spec of how it should work. |
09:43:02 | Araq_ | 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:32 | Araq_ | the c++ solution is that the optimizer is allowed to optimize them away, but not required to do so. |
09:43:43 | Araq_ | (roughly speaking) |
09:47:05 | * | fastrom quit (Quit: Leaving.) |
09:50:07 | * | fastrom joined #nim |
09:52:14 | vegansk | I 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:28 | Araq_ | 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:16 | vegansk | Ok, here we may not use assignment overloading, but what we need to do if we use reference: ``var foo = getDataRef()[]``? |
10:06:13 | Parashurama | Araq_: changes reverted on parseBiggestFloat |
10:07:48 | Parashurama | Araq_: BTW do you have any idea why I might get a segfault inside popFrame(). |
10:08:11 | Araq_ | tiny C bug. |
10:08:17 | Parashurama | Araq_: only if using TCC (no crash on clang or gcc) |
10:08:32 | Parashurama | Araq_: that's what I thought |
10:09:12 | Parashurama | But 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:03 | Parashurama | Araq_: I can switch compiler, but TCC is awesone for its compile times in debug mode. |
10:10:30 | Parashurama | It feels like i'm using a scripting language on small modifications. |
10:28:45 | cheatfate | Parashurama, if popFrame makes sigfault, then you smash stack for some reason... |
10:29:00 | cheatfate | it can happens if you declare stack array and dont check it bounds... |
10:29:17 | cheatfate | limits... |
10:30:14 | Parashurama | cheatfate: As I said, it only happen with tinyCC. if using --stackframe:on. |
10:30:53 | Parashurama | and checking with gdb the framepointer global variable is NULL when it segfault |
10:31:31 | Parashurama | The biggest problem I have is that I can't reproduce the issue in a smaller program. |
10:34:13 | Parashurama | cheatfate: 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:48 | Parashurama | *the global variable are are usually not stored near the stack. |
10:37:24 | * | filcuc quit (Ping timeout: 260 seconds) |
10:40:35 | cheatfate | Parashurama, it depends on stack size |
10:40:37 | * | Heartmender quit (Remote host closed the connection) |
10:40:56 | cheatfate | and 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:36 | Parashurama | cheatfate: 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:12 | Parashurama | I'm not using alloc and friends. |
10:46:14 | cheatfate | Parashurama, i think the most easy way will be increase stack size by compiler option |
10:46:41 | * | Heartmender joined #nim |
10:46:49 | cheatfate | increase it like 10x size of original stack size and check... |
10:47:03 | * | Heartmender is now known as Guest46028 |
10:47:46 | Parashurama | As in compiler flag or system flag. I can use setrlimit on linux |
10:51:06 | cheatfate | I 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:24 | cheatfate | I think linux ELF executable must have size of stack in header, like in windows |
10:52:36 | Parashurama | cheatfate: 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:33 | cheatfate | Parashurama, can i see C code of your "proc split()" |
10:59:18 | Parashurama | cheatfate: 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:22 | cheatfate | Parashurama, 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:32 | cheatfate | if you use such practic in your code, value of such tuple in stack can be smashed |
11:02:40 | vegansk | Araq_, 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:52 | Araq_ | vegansk: I envisioned the .constructor pragma for that... so constructors needs to marked as such |
11:04:09 | Parashurama | cheatfate: 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:55 | Parashurama | cheatfate: xanchor is an enum not an object/ref object |
11:06:11 | Parashurama | cheatfate: to put it simply. the enum value is a bit field, and split separate two component and return them in a tuple. |
11:06:15 | cheatfate | Parashurama, could i get part of `caller` code where it call to `split` and process results |
11:06:33 | * | feixingjun joined #nim |
11:09:13 | vegansk | Araq_, can we treat any function that returns some object as constructor? |
11:09:34 | * | fastrom joined #nim |
11:10:33 | Parashurama | cheatfate: 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:52 | Parashurama | cheatfate: so I put the code you requested in the issue. |
11:49:19 | cheatfate | Parashurama, code is looks valid, but i'm not sure about returning structs from functions... it looks like it depends on the compiler... |
11:51:05 | Parashurama | cheatfate: exactly i jsut tried various procs see issue |
11:54:08 | cheatfate | Parashurama, it looks like TCC not properly handle `struct` as return value |
11:54:16 | cheatfate | so yeah, its TCC bug |
11:55:50 | Parashurama | cheatfate: Okay, I will tried to reproduce the issue with pure C using tinyCC and contact the TCC dev if I can. |
11:56:13 | Parashurama | cheatfate: thanks for the help. |
11:56:37 | cheatfate | Parashurama, looks like TCC stoped development in 2013... |
11:58:21 | Parashurama | cheatfate: :( 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:17 | cheatfate | Parashurama, you can always start a fork or (whispering) `ask Araq to help`, i'm not so strong with compilers as Araq |
12:02:53 | Parashurama | cheatfate: 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:49 | cheatfate | Parashurama, but you can just patch this bug and continue to use your lovely TCC :) |
12:13:37 | Parashurama | cheatfate: 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:51 | cheatfate | Parashurama, maybe with "nim's overhead on type casting" TCC produces wrong code |
12:49:56 | Parashurama | cheatfate: Actually I just managed to reproduce the issue in pure C by emulating Nim Frames in nested function calls. |
12:53:53 | cheatfate | Parashurama, and what is your verdict? |
12:53:55 | Parashurama | cheatfate: simply returning a struct inside nested functions trigger a crash at depth = 3 |
12:54:34 | cheatfate | hmm very low depth... |
12:56:06 | Parashurama | I'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:42 | Parashurama | cheatfate: I have never seriously looked inside a compiler before. |
12:56:56 | cheatfate | Parashurama, i'm too :) but gist c code |
12:57:54 | * | bjz_ quit (Ping timeout: 276 seconds) |
12:58:22 | Parashurama | cheatfate: see: https://gist.github.com/Parashurama/77db05d4969d28c5eb36db9d4f648384 |
13:07:33 | * | bjz joined #nim |
13:08:08 | Parashurama | cheatfate: okay got exactly same result with latest TCC on Linux 64bits |
13:12:20 | Parashurama | cheatfate: 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:08 | kier | any quick-and-dirty way to dump a data structure made of object refs as a string? |
14:53:25 | dom96 | you mean to serialise it? |
14:53:40 | kier | yeah |
14:56:47 | kier | ah 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:43 | cheatfate | Araq_, 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:33 | zodiak | dom96: hola, sorry to pester, did you see the recent stacktraces for jester/callbacks with nim-devel I sent over ? |
17:25:59 | dom96 | zodiak: yeah, I replied to you |
17:26:01 | zodiak | don't want to create a ticket - mostly due to I will post something biz-sensitive ( i am sure I will goof up :) |
17:26:25 | dom96 | dom96> that sucks, can you add an 'echo' above this line? https://github.com/dom96/jester/blob/master/jester.nim#L99 |
17:26:25 | dom96 | [11:20:36] <dom96> to echo `status.repr` and `headers.repr` |
17:26:35 | zodiak | aahhh.. didn't see that. can do. |
17:28:21 | * | TheLemonMan joined #nim |
17:29:29 | Araq_ | 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:07 | cheatfate | Araq_, i will try to gist my idea |
17:36:25 | * | yglukhov joined #nim |
17:37:38 | zodiak | dom96: the header looks right to me .. content length is set to the same as the success results |
17:37:47 | zodiak | but then, I could be looking at the wrong thing |
17:38:18 | dom96 | very strange |
17:38:46 | dom96 | another thing you could try is using gdb and seeing what you can diagnose with it |
17:38:53 | dom96 | or compiling with --gc:markandsweep |
17:39:09 | * | Jesin quit (Quit: Leaving) |
17:39:29 | * | Jesin joined #nim |
17:40:30 | zodiak | running 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:11 | zodiak | leaving it running |
17:47:07 | zodiak | upto 4500 requests and running fine |
17:47:10 | zodiak | works for me :) |
17:51:03 | dom96 | Cool. That suggests that there is an issue with the default GC. Are you sure you're using devel? |
17:51:53 | dom96 | You can check with `nim -v` |
17:55:08 | * | fastrom quit (Quit: Leaving.) |
17:56:21 | libman | Did I miss anything? Is Nim now going to win the next Web Frameworks benchmark round? :P |
17:56:50 | * | yglukhov joined #nim |
17:59:22 | dom96 | libman: I doubt it |
17:59:42 | libman | C'mon, Nim, you can do it. Give me an excuse to use you! |
18:00:13 | libman | Right now Go is the winner of those benchmarks as far as I'm concerned. |
18:00:52 | libman | You'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:49 | cheatfate | Araq_, please take a look on my idea https://gist.github.com/cheatfate/d817fb9b379024813440cb4246d56cbb |
18:08:07 | * | gagagugu joined #nim |
18:09:00 | Araq_ | cheatfate: that's equivalent to a template |
18:18:26 | cheatfate | Araq_, yeah but i think you are right... it can be done with template but i so need it... |
18:19:02 | Araq_ | so add it, it's finally something that's really safe ;-) |
18:19:40 | cheatfate | Araq_, i'm stuck with name for this template :) |
18:19:58 | Araq_ | 'withVal' |
18:23:25 | Araq_ | 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:01 | Araq_ | I instead prefer to use a language that allows me to write 'assert'. |
18:24:23 | libman | I think https://www.techempower.com/benchmarks/ tests are pretty relevant as far as benchmarks go. |
18:24:24 | Araq_ | that's right, Go lacks 'assert' and you cannot implement it on your own either. |
18:25:44 | libman | I'm thinking as an economist. People don't switch from Python unless they have specific dollars-and-cents reasons to do so. |
18:26:07 | libman | Twitter 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:52 | Araq_ | by that logic they would never have picked Python to begin with. |
18:28:06 | Araq_ | since it never won any benchmarks as far as I'm concerned. |
18:29:49 | Araq_ | Twitter switched to Java. Not to C. why? because it's about *tradeoffs*, not about "who is fastest". |
18:29:59 | dom96 | libman: Go isn't even the fastest for those benchmarks |
18:30:26 | dom96 | For most of them it's either Java or C++ |
18:30:43 | libman | It's close to fastest if you average together different tests, esp weighed by importance. |
18:30:57 | tautologico | twitter switched to the JVM and via Scala, not Java |
18:31:03 | libman | But I'm also excluding everything that's not copyfree, which is anything that depends on Java. |
18:32:00 | ldleworker | tautologico: Araq_'s point seems to apply even stronger in that case |
18:32:19 | ldleworker | libman: but basically it sounds like your appeal has been answered |
18:32:25 | libman | fasthttp-postgresql is #1 on "data updates" test, #2 on "single query", #6 on "multiple queries" |
18:34:02 | dom96 | libman: If this is important to you then why not help us make asynchttpserver faster? |
18:34:04 | libman | Nim 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:27 | ldleworker | Nim is already faster and more scalable than Python |
18:34:33 | libman | That's way over my head, I don't specialize in this. |
18:35:03 | libman | Nim is not competing with Python for code that doesn't need to be fast. |
18:35:11 | ldleworker | Yes it is |
18:35:22 | ldleworker | Nim also provides safety |
18:35:37 | * | yglukhov quit (Remote host closed the connection) |
18:35:40 | ldleworker | As a Python programmer I don't even consider Java and Go |
18:35:41 | libman | At least that's not a top selling point for the majority of Python programmers. |
18:35:58 | ldleworker | I'm a +10 professional and "speed" and "safety" are exactly why I moved to Nim |
18:36:48 | libman | What's a "+10 professional"? |
18:36:52 | ldleworker | years |
18:37:01 | libman | ok |
18:37:03 | ldleworker | But I don't need so much speed as to warrant not having assert in my language or dealing with the java-ecosystem |
18:37:16 | ldleworker | IE, the answer you recieved all along |
18:37:19 | ldleworker | its about tradeoffs |
18:37:53 | Araq_ | libman: https://github.com/lpereira/lwan wrap this in Nim and start winning benchmarks. |
18:37:55 | dom96 | ldleworker: How's the game dev going? |
18:38:00 | ldleworker | Araq_: heh |
18:38:04 | ldleworker | dom96: non-existent |
18:38:09 | * | yglukhov joined #nim |
18:38:10 | dom96 | ldleworker: D: |
18:38:19 | dom96 | ldleworker: I'm working on something :) |
18:38:32 | ldleworker | dom96: don't worry, my interests are driven by a huuuuuuuge wheel wherein each takes a tiny slice |
18:38:33 | dom96 | But I shouldn't say that, people in here want me working on other things :P |
18:38:45 | ldleworker | While "nim gamedev" has moved on, it'll be back I'm sure |
18:39:29 | libman | I 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:17 | ldleworker | Sure, but then you said a bunch of other stuff. |
18:40:22 | dom96 | libman: It doesn't matter whether you specialise in this or not. I certainly don't. |
18:40:23 | libman | Also, lwan is GPL. |
18:43:43 | * | Jesin quit (Quit: Leaving) |
18:45:08 | * | Pisuke quit (Ping timeout: 272 seconds) |
18:47:08 | tautologico | the language is not 1.0 yet |
18:47:20 | tautologico | I think performance tuning can come after stabilization |
18:54:26 | dom96 | true |
19:06:23 | Araq_ | 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:57 | zodiak | dom96: 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:13 | zodiak | I forgot I was using boehm until I opened up the nim.cfg for the service |
19:48:32 | zodiak | but that's a pretty hefty penalty to pay for a microservice (3x the latency on the same code) |
19:48:41 | zodiak | mark and sweep is the winner :) |
19:48:51 | dom96 | Can you see if the default GC also crashes? |
19:48:57 | zodiak | running it now Sir |
19:49:09 | dom96 | Thanks :) |
19:49:22 | zodiak | np. 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:19 | cheatfate | Araq is it possible to to make with templates `if someExpresion: body1 else: body2`? |
20:06:42 | zodiak | dom96: 12000 reqs+ and still ticking away.. think default gc is good (yay!) |
20:07:06 | dom96 | zodiak: strange |
20:07:40 | dom96 | Araq_: Any predictions why boehm might crash but others work? |
20:07:49 | zodiak | somewhat.. 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:09 | Araq_ | cheatfate: yes, via 'do' notation |
20:29:27 | Araq_ | dom96: no idea. |
20:29:28 | cheatfate | Araq_, could you please point me to example |
20:29:52 | Araq_ | template foo(a, b: untyped) = ... |
20:29:55 | Araq_ | foo: |
20:29:59 | Araq_ | echo "a" |
20:30:01 | Araq_ | do: |
20:30:04 | Araq_ | echo "b" |
20:33:06 | cheatfate | big 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:49 | flyx | I 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:32 | flyx | I don't think the templates in fastparse.nim are the problem, it's rather something in serialization.nim |
21:31:48 | flyx | … and now I found the error in my code |
21:37:07 | dom96 | please show us the error in the GH issue |
21:40:37 | flyx | done |
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:56 | gokr | Idiotic 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:35 | gokr | and no, I can't use enums since I need them to be dynamic. I guess I will just use some table. |
22:08:26 | dom96 | gokr: Not familiar with those, link? |
22:08:46 | gokr | Ehm... In Ruby it's like :foo |
22:08:51 | gokr | In Smalltalk its #foo |
22:09:36 | gokr | It'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:19 | gokr | They are generally used as "enums" and similar in those languages. |
22:10:48 | gokr | Just curious if I had missed something like that in Nim. |
22:12:10 | gokr | Obviously since they are canonicalized you can use them as keys based on identity instead of character contents. |
22:13:14 | gokr | In 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:37 | Araq_ | gokr: easy enough to get them via a macro and a .compileTime var that keeps the set of strings |
22:19:10 | fowl | I did that with a compile time TTable[string,int] before |
22:19:25 | gokr | Mmmm, I need to be able to create them dynamically. |
22:19:28 | gokr | But 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:51 | fowl | Dynamically 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:59 | dom96 | cool. 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:12 | cheatfate | Araq_, for some reason your idea could not be compiled https://gist.github.com/cheatfate/622f3720ee04c6a7b82ed18dac594723 |
23:38:28 | cheatfate | Error: expression 'echo ["a"]' has no type (or is ambiguous) |
23:38:42 | * | gokr quit (Ping timeout: 244 seconds) |
23:41:45 | libman | lol@ http://www.ibm.com/developerworks/aix/library/au-aix-nim-cheat-sheet/ |
23:43:57 | libman | Programming 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:50 | libman | Should have consulted me before choosing the name. Because I'm always right. :P |
23:46:28 | Araq_ | cheatfate: will look into it tomorrow. seems like a compiler bug. (yay) |
23:46:29 | libman | I would have picked a name that is unique to Google. Like n33mr00d. ;) |
23:49:05 | libman | Maybe rename the language with every version: n1m, n2m, n3m, etc. :P |
23:50:35 | libman | Maybe 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) |