00:00:33 | * | flaviu quit (Ping timeout: 240 seconds) |
00:01:20 | * | brson_ quit (Ping timeout: 255 seconds) |
00:01:52 | filwit | dom96: why is jester not in babel? |
00:04:22 | * | flaviu joined #nimrod |
00:04:29 | filwit | is babel only for wrappers and helpers? I was under the impression it was just a general-purpose "nim related" package list |
00:06:10 | filwit | err... wait it is in Babel... it's just messing up when i try and install it |
00:06:37 | filwit | nevermind... i think i misspelled jester originally, my bad |
00:16:20 | * | bogen joined #nimrod |
00:27:22 | * | EXetoC quit (Quit: WeeChat 0.4.3) |
00:30:39 | * | seubert_ is now known as seubert |
00:31:41 | * | saml_ joined #nimrod |
00:44:06 | * | will quit (Ping timeout: 250 seconds) |
00:45:59 | * | xenagi joined #nimrod |
01:00:33 | * | flaviu quit (Remote host closed the connection) |
01:01:51 | * | flaviu joined #nimrod |
01:07:07 | * | q66 quit (Quit: Leaving) |
01:34:53 | * | Boscop quit (Ping timeout: 240 seconds) |
01:35:30 | * | flaviu quit (Remote host closed the connection) |
01:36:38 | * | flaviu joined #nimrod |
01:48:46 | * | icebattle quit (*.net *.split) |
01:57:37 | * | icebattle joined #nimrod |
02:04:54 | * | filwit quit (Quit: Leaving) |
02:06:13 | * | flaviu quit (Remote host closed the connection) |
02:09:12 | * | flaviu joined #nimrod |
02:11:48 | * | darkf_ joined #nimrod |
02:13:24 | * | Boscop joined #nimrod |
02:14:14 | * | darkf quit (Ping timeout: 250 seconds) |
02:16:25 | * | darkf_ is now known as darkf |
02:20:17 | * | flaviu quit (Remote host closed the connection) |
02:21:14 | * | flaviu joined #nimrod |
02:54:39 | * | flaviu quit (Remote host closed the connection) |
02:55:34 | * | flaviu joined #nimrod |
02:56:01 | * | flaviu quit (Remote host closed the connection) |
02:56:59 | * | flaviu joined #nimrod |
03:45:10 | * | flaviu quit (Remote host closed the connection) |
03:46:17 | * | flaviu joined #nimrod |
03:46:55 | * | gsingh93 joined #nimrod |
03:51:39 | * | flaviu quit (Ping timeout: 244 seconds) |
03:59:47 | * | saml_ quit (Quit: Leaving) |
04:02:16 | * | ARCADIVS joined #nimrod |
04:10:07 | * | Boscop quit (Changing host) |
04:10:08 | * | Boscop joined #nimrod |
04:12:53 | * | bjz quit (Ping timeout: 244 seconds) |
04:27:06 | * | xenagi quit (Read error: Connection reset by peer) |
05:09:35 | * | gkoller joined #nimrod |
05:20:00 | * | zling__ quit (Ping timeout: 260 seconds) |
05:22:54 | * | kokozedman joined #nimrod |
05:23:38 | kokozedman | hi all |
05:23:56 | * | zling__ joined #nimrod |
05:27:13 | kokozedman | what's the release model for Nimrod, is there a roadmap towards 1.0? |
05:40:45 | * | TylerE quit (Ping timeout: 240 seconds) |
05:41:00 | * | CARAM quit (Ping timeout: 260 seconds) |
05:41:38 | * | TylerE joined #nimrod |
05:42:10 | * | CARAM joined #nimrod |
05:46:31 | * | gkoller_ joined #nimrod |
06:03:20 | * | filwit joined #nimrod |
06:04:05 | * | filwit quit (Client Quit) |
06:09:43 | * | gsingh93 quit (Quit: Connection closed for inactivity) |
06:11:40 | * | gkoller quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
06:12:03 | * | zling__ quit (Ping timeout: 240 seconds) |
06:14:33 | * | zling__ joined #nimrod |
06:42:15 | * | kshlm joined #nimrod |
07:03:04 | * | kunev joined #nimrod |
07:28:32 | Araq | kokozedman: https://github.com/Araq/Nimrod/wiki/Roadmap |
07:31:25 | * | kokozedman quit (Ping timeout: 246 seconds) |
07:46:18 | * | kokozedman joined #nimrod |
07:46:33 | * | flyx quit (Quit: I'm outta here) |
07:46:59 | kokozedman | Araq: can you point to me an example of using dynlib? I'd like to get a nanoseconds time resolution that calls clock_gettime() on Linux |
07:47:32 | Araq | lib/system/timers.nim wraps it iirc |
07:47:49 | Araq | 'dynlib' is everywhere, learn how to grep ;-) |
07:48:00 | Araq | or how to use the docs |
07:50:09 | kokozedman | alright, thanks for the heads up |
07:50:33 | Araq | or how to use c2nim |
07:50:39 | Araq | ;-) |
08:03:14 | NimBot | Araq/Nimrod devel b5248d9 Araq [+0 ±3 -0]: fixes #1143 |
08:03:25 | Araq | yay, one showstopper bug down! |
08:08:29 | NimBot | Araq/Nimrod devel 4708ceb Araq [+1 ±0 -0]: fixes #592 |
08:09:29 | Araq | yay, one showstopper bug down! |
08:13:11 | * | Ven joined #nimrod |
08:59:43 | * | flyx joined #nimrod |
09:02:14 | * | ARCADIVS quit (Quit: WeeChat 0.4.3) |
09:12:19 | * | kunev_ joined #nimrod |
09:16:10 | * | kunev quit (Ping timeout: 264 seconds) |
10:01:10 | * | Ven quit (Quit: Textual IRC Client: www.textualapp.com) |
10:07:55 | * | Ven joined #nimrod |
10:16:43 | * | bjz joined #nimrod |
10:17:57 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
10:37:41 | * | Ven joined #nimrod |
10:46:27 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
11:00:43 | * | Fr4n quit (Ping timeout: 255 seconds) |
11:14:07 | * | Fr4n joined #nimrod |
11:40:30 | * | ome joined #nimrod |
11:43:43 | * | Fr4n quit (Ping timeout: 272 seconds) |
11:55:42 | * | Fr4n joined #nimrod |
11:58:33 | * | Trustable joined #nimrod |
12:09:36 | * | willwillson joined #nimrod |
12:25:26 | * | kshlm quit (Quit: Konversation terminated!) |
12:37:16 | * | saml_ joined #nimrod |
12:53:18 | * | saml_ quit (Ping timeout: 250 seconds) |
13:04:44 | * | darkf quit (Quit: Leaving) |
13:07:14 | * | saml_ joined #nimrod |
13:20:16 | * | saml_ quit (Ping timeout: 250 seconds) |
13:33:32 | * | gkoller_ quit (Ping timeout: 245 seconds) |
13:44:51 | * | Fr4n quit (Ping timeout: 246 seconds) |
13:59:51 | * | bogen quit (Quit: Leaving.) |
14:02:51 | * | woodgiraffe joined #nimrod |
14:43:35 | * | nande joined #nimrod |
14:46:36 | * | Jehan_ joined #nimrod |
15:30:13 | * | kokozedman quit (Ping timeout: 246 seconds) |
15:33:49 | * | gsingh93 joined #nimrod |
15:53:12 | * | nueva joined #nimrod |
15:53:21 | * | nueva left #nimrod (#nimrod) |
15:55:45 | * | Kelet quit (*.net *.split) |
16:03:54 | * | Kelet joined #nimrod |
16:07:18 | * | brson joined #nimrod |
16:08:14 | * | Boscop_ joined #nimrod |
16:11:58 | * | Boscop quit (Ping timeout: 264 seconds) |
16:19:04 | * | kunev_ quit (Quit: leaving) |
16:20:55 | * | bjz quit (Read error: Connection reset by peer) |
16:21:09 | * | bjz joined #nimrod |
16:29:38 | * | Jesin quit (Quit: Leaving) |
16:38:25 | * | Jesin joined #nimrod |
16:39:17 | * | q66 joined #nimrod |
16:50:09 | * | ARCADIVS joined #nimrod |
16:52:49 | * | Boscop_ is now known as Boscop |
16:52:56 | * | Boscop quit (Changing host) |
16:52:57 | * | Boscop joined #nimrod |
16:56:26 | * | bjz quit (Read error: Connection reset by peer) |
16:56:45 | * | bjz joined #nimrod |
16:58:28 | * | OrionPK quit (Ping timeout: 246 seconds) |
17:03:09 | * | Demos joined #nimrod |
17:11:22 | * | bjz_ joined #nimrod |
17:11:27 | * | bjz quit (Read error: Connection reset by peer) |
17:15:59 | dom96 | hi |
17:18:29 | * | kokozedman joined #nimrod |
17:24:07 | kokozedman | how can I have the compiled binary in another directory other than the .nim files? like the idea of BUILD directory different from the SRC directory |
17:24:51 | dom96 | you can use the --out param I think |
17:26:19 | * | Ven joined #nimrod |
17:26:25 | * | kunev joined #nimrod |
17:26:47 | kokozedman | ah, ok, I didn't notice the --advanced help flag ... --nimcache:PATH is also what I'm looking for. thanks dom96 |
17:26:59 | * | Boscop_ joined #nimrod |
17:28:45 | Araq | dom96: I found the codegen bug :-) |
17:29:39 | * | superfunc joined #nimrod |
17:29:47 | superfunc | hey everybody |
17:29:57 | Araq | hi superfunc |
17:30:29 | dom96 | Araq: good job |
17:30:38 | * | Boscop quit (Ping timeout: 250 seconds) |
17:30:42 | superfunc | Any large changes in the last couple of weeks? I've been moving across the country so I haven't really been able to keep up |
17:32:00 | Araq | sure, async/await is now quite stable, parallel+spawn are making progress, bugs are getting fixed, we'll rename the language and I'm cutting features for v1.0 |
17:32:51 | superfunc | What are we considering renaming it to? |
17:33:00 | Araq | Nim |
17:33:04 | superfunc | Neat |
17:33:51 | superfunc | Thanks for all the work on it guys, the language is such a pleasure to work with. |
17:34:20 | * | io2 joined #nimrod |
17:34:56 | * | Boscop_ is now known as Boscop |
17:34:57 | * | Boscop quit (Changing host) |
17:34:58 | * | Boscop joined #nimrod |
17:39:44 | * | Ven quit (Ping timeout: 255 seconds) |
17:40:00 | Araq | superfunc: thanks. now please consider to submit something for Babel |
17:43:35 | Araq | brb |
17:45:54 | superfunc | Araq: I have 2-3 things planned, moving just threw off my time frame. Rest assured, they will come out soonish. |
17:47:07 | * | Ven joined #nimrod |
18:06:48 | * | Fr4n joined #nimrod |
18:11:41 | Araq | Varriount: can you work on #1491 please? |
18:12:55 | Araq | try these things: figure out why they are not annotated with __fastcall / N_NIMCALL |
18:13:08 | Araq | add an explicit 'ret' instruction to the inline asm |
18:13:26 | Araq | if all fails, deactivate the asm version for x86 vcc |
18:14:02 | Skrylar | today i learned that nimrod doesn't even want tabs when they're used for aligning things |
18:17:53 | * | shodan45 joined #nimrod |
18:18:11 | Araq | well yes, there is a trick to enable tabs, but I won't show you |
18:18:48 | Skrylar | i just shove M-x untabify through emacs, i just thought it was weird that it doesn't even want tabs doing their original function |
18:18:49 | Skrylar | lol |
18:19:51 | NimBot | Araq/Nimrod devel 5a2bea7 Araq [+0 ±1 -0]: fixes #1445 |
18:22:16 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
18:25:55 | Skrylar | speaking of that |
18:26:07 | Skrylar | i need to look up the file save hook; i know you can set it to do that automatically |
18:26:32 | * | gkoller joined #nimrod |
18:32:59 | Araq | no idea of what you're talking about |
18:47:52 | * | Ven joined #nimrod |
18:49:40 | * | ARCADIVS quit (Quit: WeeChat 0.4.3) |
19:05:15 | * | Boscop_ joined #nimrod |
19:06:42 | * | brson quit (Ping timeout: 260 seconds) |
19:08:44 | * | Boscop quit (Ping timeout: 244 seconds) |
19:10:34 | Araq | what do we do with https://github.com/Araq/Nimrod/issues/1337 ? |
19:10:49 | Araq | I can think of another crazy symbol lookup rule ... |
19:16:34 | NimBot | Araq/Nimrod devel 9c0d25d Dominik Picheta [+0 ±1 -0]: Fixes docgen. |
19:18:08 | NimBot | Araq/Nimrod devel 1deb982 Araq [+1 ±1 -0]: fixes #1420 |
19:18:08 | NimBot | Araq/Nimrod devel e935a35 Araq [+0 ±1 -0]: fixes #1380 |
19:18:08 | NimBot | Araq/Nimrod devel 7ef076a Araq [+0 ±1 -0]: Merge branch 'devel' of https://github.com/Araq/Nimrod into devel |
19:18:59 | * | Boscop__ joined #nimrod |
19:22:32 | * | Boscop_ quit (Ping timeout: 250 seconds) |
19:24:45 | * | Boscop__ quit (Ping timeout: 240 seconds) |
19:34:44 | Araq | hmm what's a good name for "dumbed down type"? |
19:35:46 | * | brson joined #nimrod |
19:37:50 | Skrylar | depends on what the context is |
19:38:12 | Skrylar | a keyword, a mneumonic device for documentation, ... |
19:39:13 | Araq | the context is an internal identifier in the compiler |
19:40:32 | dom96 | Araq: What's better: 'await x and y' or 'await x + y'? |
19:40:37 | Araq | the compiler needs to be understandable by 16 year old guys who have never looked at other language implementations and so blame me for everything they don't understand |
19:41:33 | Araq | dom96: 'and' of course |
19:41:49 | Araq | dom96: '+' can also mean 'or' |
19:42:02 | Araq | here we go ... |
19:42:03 | dom96 | Araq: ok, that's what I thought too. |
19:42:18 | Araq | thinking about internal identifiers instead of doing productive work |
19:42:30 | dom96 | Araq: Just call it TRetard or something. |
19:44:55 | Araq | btw who wrote the most recent nimrod related blog post? |
19:45:15 | dom96 | why? |
19:45:19 | Araq | it's full of errors |
19:45:29 | dom96 | which one? |
19:45:39 | Araq | .bycopy is misleading |
19:45:55 | Araq | the description of .bycopy is misleading |
19:46:18 | Araq | and showing off .unroll is really unfortunate since it's not even implemented |
19:47:03 | Araq | I really wish people would send me their articles before posting on reddit ... oh well |
19:48:00 | dom96 | If you're talking about the latest one that was on reddit, then that article isn't even that recent. |
19:48:03 | dom96 | It's from 2013. |
19:48:13 | Araq | :O |
19:48:21 | Araq | ok ... o.O |
19:48:34 | dom96 | So don't blame the author, I bet they didn't submit it. |
19:49:17 | * | EXetoC joined #nimrod |
19:49:27 | Araq | "they"? what happened with good old non-gender english? |
19:49:57 | * | kunev quit (Ping timeout: 240 seconds) |
19:50:09 | * | Araq continues to use "he" |
19:57:34 | dom96 | Araq: Can I just get rid of the old async implementations? |
19:57:48 | Araq | uh |
19:57:53 | Araq | erm |
19:58:02 | Araq | huh |
19:58:07 | Araq | no |
19:58:37 | Araq | people might already use it? |
19:58:45 | dom96 | We already broke so much though, by moving it out to babel. |
19:59:07 | Araq | what? the async stuff is not in babel? |
19:59:14 | dom96 | I guess it is just a matter of installing it though. |
19:59:25 | dom96 | I'm talking about other things. |
19:59:40 | Araq | well add a top level {.deprecated.} instead |
19:59:41 | dom96 | irc is for example now in babel |
20:00:46 | * | flaviu joined #nimrod |
20:01:07 | flaviu | Araq: The error message for my original code on 982 is actually correct, as zah remarked |
20:01:20 | flaviu | On the version that dom96 posted, which takes in mind the corrections zah mentioned, the error message is incorrect. |
20:01:58 | dom96 | no because these modules still contain a synchronous implementation which is usefl |
20:01:58 | dom96 | *useful |
20:01:59 | dom96 | But ok, as you wish. |
20:02:00 | dom96 | I won't remove the old async stuff |
20:02:07 | Araq | no need to be a dick about it |
20:02:08 | Araq | we strive for "warning first, removal later" |
20:02:48 | * | kunev joined #nimrod |
20:04:35 | dom96 | what? |
20:04:35 | dom96 | How was I a dick? |
20:04:36 | dom96 | I know that we do, and it's fine with me. Just thought I would ask you if I could bend this rule a bit. |
20:04:48 | flaviu | dom96: Not to him, to the users |
20:05:06 | flaviu | Most people don't enjoy having the rug pulled out from under them |
20:05:12 | * | untitaker quit (Ping timeout: 245 seconds) |
20:05:18 | Araq | flaviu, dom96 I don't get #982 |
20:05:33 | * | Matthias247 joined #nimrod |
20:05:38 | Araq | the error message is a bit confusing since T clearly is declared |
20:06:01 | flaviu | Araq: the first code block is incorrect |
20:06:02 | Araq | but it can't be inferred, so it's not too much off |
20:06:04 | * | Amrykid quit (Ping timeout: 240 seconds) |
20:06:24 | flaviu | I'll edit it, since it seems to be causing confusion |
20:06:39 | Araq | yes please |
20:06:53 | dom96 | righhhttt |
20:07:16 | * | Amrykid joined #nimrod |
20:07:30 | flaviu | ok, refresh |
20:08:03 | Araq | ah! |
20:08:33 | dom96 | Araq: But IIRC you did get me to write '**Warning:** The API of this module is unstable, and therefore is subject to change.' precisely in preparation for breakage? |
20:09:03 | Araq | well yes, but you said yourself it's still useful |
20:09:44 | Araq | you can also .deprecate single symbols in it |
20:09:57 | flaviu | dom96: Who cares, just deprecate it and get on with your life. Its easy, just add deleting that stuff as a bug that is due to be fixed by 1.0.0 |
20:09:59 | dom96 | Yes. Ok. |
20:10:25 | dom96 | flaviu: I care because it's more work. |
20:10:30 | Araq | btw ... we have quite some .deprecated stuff in the stdlib that we're allowed to remove by now |
20:11:40 | dom96 | Yes, somebody should do that. |
20:11:49 | flaviu | 140 or so, wow |
20:11:59 | * | untitaker joined #nimrod |
20:12:32 | flaviu | well, lots of false positives |
20:12:58 | dom96 | bbl |
20:19:19 | * | gkoller quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…) |
20:31:37 | Varriount | Araq: Yes, I'll work on #1491 |
20:32:13 | Araq | "will"? I made it a showstopper. This means you're not allowed to sleep until it's finished. ... ;-) |
20:32:23 | * | kunev quit (Ping timeout: 240 seconds) |
20:38:53 | * | Ven quit (Ping timeout: 240 seconds) |
20:39:44 | * | superfunc quit (Ping timeout: 255 seconds) |
20:42:31 | Varriount | Araq: You do realize Demos is more experienced with VS than I am, right? |
20:42:58 | Araq | er ... good point, I forgot |
20:43:01 | Demos | what is wrong? I have not been following chat |
20:43:27 | Araq | Demos: can you fix bug #1491 ? |
20:43:48 | Araq | in fact, I'm curious why it wasn't *you* who reported it |
20:44:24 | Demos | I never got the issue |
20:44:35 | Demos | I compile using x64 |
20:44:54 | Araq | makes sense |
20:45:15 | Demos | it happens on devel right? |
20:45:38 | Demos | where are these examples located? |
20:45:49 | Demos | oh, found em |
20:47:09 | Demos | goddamn |
20:47:16 | willwillson | how do you call an inline iterator? I keep getting an invalid type error... When i make it a closure iterator, it works as expected. |
20:47:23 | Araq | you might as well implement an asm version for x64 |
20:47:39 | Araq | willwillson: you can only "call" it in a for loop |
20:48:00 | willwillson | thanks |
20:49:25 | Demos | watch it be some stupid compatibility thing |
20:49:30 | Araq | willwillson: sequtils.toSeq works with inline iterators though |
20:49:31 | Demos | or calling conventions |
20:49:36 | Demos | probably calling conventions |
20:49:40 | Araq | willwillson: iirc |
20:49:50 | willwillson | thanks, I'll check it out |
20:50:18 | Araq | Demos: I'm afraid this code might never have been tested |
20:50:27 | Demos | well we shall see |
20:50:42 | Demos | I gotta download the windows sdk first (why does windbg not come with VS, I have no idea) |
20:51:46 | * | kunev joined #nimrod |
20:52:08 | Araq | we should integrate our own assembler |
20:52:50 | Araq | inline asm is so useful and yet we need at least 4 versions (x86, x86-64 for GCC and Visual C syntaxes) |
20:53:26 | Demos | just write the opcodes :D |
20:53:33 | EXetoC | bacon |
20:54:08 | Araq | hrm ... this could work |
20:54:59 | Araq | if DB is somewhat the same in every assembler |
20:56:48 | Demos | so the exception in 1491 is the debugger break exception |
20:57:21 | Araq | the asm code is missing a 'ret' instruction |
20:57:31 | Demos | that il do it |
20:57:42 | Araq | but also you need to ensure it ends up as __fastcall |
20:58:00 | Demos | allright, that is a visual C thing |
20:59:09 | NimBot | Araq/Nimrod devel ebe313e Araq [+0 ±3 -0]: fixes #1334 |
20:59:09 | NimBot | Araq/Nimrod devel 9ee59da Araq [+0 ±1 -0]: minor improvements for the FAQ |
20:59:37 | Demos | which code is missing a ret? |
21:00:17 | Araq | lib\system\arithm.nim |
21:00:27 | Araq | the x86 asm code for VCC |
21:01:25 | NimBot | Araq/Nimrod devel a0b2fb5 Dominik Picheta [+0 ±1 -0]: Implements `or` and `and` for futures. Ref #1487. |
21:01:25 | NimBot | Araq/Nimrod devel 0f720a8 Dominik Picheta [+1 ±5 -0]: Merge branch 'devel' of github.com:Araq/Nimrod into devel |
21:05:15 | EXetoC | no one has thrown money at zah yet? |
21:08:56 | Araq | zah doesn't need money, he needs time |
21:11:49 | EXetoC | oh. how complicated |
21:13:52 | Araq | if I merge my comment handling patch, does anybody volunteer to click through the generated docs to see what's wrong? |
21:13:56 | Araq | oh |
21:14:12 | Araq | I might as well do a diff lol |
21:14:52 | Araq | oh that reminds me ... |
21:14:54 | Demos | so adding the ret instruction terminates the process, is it possible the return address was never pushed onto the stack? |
21:15:27 | Araq | that would imply 'asmNoStackFrame' causes not even a 'call' instruction to be emitted |
21:15:33 | Araq | highly unlikely |
21:16:25 | Demos | I put the ret instruction after the theEnd: label |
21:16:53 | Araq | that sounds right |
21:17:28 | Demos | does it save registers before jumping to the function, because I could see myself overwriting the loop index or something |
21:18:09 | Demos | also, why does this work on x64, I guess because everything is the same calling convention there |
21:18:26 | Araq | the code is not active on x64 |
21:18:35 | Araq | this is 32bit x86 code |
21:18:56 | Araq | you need to replace 'eax' with 'rax' to get 64bit code |
21:20:07 | Araq | (and the same for the other registers) |
21:20:41 | Araq | well get rid of the 'asmNoStackFrame' and then it should work |
21:21:00 | Araq | and you don't need the explicit 'ret' either then, I think |
21:22:01 | * | Boscop joined #nimrod |
21:22:54 | Demos | OK now we have an infinite loop (I am working on the fizzbuzz example |
21:23:51 | * | Fr4n quit (Ping timeout: 272 seconds) |
21:26:43 | Araq | that means the + doesn't work anymore, maybe you need to add: mov `result`, eax |
21:32:22 | Demos | OK that fixed it, but I suspect we actually want no stack frame on these, and fastcall |
21:32:26 | Demos | otherwise what is the point |
21:34:41 | Araq | yeah |
21:35:17 | Demos | heh I will have spent a good hour debugging fizzbuzz :D |
21:35:26 | Araq | however ... I'm not sure it's correct. |
21:35:41 | Araq | I don't remember what registers are clobber registers |
21:36:02 | Araq | and how asmNoStackFrame affects that |
21:36:28 | Demos | and where the result is expected to be |
21:37:34 | Araq | actually that's EAX in any calling convention known to mankind |
21:38:34 | Araq | I'm looking for an Intrinsic that supports accessing the overflow flag. Of course THAT doesn't exist. |
21:39:24 | Araq | hundreds of intrinsics and yet nothing useful for overflow checking ... typical of C++ |
21:39:41 | * | Trustable quit (Quit: Leaving) |
21:44:38 | Demos | so I guess I can readd asmnostackframe and add fastcall ands then eliminate the mov eax `a` and mov ecx `b` since I know they will be in ecx and edx respectively |
21:45:12 | * | Fr4n joined #nimrod |
21:47:06 | Demos | wait, how does asmnostackframe work with inlining? |
21:48:48 | * | Ven joined #nimrod |
21:49:08 | Araq | I don't know. are these procs even inlined? |
21:49:38 | Demos | I dont know, they might be, it would probably be a good thing if they were |
21:52:29 | Araq | well go for .inline and explicit 'mov's then |
21:52:44 | Araq | you should really check the produced asm btw |
21:53:11 | Demos | I have |
21:53:25 | Araq | does it inline? |
21:54:01 | Demos | no |
21:54:12 | Demos | but this is with just {.compilerProc.} |
21:54:18 | Demos | so the calling convention is cdecl |
21:55:35 | Araq | what? .compilerProc produces cdecl?! |
21:55:50 | Demos | no, I am wrong. it is fastcall |
21:56:03 | Demos | edx and ecx have the params |
22:01:23 | * | pber67 joined #nimrod |
22:01:33 | Araq | hi pber67 welcome |
22:02:08 | pber67 | hi araq |
22:04:26 | Demos | should I submit just the non-naked version that seems to work? |
22:04:37 | * | Matthias247 quit (Read error: Connection reset by peer) |
22:05:11 | Araq | Demos: sure. any idea why the naked version does not work? |
22:05:58 | * | Matthias247 joined #nimrod |
22:06:42 | * | pber67 quit (Quit: Page closed) |
22:07:01 | Demos | no, although missing a return was the initial problem |
22:07:32 | * | pber67 joined #nimrod |
22:07:52 | * | io2 quit (Write error: Connection reset by peer) |
22:09:42 | Araq | well can you gist some asm listing please? |
22:09:50 | Araq | I'm curious |
22:10:18 | Demos | sure, although I gotta change some stuff so let me commit here first |
22:13:25 | * | brson_ joined #nimrod |
22:16:22 | * | Jehan_ quit (Quit: Leaving) |
22:17:06 | * | brson quit (Ping timeout: 260 seconds) |
22:19:17 | Demos | OK https://gist.github.com/barcharcraz/5ed117b13426b150c8fe is the non working version with asmnostackframe and a ret instruction |
22:19:27 | Demos | and https://gist.github.com/barcharcraz/cc4a023b8f03a2ac9243 is the working version |
22:19:49 | Demos | at the bottom is the code for modInt and the top is the code for the main fizzbuzz program |
22:22:43 | Araq | I see |
22:23:42 | Araq | replace `a` by edx and `b` by ecx |
22:24:14 | Demos | why not just eliminate the mov instruction? |
22:24:27 | Araq | my bet is that the inline assembler doesn't give a shit when it comes to symbolic name resolution and 'naked' |
22:24:58 | Demos | also shouldent a be in dcx and b in edx? |
22:25:22 | Araq | I think edx is the first parameter, ecx the 2nd |
22:25:34 | Araq | but yes, mov ecx, ecx can be left out |
22:26:07 | Demos | "The first two DWORD or smaller arguments that are found in the argument list from left to right are passed in ECX and EDX registers; all other arguments are passed on the stack from right to left." I /think/ it means the first one is in ECX |
22:27:38 | Araq | ok, yes, I'm wrong |
22:27:54 | Araq | it's EAX, EDX, ECX for Borland's fastcall |
22:28:30 | Demos | allright that worked |
22:28:56 | Araq | muhaha |
22:29:46 | Araq | it shouldn't matter much that it is not inline then |
22:30:19 | Araq | with some luck you can't even measure it thanks to intel's trace cache |
22:31:30 | Demos | oh, I should remove those movs before I make the pr |
22:32:47 | Araq | er, you can't |
22:32:59 | Demos | I can for like one of the functions |
22:33:17 | Araq | which one? |
22:33:49 | Demos | I think I could get one out of div |
22:34:23 | Demos | screw it |
22:34:31 | Araq | lol |
22:35:11 | Araq | it doesn't matter anyway, the CPU will rename every register under your feet |
22:37:00 | * | kunev quit (Ping timeout: 250 seconds) |
22:39:13 | Araq | "The Ivy Bridge (but not the Sandy Bridge) can eliminate register-to-register moves at the |
22:39:15 | Araq | register allocation stage. The following example illustrates this: |
22:39:16 | Araq | add eax,4 |
22:39:18 | Araq | mov ebx,eax ; this move can be eliminated |
22:39:19 | Araq | sub ebx,ecx" |
22:42:44 | NimBot | Araq/Nimrod devel 5b32626 Charlie Barto [+0 ±1 -0]: fixed #1491 |
22:42:44 | NimBot | Araq/Nimrod devel daa8b55 Andreas Rumpf [+0 ±1 -0]: Merge pull request #1495 from barcharcraz/fix1491... 2 more lines |
22:43:09 | Araq | aww no x64 version |
22:43:15 | Araq | Demos: thank you. |
22:43:34 | Demos | sorry, also I am not going near the gcc syntax with a 10 foot pole |
22:43:51 | Demos | Araq, you did most of the work |
22:44:39 | Araq | er ... vcc x64 version is a simple substitution E -> R for the register names |
22:48:28 | Demos | yeah I know, but I dun feel like it right now |
22:48:40 | Araq | ok no problem |
22:48:50 | Demos | and I also want to actually look at the codegen from the non-asm version to make sure it is not a waste of time |
22:49:53 | Araq | it's not when you look at the produced code |
22:50:15 | Araq | it may well be when you look at realistic benchmarks / programs |
22:52:09 | Araq | a cache miss is 100 cycles now, instruction selection and even branch prediction should be irrelevant |
22:54:44 | * | flaviu quit (Quit: Leaving.) |
23:11:50 | pber67 | Araq: can I ask you about babel? |
23:12:20 | Araq | since dom96 is asleep. yes |
23:13:26 | pber67 | Error: unhandled exception: The system cannot find the file specified. |
23:13:44 | pber67 | every task ends up this way |
23:14:28 | * | Matthias247_ joined #nimrod |
23:14:41 | pber67 | does it depends on vc9? |
23:14:59 | pber67 | (obviously I'm using winxp) |
23:17:06 | * | Matthias247 quit (Ping timeout: 246 seconds) |
23:17:47 | Araq | you need to add --deadCodeElim:on to your global config for winxp |
23:19:01 | pber67 | global config=nimrod.cfg? |
23:21:08 | Araq | yeah, config\nimrod.cfg |
23:22:38 | pber67 | does not help :( |
23:23:09 | Araq | how did you install it? |
23:23:24 | Araq | you need to add GCC to your path somehow |
23:23:33 | Araq | the installer supports that option |
23:26:36 | pber67 | i installed only nimrod. now i go to reinstall nimrod+gcc |
23:26:38 | pber67 | tnx |
23:28:46 | * | Matthias247_ quit (Read error: Connection reset by peer) |
23:35:47 | * | willw187 joined #nimrod |
23:36:12 | * | willwillson quit (Ping timeout: 246 seconds) |
23:42:25 | pber67 | :( this night i'm unlucky. i go to sleep |
23:42:43 | Araq | pber67: what's the problem? |
23:50:14 | Skrylar | isn't there a function which runs the GC incrementally |
23:50:29 | Araq | GC_step, Skrylar |
23:50:41 | Skrylar | which file is that in now? i checked system.html on the site |
23:50:47 | Araq | look at the GC's docs, you need to do -d:useRealtimeGC |
23:51:21 | Skrylar | thanks |
23:56:17 | * | brson_ quit (Quit: leaving) |
23:57:47 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |