<< 11-09-2015 >>

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:43VarriountAraq: 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:05VarriountShould I implement a separate pass that does the processing? That seems the most obvious way to do it.
04:13:44veganskWhy need the strong spaces feature? (http://nim-lang.org/docs/manual.html#syntax-strong-spaces)
04:14:20Varriountvegansk: It makes templates and operator precedence modifiable from a user-controlled point.
04:14:50VarriountActually, there have been cases where it clears up unwanted ambiguities.
04:18:53veganskVarriount: 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:54veganskCan you give me the link with usecase, please?
04:21:37*FedeOmoto quit (Quit: Leaving)
04:22:07veganskI 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:09Varriountvegansk: It's in the forum somewhere.
05:14:43Varriountvegansk: Araq would know more about how it works.
05:16:07veganskVarriount: 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:58gokrfederico3: 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:20kilonpolymorphism is so healthy :D
07:18:05*Ven joined #nim
07:24:13gokrfederico3: Check my articles on OO in Nim: http://goran.krampe.se/category/nim
07:24:25gokrAlthough 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:08Araqvegansk: 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:51nchamberswait people are scared that i+1 * 3 -> i+(1*3)?
08:02:24Araqno, they are scared it means (i+1)*3 which is what the spacing suggests
08:02:48nchambersoh I don't like that :p
08:03:06nchambersone accidental typo and I'm hunting that bug down for hours
08:03:37Araqthat is only an argument after that has actually happened.
08:04:07nchambersthats silly :p
08:04:31*coffeepot joined #nim
08:05:22Araqit's called empiricism.
08:05:34AraqHappens to be one foundation of science.
08:06:32nchambersscience is a lot more tangible than the design of a programming language. you're pretty much always dealing with the abstract
08:07:18Araqthe 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:34AraqWhich is the very opposite of what you claim.
08:07:50AraqYou claim it would be "error prone".
08:08:04*yglukhov joined #nim
08:08:11nchambersno. I claim it would be a pain in my ass
08:08:45Araqjust like indendation based syntax, right?
08:09:14Araqstupid programming language which looks at the code they same way I do ...
08:09:22Araq*the same
08:09:34nchambersI'm not calling the feature stupid. I'm calling the user stupid
08:10:31Araqecho $foo
08:10:45Araqbreaks with the default parser
08:10:52Araqworks with strongSpaces
08:11:57Araqand that's a real gotcha, everybody stumbles over that one
08:13:49Araqbut *shrug*, this has been discussed to death and nobody has ever come up with a good counter argument.
08:17:46nchamberseh I'm using python atm anyways so its not like this affects me
08:18:44*Trustable joined #nim
08:18:49Araq;-) well fear not, I won't make it the default and I might even remove the feature completely
08:19:07ekarlsowhat feature Araq ?
08:19:32reactormonkekarlso, strongSpace I'd say
08:20:13Araqbut 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:10gokrAraq: 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:30gokrAlso, 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:53Araqgokr: also x + y * z doesn't come up as nearly as often as people seem to think
09:29:09kilongokr: you have created your own language ?
09:29:42gokryeah, well, its ongoing.
09:29:53gokrBut it can implement detect: and select: in itself now :)
09:30:07gokrgithub.com/gokr/ni
09:30:13gokr(put your helmet on though)
09:31:01gokrIts 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:25gokrBut it looks fairly close to Smalltalk/Self.
09:32:03nchambersgokr is kind of interested in smalltalk so I bet the project has just a few smalltalk influences
09:32:38gokrnchambers: kilon knows me, and he is a Smalltalker too :)
09:32:59nchambersoh god theres more of you?
09:33:02gokrInterested may be the wrong word. I even led the Squeak project for a year or two.
09:33:36kiloni love Pharo and Pharo loves me (Smalltalk)
09:33:43gokrnchambers: Much more of us than there are Nimsters.
09:34:08kilonnchambers: we multiply with water and you should not feed us after midnight
09:34:28nchambersD:
09:35:11kilonor tells us that your language is the best OO , which has the same effect as feeding us after midnight
09:36:02nchambersI should really get back to working on my language, but there are decloaking scripts to write!
09:36:43kilongokr: oh ok its implemented on top of nim, interesting
09:36:58kiloni was thinking implementing something on top of Pharo
09:37:14gokrYeah, the idea is to have a 100% live language where its easy to "fall down" to Nim for heavylifting.
09:37:32kilonlive coding with Nim ? that would be great
09:38:04gokrIn 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:39gokrNot sure where it will lead, but its a fun little experiment.
09:38:47gokrAnd it has odd features :)
09:39:15Araqthat's cool. I don't like boring. :-)
09:41:35federico3thanks gokr, I looked at how other parsers are implemented
09:43:00kilonwell most languages start as experiments and then turn to very good ideas good enough to be further developed
09:43:49gokrNi's homoiconicity is kinda funky. And the way arguments are passed is also funky.
09:43:52kilonso far the only thing i dont like about pharo and smalltalk is camel case
09:44:06reactormonkkilon, you can avoid that in nim ;-)
09:44:31kilonreactormonk: yeah i love that in nim that it allows for this flexibility without braking conventions
09:45:30gokrAnother odd thing in Ni is that... newlines have no semantic effect - but it also has no statement separators.
09:46:05Araqgokr: that's cool but a couple of functional languages can do the same
09:46:23Araqso it's not *that* odd / novel / unique
09:46:36*themagician joined #nim
09:46:49gokrI agree. Just as an example: http://pastebin.com/eHsykGpB
09:47:02gokrIs the same as: code = [1 + 2 + 3] code at: 2 put: 10 echo do code
09:47:40kiloni dont think editors will like your language gokr :D
09:47:41gokrAnd I am not yet certain about if its good, bad, cool or silly.
09:47:50kiloncode editors that is
09:48:18kilonwould not that make their lives harder ?
09:48:38gokrOne thing it means is that ... you sometimes need to use () in assignments. At least its like that now.
09:48:53gokreditors? lives?
09:49:37gokrIn this sense its very Lispish anyway, but with a more "traditional looking" syntax.
09:49:56kilonbut lisp has ()
09:49:59gokrWhich is what got me slightly intrigued by Rebol in the first place. Homoiconicity without the tornado of parens.
09:50:23kilonso an editor can seperate each statement with ease
09:50:29gokrYes, and although I appreciate the elegance of Lisp - I really can't stand the parens tornado.
09:50:35kilonbut with your language wont be that harder for them ?
09:50:58gokrNo idea and i don't care ;)
09:51:31gokrNi is like Smalltalk. Its meant to be live, not edited in silly dead editors.
09:51:45kilonso you will provide the ide as well ?
09:52:27gokrWell, "IDE" is a strong word, but sure, its the idea.
09:52:32gokrJust like Smalltlak.
09:53:47kilongreat , will keep an eye :)
09:54:08kilonanother language i monitor is Factor -> http://factorcode.org/
09:56:50kilonfactor looks a bit like a mix between nim and pharo/smalltalk
10:07:21gokrI know about Factor, Slava is a brilliant guy.
10:07:50gokrBut while I love Forth etc in theory, I have a harder time with concatenative languages in practice.
10:07:58NimBotnim-lang/Nim devel 612cd21 JamesP [+0 ±1 -0]: add examples block to top of times module
10:07:58NimBotnim-lang/Nim devel c122d71 JamesP [+0 ±1 -0]: bug fix: `+` and `-` handle GM and Local time correctly... 2 more lines
10:07:58NimBotnim-lang/Nim devel f5d55ad JamesP [+0 ±1 -0]: tests added: toSeconds with local/GM timezones, interval add/sub... 1 more lines
10:07:58NimBotnim-lang/Nim devel 2d1f263 JamesP [+0 ±1 -0]: Example: add extra getGmTime interval addition example
10:07:58NimBot1 more commits.
10:08:02gokrIt 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:00kilonit does eh ?
10:32:04kilonoh well, pity , seemed like an attractive option
10:32:20kiloni 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:54federico3Araq: 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:00dom96federico3: oh cool
10:38:01dom96I got it
10:38:14dom96So the forwarding just took some time to start working
10:40:51federico3"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:05OnOfederico3: 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:01federico3OnO: 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:18NimBotnim-lang/Nim def--clean-speedup-2 bd4d5db Araq [+0 ±1 -0]: terminal: doc improvments
11:33:18NimBotnim-lang/Nim def--clean-speedup-2 75ccdeb Araq [+0 ±1 -0]: get rid of deprecated effects
11:33:18NimBotnim-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:18NimBotnim-lang/Nim def--clean-speedup-2 c56a005 Simon Hafner [+0 ±1 -0]: nextFreePort -> connectToNextFreePort
11:33:18NimBot996 more commits.
11:34:05Araqer ... 996 more commits?
11:34:29Araqreactormonk: ?
11:34:36reactormonkAraq, O.o?
11:34:48Araqpushed to master?
11:35:02reactormonkCute that you think of me first ;-)
11:35:05reactormonkNope, wasn't me.
11:35:15Araqdom96: ?
11:35:30dom96calm down, it's pushed to def--clean-speedup-2
11:38:20*elrood joined #nim
11:40:02Araqah ok. what kind of branch is that?
11:40:47dom96It's an old branch
11:40:54dom96I tried bringing back FutureVar
11:41:01dom96But then realised that it was already reverted in that branch
11:41:08dom96so I have to bring it back manually
11:41:33Araqok sorry for the noise
11:43:53*boopsiesisaway is now known as boopsies
11:44:01dom96no 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:47NimBotnim-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:53Araqdom96: the last feature I implemented for aporia didn't work out the way I wanted to
12:24:05dom96what feature was that?
12:24:08Araqso ... gtk really is a pita to work with :-/
12:24:18Araqthat I can open files from command line
12:24:22AraqI mean it does work now
12:24:29dom96yeah, that is why I don't really work on Aporia anymore
12:24:32Araqand I have to create a proper PR for this
12:24:43Araqbut still, it was such a pita
12:25:39Araqalso I like platform independent UIs these days. the "native" ones all get worse and worse anyway
12:26:09Araqwho cares about a consistent look and feel if it gets consistently worse?
12:27:31Araqand the biggest "UI system" out there -- the web -- is not consistent either
12:27:47federico3to put it mildly
12:28:30dom96yep. Which is why I am considering rewriting Aporia using SDL or something like that.
12:30:05gokr_Just like Pharo & Squeak :))
12:30:21reactormonkdom96, then you'd lose all the accessability etc :-/
12:30:34coffeepotwhy 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:30federico3heh
12:31:38federico3coffeepot: --> #nim-offtopic
12:33:29dom96federico3: no.
12:33:38dom96Let's stop telling people to talk in #nim-offtopic please
12:34:04coffeepottechnically it is offtopic, but i was following the convo in there and it switched to here :D
12:34:29dom96Let's not be this strict.
12:34:56reactormonkI've never really messed with GUIs, the only thing I used was TK, which I kinda liked.
12:35:05dom96reactormonk: I guess.
12:35:30dom96If you need accessibility then you wouldn't use my editor anyway I guess
12:35:40reactormonkdom96, that's true again.
12:38:07gokr_Pharo people are abstracting the graphics above Cairo.
12:38:43gokr_So Cairo may be a more suitable low level library
12:38:52gokr_than SDL2
12:42:36*boopsies is now known as boopsiesisaway
12:47:18dom96Araq: Wanna make the switch from all exceptions being non-ref types to all exceptions being ref types this release?
12:47:35Araquh oh
12:47:57Araqyeah, if we can do it without breaking too much code
12:48:18dom96Any ideas how to do that?
12:50:18*yglukhov quit (Remote host closed the connection)
12:51:23dom96could we not just make newException work with ref objects?
12:51:53dom96other 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:17NimBotnim-lang/Nim devel 8082533 Dominik Picheta [+0 ±1 -0]: Implement strutils.indent
13:36:17NimBotnim-lang/Nim devel 77c2bcf Dominik Picheta [+0 ±4 -0]: Improve asyncdispatch error messages, fix some tests on Windows.
13:40:05Mat4hello
13:41:26dom96Asyncdispatch should now give some nicer exception messages :D
13:41:50Mat4I have following structure:
13:42:16Mat4 tInternalMemory = object
13:42:17Mat4 aMemory : array [tInternalMemoryAddress, tInteger]
13:42:19Mat4 iMemory : tInternalMemoryAddress
13:42:40Mat4and following procedure defination:
13:42:56Mat4proc read (memory : trInternalMemory, address : tInternalMemory) : tInteger =
13:42:57Mat4 result = memory.aMemory[address]
13:43:33Mat4compiling it I get these error: Error: type mismatch: got (array[0..2048, tInteger], tInternalMemory)
13:44:45Mat4how can I access the array ?
13:48:41Varriount_Mat4: Is that all the code?
13:48:47Araqdom96: yeah you're right
13:49:45Araqshould be easy enough to do that
13:50:30dom96Araq: Wanna do that for this release?
13:51:19dom96Maybe somebody could volunteer their time to s/object of Exception/ref object of Exception/ etc.
13:52:55Mat4Varriount_: yes, except trInternalMemory is of type: ref tInternalMemory
13:53:18*silven quit (Ping timeout: 246 seconds)
13:53:39AraqMat4: your index type is wrong
13:53:49*silven joined #nim
13:54:01Araqshould be memoryaddress, not memory
13:54:20Mat4right, thanks (overviewed this error)
13:55:17*Mat4 need probably more sleep
13:56:56Araqdom96: just do it, its simple
13:57:32dom96Got 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:41OnOstupid Q, what's the benefit of having Exception to be ref-type?
14:27:33Araqpolymorphism only works well with 'ref object'
14:28:13Araqand an "open" sum type is very natural for exceptions
14:30:12*Jesin joined #nim
14:30:25OnOmakes 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:32NimBotnim-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:52federico3how can I execute a proc by name?
16:47:56*NimBot joined #nim
16:52:50gokr_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:10enamexNim 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:48enamexAny 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:00reactormonkenamex, I think Araq prefers writing code over documentation
17:32:08*jaco60 joined #nim
17:32:47enamexSad 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:11Araqreactormonk: actually I don't mind writing docs, docs don't have to be debugged :-)
17:36:00Araqenamex: I cannot answer your question because it's too broad. What do you want to know?
17:38:29enamexWhether 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:02enamexOr briefly put: The Diary of Making Nim (with a focus on its reliance on C).
17:41:08Araqhmm 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:49enamexNo no. Specifically the reliance as in translation from-spec-to-spec
17:41:55Araqalso it's nice that you think the spec is complete, but it is not and it certainly wasn't when I started
17:42:25Araqthe spec and the implementation interact in a constant circle of refinements
17:44:59enamexWell, "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:15Araqsorry, 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:57enamexPlanning to write these docs, story about making Nim. X'D. Ok, I'm not getting this through today it seems...
17:54:20AraqThat it generates C has also been the plan from the beginning but people had to fight for .emit
17:55:28Araqthe original FFI was designed to work out of the box with an LLVM-like target.
17:56:44enamexGood 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:48Araqhrm 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:51AraqInstead 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:49enamexWait, 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:51Araqyou misunderstand me. I'm talking about the last step in the pipeline.
18:05:05Araqthe step that generates C code from the AST.
18:05:38Araqall the rest is AST-AST transformations
18:06:36enamexHow'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:57Araqyou create an AST that only uses features of Nim that have a trivial mapping to C.
18:16:39enamexSort 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:51AraqNim'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:47AraqIt 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:09enamexA /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:55AraqNo, that only affects the last codegen step. For the other steps you can use what you think is wise.
18:31:13Araqwooohooo, emscripten support: https://github.com/nim-lang/Nim/pull/3314
18:32:30dom96yeah, 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:36gokr_Sidenote: Hopl - history of programming languages
18:39:09gokr_Quite intetesting papers from that conf
18:43:50enamexAraq: 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:51Araqit's all done in-memory.
18:44:59Araqthe AST is quite optimized for size though.
18:45:06Mat4Sidenote: 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:05enamexGoogling for various permutations of "writing a AST|abstract-syntax-tree transformer" turns up surprisingly little educational content. Go figure,,,
18:56:10gokr_Mat4: https://en.m.wikipedia.org/wiki/History_of_Programming_Languages
18:59:07elroodenamex, 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:04enamexLike a book on making nim? :P
19:03:19elroodlike 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:35enamexc'mon! I did say 'anyone heavily involved' or even otherwise qualified.
19:06:05enamexBesides, good documentation is basic productivity in science
19:06:23elroodsure 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:51elroodand there is quite a lot of good compiler and language design literature out there
19:07:21Mat4gokr_: thanks, very interesting
19:10:23elroodbesides, 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:49AraqClay's inventor was hired by Apple iirc
19:11:32Araqso with a bit of luck he had a chance to influence Swift
19:11:47elroodrings a bell, i believe i'd heard that. but clay itself is practically dead, is it?
19:12:06Araqas far as I know, yes
19:13:25gokr_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:46elroodpity. but well, more attention for nim, assumedly
19:16:03dom96enamex: I think that Araq is the only one qualified to write a book about making Nim unfortunately.
19:18:09nchambershes doing that right?
19:20:28*ChrisMAN joined #nim
19:20:59Araqyeah but it's not about Nim's history
19:25:37enamexHm, doing what? HOPL(4?)?
19:27:16*NimBot joined #nim
19:29:13Mat4gokr_: 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:21gokr_interesting
19:32:04gokr_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:46Mat4yes, 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:00Demosis there a pragma that can get the compiler to emit extern "c" before an importc'd var?
19:37:04DemosI guess I can just use when defined(cpp): {.emit: """extern "c" {""".} but I want to know if there's a better way
19:38:43Mat4there 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:06Mat4hmm, I get quite offtopic
19:43:00*leru quit (Quit: Nettalk6 - www.ntalk.de)
19:45:45AraqDemos: .codegenDecl pragma
19:45:56Demosthanks
19:50:08Mat4Araq: 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:51Araq.codegenDecl support anything you can dream of
19:52:23Mat4I take a look, thanks
19:57:19gokrMat4: Cool. Sorry, I was putting my daughter to bed.
19:59:54gokrMat4: Then of course... Eliot Miranda is also a VM guru of rank. Not sure theorem proving is his interest though.
20:02:55Mat4doesn't know him before, thanks just reading his blog
20:06:14gokrEliot was head engineer of the VisualWorks VM for a number of years. He and Ian are on the similar level of expertise.
20:07:17gokrSince 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:28Mat4the Coq Vm is quite sophisticated as I see
20:15:29gokrYes it is. Its adding adaptive optimization now, Sista, and the goal is to almost reach JVM performance levels.
20:15:51gokrCog, not Coq :)
20:17:18Mat4oh 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:47Varriount_Araq: I hope you are really sure about suffixing the dll's with 32 & 64.
22:42:26dom96It's clashing with Ruby's DLLs for me already
22:42:27dom96Just FYI
22:42:35Varriount_:/
22:42:39*Varriount_ is now known as Varriount
22:43:06VarriountIf 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:06dom96Ideally there should be an error "Attempting to load a 32bit DLL in a 64bit application"
22:56:51*Jesin joined #nim
23:03:26Varriountdom96: 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:02AraqVarriount: why? our installer ships with these DLLs
23:25:56VarriountAraq: 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:34Araqwhy? you need to ship these DLLs with your exe
23:28:53Araqor you require that Nim is installed ... just like before
23:29:51Araqthe 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:38Araqmaybe nimeay32.dll, the lib prefix is stupid anyway
23:34:46*irrequietus quit (Ping timeout: 240 seconds)
23:55:55federico3any way to scan a table in sorted order?