00:01:34 | * | pregressive joined #nim |
00:07:24 | * | gokr quit (Quit: Leaving.) |
00:25:19 | * | Mat4 quit (Quit: Konversation terminated!) |
01:11:41 | * | ^aurora^ quit (Quit: My Mac has gone to sleep. ZZZzzz…) |
01:15:18 | * | Miruya quit (Quit: Page closed) |
01:16:25 | * | umurgdk joined #nim |
01:20:39 | * | umurgdk quit (Ping timeout: 244 seconds) |
01:21:14 | * | ChrisMAN quit (Ping timeout: 260 seconds) |
01:43:00 | * | BitPuffin|osx quit (Ping timeout: 264 seconds) |
01:45:55 | * | chemist69_ joined #nim |
01:49:00 | * | chemist69 quit (Ping timeout: 264 seconds) |
02:16:00 | * | FedeOmoto quit (Ping timeout: 264 seconds) |
02:59:39 | * | pregressive quit (Remote host closed the connection) |
03:04:40 | * | Gnewt quit (Remote host closed the connection) |
03:09:00 | * | FedeOmoto joined #nim |
03:12:44 | * | vegansk joined #nim |
03:31:00 | * | lokulin quit (Ping timeout: 246 seconds) |
03:57:27 | * | Kingsquee joined #nim |
03:58:46 | * | umurgdk joined #nim |
04:00:31 | * | lokulin joined #nim |
04:03:24 | * | umurgdk quit (Ping timeout: 250 seconds) |
04:10:43 | Varriount | Araq: Regarding the skip-at-translation-time '#if' directives feature that I would like c2nim to have, what would I need to add/modify to implement the feature? |
04:12:05 | Varriount | Should I implement a separate pass that does the processing? That seems the most obvious way to do it. |
04:13:44 | vegansk | Why need the strong spaces feature? (http://nim-lang.org/docs/manual.html#syntax-strong-spaces) |
04:14:20 | Varriount | vegansk: It makes templates and operator precedence modifiable from a user-controlled point. |
04:14:50 | Varriount | Actually, there have been cases where it clears up unwanted ambiguities. |
04:18:53 | vegansk | Varriount: I agreed with 2nd and 3rd example in the documentation, but it breaks arithmetical expressions logic for example. Maybe it must affect only [], {}, ()? |
04:19:54 | vegansk | Can you give me the link with usecase, please? |
04:21:37 | * | FedeOmoto quit (Quit: Leaving) |
04:22:07 | vegansk | I didn't find any usage in Nim sources |
04:35:49 | * | darkf joined #nim |
04:40:02 | * | NimBot joined #nim |
04:43:05 | * | NimBot joined #nim |
04:43:51 | * | NimBot joined #nim |
04:51:50 | * | kilon quit (Read error: Connection reset by peer) |
04:51:55 | * | gokr joined #nim |
04:52:29 | * | kilon joined #nim |
05:06:59 | * | keyle quit (Quit: http://twitter.com/keyle/) |
05:13:46 | * | NimBot joined #nim |
05:14:09 | Varriount | vegansk: It's in the forum somewhere. |
05:14:43 | Varriount | vegansk: Araq would know more about how it works. |
05:16:07 | vegansk | Varriount: Thanks |
05:47:33 | * | umurgdk joined #nim |
05:50:29 | * | NimBot joined #nim |
05:51:30 | * | umurgdk quit (Ping timeout: 240 seconds) |
05:52:02 | * | xcombelle joined #nim |
06:15:36 | * | ivan left #nim (#nim) |
06:16:07 | * | Varriount_ joined #nim |
06:19:15 | * | Varriount quit (Ping timeout: 244 seconds) |
06:20:52 | * | silven quit (Ping timeout: 250 seconds) |
06:20:53 | * | silven joined #nim |
06:49:50 | * | NimBot joined #nim |
06:53:58 | gokr | federico3: You can use Fruit type and then add Bananas and Apples - but you will only get "Fruit" out, but if you use methods, polymorphism will still work out. |
07:17:20 | kilon | polymorphism is so healthy :D |
07:18:05 | * | Ven joined #nim |
07:24:13 | gokr | federico3: Check my articles on OO in Nim: http://goran.krampe.se/category/nim |
07:24:25 | gokr | Although i should write a followup summarizing it all :) |
07:30:58 | * | Kingsqueee joined #nim |
07:32:15 | * | Kingsquee quit (Read error: Connection reset by peer) |
07:33:22 | * | yglukhov joined #nim |
07:36:39 | * | yglukhov quit (Remote host closed the connection) |
07:38:26 | * | Ven quit (Ping timeout: 240 seconds) |
07:40:44 | * | umurgdk joined #nim |
07:41:28 | * | umurgdk quit (Read error: Connection reset by peer) |
07:41:44 | * | umurgdk joined #nim |
07:42:20 | * | umurgdk quit (Client Quit) |
07:54:12 | * | Jesin quit (Ping timeout: 246 seconds) |
07:57:47 | * | NimBot joined #nim |
07:59:08 | Araq | vegansk: I want it in the language, as a default, but nobody agrees with me. Everybody is so afraid that i+1 * 3 does exactly what it looks like ... Pathetic. |
08:01:51 | nchambers | wait people are scared that i+1 * 3 -> i+(1*3)? |
08:02:24 | Araq | no, they are scared it means (i+1)*3 which is what the spacing suggests |
08:02:48 | nchambers | oh I don't like that :p |
08:03:06 | nchambers | one accidental typo and I'm hunting that bug down for hours |
08:03:37 | Araq | that is only an argument after that has actually happened. |
08:04:07 | nchambers | thats silly :p |
08:04:31 | * | coffeepot joined #nim |
08:05:22 | Araq | it's called empiricism. |
08:05:34 | Araq | Happens to be one foundation of science. |
08:06:32 | nchambers | science is a lot more tangible than the design of a programming language. you're pretty much always dealing with the abstract |
08:07:18 | Araq | the one guy who used that feature extensively doesn't use it anymore because he found the compiler too picky when it's enabled. |
08:07:34 | Araq | Which is the very opposite of what you claim. |
08:07:50 | Araq | You claim it would be "error prone". |
08:08:04 | * | yglukhov joined #nim |
08:08:11 | nchambers | no. I claim it would be a pain in my ass |
08:08:45 | Araq | just like indendation based syntax, right? |
08:09:14 | Araq | stupid programming language which looks at the code they same way I do ... |
08:09:22 | Araq | *the same |
08:09:34 | nchambers | I'm not calling the feature stupid. I'm calling the user stupid |
08:10:31 | Araq | echo $foo |
08:10:45 | Araq | breaks with the default parser |
08:10:52 | Araq | works with strongSpaces |
08:11:57 | Araq | and that's a real gotcha, everybody stumbles over that one |
08:13:49 | Araq | but *shrug*, this has been discussed to death and nobody has ever come up with a good counter argument. |
08:17:46 | nchambers | eh I'm using python atm anyways so its not like this affects me |
08:18:44 | * | Trustable joined #nim |
08:18:49 | Araq | ;-) well fear not, I won't make it the default and I might even remove the feature completely |
08:19:07 | ekarlso | what feature Araq ? |
08:19:32 | reactormonk | ekarlso, strongSpace I'd say |
08:20:13 | Araq | but that doesn't mean the feature is bad. It's brilliant. Just ahead of its time by a few years. |
08:31:17 | * | davidhq joined #nim |
08:31:48 | * | davidhq quit (Read error: Connection reset by peer) |
08:48:20 | * | yglukhov quit (Remote host closed the connection) |
08:52:58 | * | Kingsqueee quit (Ping timeout: 260 seconds) |
08:55:19 | * | ^aurora^ joined #nim |
08:58:43 | * | yglukhov joined #nim |
09:04:49 | * | themagician quit () |
09:11:22 | * | NimBot joined #nim |
09:12:07 | * | NimBot joined #nim |
09:13:11 | * | Demon_Fox quit (Quit: Leaving) |
09:15:46 | * | NimBot joined #nim |
09:24:10 | gokr | Araq: I agree that the fear expressed is quite silly. Btw, in Smalltalk "1 + 3 * 4" is indeed "(1+3)*4" (for the reason of simpler precedence rules) and noone is upset, only newbies that think anything different is SCARY. |
09:25:30 | gokr | Also, in Ni (my toy language) spaces do carry quite a bit of significance since its one of the few token separators. So "3+4" is not the same as "3 + 4" in Ni. The former would be parsed as a quite odd function name :) |
09:27:21 | * | xcombelle quit (Ping timeout: 244 seconds) |
09:28:53 | Araq | gokr: also x + y * z doesn't come up as nearly as often as people seem to think |
09:29:09 | kilon | gokr: you have created your own language ? |
09:29:42 | gokr | yeah, well, its ongoing. |
09:29:53 | gokr | But it can implement detect: and select: in itself now :) |
09:30:07 | gokr | github.com/gokr/ni |
09:30:13 | gokr | (put your helmet on though) |
09:31:01 | gokr | Its quite a ... different language. Its a bit of a mix of Rebol, Smalltalk, Lisp and Nim. And Self eventually. And some of my own ideas. |
09:31:25 | gokr | But it looks fairly close to Smalltalk/Self. |
09:32:03 | nchambers | gokr is kind of interested in smalltalk so I bet the project has just a few smalltalk influences |
09:32:38 | gokr | nchambers: kilon knows me, and he is a Smalltalker too :) |
09:32:59 | nchambers | oh god theres more of you? |
09:33:02 | gokr | Interested may be the wrong word. I even led the Squeak project for a year or two. |
09:33:36 | kilon | i love Pharo and Pharo loves me (Smalltalk) |
09:33:43 | gokr | nchambers: Much more of us than there are Nimsters. |
09:34:08 | kilon | nchambers: we multiply with water and you should not feed us after midnight |
09:34:28 | nchambers | D: |
09:35:11 | kilon | or tells us that your language is the best OO , which has the same effect as feeding us after midnight |
09:36:02 | nchambers | I should really get back to working on my language, but there are decloaking scripts to write! |
09:36:43 | kilon | gokr: oh ok its implemented on top of nim, interesting |
09:36:58 | kilon | i was thinking implementing something on top of Pharo |
09:37:14 | gokr | Yeah, the idea is to have a 100% live language where its easy to "fall down" to Nim for heavylifting. |
09:37:32 | kilon | live coding with Nim ? that would be great |
09:38:04 | gokr | In fact, Ni uses a lot of Nim - since Ni objects are Nim objects we reuse the whole GC, the whole dynamic dispatch etc. |
09:38:39 | gokr | Not sure where it will lead, but its a fun little experiment. |
09:38:47 | gokr | And it has odd features :) |
09:39:15 | Araq | that's cool. I don't like boring. :-) |
09:41:35 | federico3 | thanks gokr, I looked at how other parsers are implemented |
09:43:00 | kilon | well most languages start as experiments and then turn to very good ideas good enough to be further developed |
09:43:49 | gokr | Ni's homoiconicity is kinda funky. And the way arguments are passed is also funky. |
09:43:52 | kilon | so far the only thing i dont like about pharo and smalltalk is camel case |
09:44:06 | reactormonk | kilon, you can avoid that in nim ;-) |
09:44:31 | kilon | reactormonk: yeah i love that in nim that it allows for this flexibility without braking conventions |
09:45:30 | gokr | Another odd thing in Ni is that... newlines have no semantic effect - but it also has no statement separators. |
09:46:05 | Araq | gokr: that's cool but a couple of functional languages can do the same |
09:46:23 | Araq | so it's not *that* odd / novel / unique |
09:46:36 | * | themagician joined #nim |
09:46:49 | gokr | I agree. Just as an example: http://pastebin.com/eHsykGpB |
09:47:02 | gokr | Is the same as: code = [1 + 2 + 3] code at: 2 put: 10 echo do code |
09:47:40 | kilon | i dont think editors will like your language gokr :D |
09:47:41 | gokr | And I am not yet certain about if its good, bad, cool or silly. |
09:47:50 | kilon | code editors that is |
09:48:18 | kilon | would not that make their lives harder ? |
09:48:38 | gokr | One thing it means is that ... you sometimes need to use () in assignments. At least its like that now. |
09:48:53 | gokr | editors? lives? |
09:49:37 | gokr | In this sense its very Lispish anyway, but with a more "traditional looking" syntax. |
09:49:56 | kilon | but lisp has () |
09:49:59 | gokr | Which is what got me slightly intrigued by Rebol in the first place. Homoiconicity without the tornado of parens. |
09:50:23 | kilon | so an editor can seperate each statement with ease |
09:50:29 | gokr | Yes, and although I appreciate the elegance of Lisp - I really can't stand the parens tornado. |
09:50:35 | kilon | but with your language wont be that harder for them ? |
09:50:58 | gokr | No idea and i don't care ;) |
09:51:31 | gokr | Ni is like Smalltalk. Its meant to be live, not edited in silly dead editors. |
09:51:45 | kilon | so you will provide the ide as well ? |
09:52:27 | gokr | Well, "IDE" is a strong word, but sure, its the idea. |
09:52:32 | gokr | Just like Smalltlak. |
09:53:47 | kilon | great , will keep an eye :) |
09:54:08 | kilon | another language i monitor is Factor -> http://factorcode.org/ |
09:56:50 | kilon | factor looks a bit like a mix between nim and pharo/smalltalk |
10:07:21 | gokr | I know about Factor, Slava is a brilliant guy. |
10:07:50 | gokr | But while I love Forth etc in theory, I have a harder time with concatenative languages in practice. |
10:07:58 | NimBot | nim-lang/Nim devel 612cd21 JamesP [+0 ±1 -0]: add examples block to top of times module |
10:07:58 | NimBot | nim-lang/Nim devel c122d71 JamesP [+0 ±1 -0]: bug fix: `+` and `-` handle GM and Local time correctly... 2 more lines |
10:07:58 | NimBot | nim-lang/Nim devel f5d55ad JamesP [+0 ±1 -0]: tests added: toSeconds with local/GM timezones, interval add/sub... 1 more lines |
10:07:58 | NimBot | nim-lang/Nim devel 2d1f263 JamesP [+0 ±1 -0]: Example: add extra getGmTime interval addition example |
10:07:58 | NimBot | 1 more commits. |
10:08:02 | gokr | It easily gets very cryptic |
10:22:13 | * | xcombelle joined #nim |
10:23:07 | * | yglukhov quit (Remote host closed the connection) |
10:24:09 | * | yglukhov joined #nim |
10:29:00 | kilon | it does eh ? |
10:32:04 | kilon | oh well, pity , seemed like an attractive option |
10:32:20 | kilon | i guess will have to compromise with pharo and nim for now , fine by me :D |
10:36:19 | * | yglukhov quit (Remote host closed the connection) |
10:36:54 | federico3 | Araq: any progess with setting up email forwarding for [email protected] ? I just sent an email to it and this time it didn't bounce. |
10:38:00 | dom96 | federico3: oh cool |
10:38:01 | dom96 | I got it |
10:38:14 | dom96 | So the forwarding just took some time to start working |
10:40:51 | federico3 | "some time"? That's really weird |
10:44:05 | * | BitPuffin joined #nim |
10:48:48 | * | yglukhov joined #nim |
10:50:03 | * | Ven joined #nim |
10:50:58 | * | yglukhov quit (Remote host closed the connection) |
11:00:05 | OnO | federico3: you mean being able to reply to forum topic via email, because it works other way around, I get forum topic being subscribed to nim-dev list |
11:01:01 | federico3 | OnO: that's being worked on |
11:01:48 | * | yglukhov joined #nim |
11:22:27 | * | enamex joined #nim |
11:27:14 | * | UberLambda joined #nim |
11:28:13 | * | golak joined #nim |
11:31:52 | * | Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…) |
11:32:50 | * | baktun joined #nim |
11:33:18 | NimBot | nim-lang/Nim def--clean-speedup-2 bd4d5db Araq [+0 ±1 -0]: terminal: doc improvments |
11:33:18 | NimBot | nim-lang/Nim def--clean-speedup-2 75ccdeb Araq [+0 ±1 -0]: get rid of deprecated effects |
11:33:18 | NimBot | nim-lang/Nim def--clean-speedup-2 28dd040 Reimer Behrends [+0 ±1 -0]: Fix behavior of os.getFileInfo() for symbolic links.... 4 more lines |
11:33:18 | NimBot | nim-lang/Nim def--clean-speedup-2 c56a005 Simon Hafner [+0 ±1 -0]: nextFreePort -> connectToNextFreePort |
11:33:18 | NimBot | 996 more commits. |
11:34:05 | Araq | er ... 996 more commits? |
11:34:29 | Araq | reactormonk: ? |
11:34:36 | reactormonk | Araq, O.o? |
11:34:48 | Araq | pushed to master? |
11:35:02 | reactormonk | Cute that you think of me first ;-) |
11:35:05 | reactormonk | Nope, wasn't me. |
11:35:15 | Araq | dom96: ? |
11:35:30 | dom96 | calm down, it's pushed to def--clean-speedup-2 |
11:38:20 | * | elrood joined #nim |
11:40:02 | Araq | ah ok. what kind of branch is that? |
11:40:47 | dom96 | It's an old branch |
11:40:54 | dom96 | I tried bringing back FutureVar |
11:41:01 | dom96 | But then realised that it was already reverted in that branch |
11:41:08 | dom96 | so I have to bring it back manually |
11:41:33 | Araq | ok sorry for the noise |
11:43:53 | * | boopsiesisaway is now known as boopsies |
11:44:01 | dom96 | no need to be sorry |
11:55:31 | * | xcombelle quit (Ping timeout: 252 seconds) |
12:02:15 | * | vegansk quit (Quit: Ухожу я от вас (xchat 2.4.5 или старше)) |
12:04:47 | NimBot | nim-lang/Nim devel 28e3ad9 Dominik Picheta [+0 ±3 -0]: Reintroduce FutureVar[T] from commit 72b4912c84b16644657. |
12:10:33 | * | leru joined #nim |
12:13:13 | * | NimBot joined #nim |
12:23:53 | Araq | dom96: the last feature I implemented for aporia didn't work out the way I wanted to |
12:24:05 | dom96 | what feature was that? |
12:24:08 | Araq | so ... gtk really is a pita to work with :-/ |
12:24:18 | Araq | that I can open files from command line |
12:24:22 | Araq | I mean it does work now |
12:24:29 | dom96 | yeah, that is why I don't really work on Aporia anymore |
12:24:32 | Araq | and I have to create a proper PR for this |
12:24:43 | Araq | but still, it was such a pita |
12:25:39 | Araq | also I like platform independent UIs these days. the "native" ones all get worse and worse anyway |
12:26:09 | Araq | who cares about a consistent look and feel if it gets consistently worse? |
12:27:31 | Araq | and the biggest "UI system" out there -- the web -- is not consistent either |
12:27:47 | federico3 | to put it mildly |
12:28:30 | dom96 | yep. Which is why I am considering rewriting Aporia using SDL or something like that. |
12:30:05 | gokr_ | Just like Pharo & Squeak :)) |
12:30:21 | reactormonk | dom96, then you'd lose all the accessability etc :-/ |
12:30:34 | coffeepot | why don't we have graphics cards driving 3D interfaces these days (I know there's Aero but it's pretty mild). Maybe something written over opengl or equivilent would work as a cross-platform GUI? SDL seems like a good idea tbh |
12:31:30 | federico3 | heh |
12:31:38 | federico3 | coffeepot: --> #nim-offtopic |
12:33:29 | dom96 | federico3: no. |
12:33:38 | dom96 | Let's stop telling people to talk in #nim-offtopic please |
12:34:04 | coffeepot | technically it is offtopic, but i was following the convo in there and it switched to here :D |
12:34:29 | dom96 | Let's not be this strict. |
12:34:56 | reactormonk | I've never really messed with GUIs, the only thing I used was TK, which I kinda liked. |
12:35:05 | dom96 | reactormonk: I guess. |
12:35:30 | dom96 | If you need accessibility then you wouldn't use my editor anyway I guess |
12:35:40 | reactormonk | dom96, that's true again. |
12:38:07 | gokr_ | Pharo people are abstracting the graphics above Cairo. |
12:38:43 | gokr_ | So Cairo may be a more suitable low level library |
12:38:52 | gokr_ | than SDL2 |
12:42:36 | * | boopsies is now known as boopsiesisaway |
12:47:18 | dom96 | Araq: Wanna make the switch from all exceptions being non-ref types to all exceptions being ref types this release? |
12:47:35 | Araq | uh oh |
12:47:57 | Araq | yeah, if we can do it without breaking too much code |
12:48:18 | dom96 | Any ideas how to do that? |
12:50:18 | * | yglukhov quit (Remote host closed the connection) |
12:51:23 | dom96 | could we not just make newException work with ref objects? |
12:51:53 | dom96 | other than that I don't think there are any other breakages |
12:57:27 | * | NimBot joined #nim |
13:03:15 | * | yglukhov joined #nim |
13:05:44 | * | NimBot joined #nim |
13:14:17 | * | pregressive joined #nim |
13:18:31 | * | pregressive quit (Read error: Connection reset by peer) |
13:18:56 | * | pregressive joined #nim |
13:23:53 | * | wuehlmaus quit (Quit: Lost terminal) |
13:26:04 | * | pregressive quit (Remote host closed the connection) |
13:34:49 | * | Mat4 joined #nim |
13:35:50 | * | FedeOmoto joined #nim |
13:36:17 | NimBot | nim-lang/Nim devel 8082533 Dominik Picheta [+0 ±1 -0]: Implement strutils.indent |
13:36:17 | NimBot | nim-lang/Nim devel 77c2bcf Dominik Picheta [+0 ±4 -0]: Improve asyncdispatch error messages, fix some tests on Windows. |
13:40:05 | Mat4 | hello |
13:41:26 | dom96 | Asyncdispatch should now give some nicer exception messages :D |
13:41:50 | Mat4 | I have following structure: |
13:42:16 | Mat4 | tInternalMemory = object |
13:42:17 | Mat4 | aMemory : array [tInternalMemoryAddress, tInteger] |
13:42:19 | Mat4 | iMemory : tInternalMemoryAddress |
13:42:40 | Mat4 | and following procedure defination: |
13:42:56 | Mat4 | proc read (memory : trInternalMemory, address : tInternalMemory) : tInteger = |
13:42:57 | Mat4 | result = memory.aMemory[address] |
13:43:33 | Mat4 | compiling it I get these error: Error: type mismatch: got (array[0..2048, tInteger], tInternalMemory) |
13:44:45 | Mat4 | how can I access the array ? |
13:48:41 | Varriount_ | Mat4: Is that all the code? |
13:48:47 | Araq | dom96: yeah you're right |
13:49:45 | Araq | should be easy enough to do that |
13:50:30 | dom96 | Araq: Wanna do that for this release? |
13:51:19 | dom96 | Maybe somebody could volunteer their time to s/object of Exception/ref object of Exception/ etc. |
13:52:55 | Mat4 | Varriount_: yes, except trInternalMemory is of type: ref tInternalMemory |
13:53:18 | * | silven quit (Ping timeout: 246 seconds) |
13:53:39 | Araq | Mat4: your index type is wrong |
13:53:49 | * | silven joined #nim |
13:54:01 | Araq | should be memoryaddress, not memory |
13:54:20 | Mat4 | right, thanks (overviewed this error) |
13:55:17 | * | Mat4 need probably more sleep |
13:56:56 | Araq | dom96: just do it, its simple |
13:57:32 | dom96 | Got a meeting, and other things I want in this release. |
14:06:18 | * | NimBot joined #nim |
14:07:13 | * | benaiah joined #nim |
14:11:50 | * | FedeOmoto quit (Quit: Leaving) |
14:12:16 | * | FedeOmoto joined #nim |
14:13:08 | * | pregressive joined #nim |
14:13:15 | * | pregressive quit (Remote host closed the connection) |
14:14:33 | * | pregressive joined #nim |
14:14:48 | * | pregressive quit (Remote host closed the connection) |
14:15:48 | * | pregressive joined #nim |
14:18:41 | * | yglukhov quit (Remote host closed the connection) |
14:26:41 | OnO | stupid Q, what's the benefit of having Exception to be ref-type? |
14:27:33 | Araq | polymorphism only works well with 'ref object' |
14:28:13 | Araq | and an "open" sum type is very natural for exceptions |
14:30:12 | * | Jesin joined #nim |
14:30:25 | OnO | makes sense, thanks for explanation |
14:32:37 | * | FedeOmoto quit (Quit: Leaving) |
14:33:04 | * | FedeOmoto joined #nim |
14:39:17 | * | yglukhov joined #nim |
14:43:46 | * | yglukhov quit (Remote host closed the connection) |
14:44:01 | * | yglukhov joined #nim |
14:51:51 | * | baktun quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) |
14:52:58 | * | gokr_ quit (Read error: Connection reset by peer) |
14:55:26 | * | pregressive quit (Remote host closed the connection) |
14:57:30 | * | pregressive joined #nim |
14:57:46 | * | gokr_ joined #nim |
15:37:43 | * | Trustable quit (Remote host closed the connection) |
15:50:57 | * | wuehlmaus joined #nim |
15:57:57 | * | darkf quit (Quit: Leaving) |
16:00:46 | * | NimBot joined #nim |
16:05:59 | * | mahlon_ is now known as mahlon |
16:08:43 | * | UberLambda quit (Quit: GTG) |
16:09:32 | NimBot | nim-lang/Nim devel ac6b21a Dominik Picheta [+0 ±2 -0]: Fixes failing async tests on Linux. |
16:10:55 | * | coffeepot quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client) |
16:21:36 | * | yglukhov quit (Remote host closed the connection) |
16:22:41 | * | yglukhov joined #nim |
16:25:33 | * | enamex quit (Ping timeout: 246 seconds) |
16:27:01 | * | yglukhov quit (Ping timeout: 256 seconds) |
16:39:52 | federico3 | how can I execute a proc by name? |
16:47:56 | * | NimBot joined #nim |
16:52:50 | gokr_ | procvar |
16:58:31 | * | unclechu joined #nim |
16:59:29 | * | skinkitten joined #nim |
17:07:51 | * | unclechu quit (Ping timeout: 250 seconds) |
17:07:53 | * | skinkitten quit (Quit: Leaving) |
17:10:57 | * | enamex joined #nim |
17:11:33 | * | yglukhov joined #nim |
17:11:55 | * | Jesin quit (Quit: Leaving) |
17:12:10 | enamex | Nim is the biggest project I know of and which I'm reasonably interested in that's done this, so here I ask: |
17:13:15 | * | tankfeeder joined #nim |
17:13:48 | enamex | Any of the more involved developers in the spec and compiler implementation is planning to write in any detailed form about the making of a good transpiler? Treating the actual source as a language in itself, independent of the target language; efficient mapping of features that have absolutely zero analog or intuitive transformation to the target language; etc... |
17:14:23 | * | tankfeeder left #nim (#nim) |
17:14:30 | * | Jesin joined #nim |
17:15:58 | * | yglukhov quit (Ping timeout: 250 seconds) |
17:19:50 | * | NimBot joined #nim |
17:28:12 | * | xcombelle joined #nim |
17:31:00 | reactormonk | enamex, I think Araq prefers writing code over documentation |
17:32:08 | * | jaco60 joined #nim |
17:32:47 | enamex | Sad thing is: So many people find it easier to learn from someone who'd gone through a process by reading plain English instead of code. Not that I don't get where he's coming from but... that doesn't mean documentation of this kind (and the manual/spec kind) don't need /someone/ to make them. |
17:34:15 | * | golak quit (Quit: leaving) |
17:35:11 | Araq | reactormonk: actually I don't mind writing docs, docs don't have to be debugged :-) |
17:36:00 | Araq | enamex: I cannot answer your question because it's too broad. What do you want to know? |
17:38:29 | enamex | Whether you're planning to write about the journey of making Nim. Specifically: making a language whose spec must be complete in itself but depends ultimately on another language and its spec; and how the work was done to make Nim parsed/compiled/debugged as Nim above a base-layer of C. |
17:39:02 | enamex | Or briefly put: The Diary of Making Nim (with a focus on its reliance on C). |
17:41:08 | Araq | hmm I think Nim did rely on Pascal as much as it did rely on C. The compiler used to be written in Pascal and then it was translated with pas2nim into Nim code |
17:41:49 | enamex | No no. Specifically the reliance as in translation from-spec-to-spec |
17:41:55 | Araq | also it's nice that you think the spec is complete, but it is not and it certainly wasn't when I started |
17:42:25 | Araq | the spec and the implementation interact in a constant circle of refinements |
17:44:59 | enamex | Well, "planning". Like, I'm asking for the general sentiment to "definitely eventually do that; maybe starting on it soon(tm)". Not "are you gonna start now? Is it done yet?". |
17:45:42 | * | BitPuffin quit (Ping timeout: 255 seconds) |
17:50:15 | Araq | sorry, I'm still not sure what you want to know. I started with a mix of Ada, Delphi and Modula 3, Pythonized its syntax and added Lisp inspired macros. I estimated it would take 20000 lines of code. That was version 1 of my plan. ;-) |
17:51:24 | * | Kingsquee joined #nim |
17:51:57 | enamex | Planning to write these docs, story about making Nim. X'D. Ok, I'm not getting this through today it seems... |
17:54:20 | Araq | That it generates C has also been the plan from the beginning but people had to fight for .emit |
17:55:28 | Araq | the original FFI was designed to work out of the box with an LLVM-like target. |
17:56:44 | enamex | Good start. Now (if this were the start of the Diary) you talk about Nim evolving and its representation in C evolving with it. |
17:58:48 | Araq | hrm I rewrote the C codegen twice but I don't remember the details and it still sucks. Today I would implement it as another AST to AST transformation. |
18:00:51 | Araq | Instead we have this rope based representation which is a concatenation tree. In other words a tree that represents a string. And since it's just a string you cannot inspect it easily causing all sort of problems. |
18:03:49 | enamex | Wait, so Nim today, largely, is a string-to-string transformation? Like a big, complex pre-processor?! Because anything beyond that (having any sort of abstract IR between Nim and C) is at least halfway to an AST-AST transf and not truly string-based. |
18:04:51 | Araq | you misunderstand me. I'm talking about the last step in the pipeline. |
18:05:05 | Araq | the step that generates C code from the AST. |
18:05:38 | Araq | all the rest is AST-AST transformations |
18:06:36 | enamex | How'd you make that last step "implement it as another AST to AST transformation"? |
18:07:08 | * | Mat4 quit (Quit: Konversation terminated!) |
18:08:19 | * | Matthias247 joined #nim |
18:10:17 | * | yglukhov joined #nim |
18:14:57 | Araq | you create an AST that only uses features of Nim that have a trivial mapping to C. |
18:16:39 | enamex | Sort of like a LIR. So, that's the sort of thing you'd be writing about, if you were to write the diary, basically (and the thing I'd read). |
18:16:53 | * | Mat4 joined #nim |
18:17:51 | Araq | Nim's IR is just Nim's AST. It's the same AST we expose in the macro system. It's AST all the way down. |
18:18:47 | Araq | It turns out you don't need anything more, even complex control- and dataflow analysis works with it. (Though it can be slightly suboptimal ;-) ) |
18:19:09 | enamex | A /lower/ one. Because it'd only "[use] features of Nim that have a trivial mapping to C" |
18:19:14 | * | ^aurora^ quit (Quit: My Mac has gone to sleep. ZZZzzz…) |
18:19:55 | Araq | No, that only affects the last codegen step. For the other steps you can use what you think is wise. |
18:31:13 | Araq | wooohooo, emscripten support: https://github.com/nim-lang/Nim/pull/3314 |
18:32:30 | dom96 | yeah, it's awesome |
18:34:03 | * | boopsiesisaway is now known as boopsies |
18:36:11 | * | kilon quit (Read error: Connection reset by peer) |
18:36:57 | * | kilon joined #nim |
18:38:36 | gokr_ | Sidenote: Hopl - history of programming languages |
18:39:09 | gokr_ | Quite intetesting papers from that conf |
18:43:50 | enamex | Araq: implementation detail, I suppose: how much do you write-to-disk during the various translation phases? Is most of the AST transformations done in-memory until the final C string representation is ready, for example? |
18:44:51 | Araq | it's all done in-memory. |
18:44:59 | Araq | the AST is quite optimized for size though. |
18:45:06 | Mat4 | Sidenote: I think with history is meaned here the history of 'procedural programming languages |
18:47:59 | * | icebattle quit () |
18:50:51 | * | UberLambda joined #nim |
18:52:45 | * | ^aurora^ joined #nim |
18:53:05 | enamex | Googling for various permutations of "writing a AST|abstract-syntax-tree transformer" turns up surprisingly little educational content. Go figure,,, |
18:56:10 | gokr_ | Mat4: https://en.m.wikipedia.org/wiki/History_of_Programming_Languages |
18:59:07 | elrood | enamex, that's probably because ast transformations in isolation aren't considered very useful or interesting or academically challenging, but one will find them covered in more or less detail in any compiler-/interpreter-related paper or book |
18:59:35 | * | NimBot joined #nim |
19:01:04 | enamex | Like a book on making nim? :P |
19:03:19 | elrood | like a book on designing any other language. but actually, one either writes practically useful code, or educational papers about it. very seldomly you'll find someone doing both at the same time, and i guess most of us would agree that araq's time is immensely better spent writing practically useful code at this time ;) |
19:03:42 | * | Jesin quit (Quit: Leaving) |
19:05:35 | enamex | c'mon! I did say 'anyone heavily involved' or even otherwise qualified. |
19:06:05 | enamex | Besides, good documentation is basic productivity in science |
19:06:23 | elrood | sure it'd be nice to have the kind of diary you're wishing for, but as long as that anyone heavily involved doesn't feel like doing so out of his own motivation, nagging about it doesn't seem very useful |
19:06:51 | elrood | and there is quite a lot of good compiler and language design literature out there |
19:07:21 | Mat4 | gokr_: thanks, very interesting |
19:10:23 | elrood | besides, araq, any idea what became of ks sreeram and joe groff and clay? do you know if there's been any development in the last years, or is that project abandoned? |
19:10:49 | Araq | Clay's inventor was hired by Apple iirc |
19:11:32 | Araq | so with a bit of luck he had a chance to influence Swift |
19:11:47 | elrood | rings a bell, i believe i'd heard that. but clay itself is practically dead, is it? |
19:12:06 | Araq | as far as I know, yes |
19:13:25 | gokr_ | Mat4: I admit i have only read the hopl paper on Smalltalk, but it was very interesting. That conference is by and for lang implementors only, so high standards |
19:13:46 | elrood | pity. but well, more attention for nim, assumedly |
19:16:03 | dom96 | enamex: I think that Araq is the only one qualified to write a book about making Nim unfortunately. |
19:18:09 | nchambers | hes doing that right? |
19:20:28 | * | ChrisMAN joined #nim |
19:20:59 | Araq | yeah but it's not about Nim's history |
19:25:37 | enamex | Hm, doing what? HOPL(4?)? |
19:27:16 | * | NimBot joined #nim |
19:29:13 | Mat4 | gokr_: I'm searching for serious exchange about some ideas I have in mind, specially about exploiting the dynamic state of interpreters for theorem proving and detection of logic errors |
19:30:21 | gokr_ | interesting |
19:32:04 | gokr_ | Did you... check VPRI papers? I cant recall a perfect match, but Ian Piumarta might be a guy to talk to :) |
19:32:45 | * | xcombelle quit (Remote host closed the connection) |
19:34:01 | * | Demos joined #nim |
19:34:46 | Mat4 | yes, I know some publications from him and used parts of his reasearch for my earlier work on an AOT compiler for retro (Forth) |
19:36:00 | Demos | is there a pragma that can get the compiler to emit extern "c" before an importc'd var? |
19:37:04 | Demos | I guess I can just use when defined(cpp): {.emit: """extern "c" {""".} but I want to know if there's a better way |
19:38:43 | Mat4 | there is a mirror incorrectment in the APL article, the Commodore SuperPET doesn't include an APL interpreter as I know. This was the VideoBrain |
19:39:06 | Mat4 | hmm, I get quite offtopic |
19:43:00 | * | leru quit (Quit: Nettalk6 - www.ntalk.de) |
19:45:45 | Araq | Demos: .codegenDecl pragma |
19:45:56 | Demos | thanks |
19:50:08 | Mat4 | Araq: Would it be possible to specify the start address and range for variables ? (That would relate on probitary C extensions or is typical done by a linker script) |
19:51:51 | Araq | .codegenDecl support anything you can dream of |
19:52:23 | Mat4 | I take a look, thanks |
19:57:19 | gokr | Mat4: Cool. Sorry, I was putting my daughter to bed. |
19:59:54 | gokr | Mat4: Then of course... Eliot Miranda is also a VM guru of rank. Not sure theorem proving is his interest though. |
20:02:55 | Mat4 | doesn't know him before, thanks just reading his blog |
20:06:14 | gokr | Eliot was head engineer of the VisualWorks VM for a number of years. He and Ian are on the similar level of expertise. |
20:07:17 | gokr | Since 2011-ish when he worked at Teleplace (our predecessor) he created Cog, the Smalltalk JIT for Squeak. He continues working on it now at Cadence with Bracha. |
20:12:28 | Mat4 | the Coq Vm is quite sophisticated as I see |
20:15:29 | gokr | Yes it is. Its adding adaptive optimization now, Sista, and the goal is to almost reach JVM performance levels. |
20:15:51 | gokr | Cog, not Coq :) |
20:17:18 | Mat4 | oh sorry, wrong character |
20:18:22 | * | Mat4 thought about the french word for rooster |
20:26:41 | * | UberLambda quit (Quit: GTG) |
20:26:55 | * | gokr_ quit (Quit: IRC for Sailfish 0.9) |
20:46:48 | * | Matthias247 quit (Read error: Connection reset by peer) |
20:57:00 | * | BitPuffin|osx joined #nim |
21:04:13 | * | enamex_ joined #nim |
21:05:12 | * | enamex quit (Ping timeout: 246 seconds) |
21:35:41 | * | enamex_ is now known as enamex |
21:41:59 | * | Mat4 quit (Quit: Konversation terminated!) |
21:48:49 | * | Mat4 joined #nim |
21:48:53 | * | Mat4 left #nim (#nim) |
22:03:46 | * | FedeOmoto quit (Quit: Leaving) |
22:14:28 | * | irrequietus joined #nim |
22:23:49 | * | pregressive quit (Remote host closed the connection) |
22:25:01 | * | boopsies is now known as boopsiesisaway |
22:28:36 | * | elrood quit (Quit: Leaving) |
22:28:55 | * | gokr quit (Quit: Leaving.) |
22:33:59 | * | saml quit (Quit: Leaving) |
22:41:47 | Varriount_ | Araq: I hope you are really sure about suffixing the dll's with 32 & 64. |
22:42:26 | dom96 | It's clashing with Ruby's DLLs for me already |
22:42:27 | dom96 | Just FYI |
22:42:35 | Varriount_ | :/ |
22:42:39 | * | Varriount_ is now known as Varriount |
22:43:06 | Varriount | If nothing else, there should be a backup load (eg, try loading pcre.dll, and if that fails, load pcre32.dll) |
22:49:04 | * | Demon_Fox joined #nim |
22:50:06 | dom96 | Ideally there should be an error "Attempting to load a 32bit DLL in a 64bit application" |
22:56:51 | * | Jesin joined #nim |
23:03:26 | Varriount | dom96: The thing is, Window's DLL loading mechanism simply ignores 32-bit dlls unless an explicit handle is given (I think) |
23:03:38 | * | CARAM__ quit (Ping timeout: 252 seconds) |
23:04:01 | * | EastByte quit (Ping timeout: 252 seconds) |
23:04:16 | * | EastByte joined #nim |
23:04:43 | * | mikolalysenko quit (Ping timeout: 252 seconds) |
23:05:53 | * | CARAM__ joined #nim |
23:08:49 | * | yglukhov quit (Remote host closed the connection) |
23:09:01 | * | Miruya joined #nim |
23:11:09 | * | mikolalysenko joined #nim |
23:11:17 | * | enamex quit (Quit: Page closed) |
23:21:13 | * | yglukhov joined #nim |
23:21:55 | * | vendethiel quit (Ping timeout: 252 seconds) |
23:22:34 | * | Demos quit (Ping timeout: 250 seconds) |
23:23:03 | * | no_name_ joined #nim |
23:23:06 | * | devzerp_ joined #nim |
23:23:51 | * | no_name_ is now known as no_name |
23:24:51 | * | devzerp_ is now known as devzerp |
23:25:02 | Araq | Varriount: why? our installer ships with these DLLs |
23:25:56 | Varriount | Araq: But not everyone uses the installer. Also, it confuses end-users of Nim programs. |
23:28:31 | * | yglukhov quit (Remote host closed the connection) |
23:28:34 | Araq | why? you need to ship these DLLs with your exe |
23:28:53 | Araq | or you require that Nim is installed ... just like before |
23:29:51 | Araq | the only thing we should do is to *also* rename libeay32.dll since everybody seems to have a different version of it |
23:30:37 | * | juanfra joined #nim |
23:30:38 | Araq | maybe nimeay32.dll, the lib prefix is stupid anyway |
23:34:46 | * | irrequietus quit (Ping timeout: 240 seconds) |
23:55:55 | federico3 | any way to scan a table in sorted order? |