<< 22-08-2014 >>

00:00:56*nande quit (Client Quit)
00:02:55*nande joined #nimrod
00:03:07*noam joined #nimrod
00:14:48*untitaker quit (Quit: ZNC - http://znc.in)
00:15:18*untitaker joined #nimrod
00:19:29*untitaker quit (Client Quit)
00:19:53*brson quit (Ping timeout: 240 seconds)
00:19:59*untitaker joined #nimrod
00:22:51*brson joined #nimrod
00:39:51*xenagi joined #nimrod
01:04:14flaviuAraq: Break up the compiler into at least 10 different passes and figure out a way to make the AST typesafe and I will not have any excuse not to help.
01:21:10*willwillson quit (Ping timeout: 250 seconds)
01:25:09*q66 quit (Quit: Leaving)
01:25:17*brson quit (Ping timeout: 245 seconds)
01:29:24*brson joined #nimrod
01:31:18*nande_ joined #nimrod
01:31:59*EXetoC quit (Quit: WeeChat 0.4.3)
01:32:26*nande quit (Ping timeout: 250 seconds)
01:49:11*Kelet quit (Remote host closed the connection)
02:06:06*filwit quit (Quit: Leaving)
02:14:28*saml_ joined #nimrod
02:37:28*fran__ joined #nimrod
02:39:53*Fr4n quit (Ping timeout: 240 seconds)
02:54:06*adoniscik quit (Quit: Leaving)
02:55:09*brson quit (Ping timeout: 240 seconds)
02:58:37*brson joined #nimrod
03:04:49*Demos quit (Quit: Leaving)
03:09:30*nande_ is now known as nande
03:13:04*Boscop joined #nimrod
03:25:25*ehaliewicz joined #nimrod
04:05:34*darkf_ joined #nimrod
04:06:25*flaviu quit (Ping timeout: 272 seconds)
04:06:48*darkf quit (Ping timeout: 250 seconds)
04:09:53*darkf_ is now known as darkf
04:15:34*brson quit (Ping timeout: 264 seconds)
04:26:56*bogen joined #nimrod
04:34:20*xenagi quit (Quit: Leaving)
04:37:16*ome joined #nimrod
04:37:31*saml_ quit (Remote host closed the connection)
04:39:57*ARCADIVS joined #nimrod
05:11:03*nande quit (Read error: Connection reset by peer)
05:44:32*gkoller joined #nimrod
06:10:44*ehaliewicz quit (Read error: Connection reset by peer)
06:41:50*bjz quit (Quit: Textual IRC Client: www.textualapp.com)
06:46:22*shodan45 quit (Quit: Konversation terminated!)
07:05:27Skrylarhmm
07:39:54*vegai joined #nimrod
07:46:33vegaihey
07:46:46vegaiare people aware that nimrod-0.9.4 and babel-0.4 seems to be an uncompilable combo?
07:47:11vegaidocumentation says to run
07:47:11vegainimrod c -r src/babel install
07:47:14vegaiwhich ends up with
07:47:22vegaiHint: compat [Processing]
07:47:22vegai/home/vegai/git/babel/src/babel.nim(293, 6) Hint: 'depNameVer' is declared but not used [XDeclaredButNotUsed]
07:47:25vegai/home/vegai/git/babel/src/babel.nim(674, 66) Error: undeclared identifier: '{}'
07:48:29vegaithat line is
07:48:30vegai let thisPkgsDep = options.babelData["reverseDeps"]{pkg.name}{pkg.version}
07:48:36vegaiso I suppose pkg.version is empty for some reason
07:52:33vegaithis was attempted on ARM platform btw, if that matters
07:58:56*kunev joined #nimrod
08:01:44Skrylartruth be told, i have never even tried to use babel even though i've been writing nimrod code for a few months
08:06:11*Boscop quit (Read error: Connection reset by peer)
08:21:43def-vegai: I think yesterday dom96 was trying to fix that
08:39:04*Ven joined #nimrod
09:18:32*Trustable joined #nimrod
09:59:37*ARCADIVS quit (Quit: WeeChat 0.4.3)
10:00:40*Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
10:04:41*Ven joined #nimrod
10:10:24vegaidef-: ok
10:48:31*Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
11:11:13*Ven joined #nimrod
11:18:56*saml_ joined #nimrod
12:56:22*darkf quit (Quit: Leaving)
13:02:04*Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
13:21:50*saml_ quit (Quit: Leaving)
13:23:40*willwillson joined #nimrod
13:24:13*Ven joined #nimrod
13:40:18*gkoller quit (Quit: Textual IRC Client: www.textualapp.com)
14:32:28*Ven quit (Ping timeout: 260 seconds)
15:25:49*Ven joined #nimrod
15:33:44*fran__ quit (Ping timeout: 255 seconds)
15:34:59*kunev quit (Quit: leaving)
15:56:07*fran__ joined #nimrod
16:08:12*untitaker quit (Ping timeout: 250 seconds)
16:13:39*untitaker joined #nimrod
16:22:39*brson joined #nimrod
16:31:11*EXetoC joined #nimrod
16:39:20*gkoller joined #nimrod
16:54:10*Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:03:56*Ven joined #nimrod
17:15:33*willwillson quit (Ping timeout: 240 seconds)
17:19:27*q66 joined #nimrod
17:42:07*Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
17:50:15*jhc76 joined #nimrod
17:54:13Araqhi jhc76 welcome
17:54:59jhc76Araq: Hi!
17:55:13dom96Argh. I guess I need to install 0.9.4
17:56:01*io2 joined #nimrod
18:00:27AraqI need a new library directory for the new names
18:03:11*sdough joined #nimrod
18:03:36Araqhi sdough welcome
18:03:44sdoughHi Araq
18:04:34*jjap joined #nimrod
18:06:27dom96hello jjap
18:06:29jjapAny advice about best practices for calling external process? I'm looking at the osproc.exec* procs and I'm trying to figure out the best way to call external processes without pain related to specific OSes, shells, bash quoting, etc
18:06:33jjaphi
18:06:34*dom96 wonders why the sudden influx of new users
18:07:07reactormonkdom96, we should have a survey to find out how users heard of nimro
18:07:20reactormonkdom96, wanna have a strawpoll lying around?
18:08:06dom96reactormonk: I don't think we'll be able to come up with the correct answers.
18:08:15jjapDunno. I heard about nimrod a years ago, but only now am I really giving it a shot. All this talk about compiled/static/"better c" finally pushed me over the edge
18:08:17reactormonkdom96, then keep a manual file.
18:08:19jjap*years ago
18:08:19dom96Checking analytics is good enough.
18:08:26dom96I can see a spike in visitors today
18:09:47dom96Looks like I underestimated slashdot. http://news.slashdot.org/story/14/08/21/216217/latest-wikipedia-uproar-over-superprotection
18:10:02reactormonkdom96, you calling any external processes on a regular basis?
18:11:01jjapI'd like to replace my bash/ruby/etc scripts (glue code, commandline utilities) with something like nimrod
18:11:05dom96reactormonk: external processes? Not sure what you mean.
18:11:57Araqjjap: dunno, osproc.execCmdEx is quite good, I think
18:12:31AraqexecCmd is fine too but loses the exitCode
18:16:03jjapThanks. I noticed one of them... execProcess, lets me send the args as a seq of strings. like startProcess(command="touch",args=["me.txt", "-xyz"])... I'm still experimenting
18:16:26*Ven joined #nimrod
18:17:32reactormonkdom96, ah, cool
18:18:06jjapWhen I used execCmd with one long string to send to the shell (bash in my case, but could be different), I had to run the input filenames through a regex to escape it properly. I was wondering if there's a way to avoid that, and not have to expect a bash shell
18:20:26*Matthias247 joined #nimrod
18:20:32Araqjjap: well os.execShellCmd() invokes it via a posix shell (wraps C's system() call)
18:22:28*jjap quit (Ping timeout: 246 seconds)
18:23:52*jjap joined #nimrod
18:24:02jjapsorry, shaky internet
18:26:29reactormonkjjap, gotta buy an internet stabilizer - for just 99,99BTC
18:27:49jjapI tried a conditioner, a booster, a http prefetcher, but nothing helps!
18:28:30dom96jjap: You can take a look at the irc logs here: http://build.nimrod-lang.org/irclogs/ if you miss something.
18:29:36jjapHmm. osproc.startProcess says "If env == nil the environment is inherited of the parent process." Running the nimrod code in terminal, this parent env should include my $PATH, no?
18:29:38jjapdom96: thanks
18:30:04EXetoCjjap: are your tubes clogged?
18:31:04jjapEXetoC: With the emails! They arrive days late.
18:31:39EXetoC:/
18:34:13jjapAraq: execShellCmd seems like the most straightforward, but seems like the most fragile (passing one long string I'm hoping is escape, hoping is running on posix/bash). Am I just making this up?
18:36:15jjapAh. I see osproc has quoteShell[Windows|Posix].... But I also notice that `discard osproc.startProcess(command="/usr/bin/touch",args=["me's y!.txt"])` creates the file without quoting problems
18:52:04Araqjjap: there is also some findExe() call that looks for the exe in your $PATH
18:58:18*willwillson joined #nimrod
19:10:57jjapAraq: Thanks. I'm having success so far with execProcess, using a sequence/array for the args (and removing poEvalCommand from the options, and including poUsePath)
19:17:10Araqbrb
19:18:42jjapHrm. Now I'd like to pipe from one process to another (sox -> faac)... Sounds like a great time to finally take the dogs out for a wa
19:18:45jjaplk
19:31:14*Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
19:32:04*EXetoC quit (Read error: Connection reset by peer)
19:34:12*Ven joined #nimrod
19:42:36Araqback
19:43:01Araqso dom96 ... we either have large 'when defined(newNames)' section everywhere
19:43:15Araqor we duplicate the stdlib for the transition
19:43:27*flaviu joined #nimrod
19:43:31Araqor we need to rebuilt the C sources
19:43:47Araqand 0.9.4 can't even compile the new system.nim
19:45:19Araqhi flaviu
19:45:25flaviuHi
19:45:37*Jehan_ joined #nimrod
19:46:29Araqwe have: lexing, parsing, semcheck1, semcheck2, transf, lambdalifting, optional compile-time evaluation, code generation as passes
19:46:35Araqthat's 8.
19:46:47Araqdo you really think having 2 more would improve anything?
19:46:48flaviulexing, parsing don't count as passes
19:46:54Araqsure they do
19:47:33flaviuIn my world, the definition of pass is AST -> AST transformation
19:47:52flaviuSo in which pass are symbols bound?
19:48:00Araqsemcheck1
19:48:04flaviuI don't see a "bind-symbol" pass
19:48:17Araq*shrug* that doesn't mean anything
19:48:40Araqit exists and also needs to do type-checking because of overloading
19:49:29flaviuYes it does. More passes means that the programmer has to keep less in his head, just one pass at a time.
19:49:48Araqwhen you transform X -> Y X, you have to ensure that it doesn't produce Y Y X when the pass happens again
19:50:17Araqthis can be a harder problem than "keeping less in one's head"
19:51:19Araqmore passes also immediately means "slower compilations" btw
19:51:35flaviuAraq: There are worse things than slower compiles
19:52:23flaviuLike no one wanting to work on the compiler
19:54:40dom96Araq: rebuild C sources sounds like the easiest option?
19:55:15Araqflaviu: so what other compilers did you ever look at and felt like contributing?
19:55:33AraqLua? Python? GCC? FPC? clang?
19:55:54AraqLuaJIT?
19:56:16Araqthe truth is Nim's internals are far easier than any of the above
19:56:17flaviuAraq: Good point, I should look around and see what compilers do what things right
19:57:07flaviuAraq: BTW, scala has 25 passes
19:57:08flaviuhttps://gist.github.com/flaviut/dc8cd86c69973ea3b0b9
19:57:27Jehan_I wouldn't exactly praise Scala's compilation process. :)
19:57:48Araqscala also compiles slowly and its architecture has more issues than nim's
19:57:57flaviuAraq: I won't argue there
19:59:20Araqok, maybe Lua's internals are easier
19:59:47Araqif you don't look at the upval processing
20:00:01Araqwhich got its own paper written about it
20:01:04flaviuhttps://github.com/scala/scala/blob/2.11.x/src/compiler/scala/tools/nsc/transform/LazyVals.scala
20:01:31flaviuPretty short, you can tell exactly what is going on and make changes without really worrying about how it interacts with everything else
20:02:05Araqlol, in your dreams
20:08:19*Joe_knock joined #nimrod
20:08:43*Joe_knock quit (Max SendQ exceeded)
20:09:11*Joe_knock joined #nimrod
20:10:02*Joe_knock quit (Max SendQ exceeded)
20:10:28*Joe_knock joined #nimrod
20:11:22*Joe_knock quit (Max SendQ exceeded)
20:11:46*Joe_knock joined #nimrod
20:12:39*Joe_knock quit (Max SendQ exceeded)
20:13:06*Joe_knock joined #nimrod
20:13:59*Joe_knock quit (Max SendQ exceeded)
20:14:33*Joe_knock joined #nimrod
20:15:26*Joe_knock quit (Max SendQ exceeded)
20:15:26dom96Araq: Should this output true? https://gist.github.com/dom96/c7e89189ecc0bf1be26a
20:15:57*Joe_knock joined #nimrod
20:16:09Araqdom96: I think it shouldn't compile
20:16:28Araqnot foo is bool, 5 is int, bool >= int makes no sense
20:16:48*Joe_knock quit (Max SendQ exceeded)
20:16:49NimBotnimrod-code/babel master 07d4fd2 Dominik Picheta [+0 ±1 -0]: Fixes compilation on 0.9.4.
20:17:11Araqoh wait
20:17:16flaviuAraq: not foo is bitwise not
20:17:18Araqnot foo is an int too lol
20:17:20*Joe_knock joined #nimrod
20:17:47dom96uhhh, that's a terrible gotcha.
20:17:58Araqyeah, perhaps we should use ~ instead
20:18:14*Joe_knock quit (Max SendQ exceeded)
20:18:41*Joe_knock joined #nimrod
20:18:56flaviuAraq: ~ is already regex match
20:19:01flaviuwell, =~
20:19:32*Joe_knock quit (Max SendQ exceeded)
20:19:48flaviuBut `=~` and `~=` being different is weird
20:19:58*Joe_knock joined #nimrod
20:20:31dom96yay, more code breakage :(
20:20:52*Joe_knock quit (Max SendQ exceeded)
20:21:19*Joe_knock joined #nimrod
20:22:42flaviuSave it for the code linters?
20:27:33*Ven quit (Ping timeout: 240 seconds)
20:31:13Araqbitnot can easily stay a function with the new ()-less syntax
20:33:39*Ven joined #nimrod
20:34:47Araqit's not commonly used anyway, no need to make it an operator
20:36:57*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
20:40:23dom96it is if you're writing code which needs it.
20:40:48Araqwe have bitsets instead
20:41:40*nande joined #nimrod
20:45:19*Mat3 joined #nimrod
20:45:21Mat3hello
20:47:35*ome quit (Quit: Connection closed for inactivity)
20:50:44Araqhi Mat3
20:51:17Mat3hi Araq
20:56:28Mat3I'm writing a monitor program for my native-code compiler which can be used as AOT backend for Nim(rod). This way all work left would be replacing Nimrod's C code generator
20:57:01Mat3I see two advantages of this effort:
20:57:26Mat31. I do not need to patch your VM
20:57:46Mat32. it is still possible to compile code JIT at demand
20:58:31Mat3the drawback is: The whole run-time state is not avariable for code optimization
20:59:34Araqwhat do you mean by "monitor program"?
21:01:49Mat3something like this: http://blog.trikaliotis.net/index.php?post/2007/03/25/2-the-vice-monitor-part-i-memory-contents
21:02:30Mat3http://en.wikipedia.org/wiki/Machine_language_monitor
21:05:42*io2 joined #nimrod
21:08:12Mat3^which such program I can code and debug the backend interactively at runtime
21:08:27*Mat3 thinks this is a good idea
21:09:14*sdough quit (Quit: sdough)
21:16:09Araqdunno. sounds complex
21:18:20flaviucomplex is bad, mmkay
21:22:20AraqMat3: a native code compiler is really nice, but "all the work left would be replacing the C code generator" is quite some work
21:26:55*jjap quit (Ping timeout: 246 seconds)
21:27:56Mat3so what would be a better approach ?
21:33:50Araqmake it generate GNU inline assembler per proc, then you can easily switch between the C impl and the asm impl to see which proc produces wrong code?
21:34:31Araqjust an idea, but it seems feasible
21:37:08Mat3hmm, I try it out
21:39:43*Ven quit (Quit: My MacBook has gone to sleep. ZZZzzz…)
21:40:02Araqdepends whether you have a GNU asm string representation of the assembler though
21:40:36Araqhow do you currently emit the assembler?
21:40:54Araqin its binary representation?
21:43:11Mat3yes, the code is compiled from an IL representation (NAVM code)
21:44:53Mat3I have in addition coded an inline assembler for embedding NAVM code in Nimrod
21:46:18Araqperhaps you should generate ELF object files and then we can mix the C and asm backends this way
21:46:53Mat3this would be an easy task
21:46:55Araqas I said, the mixing should be nice for debugging
21:51:08Mat3get some sleep, ciao
21:51:15*Mat3 quit (Quit: Verlassend)
21:56:58*gkoller quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
22:06:50*Jehan_ quit (Quit: Leaving)
22:32:24*Sht0 joined #nimrod
22:33:28VarriountMeep
22:33:33VarriountWhat's up guys?
22:34:41Araqhi Sht0 welcome
22:37:12*brson quit (Quit: Lost terminal)
22:37:21*brson joined #nimrod
22:38:11Sht0Hi Araq & y'all! Nice to meet you :)
22:38:31AraqVarriount: I started a bigbreak branch
22:38:52Araqthat contains the renamefest
22:39:07Araqbut I'm struggling with how to do the backwards compatibility
22:39:53*saml quit (Quit: Leaving)
22:41:48*nande quit (Read error: Connection reset by peer)
22:47:51VarriountAraq: Well, you could throw it to the wind.
22:48:23VarriountAraq: There are plenty of things that need to be changed. *cough*walkTreeRec*cough*
22:49:39Araqwhat's wrong with that?
22:49:52Araqyou mean walkDirRec, right?
22:52:26VarriountEr, yes.
22:52:51Araqyeah I recently tried to use it, lol
22:52:52VarriountAraq: The fact that returning a FileInfo object would be much more useful.
22:53:07Araqno, its interface is stupid and error prone
22:53:21Araqthat it doesn't yield a FileInfo was not my problem with it
22:53:24VarriountWhat would be a more useful interface?
22:53:42Araqthe filter is weird, but it is documented correctly
22:53:51AraqI didn't read the docs of course
22:53:56VarriountHow is the filter wierd?
22:55:32Araqwell I wanted to delete any dir that's named .svn
22:55:41Araqtry that with walkDirRec
22:55:53Araqit cannot even yield directories
22:56:28*Sht0 quit ()
22:57:04*io2 quit (Quit: ...take irc away, what are you? genius, billionaire, playboy, philanthropist)
22:57:26*Sht0 joined #nimrod
23:13:37*darkf joined #nimrod
23:20:09*enquora joined #nimrod
23:24:18*ARCADIVS joined #nimrod
23:25:01*Trustable quit (Quit: Leaving)
23:28:23*brson quit (Ping timeout: 240 seconds)
23:29:33Araqhmm with the new rules we have OSError for the exception and osError as the proc raising it
23:30:42*Sht0 quit ()
23:32:54dom96That's not a problem is it?
23:33:07dom96Remember to make these errors a 'ref' so that we can write: raise OSError(..)
23:38:45Araqthat is a problem for cs:none which is required by "nim pretty" to update the code
23:41:32*Boscop joined #nimrod
23:46:54*xenagi joined #nimrod