00:08:25 | * | rollo quit (Quit: Leaving) |
00:12:18 | * | Kingsquee joined #nim |
00:16:57 | * | MonkeyJam quit (Quit: Leaving...) |
00:23:12 | * | Sahnvour quit (Read error: Connection reset by peer) |
00:35:43 | gmpreussner|work | has anyone done any Nim work with DirectX 12 yet? |
00:35:51 | gmpreussner|work | it looks like it's very COM heavy |
00:38:49 | Araq | really? interesting. I thought COM is not even compatible with their low level performance goals |
00:40:42 | gmpreussner|work | yep |
00:41:01 | gmpreussner|work | i was gonna start some work this week, but looks like it won't be that easy |
00:41:13 | gmpreussner|work | perhaps i start with Vulkan instead. that's all straight C :) |
00:41:41 | Araq | cool! |
00:41:57 | gmpreussner|work | well, DirectX 12 is still kinda important though |
00:42:04 | gmpreussner|work | what would the roadmap be for this? |
00:42:16 | gmpreussner|work | according to a forum post i found, COM support is still in the works kinda sorta!? |
00:42:54 | * | vikaton quit (Quit: Connection closed for inactivity) |
00:46:24 | * | jakesyl joined #nim |
00:46:48 | Araq | well I only know how to do COM with some C API like disphelper |
00:47:34 | Araq | but that's not performant enough for DirectX 12 |
00:48:22 | Araq | I think we have 2 options: model it as function pointers with explicit 'this' etc. in other words, like it would be in C. |
00:48:49 | Araq | option B: Embrace our C++ code generator and wrap the C++. |
00:49:15 | onionhammer | araq C++ codegen is borked :P |
00:49:18 | Araq | both are feasible but Demos complained the C API approach is really hard to work with in the end |
00:49:36 | Araq | onionhammer: I will fix it soon. |
00:49:55 | onionhammer | coolio |
00:50:20 | Araq | we use it all the time btw |
00:50:57 | Araq | but not every stdlib module seems to work with it |
00:52:39 | Araq | gmpreussner|work: post on the forum, wait for demos to show up, study his direct x wrapper, iirc he wrapped DirectX 11 |
00:53:01 | * | tmm1 joined #nim |
00:53:12 | gmpreussner|work | ok |
00:54:16 | gmpreussner|work | oh |
00:54:29 | gmpreussner|work | i'm looking at the include header right now.... they have a C version of their API |
00:55:12 | gmpreussner|work | i'm gonna write a wrapper and see how far i get |
00:55:16 | gmpreussner|work | i'll keep you posted |
00:55:59 | Araq | great :-) |
01:01:56 | * | Demon_Fox_ joined #nim |
01:04:38 | * | Demon_Fox quit (Ping timeout: 260 seconds) |
01:12:38 | * | Jesin joined #nim |
01:23:14 | * | chemist69 joined #nim |
01:26:34 | * | chemist69_ quit (Ping timeout: 260 seconds) |
01:27:51 | tmm1 | Araq: thanks for the tip about the c2nim post processor, i was able to get it working |
01:28:59 | * | yglukhov joined #nim |
01:33:24 | * | yglukhov quit (Ping timeout: 264 seconds) |
01:41:48 | tmm1 | is it safe to modify seq during iteration? |
01:56:31 | * | FedeOmoto joined #nim |
02:09:11 | * | vendethiel joined #nim |
02:13:58 | tmm1 | dom96: mind flipping travis on for c2nim as well so i can test my pr |
02:33:08 | * | vendethiel quit (Ping timeout: 265 seconds) |
03:09:36 | * | darkf joined #nim |
04:55:22 | * | gokr joined #nim |
04:57:34 | * | tmm1 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
05:01:11 | * | bjz joined #nim |
05:10:20 | * | bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
05:22:57 | * | bjz joined #nim |
05:31:52 | * | jakesyl_ quit (Quit: This computer has gone to sleep) |
05:41:49 | * | FedeOmoto quit (Quit: Leaving) |
05:58:56 | Xe | what is \c\L for in Nim? |
06:08:16 | * | AforAvi joined #nim |
06:09:25 | * | Pisuke joined #nim |
06:11:35 | * | MyMind quit (Ping timeout: 250 seconds) |
06:14:41 | * | jefus quit (Ping timeout: 268 seconds) |
06:25:02 | Varriount | Xe: http://nim-lang.org/docs/manual.html#lexical-analysis-string-literals |
06:25:51 | * | Ven joined #nim |
06:27:28 | * | jefus joined #nim |
06:33:20 | ekarlso | didn't know but: http://forum.nim-lang.org/t/1278 nice :P |
06:42:39 | * | AndChat|235809 joined #nim |
06:45:18 | * | AndChat|235809 quit (Remote host closed the connection) |
06:46:16 | * | AndChat|235809 joined #nim |
06:47:54 | * | BitPuffin|osx quit (Ping timeout: 272 seconds) |
06:48:10 | * | AndChat|235809 quit (Remote host closed the connection) |
06:51:10 | * | smodo joined #nim |
06:52:56 | ekarlso | hmmm, gokr you doing alot of changse to nim ? :d |
07:14:35 | * | darkf_ joined #nim |
07:15:45 | * | yglukhov joined #nim |
07:16:38 | * | darkf quit (Ping timeout: 240 seconds) |
07:35:26 | * | repax joined #nim |
07:35:52 | * | Trustable joined #nim |
07:45:46 | * | AndChat|235809 joined #nim |
07:46:15 | * | AndChat|235809 is now known as Peter99 |
07:49:23 | AforAvi | def- : hey Dennis, thanks for http://howistart.org/posts/nim I appreciate your work |
07:55:23 | * | r-ku quit (Quit: ZNC - http://znc.in) |
08:01:34 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
08:02:36 | * | r-ku joined #nim |
08:07:32 | * | AndChat|235809 joined #nim |
08:07:33 | * | Peter99 quit (Read error: Connection reset by peer) |
08:10:32 | * | AndChat-235809 joined #nim |
08:11:50 | * | AndChat|235809 quit (Ping timeout: 240 seconds) |
08:26:50 | * | Ven joined #nim |
08:34:34 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
08:34:50 | * | shodan45 quit (Quit: Konversation terminated!) |
08:36:58 | * | kniteli quit (Ping timeout: 240 seconds) |
08:37:08 | * | vegansk quit (Remote host closed the connection) |
08:39:54 | * | Ven joined #nim |
08:41:35 | * | vegansk joined #nim |
08:44:57 | * | davidhq joined #nim |
09:02:21 | * | davidhq quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
09:03:31 | NimBot | nim-lang/Nim devel d80f163 Araq [+0 ±3 -0]: NimScript: --define works as expected |
09:05:53 | * | Demon_Fox_ quit (Quit: Leaving) |
09:14:26 | * | AndChat|235809 joined #nim |
09:14:28 | * | AndChat-235809 quit (Read error: Connection reset by peer) |
09:26:25 | def- | AforAvi: nice to hear, you're welcome! |
09:26:32 | * | AndChat|235809 quit (Read error: Connection reset by peer) |
09:26:45 | * | AndChat|235809 joined #nim |
09:28:58 | * | Sahnvour joined #nim |
09:36:05 | dom96 | tmm1: done |
09:37:23 | NimBot | nim-lang/Nim devel 243e665 Aman Gupta [+0 ±1 -0]: fix current directory |
09:37:23 | NimBot | nim-lang/Nim devel 52230e2 Aman Gupta [+0 ±1 -0]: set PATH for tests |
09:37:23 | NimBot | nim-lang/Nim devel dd1e0bd Aman Gupta [+0 ±1 -0]: run in travisci containers |
09:37:23 | NimBot | nim-lang/Nim devel 7f619c7 Aman Gupta [+0 ±1 -0]: build on macosx too |
09:37:23 | NimBot | 3 more commits. |
09:39:51 | * | gimireh joined #nim |
09:46:53 | * | aziz joined #nim |
09:57:34 | * | thotypous quit (Ping timeout: 260 seconds) |
10:04:01 | * | AndChat|235809 quit (Read error: Connection reset by peer) |
10:04:25 | * | AndChat|235809 joined #nim |
10:12:07 | * | victor-rene joined #nim |
10:14:41 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
10:20:15 | reactormonk | shouldn't travis fail with failed tests? |
10:20:38 | Araq | shouldn't somebody clean up our test suite? |
10:24:57 | * | X67r joined #nim |
10:31:11 | OnO | hi, there are some strange messages during compilation appeared lately in nim, like: req[0] s[L - 1] a[i] |
10:31:20 | OnO | did someone leave some echo in the code? |
10:31:42 | Araq | OnO: yes ... -.- I think I fixed it though. |
10:31:54 | OnO | okay, I'll pull then |
10:32:03 | * | yglukhov quit (Read error: Connection reset by peer) |
10:32:23 | * | yglukhov joined #nim |
10:39:34 | * | AndChat-235809 joined #nim |
10:42:38 | * | AndChat|235809 quit (Ping timeout: 240 seconds) |
10:43:45 | OnO | yeah, it's gone, thanks |
10:43:45 | * | AndChat-235809 quit (Read error: Connection reset by peer) |
10:43:47 | * | AndChat|235809 joined #nim |
10:45:34 | * | darkf_ is now known as darkf |
10:46:08 | * | mtj_ quit (Ping timeout: 265 seconds) |
10:52:25 | * | AndChat-235809 joined #nim |
10:53:45 | * | mtj_ joined #nim |
10:54:27 | * | mtj_ quit (Remote host closed the connection) |
10:55:04 | * | jakesyl_ joined #nim |
10:55:05 | * | AndChat|235809 quit (Ping timeout: 240 seconds) |
10:58:55 | * | mtj_ joined #nim |
11:03:24 | * | razaaa joined #nim |
11:05:53 | * | AndChat-235809 quit (Read error: Connection reset by peer) |
11:06:25 | * | AndChat|235809 joined #nim |
11:07:07 | * | mtj_ quit (Remote host closed the connection) |
11:15:48 | OnO | Araq: dom96: how about RawSocket -> PlainSocket, this is somehow inline with Java naming too ;P |
11:18:02 | Araq | I like "nativesocket" better |
11:18:21 | Araq | or actually we prefer the 's', so 'nativesockets' |
11:19:12 | Araq | too bad Nim is so restrictive when it comes to module names. else we could name it p(l)ainsockets |
11:21:51 | * | Ven joined #nim |
11:25:45 | OnO | sure |
11:28:11 | * | Kingsquee quit (Quit: http://i.imgur.com/EsXzoum.png) |
11:32:51 | OnO | can {.deprecated: be used on the proc? I guess now |
11:32:53 | OnO | not |
11:33:03 | Araq | nah |
11:33:11 | Araq | would be pretty useful though |
11:33:21 | Araq | and not hard to do |
11:33:51 | Araq | somewhere in sym.ast the error message would be stored anyway |
11:37:50 | * | elrood joined #nim |
11:53:12 | dom96 | OnO: I'm still thinking that RawSocket is fine. |
11:54:28 | dom96 | it is a raw interface to the operating system's socket APIs |
11:54:56 | dom96 | let's just keep it as it is |
11:55:05 | * | jaco60 joined #nim |
11:56:22 | OnO | https://en.wikipedia.org/wiki/Raw_socket |
11:57:04 | OnO | raw socket is just something else, the raw socket name exists since long long time |
11:57:19 | * | thotypous joined #nim |
12:01:27 | dom96 | Fine. But I don't think 'PlainSocket' or 'NativeSocket' captures what they are. |
12:02:06 | OnO | yeah, because they are Sockets :) the current Socket name is just wrong coz it is something more, it does SSL it does buffering |
12:02:14 | dom96 | What about 'SystemSocket'? |
12:02:38 | OnO | also I wonder what's the point of the buffering at all? kernel does buffer sockets anyway |
12:03:13 | dom96 | recv() call is still expensive |
12:03:50 | OnO | okay, I wanted PlainSocket, Araq wanted NativeSocket, you want SystemSocket :) Araq: please decide :) |
12:04:01 | OnO | dom96: recv() expensive? do you have measures? |
12:05:22 | dom96 | OnO: That's what Araq told me :P |
12:05:23 | * | gimireh quit (Quit: Leaving) |
12:05:37 | OnO | but I understand this can overkill when you want to read one byte at the time |
12:05:46 | dom96 | precisely |
12:05:59 | dom96 | That is what readLine must do |
12:13:09 | OnO | anyway I don't like that naming, it is completely different from what I have seen in many well known APIs like Java, .NET, ObjC |
12:13:24 | OnO | I'd love sockets to be sockets |
12:13:33 | OnO | if it does buffering SSL it is no longer a socket |
12:13:42 | OnO | call it Connection, Stream whatever |
12:13:52 | dom96 | It is a Socket |
12:13:57 | dom96 | an *SSL*Socket |
12:14:10 | dom96 | SSL works the same way in Nim as it does in Python |
12:15:22 | OnO | no it doesn't, in python SSLSocket is a wrapper around socket |
12:15:38 | OnO | in Nim Socket is already wrapped around ... some Native/Raw/whatever it is |
12:19:04 | OnO | I think this makes some problem with Nim identity, if it is supposed to be system programing language, then it should follow system naming conventions |
12:20:18 | * | AndChat|235809 quit (Ping timeout: 240 seconds) |
12:21:10 | * | jakesyl quit (Ping timeout: 240 seconds) |
12:22:03 | * | AndChat|235809 joined #nim |
12:22:12 | Araq | OnO: I disagree. With that attitude we will never get good names. You know, names wih vowels. ;-) So it has to strive for a balance. |
12:22:58 | Araq | the Plan 9 guys also redesigned the sockets API iirc. |
12:23:17 | Araq | and Plan 9 doesn't suffer from an identity crisis. |
12:23:20 | OnO | sure, that's why I am not arguing that, and I am okay with current Socket be what it is |
12:24:20 | OnO | but rawsocket name is just wrong |
12:24:47 | Araq | in fact, even "string" is misnamed. should have been "text". |
12:25:29 | OnO | Araq: is it? it does represent the same what other strings in other languages/APIs do |
12:27:34 | Araq | it can certainly backfire. For example, I don't remember C#'s names for map and filter. |
12:28:09 | Araq | either way, I'm fine with renaming rawsockes to somehing else. |
12:30:55 | Araq | ('map' is a spectacularly bad name btw...) |
12:31:04 | * | mtj_ joined #nim |
12:34:31 | * | jakesyl joined #nim |
12:41:17 | * | AndChat|235809 quit (Read error: Connection reset by peer) |
12:41:25 | * | AndChat|235809 joined #nim |
12:42:11 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
12:46:57 | OnO | ahh... one more thing, sorry for bitching as usuall, AsyncFD/SocketHandle are value type, why then we have new(Async)RawSocket not init(Async)RawSocket? |
12:47:48 | Araq | cause dom96 doesn't like this convention I guess. ;-) |
12:54:44 | * | AndChat-235809 joined #nim |
12:54:44 | * | AndChat|235809 quit (Read error: Connection reset by peer) |
12:55:17 | * | Ven joined #nim |
12:57:11 | * | bamorim joined #nim |
12:57:27 | * | repax quit (Read error: Connection reset by peer) |
13:05:51 | * | AndChat-235809 quit (Ping timeout: 252 seconds) |
13:11:51 | * | AndChat|235809 joined #nim |
13:14:55 | * | BitPuffin joined #nim |
13:15:27 | * | BitPuffin quit (Remote host closed the connection) |
13:15:32 | * | xet7 quit (Quit: Leaving) |
13:15:50 | * | BitPuffin joined #nim |
13:20:21 | * | smodo quit (Quit: Leaving) |
13:24:11 | reactormonk | Araq, is let x = 100 optimized to const x = 100 ? |
13:24:18 | Araq | no. |
13:33:22 | * | tkuro joined #nim |
13:33:41 | * | tkuro quit (Client Quit) |
13:37:17 | * | PyHedgehog_ joined #nim |
13:38:07 | * | PyHedgehog_ is now known as PyHedgehog-work |
13:38:19 | * | FedeOmoto joined #nim |
13:53:30 | * | bamorim quit (Ping timeout: 272 seconds) |
13:59:58 | * | bamorim joined #nim |
14:04:50 | * | bamorim quit (Ping timeout: 240 seconds) |
14:09:20 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
14:12:30 | * | yglukhov quit (Ping timeout: 240 seconds) |
14:19:19 | * | saml quit (Read error: Connection reset by peer) |
14:22:07 | * | saml joined #nim |
14:22:28 | * | AforAvi is now known as AforAvi_Idle |
14:26:54 | * | chemist69 quit (Quit: WeeChat 1.3) |
14:27:24 | * | AforAvi_Idle quit (Read error: Connection reset by peer) |
14:28:03 | * | smodo joined #nim |
14:31:11 | * | chemist69 joined #nim |
15:05:43 | NimBot | nim-lang/Nim devel 374b652 Radu Oana [+0 ±1 -0]: Move magic numbers to const |
15:05:43 | NimBot | nim-lang/Nim devel 4bba8e0 Radu Oana [+0 ±1 -0]: use const instead of let |
15:05:43 | NimBot | nim-lang/Nim devel 8dad20f Andreas Rumpf [+0 ±1 -0]: Merge pull request #3397 from xyz32/move_to_const... 2 more lines |
15:17:09 | Araq | OnO: I prefer to export nkClosure, nkGotoState, nkState, nkBreakState to macros.nim |
15:17:50 | Araq | seems safer than disabling an internalError |
15:19:17 | NimBot | nim-lang/Nim devel dd2225f Araq [+0 ±1 -0]: NimScript: --threads:on works in a nims file |
15:30:28 | * | Ven joined #nim |
15:35:44 | * | keypusher joined #nim |
15:36:37 | * | Enamex joined #nim |
15:41:07 | * | bigfondue joined #nim |
15:50:14 | * | yglukhov joined #nim |
15:52:49 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
15:55:12 | * | Ven joined #nim |
15:58:24 | * | aziz quit (Remote host closed the connection) |
16:02:39 | * | darkf quit (Quit: Leaving) |
16:06:05 | * | AndChat-235809 joined #nim |
16:09:11 | * | AndChat|235809 quit (Ping timeout: 264 seconds) |
16:11:51 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
16:22:17 | * | razaaa quit (Ping timeout: 244 seconds) |
16:26:02 | * | Sahnvour quit (Read error: Connection reset by peer) |
16:28:51 | * | AndChat|235809 joined #nim |
16:28:51 | * | AndChat-235809 quit (Read error: Connection reset by peer) |
16:31:06 | * | Ven joined #nim |
16:37:51 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
16:38:21 | * | razaaa joined #nim |
16:40:46 | * | Enamex quit (Ping timeout: 246 seconds) |
16:41:45 | * | AndChat|235809 quit (Quit: Bye) |
16:42:06 | * | AndChat|235809 joined #nim |
16:46:26 | * | kniteli joined #nim |
16:48:54 | * | Ven joined #nim |
16:53:33 | * | Peter_ joined #nim |
16:55:44 | Peter_ | Hi! This is my first time here in IRC. |
16:56:05 | Araq | hi Peter_ welcome! |
16:56:11 | Peter_ | Just wanted to say hi to everyone. You might now me as "mora" from the forum. (The reson is simple, I'm Peter Mora.) |
16:56:15 | Araq | be back soon |
16:56:23 | Peter_ | Thanks. |
16:58:43 | softinio | @Peter_ welcome. Funny timing, I just read one of your posts on the forum just this morning :-) |
16:58:57 | softinio | Are you on our gitter channel too? |
16:59:13 | Peter_ | Gitter channel? |
16:59:34 | Peter_ | I don't know what it is, so I guess my answer is no :) |
17:00:56 | softinio | @Peter_ https://gitter.im/nim-lang/Nim |
17:01:26 | softinio | Its not used much though. This IRC is definitely where its happening at |
17:01:51 | r-ku | heh i thought mora was reference to gothic4 ;)) |
17:03:41 | * | smodo quit (Remote host closed the connection) |
17:04:17 | Peter_ | The gitter looks nice. And I definitely need to play more, I didn't know about gothic4 :) |
17:06:12 | * | Sahnvour joined #nim |
17:06:23 | Araq | ok, bad evening for me, Peter_, will be away again soon. |
17:06:46 | softinio | Yes gitter much nicer than this but new so not as busy as here |
17:06:46 | Araq | just some quick notes about the writetracking. |
17:06:58 | Peter_ | I'm all ears. |
17:07:39 | Araq | I called the effect you're interested in 'escapes' |
17:08:11 | Araq | proc foo(a, n: Node) {.writes: [a], escapes: [n].} = |
17:08:14 | Araq | a.add n |
17:09:07 | Araq | so why does 'n' escape here? because we know what 'add' does, something like: |
17:09:13 | * | boopsiesisaway is now known as boopsies |
17:09:21 | Araq | setLen(a, a.len+1) |
17:09:25 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
17:09:42 | Araq | a[^1] = b |
17:10:36 | Araq | in general x.field = y where 'x' is a parameter means that 'y' escapes |
17:11:13 | Araq | ('x' could also be a global variable, you get the idea) |
17:12:01 | Araq | this is the only pattern that we need to look for in order to determine something *might* escape |
17:12:22 | Araq | note that escapes: [n] means *might* escape. |
17:12:39 | Peter_ | I might miss a step here between your notation and the problem I see. |
17:12:43 | Peter_ | There are different lifetimes. Nim is garbage collected, therefore we need to ensure that everything is available everywhere. |
17:13:07 | Araq | if you're interested in eliminating the GC at compile-time you need to consider *does always* escape |
17:13:20 | Araq | then the analysis becomes control flow dependent |
17:13:35 | Araq | right now it is control flow independent |
17:14:08 | Araq | so ... of course what I just wrote is completely wrong ;-) |
17:14:22 | Araq | what about this: |
17:14:27 | Araq | let y = n |
17:14:36 | Araq | a.add y |
17:15:11 | Araq | this means 'n' does escape, right? so we need to compute a transitive closure of an aliasing relation |
17:15:39 | Peter_ | The problem what I see is that we need to ensure that a reference stays alive in the lambdalifting. If we use a variable from an inner function then there are different copy/reference methods based on where that variable lives. |
17:16:14 | Peter_ | I'm failing to see how this connects to your escape analysis. |
17:16:49 | Peter_ | (Feel free to stop me and continue later, if it is not the good time.) |
17:16:52 | Araq | the lambdalifting (LL) transforms accesses like someCapturedVar into env.someCaptureVar where env is a newly introduced hidden parameter |
17:17:12 | Araq | in other words, we can ignore LL for the discussion :-) |
17:17:30 | Peter_ | Ok. |
17:17:38 | Araq | so we do LL and then we compute the 'escapes' effect. |
17:19:50 | Araq | and what you're interested in is this: transform x.y = z into x.y <- z where <- means the shallow copy ("move") |
17:20:13 | Peter_ | Yes. |
17:20:36 | * | AndChat-235809 joined #nim |
17:20:43 | Araq | this is save if z is not used again and if z is already on the heap |
17:20:45 | Peter_ | If z is on the stack and x is on the heap, then I guess we need to do the copy (because variable x can live longer than z) |
17:21:17 | Araq | z can never be on the stack. it's a seq, it either lives on the heap or in static data |
17:21:43 | Peter_ | In my case I would like to do a shallow copy even if z is reused later. |
17:21:43 | Araq | the dangerous thing we need to protect against is that it doesn't come from static data |
17:22:49 | * | AndChat|235809 quit (Ping timeout: 250 seconds) |
17:22:55 | Araq | but only if 'z' is not written to, right? |
17:23:16 | Peter_ | That's a good question. |
17:23:25 | Peter_ | Having a copy in Rust would prevent 'z' from writing. |
17:23:34 | Peter_ | Do we want to have something similar? |
17:23:54 | Peter_ | In JS you can do anything with copies (the other side). |
17:24:15 | Araq | well I don't know yet. |
17:24:33 | Araq | first problem to tackle: prove it's not from static data |
17:27:06 | Peter_ | I'll think about this question. It sounds safer not to have several pointers to the same data which can modify it, but then how to implement a doubly linked list (I silently jumped from seq to object). |
17:27:50 | Araq | well for general objects it's a pita not to have aliasing |
17:28:14 | Peter_ | It sounds like not an easy question to answer. I understand your motivation about proving something by the compiler, and I fully support anything which can guarantee some nice property. |
17:28:19 | Araq | seqs are special cause you can always wrap them in a (ref) object to get more aliasing freedom |
17:29:08 | Peter_ | About the static data: based on some articles on the internet, it seems like heap is not segmented by static data, or the stack. |
17:29:46 | Peter_ | So if we have the smallest and the largest available memory address of our heap, then by lowest<our pointer<largest check we could say whether it is on heap. |
17:29:51 | Peter_ | Is there any problem with this logic? |
17:29:58 | Araq | don't think about this in terms of address ranges |
17:30:20 | Araq | we have a segmented heap due to the thread local heaps |
17:30:35 | Peter_ | I see. |
17:30:40 | Araq | and it always ends up in non-portable hacks |
17:31:20 | Araq | conceptually we have stack/heap per thread and static readonly shared memory. |
17:31:37 | Araq | (plus the unsafe memory heaps etc...) |
17:31:43 | * | Enamex joined #nim |
17:32:13 | Peter_ | Let's assume that we are in a proc(z: seq), and doing x.y = z inside the proc. |
17:32:55 | Araq | that would be the outer proc for your LL example. |
17:32:56 | Peter_ | Do you want to have 2 implementations of this proc (like "auto" does) based on whether 'z' is on heap or static? |
17:33:23 | Peter_ | The C code would contain only those implementations which are really used. |
17:33:34 | Peter_ | What do you think? |
17:33:52 | Araq | that's a good idea |
17:34:12 | Araq | but how do you know wether 'z' is on the heap or static? |
17:34:20 | Araq | sorry, gotta go. will be back later |
17:34:36 | Peter_ | I'm heading home, being with my family, trying to get back tonight. |
17:34:39 | Peter_ | Bye! |
17:35:35 | Peter_ | (you could know whether it is on heap or static in compile time, we would store that information for each variable. I'm not sure we want to go down on this road, let me think about this.) |
17:39:13 | * | AndChat-235809 quit (Read error: Connection reset by peer) |
17:39:28 | * | AndChat|235809 joined #nim |
17:39:57 | * | Peter_ quit (Ping timeout: 246 seconds) |
17:49:55 | * | davidhq joined #nim |
17:57:45 | * | Enamex quit (Ping timeout: 265 seconds) |
18:01:10 | * | jefus is now known as jefus_ |
18:03:24 | * | jefus_ is now known as jefus |
18:09:56 | * | vendethiel joined #nim |
18:10:16 | * | kniteli quit (Ping timeout: 244 seconds) |
18:15:24 | * | tmm1 joined #nim |
18:24:55 | tmm1 | morning folks |
18:33:30 | OnO | Araq: type Number = enum One = 1, Two = 2, Four = 4 |
18:33:30 | OnO | echo 3.Number #<- Error: internal error: no symbol for ordinal value: 3 |
18:34:02 | OnO | same applies to this string serialization, this should be orginary compiler error, not an internal error |
18:35:54 | OnO | but the problem with $ on enum is that it fails with meaningless message: "internal error: opConv for enum" :) |
18:37:07 | OnO | but this doesn't fail: type Number = enum One = 1, Two = 2, Four = 4; var n = Two; inc n; echo n #<- 3 (invalid data!) |
18:49:40 | * | Matthias247 joined #nim |
18:50:00 | Araq | OnO: ok, this is convincing |
18:58:25 | Araq | dom96: with the Nimscript integration into Nimble we can do nimblePath completely differently :-) |
18:59:16 | Araq | requires "foo >= 1.0" can simply add $nimblepath/foo/$appropriateVersion to the --path |
18:59:36 | Araq | since the compiler sees the requires now too |
19:00:09 | Araq | it doesn't have to add everything in $nimblepath blindly. Much better. |
19:01:10 | Araq | well no. it still doesn't see indirect dependencies :-/ |
19:03:29 | * | BitPuffin quit (Ping timeout: 244 seconds) |
19:09:20 | NimBot | nim-lang/Nim devel 4be6844 Adam Strzelecki [+0 ±1 -0]: vm: Don't fail on unknown enum position to string... 5 more lines |
19:09:20 | NimBot | nim-lang/Nim devel 55bc5d1 Andreas Rumpf [+0 ±1 -0]: Merge pull request #3385 from nanoant/patch/dont-fail-on-unknown-enum-value-to-string... 2 more lines |
19:10:40 | NimBot | nim-lang/Nim devel 9ea99db Reimer Behrends [+0 ±1 -0]: Add option to disable munmap() use in the allocator.... 4 more lines |
19:10:40 | NimBot | nim-lang/Nim devel 1a63e63 Andreas Rumpf [+0 ±1 -0]: Merge pull request #3345 from rbehrends/no-unmap... 2 more lines |
19:14:39 | NimBot | nim-lang/Nim devel 5a00353 Araq [+1 ±3 -2]: fixes #2473; cleanup of some tests |
19:15:42 | Araq | tmm1: I see you're getting up to speed with Nim development :-) |
19:15:50 | Araq | love your work! |
19:16:10 | tmm1 | i'm really enjoying the language |
19:16:39 | NimBot | nim-lang/Nim devel 435fbbc Aman Gupta [+0 ±2 -0]: allow testament/tester to run single file |
19:16:39 | NimBot | nim-lang/Nim devel 2d2f152 Andreas Rumpf [+0 ±2 -0]: Merge pull request #3398 from tmm1/run-single-test... 2 more lines |
19:17:06 | * | vendethiel quit (Ping timeout: 250 seconds) |
19:19:06 | tmm1 | would bitsize be considered "implementation specific" pragma? |
19:19:26 | Araq | yes |
19:23:11 | Araq | OnO: tools/niminst should go away, it's a nimble package now |
19:24:02 | Araq | not sure if our build process knows that though ... |
19:35:55 | * | razaaa quit (Quit: Leaving) |
19:36:35 | * | tmm1 quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
19:55:27 | * | jakesyl_ quit (Read error: Connection reset by peer) |
19:56:05 | * | jakesyl_ joined #nim |
19:56:42 | * | X67r quit (Ping timeout: 268 seconds) |
19:57:40 | * | jakesyl quit (Ping timeout: 272 seconds) |
19:58:12 | * | victor-rene quit (Ping timeout: 246 seconds) |
20:12:50 | * | tmm1 joined #nim |
20:13:00 | * | jakesyl joined #nim |
20:16:02 | OnO | this travis thing is sweeet! |
20:18:20 | OnO | Araq: a poor man's deprecation for modules and procs: https://github.com/nanoant/Nim/blob/patch/rename-rawsockets-to-nativesockets/lib/deprecated/pure/rawsockets.nim |
20:19:08 | Araq | templates for lazy deprecation warnings? that's impressive |
20:19:24 | Araq | you just found a new Nim idiom. |
20:19:39 | * | jakesyl quit (Ping timeout: 240 seconds) |
20:22:07 | * | davidhq quit (Read error: No route to host) |
20:22:23 | * | davidhq joined #nim |
20:24:18 | tmm1 | OnO: s/"}/".}/ |
20:24:34 | * | vendethiel joined #nim |
20:24:49 | OnO | good catch, but AFAIK the trailing dot is optional |
20:25:03 | OnO | I'll fix it anyway, but I tend to forget it |
20:27:52 | tmm1 | does nim have something like rust slices? |
20:30:53 | * | Ven joined #nim |
20:32:52 | * | X67r joined #nim |
20:32:58 | * | jakesyl joined #nim |
20:35:05 | OnO | tmm1: Araq: it seems that CI gives a PR a green even some tests are failing, actually in current devel some tests are failing |
20:35:32 | OnO | maybe we disable these failing tests... or I dunno |
20:35:37 | tmm1 | yea, i was waiting on the suite to be green to start failing the PRs |
20:35:39 | OnO | anyway test suite is damn sllooow |
20:35:46 | tmm1 | yep |
20:35:56 | tmm1 | gonna look at running tests in parallel |
20:36:11 | tmm1 | Araq mentioned a separate acceptance suite that doesn't run all the tests too |
20:36:20 | Araq | I have a script that just does tests the "basics" |
20:36:26 | OnO | yeah that would be cool |
20:36:33 | OnO | btw. is CI mutlicore? |
20:37:16 | Araq | my definition of basics is: categories: |
20:37:38 | Araq | types, typerel, metatype, generics, macros, template, vm, stdlib, array, tuples |
20:38:17 | Araq | and then I test specific things when I touched specific things (e.g. GC) |
20:40:22 | OnO | just wonder if we can make them any quicker, maybe we can turn off optimizations? eg. cc with O0 |
20:42:18 | tmm1 | wouldn't that make it slower |
20:42:52 | Araq | the compiler doesn't optimize most tests at all |
20:43:08 | Araq | it's already O0 or whatever gcc's default is |
20:46:22 | Araq | you can make the tester run the tests in parallel with a bit of effort |
20:46:24 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
20:47:10 | Araq | not sure if it's worth it. I'm also not sure why travis needs to give us instant feedback |
20:47:18 | * | Enamex joined #nim |
20:47:28 | Araq | it's a build bot. who cares if it runs for an hour? |
20:48:22 | OnO | hmm... maybe then just parse on cc without codegen and link |
20:48:40 | OnO | unless the tests require to be run, not just tested whether it compiles |
20:49:09 | Araq | most tests specify some output and need to be run |
20:50:05 | OnO | yeah, you're right |
20:50:09 | OnO | damn |
20:50:13 | Araq | what you're mostly complaining about is - IMHO - that we have a high quality test suite. |
20:50:50 | Araq | quality cannot be measured in "it sucks, 40 tests out of 1000 fail". |
20:51:10 | OnO | nah, it is good that there are so many tests, I like it very much |
20:51:39 | OnO | I just wonder if there's a way to speed them a bit, just to get CI response quicker then you make a PR |
20:51:40 | tmm1 | its nice to have fast tests and quicker feedback |
20:52:07 | Araq | tmm1: yes, so split it in "quick tests" and "stress tests" |
20:52:31 | tmm1 | yea i think that's the best solution, your list of categories is a good start |
20:52:48 | tmm1 | maybe ./koch quicktest |
20:53:05 | tmm1 | in the ruby vm for instance there is `make test` and `make test-all` |
20:53:36 | tmm1 | i'm trying to get more familiar with testament so i can figure out how to make it parallel |
20:53:49 | * | jakesyl quit (Ping timeout: 246 seconds) |
20:54:29 | OnO | another idea, compile all runnable tests into single executable at run it at once |
20:54:52 | Araq | OnO: we are doing this. I often extend existing tests. |
20:55:12 | Araq | but if suddenly a large test fails, it kinda sucks to find the problem |
20:55:34 | Araq | however we could merge and only if it fails, run the splitted version |
20:55:48 | Araq | that's hard to implement though |
20:56:16 | Varriount | Oh, are we going with Travis CI? |
20:56:33 | Varriount | I was just about to update buildbot with some new Github integration code. |
20:57:07 | Araq | Varriount: buildbot needs to build releases. I'm sorry I sound like a broken record now. |
20:57:07 | gmpreussner|work | whatever you decide, let me know, so i can update my ARM builders |
20:57:36 | Araq | I am unwilling to do yet another manual release cycle. |
20:58:05 | Varriount | Araq: Ok, I'll work on that then. |
20:58:37 | OnO | how far is ./koch to generate packaged binaries for target platform? |
20:59:16 | OnO | btw. we can cross build for many platforms on linux |
20:59:38 | Varriount | OnO: `koch nsis` compiles and runs niminst, which requires NSIS to generate the installer for Windows. |
21:00:06 | OnO | Varriount: would it work through wine? |
21:00:31 | Varriount | OnO: No idea, however I would prefer to build it via the buildbots |
21:01:20 | Araq | OnO: we don't know. and I hate the idea of hunting a bug that just disappears on a real Windows machine. |
21:01:52 | Araq | Wine fails for enough software so that I don't trust it. |
21:02:17 | OnO | yeah, I understand, but does this buildbot require a machine for each platform/ |
21:02:20 | OnO | ? |
21:02:33 | Varriount | OnO: Looks at buildbot.nim-lang.org |
21:02:37 | Varriount | *Look |
21:02:47 | * | OnO looking there |
21:03:12 | * | AforAvi joined #nim |
21:03:12 | * | AforAvi quit (Changing host) |
21:03:12 | * | AforAvi joined #nim |
21:03:15 | OnO | omg most of them are offline :) |
21:03:29 | OnO | I volunteer a OS X builder |
21:03:43 | gmpreussner|work | uh oh |
21:03:51 | OnO | I have an OS X server at university doing almost nothing |
21:03:54 | Varriount | gmpreussner|work: ? |
21:04:06 | gmpreussner|work | my ARM builders are all showing as offline |
21:04:11 | gmpreussner|work | i'll check when i get home tonight :) |
21:04:19 | Varriount | gmpreussner|work: Yes. I thought I sent you an email. |
21:04:39 | Araq | we have the builders. but it's a bit of a chicken and egg problem. |
21:04:44 | gmpreussner|work | i've been too busy this week. we're still crunching :| |
21:04:50 | Varriount | gmpreussner|work: Ah. |
21:05:06 | Araq | they don't do anything critical for us, so we don't punch people when they get offline |
21:05:19 | Araq | Varriount: correct me if I'm wrong. |
21:05:36 | Varriount | Araq: Well, nothing critical *yet* |
21:05:44 | Araq | yes, exactly. |
21:05:57 | OnO | Araq: you do have OS X builder? but there are absolutely no builds for Mac |
21:06:00 | Varriount | I have bits and pieces for test comparison, I'm just trying to figure out how to string them together. |
21:06:07 | Varriount | OnO: No we don't. |
21:06:47 | Araq | OnO: I have a mac I could install the builder on, but I prefer to not do it. |
21:06:59 | * | jakesyl joined #nim |
21:07:14 | Varriount | Araq: Too bad we can't install the build slave on an ipod. |
21:07:28 | Araq | Varriount: oh yeah, test diffs is of course also important. |
21:07:28 | OnO | what are dependencies? is it some kind of python/ruby/ service? |
21:07:44 | Varriount | OnO: Python based. |
21:08:04 | Varriount | OnO: http://buildbot.net/ |
21:08:29 | Varriount | OnO: Aside from that, the machine will need Python 2.7, gcc, and git. |
21:08:52 | Araq | on mac, clang instead of gcc |
21:08:54 | OnO | yeah, this is installed on our server |
21:08:58 | OnO | yeah, clang |
21:09:13 | Araq | on windows, NSIS |
21:09:22 | Araq | for the PDF docs pdflatex |
21:09:31 | Araq | but we usually don't build these |
21:09:54 | OnO | in fact for OS X we could build .pkg packages instead of .zip/.tar |
21:10:01 | OnO | we nice license, logo & stuff |
21:10:13 | OnO | same as nodejs for example |
21:10:25 | Araq | go ahead and do it. |
21:10:32 | Varriount | Araq: Making a release build configuration shouldn't take too long. Most of the work can be copied from the existing build configuration. |
21:11:10 | * | PyHedgehog quit (Quit: Page closed) |
21:11:22 | Araq | Varriount: well, strictly speaking, we need to *test* the installer on a vanilla environment |
21:11:36 | Araq | it's not enough to produce the installer. |
21:11:52 | Varriount | Araq: That... might take a bit more effort. |
21:12:09 | Araq | but we can do that later. |
21:12:24 | Araq | anything is better than the nothing that we currently have. |
21:12:28 | OnO | Araq: will do it then, that's pretty easy |
21:12:35 | OnO | done it for some other software already |
21:12:42 | Araq | OnO: patch niminst please. |
21:12:50 | Araq | so that niminst can generate Nim installers |
21:12:55 | Araq | for Mac |
21:12:58 | OnO | as for buildslave do I need to know anything paricular? |
21:13:05 | OnO | how buildslave connects to master? |
21:13:22 | Varriount | OnO: I'll set up and PM you the details. |
21:13:33 | OnO | great |
21:15:35 | Araq | we also need a bot that checks for 404s on our produced docs |
21:16:18 | * | yglukhov quit (Remote host closed the connection) |
21:16:43 | OnO | does niminst take version information from git? |
21:16:53 | OnO | eg. from git describe? |
21:16:53 | * | Peter_ joined #nim |
21:17:06 | Varriount | OnO: What is the command used to start python 2.7 on Mac? |
21:17:24 | Araq | no, I pass it like so --var:version=0.2.1 via the command line |
21:17:30 | OnO | $ python --version |
21:17:30 | OnO | Python 2.7.10 |
21:17:55 | Araq | so it doesn't need a hardcoded version anywhere and also doesn't depend on git |
21:18:16 | Varriount | OnO: And what architecture is the machine running? |
21:18:33 | Varriount | (x86, x64, PowerPC, etc) |
21:18:46 | OnO | Varriount: OSX are running only x64 since few years |
21:18:57 | OnO | there is absolutely no point to do 32-bit releases |
21:19:21 | Varriount | OnO: Well, yes, but I have no idea what model server you have. |
21:20:06 | OnO | Intel(R) Core(TM) i7-3615QM CPU @ 2.30GHz |
21:20:14 | OnO | OS X 10.10.5, soon 10.11 |
21:20:16 | Varriount | OnO: Ok, thanks. |
21:21:21 | Varriount | OnO: Does the server have 'sh'? |
21:21:25 | OnO | 16 GB RAM, Mac mini server model 2012 |
21:21:32 | OnO | yeah |
21:21:33 | OnO | bash |
21:21:46 | Varriount | OnO: Ok. |
21:22:03 | OnO | it has bash, python, ruby, git, cc... everything, it there's something missing I can install it |
21:22:10 | OnO | except Windows :P |
21:22:13 | Varriount | Sorry, I have to give the builder configuration a few details about the machine, so that it runs commands correctly. |
21:23:10 | Araq | OnO: you wouldn't believe how many people in Germany run Windows on their macs. |
21:23:29 | * | vendethiel quit (Quit: q+) |
21:23:34 | Araq | in fact ... I did some inofficial studies. |
21:23:49 | Araq | it was 100%. |
21:23:54 | OnO | Araq: that's really lame, just to have an Apple logo probably |
21:24:15 | Araq | no, the hardware is good, especially the batttery life |
21:24:29 | Araq | it still lacks a DEL key though. |
21:24:36 | OnO | yeah, battery life is great |
21:24:48 | OnO | but hw guts are pretty weak |
21:24:58 | OnO | SSD are damn fast though |
21:25:10 | Araq | I cannot stand the software. |
21:25:14 | OnO | DEL key is Fn+Delete :) |
21:25:24 | OnO | where normal Delete is a Windows backspace |
21:25:29 | Araq | I know. but it's a philosophical thing |
21:25:49 | OnO | pff... it has no Windows key too :P |
21:26:05 | Araq | dumbing things down by removing features is the cheap. |
21:26:18 | * | jakesyl quit (Ping timeout: 240 seconds) |
21:26:22 | Araq | True simplicity comes from unnoticable features. |
21:27:37 | Araq | the freaking Finder cannot even do 'cut and paste'. |
21:28:19 | Araq | I'm not a dog. I can handle the difference between cut and copy, thanks. |
21:29:17 | Araq | OnO: nobody asked for the Windows key. Nor for the freaking Apple key. ;-) |
21:30:12 | * | nim-buildbot quit (Quit: buildmaster reconfigured: bot disconnecting) |
21:31:17 | OnO | Araq: now complain a bit on Linux, then on FreeBSD... finally write your own OS :> |
21:32:30 | * | Peter_ quit (Quit: Page closed) |
21:32:45 | Araq | once I'm rich and Nim version 2 is out, I will do that. |
21:33:32 | OnO | hehe... my wife just asked who am I typing to so eagerly.. I said your name |
21:33:50 | OnO | she said: Oh I know, that's the guy who compiled >>everything<<. |
21:34:05 | Araq | what? |
21:35:00 | Araq | why does she know me? |
21:35:03 | OnO | I tried to explain here once what's Nim, and this ---^ is how she understands that :) |
21:35:33 | Araq | ok ... I see |
21:36:06 | Araq | speaking of which, now that nimscript is kicking, I don't compile everything anymore |
21:36:25 | Varriount | Araq: Hm? |
21:36:30 | Araq | installation of nimble is done via nimscript now :-) |
21:36:34 | * | AndChat|235809 quit (Read error: Connection reset by peer) |
21:36:35 | * | Trustable quit (Remote host closed the connection) |
21:36:43 | * | AndChat|235809 joined #nim |
21:37:43 | Varriount | Hello AndChat|235809 |
21:38:13 | Araq | Varriount: I run my nim code in the VM |
21:38:29 | Varriount | Araq: What, using one of the unofficial commands? |
21:38:36 | AndChat|235809 | Hello Varriount! |
21:39:34 | * | jakesyl joined #nim |
21:39:52 | Araq | Varriount: no, I use "nim e", not "nim secret" :P |
21:40:04 | Araq | but perhaps "e" is not documented yet |
21:44:02 | * | AndChat|235809 quit (Read error: Connection reset by peer) |
21:44:20 | * | AndChat|235809 joined #nim |
21:45:42 | * | elrood quit (Quit: Leaving) |
21:46:30 | * | AndChat|235809 quit (Read error: Connection reset by peer) |
21:46:53 | * | AndChat|235809 joined #nim |
21:46:57 | OnO | Araq: one thing about niminst, and ./install.sh is that on first run it does compile some stuff, so if you do ./bootstrap.sh && sudo ./install.sh you end up with some root owned files in your working directory |
21:47:00 | OnO | very annoying |
21:48:45 | Araq | I don't use ./install.sh, so *shrug* |
21:50:23 | OnO | yeah, but ./koch install generates ./install.sh |
21:51:10 | * | AndChat-235809 joined #nim |
21:51:11 | * | AndChat|235809 quit (Read error: Connection reset by peer) |
21:53:49 | OnO | okay, that's Philip Wernersbach baby, I should ask him |
21:53:59 | Araq | I don't use ./koch install either |
21:54:11 | Araq | in fact I don't know why it exists |
21:54:31 | OnO | so, how do you install Nim then out of source build? |
21:54:41 | tmm1 | yea i'm curious what the right way to install is as well |
21:54:48 | Araq | I just add it to my PATH |
21:54:57 | Araq | and keep it in my home dir |
21:55:05 | * | AndChat-235809 quit (Read error: Connection reset by peer) |
21:55:17 | * | AndChat|235809 joined #nim |
21:55:17 | * | AndChat|235809 quit (Client Quit) |
21:55:34 | * | AndChat|235809 joined #nim |
21:55:34 | Araq | why would I distribute it over /usr/lib/bananajoe with sudo? that's crazy |
21:56:15 | OnO | I dunno, but that's the way usually stuff is installed on unix |
21:56:16 | * | AndChat|235809 quit (Read error: Connection reset by peer) |
21:56:18 | * | AndChat-235809 joined #nim |
21:56:25 | OnO | especially when you want it to be available systemwide |
21:57:29 | * | AndChat|235809 joined #nim |
21:57:29 | * | AndChat-235809 quit (Read error: Connection reset by peer) |
21:59:21 | Araq | yeah so you give *some* version to everybody instead. for "sharing" purposes. |
21:59:54 | * | AndChat|235809 quit (Read error: Connection reset by peer) |
22:00:02 | Araq | that might have made sense in the 70ies when you got less disk space than you have cpu cache now |
22:00:06 | * | AndChat|235809 joined #nim |
22:01:36 | * | AndChat-235809 joined #nim |
22:01:36 | * | AndChat|235809 quit (Read error: Connection reset by peer) |
22:03:23 | * | AndChat|235809 joined #nim |
22:03:23 | * | AndChat-235809 quit (Read error: Connection reset by peer) |
22:09:20 | * | AforAvi quit (Quit: Leaving.) |
22:09:35 | * | AndChat|235809 quit (Read error: Connection reset by peer) |
22:09:54 | * | AndChat|235809 joined #nim |
22:09:58 | Varriount | Araq: The 70's called. They want their filesystem hierarchies back. |
22:10:21 | * | AforAvi joined #nim |
22:12:24 | Araq | Varriount: I want DOS back. :-) everything was so easy back then ... what do you mean I have no EMS memory left? how many different types of memory do exist? |
22:13:25 | reactormonk | Araq, you gotta love nix then |
22:14:30 | Araq | who is General Failure? And why is he reading my hard disk? |
22:15:06 | Varriount | Araq: Don't forget near and far pointers |
22:16:38 | * | kniteli joined #nim |
22:20:39 | Araq | and the lovely 8.3 filenames! |
22:21:27 | Araq | makes you wonder why 12 bytes is a magic size. |
22:21:45 | Araq | it's not a power of two. what's going on here? |
22:22:51 | Araq | 11 bytes, if you don't use a length byte or a sentinel |
22:24:32 | tmm1 | would you use a threadpool to parallelize testament? |
22:25:00 | * | FedeOmoto quit (Quit: Leaving) |
22:25:18 | OnO | good night guys, have a sweet dreams about 5,25 inch floppy disks with nice and soft humming sounds of their drives |
22:25:27 | Araq | tmm1: hell no, use osproc.execProcesses |
22:25:31 | Araq | OnO: good night! |
22:25:36 | * | boopsies is now known as boopsiesisaway |
22:26:54 | Araq | tmm1: koch docs uses a parallel build. you can look at that for inspiration |
22:27:43 | * | BitPuffin|osx joined #nim |
22:31:36 | Varriount | Araq: You might enjoy reading the "The Old New Thing" (the book, not the blog). |
22:32:15 | Varriount | Part of it is an entire section about people mis-using and abusing undocumented features in DOS |
22:32:19 | * | Sornaensis quit (Excess Flood) |
22:32:50 | * | Sornaensis joined #nim |
22:33:04 | * | Araq doesn't read books. |
22:33:09 | * | Araq writes books. |
22:33:10 | * | kniteli quit (Remote host closed the connection) |
22:34:11 | * | Varriount wonders why he commented out the CPP compiler buildstep |
22:34:28 | Araq | cause it fails now |
22:34:33 | Varriount | Ah. |
22:34:46 | Araq | and we didn't realize |
22:34:53 | Araq | cause you disabled the check |
22:35:02 | Araq | chicken and egg :P |
22:35:04 | Varriount | Wait, what? |
22:35:22 | Araq | it used to not work, then it worked, now I think it fails again |
22:35:58 | Varriount | Araq: So... do you want me to enable it? I could make it not count towards the final status of the build. |
22:36:29 | Araq | yes please |
22:37:02 | Varriount | Araq: Do you want me to make it not count towards the final status? |
22:37:04 | * | Enamex quit (Quit: Leaving) |
22:37:11 | Araq | for now, yes |
22:37:20 | Araq | but it will soon always work *cough* |
22:43:21 | * | Kingsquee joined #nim |
22:45:38 | * | Demon_Fox joined #nim |
22:55:16 | Varriount | Araq: You want a debug version of the compiler included in the release? |
22:55:39 | Araq | nah, we have 'koch temp' for that |
22:55:56 | Varriount | Yay, less work for me. |
22:57:01 | * | Kingsquee quit (Ping timeout: 244 seconds) |
22:57:20 | Araq | Varriount: want some motivation? ;-) |
22:58:17 | tmm1 | so right now we have: for i in ..: testSpec(...), and testSpec() will call call startProcess() to compile and execCmdEx() to execute |
22:58:17 | Araq | "it's 1.10.2015 today and nim 0.12.0 is still not out. get it out. make the builder produce the installers. make it work, hack it together! you can do it!" |
22:59:39 | Varriount | I think I recall reading somewhere that running test cases in parallel was a bad idea... |
22:59:48 | Varriount | But that was probably for test cases with side effects. |
23:00:09 | Araq | Varriount: well you need to give every test a separate nimcache |
23:00:48 | Varriount | Araq: Ever thought of having the compiler create a lock file? |
23:00:58 | Araq | no, never. |
23:01:19 | Araq | I'd rather generate a GUID as a nimcache directory |
23:01:35 | Araq | before introducing compiler locks |
23:02:08 | Varriount | Of course, there's always that one-in-a-million chance that you generate identical guids |
23:02:44 | Araq | nah |
23:02:51 | Varriount | ? |
23:02:53 | * | bjz quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
23:03:09 | Araq | your hardware melted under your fingers before that happened |
23:05:20 | Araq | quantum physics that there is a tiny chance for a ball to jump back from the floor onto your table. |
23:05:28 | Araq | *tells us |
23:06:12 | Araq | and now see how often that has happened in reality. |
23:08:19 | * | Senketsu joined #nim |
23:09:25 | Varriount | Araq: We're also compiling all the bundled tools, right? |
23:10:38 | Araq | Varriount: that's how I did last time |
23:10:40 | Araq | https://gist.github.com/Araq/d71612cabcbcd3be89a1 |
23:11:01 | Varriount | Ok, will use that as a basis. |
23:17:47 | * | zama quit (Quit: leaving) |
23:19:01 | * | Matthias247 quit (Read error: Connection reset by peer) |
23:19:24 | * | zama joined #nim |
23:22:35 | tmm1 | how about asyncdispatch for processes |
23:28:05 | Varriount | tmm1: Does asyncdispatch even support processes? |
23:28:30 | tmm1 | not right now, but i'm asking if it could |
23:29:10 | * | jaco60 quit (Quit: Leaving) |
23:30:30 | Varriount | tmm1: Well, it could. Process streams are akin to sockets and file handles. |
23:34:21 | Araq | fwiw I made osproc.select work on windows |
23:35:00 | Araq | tmm1: but seriously osproc.runProcesses has been designed for this thing. it only starts the processes when a cpu is ready for it |
23:35:28 | Araq | *execProcesses |
23:35:54 | tmm1 | to use that i'd have to collect up all the command invocations right? |
23:36:24 | Araq | right, or at least enough commands |
23:37:03 | Araq | it's hard to parallelize the tester. |
23:37:45 | Araq | fortunately you don't have to do it, you can simply run the tester in parallel, giving each process a different category to test |
23:37:57 | tmm1 | yea that would be a lot easier |
23:38:49 | Araq | and of course, "easy" here means "reliable". the last thing we need is a fast but unreliable tester. |
23:39:42 | ryu0 | accuracy vs speed. |
23:46:01 | tmm1 | echo types typerel metatype generics macros template vm stdlib array tuples | xargs -n1 -P2 tests/testament/tester c |
23:46:19 | tmm1 | works well |
23:46:37 | Araq | yeah each category already gets its own nimcache |
23:47:08 | Araq | add "lib" to the essential categories please |
23:52:15 | Varriount | Araq: Wait, do you want the release build configuration to generate documentation & installer, and actually upload them to the website directory? |
23:52:52 | Araq | not this time |
23:53:16 | Araq | I can push it on the server on my own, that's not what takes most of the time |
23:53:19 | * | davidhq quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
23:54:11 | Araq | ensuring that the installers work on 3 OSes at the same time all having the same version of Nim is the hard part |
23:55:22 | Varriount | I might have to do something finicky with the registry to isolate the changes the Windows installers make.installers |
23:55:34 | tmm1 | "rerun with --parallelBuild:1 to see the error message" can i make this default in testament so its easier to debug test failures? |
23:56:06 | Araq | tmm1: no that loses parallelism. |
23:56:13 | * | nim-buildbot quit (Quit: buildmaster reconfigured: bot disconnecting) |
23:56:21 | Araq | you could make the tester re-run such a test though. |
23:56:30 | Araq | should happen rarely |
23:56:36 | * | nim-buildbot quit (Client Quit) |
23:56:50 | tmm1 | unhandled exception: database is locked [EDb] |
23:57:00 | tmm1 | multiple tester processes trying to write to same sqlitedb |
23:57:09 | tmm1 | Araq: re-running makes sense |
23:57:22 | Araq | Varriount: don't overdo this please. you just have to use a setup.bat that sets %PATH% to some minimum |
23:58:03 | Araq | tmm1: yeah well. you can make them use different DBs or disable the sqlite stuff per command line argument |
23:58:33 | Araq | it's not essential for travis |
23:59:15 | Araq | we could also use a real DB that can handle concurrent write ops but these tend to be messy to setup |