00:03:13 | Demos | Varriount: why is this better than just having a function returning a value? |
00:03:19 | Demos | I still do not get it |
00:03:32 | Varriount | Demos: It allows one to re-use memory |
00:05:15 | Demos | right, in some cases. But in many cases the compiler will optimize out copies. I guess the alternitive to this for when it does matter is relaxing the specs on result so it is not always zeroed |
00:06:06 | Demos | this should be documented as "useful only if you have profiled" |
00:07:26 | Demos | also, please, please, please do not use something like this in C bindings. It is really neat, but could be overused. |
00:29:20 | * | xenagi quit (Quit: Leaving) |
00:48:41 | * | q66 quit (Quit: Leaving) |
00:50:57 | Varriount | Demos: Why would I use it in C bindings? |
00:51:13 | Demos | a fair number of C APIs use out parameters |
00:51:37 | Varriount | Right now, it only works on one "out" parameter. |
00:52:17 | Varriount | Also, how do I know when the compiler will optimize out copies? (Do compiler's even do that?) |
00:57:30 | Demos | yes, sometimes |
00:57:33 | EXetoC | you can know that it might, if byCopy is omitted I think |
00:57:55 | Demos | actually, even if byCopy is on the return type I bet the C compile /may/ elide it |
00:58:45 | EXetoC | as always I say something that doesn't make much sense |
00:58:48 | Demos | test it! |
00:59:09 | OrionPK | is it possible to print out nice stack traces for those macros, Varriount ? |
00:59:17 | OrionPK | it'd be nice to do it for my templates module |
00:59:20 | EXetoC | but omit byCopy and the nimrod compiler should decide whether or not copying is faster |
00:59:45 | Varriount | OrionPK: I'm trying, I'll post the new version in a minute |
01:02:10 | * | DAddYE_ quit (Remote host closed the connection) |
01:03:19 | Varriount | OrionPK: Updated. |
01:08:36 | Demos | EXetoC: right, but for output params the C compile may just use the memory of the variable you are assigning to |
01:09:04 | * | xenagi joined #nimrod |
01:12:01 | EXetoC | yes |
01:29:14 | * | BitPuffin joined #nimrod |
01:31:54 | * | xenagi|2 joined #nimrod |
01:32:55 | * | xenagi quit (Ping timeout: 240 seconds) |
01:57:48 | * | BitPuffin quit (Ping timeout: 255 seconds) |
02:09:01 | * | BitPuffin joined #nimrod |
02:16:21 | * | askatasuna quit (Ping timeout: 255 seconds) |
02:21:31 | * | brson quit (Ping timeout: 264 seconds) |
02:37:56 | Varriount | OrionPK: Araq was talking about making a macro like the one I just wrote part of the stdlib. |
02:50:31 | * | nande joined #nimrod |
02:53:32 | * | Gr33n3gg joined #nimrod |
03:22:21 | * | xenagi|2 quit (Quit: Leaving) |
04:18:26 | * | nande quit (Remote host closed the connection) |
04:54:20 | * | DAddYE joined #nimrod |
05:05:46 | Araq | Demos: 'asFunc' is about 'addf' vs 'format'. you can't reasonably get append semantics for a proper return type |
05:06:10 | Araq | so you write with append semantics and generate the function for convenience |
05:06:38 | Demos | oh |
05:06:58 | Demos | not a wonderful name |
05:07:10 | Demos | but that is reasonable. |
05:07:17 | Araq | it's not about copy elision |
05:07:24 | Araq | not directly, at least |
05:07:44 | Araq | bbl |
05:12:16 | * | charlesgrodinfan joined #nimrod |
05:13:03 | * | charlesgrodinfan left #nimrod ("Quit") |
05:40:11 | * | Demos quit (Remote host closed the connection) |
05:54:11 | * | DAddYE_ joined #nimrod |
05:54:11 | * | DAddYE quit (Read error: Connection reset by peer) |
06:01:04 | * | skyfex joined #nimrod |
06:02:23 | * | DAddYE_ quit (Read error: No route to host) |
06:02:47 | * | DAddYE joined #nimrod |
06:05:17 | * | renesac joined #nimrod |
06:24:38 | * | DAddYE quit () |
06:29:30 | * | askatasuna joined #nimrod |
06:36:26 | * | BitPuffin quit (Read error: Operation timed out) |
06:48:42 | * | askatasuna quit (Ping timeout: 252 seconds) |
08:03:17 | * | BitPuffin joined #nimrod |
08:05:43 | * | BitPuffin quit (Client Quit) |
08:06:06 | * | BitPuffin joined #nimrod |
08:45:02 | * | Gr33n3gg quit (Remote host closed the connection) |
08:49:11 | * | zahary__ quit (Ping timeout: 255 seconds) |
08:50:08 | * | BitPuffin quit (Ping timeout: 246 seconds) |
08:55:59 | * | BitPuffin joined #nimrod |
09:33:32 | * | ics quit (Ping timeout: 265 seconds) |
09:35:41 | * | ics joined #nimrod |
09:42:07 | * | io2 joined #nimrod |
10:09:04 | BitPuffin | Araq: Do you know if it is a common pattern to minimize branching in code using function pointers? ie doing some tests to determine something and assign a variable a function address based on the result and then in the loop call the pointer instead of every iteration doing an if this then call this and bla |
10:44:50 | * | easy_muffin joined #nimrod |
11:01:42 | * | Guest56680 quit (Quit: travel) |
11:29:18 | * | lyro` joined #nimrod |
11:31:12 | * | lyro quit (Ping timeout: 255 seconds) |
11:35:20 | * | lyro` quit (Ping timeout: 265 seconds) |
11:37:55 | Araq | BitPuffin: it is a pattern in some languages. it is usually an anti pattern for native code |
12:43:17 | BitPuffin | Araq: oh really? Why is it an anti pattern? |
12:43:20 | BitPuffin | Seems much more efficient |
13:32:27 | * | [1]Endy joined #nimrod |
13:41:45 | * | darkf quit (Quit: Leaving) |
13:57:48 | * | [1]Endy quit (Ping timeout: 255 seconds) |
14:00:43 | Araq | BitPuffin: depends but usually an indirect function call is worse than an 'if' for prediction |
14:01:11 | Araq | (it's an anti pattern for performance) |
14:01:14 | Araq | bbl |
14:04:05 | * | easy_muffin quit () |
14:25:04 | * | easy_muffin joined #nimrod |
14:38:57 | renesac | BitPuffin, compilers optimizers usually do loop invariant code motion too |
14:39:35 | renesac | if it is clear that the condition will not change during the loop |
14:56:50 | * | rta joined #nimrod |
14:58:50 | BitPuffin | hm |
14:58:51 | BitPuffin | didn't know that |
15:23:08 | * | BitPuffin quit (Ping timeout: 240 seconds) |
15:25:36 | * | [1]Endy joined #nimrod |
15:26:42 | * | mwpher joined #nimrod |
15:29:55 | mwpher | Hey! Is there any way to make echo not add a carriage return at the end of a line? |
15:30:32 | EXetoC | no, you have to use stdout.write then |
15:31:31 | mwpher | Okay |
15:32:35 | mwpher | Thank you! I'll use that for the moment |
15:33:44 | mwpher | I might also see if I can add the ability to tell echo to not add a newline... |
15:35:35 | * | Demos joined #nimrod |
15:36:44 | Demos | mwpher: echo is really a shortcut, if you need more sophisticated formatting you will need to use something else |
15:37:00 | * | mwpher quit (Quit: mwpher) |
15:40:02 | * | easy_muffin quit () |
15:40:34 | * | mwpher joined #nimrod |
15:42:25 | EXetoC | mwpher: I don't know if it currently is possible, assuming that you want to extend the original proc |
15:45:15 | * | mwpher quit (Client Quit) |
15:45:30 | * | mwpher joined #nimrod |
15:46:02 | mwpher | EXetoC: What do you mean if it's currently possible? |
15:46:19 | mwpher | Because it's a builtin? |
15:47:46 | Demos | I don't think echo is a magic. Pretty sure it is just in system |
15:47:47 | EXetoC | mwpher: no. I'm pretty sure that nothing can follow 'varargs' at this point |
15:48:35 | EXetoC | Demos: It is a magic that is exposed via system.nim |
15:48:37 | Demos | the solutio would be to make another proc for echoing without the newline, but I find when I need to do anything even moderately advanced I just apply $ to the args of echo |
15:48:42 | Demos | damn really? |
15:48:54 | Demos | why does it need compiler magic? |
15:50:12 | * | Matthias247 joined #nimrod |
15:51:30 | mwpher | EXetoC: I know that, I was thinking a token at the end of the string to tell echo to NOT put a newline. Like "if string ends with \x, break, else write \n" |
15:52:16 | mwpher | And yeah I never understood who would need compiler besides someone writing a backdoor |
15:52:19 | dom96 | Demos: It's likely an old implementation detail. |
15:52:26 | mwpher | *compiler magic |
15:52:51 | EXetoC | I don't consider that a good solution. Anyway, do you really need it so often that typing stdout.write ends up being tedious? |
15:52:54 | * | [2]Endy joined #nimrod |
15:53:09 | Demos | heck I almost always just echo one string anyways |
15:55:38 | * | [1]Endy quit (Ping timeout: 240 seconds) |
15:56:28 | mwpher | EXetoC: 1. I know that some popular language uses that already, can't remember what. 2. I use it to ask a question of the user before a readLine |
15:57:11 | mwpher | It may be shell scripting that does that actually |
15:58:06 | Demos | just use write. I was gunna guess perl for that other language, seems like a very perlish thing to do |
16:05:16 | * | foodoo joined #nimrod |
16:05:16 | mwpher | I'm curious, what do you all use nimrod for |
16:05:42 | foodoo | having fun |
16:07:11 | foodoo | Seriously though, there is a project that I might use Nimrod for. But I haven't decided yet. |
16:07:11 | Demos | I am writing graphics code. I like nimrod because it builds much faster than c++ even for small projects and it has modules so organising my code and dealing wtih scope is super easy |
16:07:34 | Demos | the more advanced features of nimrod are still somewhat unstable though |
16:08:43 | mwpher | It seems like a great language, it just needs a few more years on it |
16:09:21 | Demos | well it has needed a few more years for a few years :D. It needs full-time devs which requires money |
16:10:27 | Demos | I just enjoy not having to write cmake/make/msbuild files |
16:11:19 | * | fowl quit (Ping timeout: 264 seconds) |
16:17:19 | foodoo | I like to explore new languages from time to time |
16:19:05 | mwpher | Oh yeah, another question |
16:19:57 | mwpher | In C, you can print a float with only as many digits that matter, like printf("%G", float) |
16:20:30 | mwpher | How can I do that in nimrod without having to specify the number of trailing digits? |
16:21:17 | dom96 | formatFloat(float) |
16:23:21 | EXetoC | strutils.formatFloat to be exact, but no that doesn't seem to do what he asked for |
16:23:56 | * | fowl joined #nimrod |
16:24:31 | mwpher | I think I had tried parsefloat, not formatFloat... I'll look at that |
16:24:38 | EXetoC | I haven't seen the 'operator' pragma before |
16:25:27 | mwpher | Oh, no I did use formatFloat |
16:25:38 | mwpher | What operator pragma |
16:31:03 | EXetoC | it's not relevant, and it appears to be no-op anyway |
16:33:51 | * | nande joined #nimrod |
16:40:19 | * | easy_muffin joined #nimrod |
16:40:59 | * | easy_muffin quit (Client Quit) |
16:43:16 | Demos | why did a KSP update have to come out the day before I have an exam.... whhhhyyyyy |
16:44:57 | dom96 | ooh, is that the one with the asteroids? |
16:45:11 | Demos | yeah |
16:45:22 | Demos | watch out! it is a trap for programmers |
16:45:28 | Demos | not as bad as spacechem though |
16:48:54 | Demos | I wonder how much NASA actually had to do with it |
16:51:39 | foodoo | Was games a focus of Nimrod from the very beginning or is that something that came later? |
16:51:55 | foodoo | At least when I read about thc GC, it mentions games |
16:55:13 | * | q66 joined #nimrod |
16:57:20 | mwpher | It's also supposed to be for systems programming |
16:57:25 | Demos | dun know. I think games are one of a fairly small number of domains where you need tight memory control but also can benifit from being able let the language "just deal with it". Natural fit I guess |
16:58:05 | Demos | it is hard to displace c++ for games. All the middleware and libraries are C++ |
16:58:06 | mwpher | Well, there goes my plan to expand formatFloat to have an "auto" mode |
16:58:53 | mwpher | I didn't expect it to be written in ancient Sumarian |
16:59:17 | dom96 | foodoo: When Araq was implementing the real-time features in the GC he had games in mind as one of the use cases. |
16:59:31 | EXetoC | mwpher: what do you mean? |
16:59:36 | dom96 | I think Nimrod was meant to be general-purpose from the very beginning though |
17:01:26 | * | q66 quit (Ping timeout: 252 seconds) |
17:01:27 | mwpher | EXetoC: It means I'm too stupid to read the system library and get what's going on |
17:02:16 | EXetoC | what is it that you consider cryptic? |
17:02:47 | mwpher | I wanted to expand the functionality to have an "auto" format that would just print the number of digits that it could before being redundant |
17:03:06 | Demos | mwpher: some of the code in the compiler is a little strange, the stdlib is not that bad but the compiler itself was initially written in some Pascal dialect and was translated over |
17:03:06 | mwpher | I'll see if I can explain it... |
17:03:21 | mwpher | This is strutils |
17:03:36 | mwpher | Demos: Oh yeah, that may be related... |
17:04:08 | EXetoC | I don't know what the compiler code has to do with this |
17:04:53 | Demos | probably not much |
17:05:20 | Demos | I bet the formatFloat code does some stuff that could be unclear if you do not know how IEEE754 works |
17:05:24 | * | q66 joined #nimrod |
17:05:39 | EXetoC | Demos: it does use sprintf actually |
17:05:51 | Demos | oh, OK then |
17:06:30 | mwpher | I'm looking at strutils line 1044 |
17:06:37 | EXetoC | mwpher: ok so it uses either of these formats as you can see: ['g', 'f', 'e'] |
17:07:12 | mwpher | Oh wait... I know how sprintf works |
17:07:25 | EXetoC | and you said %G, right? so adding that shouldn't be that difficult. perhaps a member should be added to TFloatFormat |
17:07:28 | mwpher | Well, I guess I found what was confusing me |
17:07:40 | mwpher | It's making a C format string |
17:07:52 | mwpher | Ok, time to reevaluate |
17:08:25 | EXetoC | it certainly not sumerian IMHO :-) |
17:08:45 | EXetoC | someone should implement a sumerian DSL. I'm sure unicode has those glyphs |
17:09:04 | EXetoC | doesn't it have klingon or something? it better have that too then :> |
17:10:33 | dom96 | We should have done that for april fools. |
17:11:02 | * | DAddYE joined #nimrod |
17:11:16 | mwpher | Oh yeah, and why does printing the number "2" in scientific or default print "2.00000000e" while decimal gives "1.9999999" |
17:11:42 | mwpher | (Number of digits not exact, I'm going from memory) |
17:12:15 | mwpher | Wouldn't that be a bug? |
17:13:24 | mwpher | The decimal mode output I mean |
17:15:36 | mwpher | (Side note: it can be a little frustrating running FreeBSD because you can never be sure that the bug you're experiencing is a general error, or just because you're using an OS the app wasn't written for) |
17:18:31 | EXetoC | I don't know why it differs in this case, but you can't expect exact results when dealing with floats |
17:21:22 | mwpher | I know that imprecise values are just part of the deal, but I can't imagine any reason that it's happening. It clearly recognizes that the number is just two |
17:22:41 | mwpher | And if C can recognize it and print it just fine, why can't Nimrod do the same thing? |
17:22:55 | mwpher | It's just bugging me |
17:29:22 | * | mwpher_ joined #nimrod |
17:29:27 | * | mwpher_ quit (Client Quit) |
17:29:35 | EXetoC | check the format strings generated by nimrod |
17:29:42 | Araq | hi mwpher welcome |
17:29:58 | * | DAddYE_ joined #nimrod |
17:30:58 | * | brson joined #nimrod |
17:32:06 | Araq | $ for floats is the way it is because it used to do the "pretty" printing stuff and that caused bugs in the compiler itself due to losing relevant digits |
17:32:39 | Araq | there is a PR to change it back to something sensible but I don't want to merge it until 0.9.4 is out as it clearly will break code |
17:33:20 | Araq | hi rta welcome |
17:37:30 | * | Zuchto_ joined #nimrod |
17:38:18 | * | DAddYE quit (*.net *.split) |
17:38:18 | * | fowl quit (*.net *.split) |
17:38:18 | * | foodoo quit (*.net *.split) |
17:38:18 | * | mwpher quit (*.net *.split) |
17:38:19 | * | cark quit (*.net *.split) |
17:38:20 | * | vendethiel quit (*.net *.split) |
17:38:20 | * | Zuchto quit (*.net *.split) |
17:38:48 | * | vendethiel joined #nimrod |
17:45:15 | * | fowl joined #nimrod |
17:46:01 | * | [2]Endy quit (Ping timeout: 240 seconds) |
17:50:26 | * | BitPuffin joined #nimrod |
17:51:03 | * | Demos quit (Read error: Connection reset by peer) |
17:52:22 | * | Gr33n3gg joined #nimrod |
17:55:33 | NimBot | Araq/Nimrod devel 9632abc Ron Leisti [+0 ±1 -0]: events.TEventEmitter.emit no longer throws an exception if the named event does not exist |
17:55:33 | NimBot | Araq/Nimrod devel b61a307 Andreas Rumpf [+0 ±1 -0]: Merge pull request #1052 from rleisti/devel... 2 more lines |
17:57:06 | NimBot | Araq/Nimrod devel cc6339b Grzegorz Adam Hankiewicz [+0 ±1 -0]: Adds convenience uncompress and inflate procs to zlib.... 4 more lines |
17:57:06 | NimBot | Araq/Nimrod devel 3b7d657 Grzegorz Adam Hankiewicz [+0 ±1 -0]: Modifies inflate() to return a discardable bool. Refs #1048. |
17:57:06 | NimBot | Araq/Nimrod devel 2247729 Grzegorz Adam Hankiewicz [+0 ±1 -0]: Uses swap() to avoid variable copies. Refs #1048. |
17:57:06 | NimBot | Araq/Nimrod devel 6a2e2f9 Grzegorz Adam Hankiewicz [+0 ±1 -0]: Uses finally as statement to release zlib memory. Refs #1048. |
17:57:06 | NimBot | 1 more commits. |
17:57:38 | NimBot | Araq/Nimrod devel ab67552 EXetoC [+0 ±5 -0]: Fix some tests. |
17:57:38 | NimBot | Araq/Nimrod devel f4d907b Andreas Rumpf [+0 ±5 -0]: Merge pull request #1061 from EXetoC/fix-tests... 2 more lines |
17:59:29 | NimBot | Araq/Nimrod devel bd8aabc EXetoC [+0 ±1 -0]: Implement overflow/underflow checking for the VM. |
17:59:29 | NimBot | Araq/Nimrod devel ea1bff3 EXetoC [+6 ±0 -0]: Add underflow/overflow tests. |
17:59:29 | NimBot | Araq/Nimrod devel eb1a0c7 EXetoC [+0 ±0 -1]: Remove executable. |
17:59:29 | NimBot | Araq/Nimrod devel bae55c0 Andreas Rumpf [+5 ±1 -0]: Merge pull request #1060 from EXetoC/vm-arithmetic-overflow... 2 more lines |
17:59:57 | Araq | EXetoC: superb work. Just as I imagined. |
18:01:11 | Araq | if you want you can now start working on the exception stuff :-) |
18:01:24 | Araq | I implemented the basics but it's quite broken |
18:05:30 | EXetoC | great |
18:06:52 | EXetoC | I assume it's not all that difficult. I can take a look at it |
18:07:38 | EXetoC | I'd like to make the checked arithmetic interface usable elsewhere, but I can work on that later |
18:17:20 | * | Gr33n3gg quit (Ping timeout: 268 seconds) |
18:26:46 | EXetoC | aren't you bothered by the lack of run-time information given to the user on assertion failures? |
18:27:12 | EXetoC | a more minimal version of unittest.check would be nice |
18:30:33 | * | Gr33n3gg joined #nimrod |
18:32:56 | * | cark joined #nimrod |
18:33:13 | EXetoC | working on it |
18:43:38 | * | Raynes quit (Ping timeout: 240 seconds) |
18:55:38 | * | Gr33n3gg left #nimrod ("Leaving") |
19:07:43 | * | Raynes joined #nimrod |
19:11:19 | * | foodoo joined #nimrod |
19:13:41 | * | brson quit (Ping timeout: 252 seconds) |
19:18:22 | * | Mat3 joined #nimrod |
19:18:27 | * | Demos joined #nimrod |
19:18:28 | Mat3 | good afternoon |
19:18:41 | * | zoran joined #nimrod |
19:19:00 | foodoo | Mat3: good evening |
19:19:09 | Mat3 | hello foodoo |
19:19:26 | foodoo | hi Mat3 |
19:19:41 | dom96 | hi Mat3 |
19:19:56 | dom96 | zoran: welcome to #nimrod |
19:20:57 | foodoo | In C/C++ pragmas are directives that are not part of the language. In Nimrod pragmas are part of the language. Correct? |
19:21:03 | Mat3 | hi dom96 |
19:21:44 | Mat3 | foodoo: If I understand you correctly, yes |
19:21:50 | dom96 | Mat3: What ever happened to that native code gen of yours? |
19:21:50 | foodoo | So every Nimrod compiler should understand all pragmas |
19:22:24 | * | zoran left #nimrod (#nimrod) |
19:22:26 | Demos | we will worry about that when we have more than one nimrod compiler :D |
19:22:30 | * | zoran joined #nimrod |
19:22:38 | * | zoran left #nimrod (#nimrod) |
19:23:14 | foodoo | Demos: That's probably also what the C guys thought ;) |
19:23:24 | Mat3 | dom96: it's finished (however I'm currently working on more aggressive code optimizations for it) |
19:23:41 | dom96 | Mat3: Is the source online anywhere? |
19:23:46 | Demos | we do not even have a c++ style spec, so nimrod is defined by what araq's compiler accepts, indeed this is how it should be for a young language. Also note that nimrod is a bit dependent on the compiler since you have access to the AST |
19:24:35 | skyfex | foodoo: The pragmas are pretty central to the language it seems to me, but if someone were to implement a new nimrod compiler, they could for instance drop support for example "packed" and "union" |
19:25:18 | * | [1]Endy joined #nimrod |
19:25:29 | skyfex | If you don't intend to support the C-interfacing aspects |
19:25:37 | skyfex | Like with a javascript compiler maybe |
19:25:38 | Mat3 | dom96: not the current sources, however you can take a look here (I will update the repro soon): https://www.assembla.com/code/vanar/git/nodes/master/src |
19:26:16 | Demos | is this direct nimrod -> binary? |
19:26:26 | Demos | or rather nirmod -> object files? |
19:26:28 | EXetoC | foodoo: builtin pragmas to be precise |
19:26:38 | Araq | IMHO the C standard is academic and C is what the intersection of LLVM, GCC and visual C accept ;-) |
19:26:48 | dom96 | Mat3: Awesome. Great job! Let me know when you update it. :) |
19:26:51 | Demos | I agree with araq on that point |
19:27:15 | Araq | in fact, some aspects of the C standard make no sense |
19:27:16 | Demos | but you can be fairly certain that most all of C89 lies in that intersection |
19:27:28 | dom96 | Mat3: You should consider putting it on github for greater exposure. |
19:27:30 | Mat3 | Demos: Its AVM code -> native code |
19:27:41 | Demos | what is AVM? |
19:28:01 | Demos | Araq: care to elaborate on that? what parts? |
19:28:19 | Mat3 | Demos: my own, MISC styled processor architecture |
19:28:47 | Mat3 | AVm is the VM version of it |
19:28:56 | Mat3 | = software emulation |
19:29:56 | Mat3 | (it original was designed to be implemented in TTL logic or FPGAs) |
19:30:02 | Araq | Demos: the address range can have "holes" but ptrdiff_t is larger or equal to int iirc |
19:31:01 | Araq | structs are allowed to have holes but then you can't memcmp them |
19:31:28 | Araq | nor can you memcmp arrays of structs and I don't think the spec mentions that |
19:31:51 | Araq | but even if it does, I'm sure lots of code does exactly that |
19:32:12 | Demos | that is strange. What kind of evil hardware designers would inflict such an arch on the world |
19:32:29 | dom96 | Mat3: Any plans for creating a Nimrod -> Binary compiler? |
19:32:30 | foodoo | Araq: I'd like to know your perspective: Are pragmas in Nimrod part of the language or are they just intended as compiler guidances that may or may not be followed? |
19:33:12 | Araq | foodoo: they are part of the language and increasingly used. which is why we're considering a nicer syntax for them. |
19:34:07 | Mat3 | dom96: It is on my list and I'm slowly start coding on it |
19:34:30 | dom96 | Mat3: That's good to hear. |
19:34:33 | * | brson joined #nimrod |
19:34:44 | Demos | it seems to me pragmas (and effects) are a good way to allow more info to the code without complicateing the type system |
19:35:37 | Demos | Mat3: once we can generate object code directly it would be super cool to also be able to generate executables directly, without using the regular system linker. |
19:35:56 | Araq | you're damn right. The effect system is pure gold. |
19:36:23 | Mat3 | I agree, where can I sign the petitition ;) ? |
19:36:43 | dom96 | We are still missing some of the effects system features aren't we? |
19:36:53 | Mat3 | Demos: That's the plan |
19:37:39 | Araq | dom96: of course. The effect system will be enhanced for concurrency, for instance |
19:37:40 | EXetoC | It does seem to be pretty awesome |
19:38:02 | EXetoC | there, less bias |
19:38:03 | Demos | Mat3: is is possible to skip the nimrod->objects part and still be able to do neat things with a new linker? |
19:38:15 | * | BitPuffin quit (Ping timeout: 240 seconds) |
19:39:15 | Mat3 | hmm, should be possible. However there are some pitfalls because operating systems like Linux follwing the ELF specification only poorly |
19:39:30 | Mat3 | ^following |
19:39:47 | Demos | Araq: so once the effect system is more complete you could do things like write a dispatcher that is aware of who writes what and can order calls in such a way as to reduce the number of things competeing for locks, right? |
19:40:11 | * | BitPuffin joined #nimrod |
19:40:53 | * | Mat3 is now known as Mat3-coding |
19:42:04 | Araq | Demos: I'm not sure I can follow |
19:42:15 | * | [1]Endy quit (Ping timeout: 240 seconds) |
19:42:40 | Araq | the effect system ensures deadlock freedom at compile time |
19:43:02 | Araq | and could be used for auto-parallelization |
19:49:18 | Mat3-coding | as side note: An easy way to auto-parallelization can be in addition simply the usage of (side-effect free) higer-order functions |
19:50:18 | Araq | yeah I've heard that before :P |
19:51:05 | * | Araq doesn't really believe in functional programming |
19:51:05 | * | brson quit (Ping timeout: 252 seconds) |
19:52:00 | dom96 | Araq: careful now |
19:52:55 | dom96 | You don't want to piss off the functional programming fanatics :P |
19:53:17 | Araq | shared state is evil. but you can also decide to remove the 'shared' and keep the 'state' part instead of removing the 'state' part and keeping the 'shared'. :P |
19:53:25 | EXetoC | you hate all related concepts? :> |
19:53:54 | Araq | no, I don't hate it at all. it's too cool to hate it. |
19:54:20 | Araq | but it's impractical for lots of things |
19:56:24 | EXetoC | how do I turn a node into a stmt? other than running it through a "(expr): stmt" template |
19:58:33 | Mat3-coding | Araq: You described the concatenative programming paradigma as alternative (which equals to the functional one, see the publications of Mr. Thun) |
19:59:46 | Araq | EXetoC: why do you need that? |
20:00:18 | dom96 | Speaking of which, do we still need both 'expr' and 'stmt', are they not the same now? |
20:00:36 | Mat3-coding | it is just another code representation |
20:02:45 | * | BitPuffin quit (Ping timeout: 255 seconds) |
20:03:17 | Araq | dom96: currently there are still subtle differences |
20:03:28 | Araq | but these are all bugs ... I think |
20:03:46 | Araq | yay @an evolving spec |
20:04:40 | Varriount | Araq: Well, as I see it, the alternative to change is stagnation, which is usually a bad thing. |
20:05:11 | Varriount | Araq: Any features that you would like me to add to that duoFunc macro I posted? |
20:05:43 | Araq | only skimmed your implementation, sorry |
20:05:55 | Araq | why duoFunc and not asFunc? |
20:06:21 | NimBot | Araq/Nimrod devel 32f8e28 Araq [+0 ±1 -0]: todo.txt updated |
20:06:21 | NimBot | Araq/Nimrod devel 9b9755b Araq [+5 ±8 -0]: Merge branch 'devel' of https://github.com/Araq/Nimrod into devel |
20:06:41 | Varriount | I don't really have a good reason, other than that "duoFunc" sounds cooler. |
20:06:56 | Araq | it doesn't for me :P |
20:07:13 | Araq | duoFunc, por favor! |
20:07:20 | * | brson joined #nimrod |
20:08:11 | Araq | Varriount: what about niminst etc? can you produce working 32bit and 64bit installers? |
20:08:26 | Varriount | Araq: Yes. You had me do that ages ago. |
20:08:52 | Araq | well I still think we can release this week |
20:09:12 | * | BitPuffin joined #nimrod |
20:09:30 | Araq | do you include recent mingw with these? |
20:09:38 | Araq | cause you should |
20:10:09 | Araq | oh and integrate babel with the installer |
20:10:09 | Varriount | Araq: Yes, however it's not the 'bare installation', because the script to produce a bare installation won't work, and I can't figure out how to fix it. |
20:10:23 | Araq | ok no problem |
20:10:34 | Araq | well next step is babel integration then |
20:10:47 | Araq | for win we need the exe + dependent dlls |
20:11:03 | Araq | for unix we need to integrate the C sources somehow |
20:11:05 | Varriount | Integrate..? You mean, include babel into the installation package? |
20:11:11 | Araq | yes. |
20:11:30 | Varriount | Well, it would help if babel was actually part of the nimrod repository... |
20:11:43 | Araq | we decided against that |
20:11:54 | Araq | babel needs its own issue tracker for instance |
20:16:01 | * | Mat3-coding thinks the x86 architecture is horrible |
20:16:44 | Varriount | Mat3-coding: Howso? |
20:18:06 | Araq | Mat3-coding: I recently read that x86's archaic instruction set makes up for 1% of the die size on a modern implementation |
20:18:16 | Araq | but I don't know if that's accurate |
20:18:17 | Mat3-coding | the DIV opcode only address either AX, EAX or RAX (an i8085 related idea of a fixed accumulator) |
20:18:55 | Mat3-coding | for example |
20:19:07 | NimBot | Araq/Nimrod devel 17a594b Araq [+1 ±0 -0]: added tmissingnilcheck test |
20:19:16 | EXetoC | Araq: I'm modifying the 'check' macro which returns stmt. callsite()[1] is the relevant node |
20:19:31 | EXetoC | is it possible? I'll just use a template otherwise. no big deal |
20:20:02 | Araq | there is no difference on the AST level, you can simply change the type declaration |
20:20:05 | Araq | (I think) |
20:24:11 | EXetoC | I don't know what you mean, but I'll just try to assemble a tree manually |
20:26:51 | NimBot | Araq/Nimrod devel 3ce3ff4 Dominik Picheta [+0 ±2 -0]: Refactored createCb in asyncdispatch. |
20:29:27 | * | Matthias247 quit (Read error: Connection reset by peer) |
20:40:14 | * | foodoo quit (Remote host closed the connection) |
20:41:10 | * | [1]Endy joined #nimrod |
20:45:14 | Araq | dom96: that's it? you refactored createCb? |
20:45:27 | Araq | you know the bug is not in createCb, right? |
20:45:36 | dom96 | Araq: I do. Take a look at how I refactored it. |
20:45:49 | dom96 | first.callback = ... no longer exists. |
20:46:00 | dom96 | I realised that I can simply call the callback |
20:46:07 | Araq | lol |
20:46:15 | Araq | nice |
20:46:18 | * | askatasuna joined #nimrod |
20:51:35 | * | askatasuna quit (Ping timeout: 252 seconds) |
20:55:50 | * | Varriount_ joined #nimrod |
20:56:49 | * | Varriount quit (Ping timeout: 240 seconds) |
20:56:59 | * | Varriount_ is now known as Varriount |
21:06:25 | * | Varriount quit (Ping timeout: 240 seconds) |
21:07:53 | * | Varriount joined #nimrod |
21:13:24 | * | [1]Endy quit (Ping timeout: 255 seconds) |
21:13:59 | * | io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist) |
21:14:21 | Mat3-coding | good night |
21:14:22 | Mat3-coding | ciao |
21:14:31 | * | Mat3-coding quit (Quit: Verlassend) |
21:19:04 | * | XAMPP quit (Ping timeout: 252 seconds) |
21:23:04 | * | Varriount_ joined #nimrod |
21:23:07 | * | Varriount quit (Ping timeout: 252 seconds) |
21:45:46 | * | brson quit (Ping timeout: 268 seconds) |
21:49:51 | * | Demos quit (Read error: Connection reset by peer) |
21:52:59 | * | Varriount__ joined #nimrod |
21:55:38 | * | Varriount_ quit (Ping timeout: 240 seconds) |
22:15:19 | * | Puffin joined #nimrod |
22:16:18 | * | BitPuffin quit (Ping timeout: 240 seconds) |
22:32:01 | * | tumak quit (Ping timeout: 268 seconds) |
22:32:16 | * | brson joined #nimrod |
22:33:10 | * | tumak joined #nimrod |
22:38:39 | * | brson quit (Ping timeout: 252 seconds) |
22:39:01 | * | DAddYE joined #nimrod |
22:41:10 | * | DAddYE_ quit (Ping timeout: 255 seconds) |
22:44:30 | * | psquid joined #nimrod |
22:46:36 | * | brson joined #nimrod |
22:54:49 | * | brson quit (Ping timeout: 240 seconds) |
22:58:52 | * | brson joined #nimrod |
23:28:35 | * | Varriount__ is now known as Varriount |
23:44:06 | Skrylar | meep! |
23:44:24 | Varriount | Moop! |
23:45:55 | * | darkf joined #nimrod |