<< 23-12-2013 >>

00:09:42gradhathis is promising http://www.i-programmer.info/news/167-javascript/6734-asmjs-gets-faster.html
00:09:55gradhathey added a float32 type and the performance went up
00:10:12gradhaif they keep adding native types soon they will outperform compiled code
00:14:39gradhagood night, honey badgers
00:14:45*gradha quit (Quit: bbl, need to watch http://www.youtube.com/watch?v=dEf4PJZXBxA again)
00:17:10*brson joined #nimrod
00:24:22NimBotAraq/Nimrod vm2 1c6bd59 Michał Zieliński [+0 ±1 -0]: add quoteShell to osproc.nim
00:24:22NimBotAraq/Nimrod vm2 db0da97 Michał Zieliński [+0 ±1 -0]: Deprecate quoteIfContainsWhite in favor of osproc.quoteShell.
00:24:22NimBotAraq/Nimrod vm2 6895423 Michał Zieliński [+0 ±5 -0]: Use quoteShell in stdlib, where appropriate.
00:24:22NimBotAraq/Nimrod vm2 8f854bb Grzegorz Adam Hankiewicz [+0 ±1 -0]: Mentions static alternatives to quit().
00:24:22NimBot38 more commits.
00:38:47*brson quit (Ping timeout: 240 seconds)
00:40:42*brson joined #nimrod
00:49:43*boydgreenfield joined #nimrod
01:13:08*Varriount_ joined #nimrod
01:14:55*Varriount quit (Ping timeout: 245 seconds)
01:29:11*boydgreenfield quit (Quit: boydgreenfield)
01:33:48*boydgreenfield joined #nimrod
01:40:23*brson quit (Read error: Operation timed out)
01:42:52*brson joined #nimrod
02:03:58*boydgreenfield quit (Quit: boydgreenfield)
02:20:27*boydgreenfield joined #nimrod
02:30:53boydgreenfieldCan anyone point me to a good example of the || iterator using proper/appropriate annotation? (Or relevant deeper docs, for some reason I'm only seeing: http://build.nimrod-lang.org/docs/system.html#482)
02:30:57boydgreenfieldThx!
02:37:26*brson quit (Quit: leaving)
03:31:52*yodi joined #nimrod
03:36:45*yodi left #nimrod (#nimrod)
04:26:22*xenagi quit (Quit: Leaving)
05:14:42*BitPuffin quit (Ping timeout: 240 seconds)
05:55:26NimBotAraq/Nimrod master f62f465 Satish BD [+0 ±8 -0]: Correct the spelling of the word 'implicitly'
05:55:26NimBotAraq/Nimrod master d4fe419 Simon Hafner [+0 ±8 -0]: Merge pull request #774 from brihat/master... 2 more lines
06:00:36*OrionPKM quit (Remote host closed the connection)
06:09:37*OrionPKM joined #nimrod
07:29:24*ics joined #nimrod
07:49:10*Sergio965 joined #nimrod
07:56:14*boydgreenfield quit (Quit: boydgreenfield)
07:57:33*boydgreenfield joined #nimrod
08:25:20*ics quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
08:35:13*ics joined #nimrod
08:51:56*Araq_ joined #nimrod
08:56:11*boydgreenfield quit (Quit: boydgreenfield)
08:56:29*zielmicha joined #nimrod
09:08:33*Sergio965 quit (Quit: My MacBook Pro has gone to sleep. ZZZzzz…)
09:18:00*aftershave quit (Quit: Textual IRC Client: www.textualapp.com)
09:19:05*aftershave joined #nimrod
09:29:24*zahary quit (Quit: Leaving.)
09:32:35*girvo joined #nimrod
09:33:59girvoHi all
09:34:55girvoJust as a neat thing I came across -- an excellent editor for cross-platform Nimrod dev, is TextAdept, based on Scintilua (sic). I'm working on a language plugin for it to handle some more advanced stuff, and building AdeptSense (think Intellisense) for the standard libraries
09:36:23Araq_hi girvo. cool.
09:36:38Araq_you know about idetools, right?
09:36:55girvoAraq_ yep!
09:37:18girvoAraq_ thats' what i'm integrating. I've never used Lua before, so it's slow going, but its easier than I expected :)
09:39:22KoodaHey, that thing looks awesome! http://zhehaomao.com/project/2013/12/20/vector.html
09:42:11girvoI'll be chucking it up on github (same name as here)
09:42:33girvoKooda: Yeah Vector is neat. Check out ArrayFire for something really similar and a bit further along :)
09:45:51KoodaLooks nice, too bad it’s not open :Þ
09:46:23KoodaIs there an open implementation of OpenCL yet?
10:02:17Araq_nimrod will soon support an OpenCL backend :P
10:04:33*girvo quit (Quit: My iMac has gone to sleep. ZZZzzz…)
10:06:42*psquid quit (Quit: work)
10:07:27fowlgood morning
10:15:41KoodaAraq_: that would be awesome :3
10:18:19*girvo joined #nimrod
10:50:59*girvo quit (Quit: My iMac has gone to sleep. ZZZzzz…)
10:57:48*Araq_ quit (Quit: ChatZilla 0.9.90.1 [Firefox 25.0.1/20131112160018])
11:26:10*girvo joined #nimrod
11:50:43fowlparseopt is deprecated? o.o
12:27:15*BitPuffin joined #nimrod
12:32:10*girvo quit (Quit: My iMac has gone to sleep. ZZZzzz…)
12:41:43*zielmicha quit (Ping timeout: 260 seconds)
12:45:00*Sergio965 joined #nimrod
12:45:49*Sergio965 quit (Client Quit)
12:48:59*zielmicha joined #nimrod
13:00:28zielmichafowl: use parseopt2
13:00:55zielmichait has same API, but slightly different behaviour, and it doesn't break on arguments containing spaces
13:01:09fowlis --foo 32 supported
13:01:49*Sergio965 joined #nimrod
13:03:20*Sergio965 quit (Client Quit)
13:28:57*Smaehtin joined #nimrod
13:30:13SmaehtinHey everyone, I'm trying to embed a resource (.res) file into my program on Windows. Does anyone know how to do this? Thanks in advance.
13:31:13*darkf quit (Quit: Leaving)
13:44:13*zielmicha quit (Ping timeout: 246 seconds)
13:45:54SmaehtinMy bad, I was looking for compiler options but stumbled across the {.link.} pragma which did the job. Nevermind, I'm out! :)
13:45:59*Smaehtin quit (Quit: http://www.kiwiirc.com/ - A hand crafted IRC client)
14:57:53*fredmorcos joined #nimrod
15:12:33dom96'ello
15:17:45*boydgreenfield joined #nimrod
15:18:35fowlgreetings dom
15:18:40fowldom96, is '96 your birth year?
15:18:49dom96no.
15:18:53dom96Haven't you already asked me that?
15:19:02fowlno
15:20:36dom96well then i'm surprised it took you this long to ask me it heh
15:24:18*fredmorcos quit (Quit: Leaving)
15:34:57*ddl_smurf quit (Quit: ddl_smurf)
15:36:00*ddl_smurf joined #nimrod
15:38:16*ddl_smurf quit (Client Quit)
15:39:50*gradha joined #nimrod
15:43:17*Endy joined #nimrod
15:48:29tylereWhy is is there no cast from char to string?
15:48:40tylereSurely a character is trivially convertible to a length-1 string
15:48:45gradhabecause a char is not a string, use $
15:49:00gradhaa cstring requires an additional null terminating character
15:49:14gradhaa "real" string likely has other information, like length, to make other operations faster than cstring
15:49:21gradhaso a single char doesn't cut it, sorry
15:49:45tylereI'm not saying it IS a string
15:49:55tylerebut why is there no standard converter function?
15:50:03gradhait is called `$`
15:50:18gradhaa cast is not a converter function, it's "presume this thing is this other thing"
15:51:10tylereor actually, perhaps more to the point, a built in converter from seq[char] to string
15:51:41gradhatylere: if you keep changing the specification, I won't ever answer
15:51:52gradhause strutils.join for your 2.0 spec
15:52:07tyleregradha: that's funny
15:52:13tylerethat's what I *am* trying to use
15:52:17dom96It's because type safety is important.
15:52:19tylerebut strutils.join requires an array of strings
15:52:22tylerenot an array of chars
15:52:39gradhaah, indeed, sorry about that
15:53:28gradhaI think you need to map $ over the chars, then use join on the result
15:53:28tylereand that's what prompted this whole internal debate about how char should have a converter to string...
15:53:41tylereyea, that's what I'm doing
15:53:53gradhaconverters are dangerous
15:54:03gradhayou end up converting stuff by accident
15:54:11gradhaand then blame the language for not having types
15:54:25gradhabut presumably you can write a converter for char->string
15:54:55gradhabut why do you have seqs of chars anyway? it's like the wrong structure for most purposes
15:56:39fowltylere, if you want this to work then just write the converter for it
15:57:42gradhamaybe add a proc `$`(chars: seq[char]): string to unicode for convenience/parallelism?
15:58:06tyleregradha: working on a bigint library
15:58:21tylerethis code is in the `$` for my bigint type
15:58:58dom96if seq[char] is a string anyway then why are you using seq[char] in the first place?
15:59:17gradhamaybe insertions and deletions are critical for bigint?
15:59:23tylereit's being built up one char at a time
15:59:31gradhatylere: strings are good for that
15:59:33dom96strings are mutable.
15:59:34tylerethe actual underlying datastructure is a seq[int8]
16:00:18dom96You can perform the same actions on them as you can on a seq[char]
16:00:38tylereahh
16:00:50tylerelooks like I might have been bitten by a pythonism here then
16:01:03tylerein python repeatedly appending to a string is...bad
16:01:07dom96seems so
16:02:08*MFlamer joined #nimrod
16:02:24gradhatylere: remember about newStringOfCap, you can create a good buffer and modify without allocations if you expect certain sizes
16:02:47tylereahh, cool
16:05:05tylereI mean, if I were doing this for real I'd wrap gnump or something
16:05:07tylerebut I'm not
16:05:16tylereso this is just sort of a toy implementation
16:05:48dom96I'm sure Araq will help you optimise it.
16:06:06tylerethe most trivial optimization would be to use packed BCD instead of int8s
16:06:12tylerethat way I could store 2 digits per byte
16:06:20tylerethat'd be slower to actually operate on though
16:10:40tylerebut really my plan is to implement everything naively...and then profile to figure out where the actual hotspots are
16:21:01tylereIs there any magic proc to implement subscript notation on a user type?
16:22:59gradhaI don't understand half of https://en.wikipedia.org/wiki/Double_subscript_notation but maybe you could use a range[T]
16:23:52fowltylere, `[]`
16:24:07tylerefowl: ahh, yea, I probably should have tried the obvious
16:37:53*ddl_smurf joined #nimrod
16:45:01*boydgreenfield quit (Quit: boydgreenfield)
17:05:21Araqtylere: "implement first, then profile" is unlikely to work for a bignum library, but building a prototype is a good idea to understand the problem domain
17:05:44tylereAraq: Yea, probably ;)
17:05:55tylerelike I said earlier, if I was doing this for real I'd just wrap a c library
17:06:06Araqnah
17:06:09tylerebut basically my goal is something just good enough to be useful for euler problems
17:06:12tylerewhich sets the bar fairly low
17:06:22Araqnative nimrod is the way to go in the long run
17:06:40Araqthis way you can properly use Nimrod's GC
17:07:09Araqwrapping C means either destructors (not ideal) or finalizers (not ideal either) for bignums
17:47:15*DAddYE joined #nimrod
17:47:24AraqDAddYE!
17:47:34DAddYEhello Araq!!!!!!!!!!!!!!
17:49:08AraqI'm still waiting for your PRs :P
17:49:33Araqbut no worries, might start with the consistency stuff tonight
17:50:32DAddYEAraq: awesome!!!!!!!
17:53:47Araqso ... how do we do this release?
17:53:57Araqpeople requested a beta this time
17:55:54dom96tell people to test head
17:56:39Araqwell I'll run the tester over every babel package
17:56:49Araqthing is, time is running short for a beta
17:57:02AraqI only have time for a release :P
17:57:48dom96noooo
17:58:27fowlAraq, should fileExists/dirExists be inline or rtl, extern like fileExists/dirExists
18:01:28gradharelease, then have a new year patchfix version, twice the reddits
18:01:37gradhabut more importantly, twice the drama
18:18:51*ddl_smurf quit (Quit: ddl_smurf)
18:34:45*BitPuffin quit (Ping timeout: 250 seconds)
18:51:39Araqfowl: inline I guess
18:54:17Araqhttp://www.rawstory.com/rs/2013/12/22/fired-public-relations-executive-justine-sacco-apologizes-for-racist-aids-tweet/ has that hit reddit already?
18:57:25dom96I've never even heard of her
18:58:26gradhadamn, I guess she won't be able to announce the new nimrod release then
18:58:28*boydgreenfield joined #nimrod
18:58:44dom96This is why I tell Araq to create a twitter account.
18:58:53dom96This kind of outrage gives popularity.
18:58:53fowlfor drama?
19:06:42Araqno, Araq is supposed to be the friendly guy who happened to invent a PL
19:06:55Araqfor drama we need Atrollaq
19:07:09*Araq is now known as Atrollaq
19:07:23gradhaAtrollaq: so did you fix the stderr/stdout problem?
19:07:58Atrollaqgradha: do you mean the redirections you like to give to osproc?
19:08:16gradhaAtrollaq: unix, in general
19:09:13Atrollaqah I see
19:09:30Atrollaqwell I'm using Haiku now
19:09:42gradhadoes Haiku webscale?
19:09:52Atrollaqported Wine myself, can run every software I care about
19:10:39dom96Haiku sucks. RISC OS is where it's at.
19:11:36dom96Because it was developed by Englishmen.
19:12:36NimBotAraq/Nimrod vm2 10b213d Araq [+0 ±3 -0]: tcnstseq works again
19:12:36NimBotAraq/Nimrod vm2 6d4acfe Araq [+0 ±6 -0]: vm: FFI improvements
19:12:48Atrollaqso gradha here is the thing
19:13:32Atrollaqplease check out vm2, and run tools/detect/detect.nim
19:13:35gradhathe thing
19:14:03Atrollaqand paste the generated macosx_$cpu_consts.nim here please
19:14:14AtrollaqVarriount_: same for a 64bit windows build
19:14:29Atrollaqdom96: same for linux please
19:14:42dom96RISC OS is more important.
19:14:55Atrollaqso run it on risc os too then
19:15:19dom96Too much effort.
19:22:54*dom96_and joined #nimrod
19:26:42*Atrollaq is waiting for results ...
19:26:57dom96_andWell.
19:27:05gradhawasn't there a special test which always failed?
19:27:15dom96_andI have no access to my computer now.
19:27:29*Atrollaq is now known as Araq
19:28:10*shodan45 joined #nimrod
19:29:51gradhakeineschweine on mac: undeclared identifier 'MAP_ANONYMOUS'
19:30:23gradhaaporia fails too
19:30:54Araqyeah well I thought I told you what to run ...
19:31:45gradhathat one succeds and fails at the same time, a quantum computation breakthrough?
19:33:18Araqdo you have macos_$cpu_consts.nim file?
19:34:08gradhayes, I'm pasting the build too if it helps http://pastebin.com/VbPeZV46
19:35:03gradhamacosx_amd64_const.nim http://pastebin.com/mnf3Z04K
19:45:45Araqgradha: can you somehow do the same for macosx_x86 ?
19:46:00*boydgreenfield quit (Quit: boydgreenfield)
19:47:07gradhacompile with --cpu:i386 ?
19:47:59Araqthat's not enough you need a 32bit clang/gcc
19:48:37gradhahmmm
19:51:15gradhado you see anything in http://stackoverflow.com/questions/13642536/how-can-i-compile-a-library-in-32bit-on-a-64bit-mac-machine-mountain-lion useful to get what you want?
19:53:41Araqyou need to change detect.nim so that it passes -m32 to gcc
19:54:05Araqbut it's not too important, I can't imagine the values will change for 32 bit build
19:54:14Araquh oh ... famous last words ...
19:56:49gradhaso only -m32 for the const embedded in detect.nim?
19:58:08AraqI think so, yes
19:59:15dom96_andAraq: what about the nimbuild corruption?
19:59:29dom96_andWill that not be fixed for the release?
20:00:06tylere32bit intel osx is a pretty narrow target anyway
20:00:55gradhahere's macosx with -m32 http://pastebin.com/VAA2aF8a
20:01:13Araqdom96_and: it's no showstopper for the release anymore. otherwise we'll never release. Also I'm quite sure it's some channel bug, not a GC bug.
20:01:31gradhahere's the diff between versions http://pastebin.com/8Vka6utZ
20:03:01Araqnow that's handy, thanks
20:06:19fowllets not release til after valentines day
20:06:25fowlthere are still many bugs
20:08:22gradhait's hard to capture new developers without releases, plus, isn't this software below 1.0?
20:10:03Araqwell vm2 is ready, so that's a reason for a release
20:11:03OrionPKMit's ready? yay
20:11:38Araqwell libFFI can run stdout.write "muhaha" on windows
20:11:53Araqand it never could before :P
20:11:59OrionPKMthat is the true test
20:12:22Araqwho's on linux now?
20:12:31Araqwho wants to run detect.nim?
20:13:23OrionPKMIdk what changed, but my irc app seems to be eating up less ram. slightly less
20:14:02OrionPKMhovers around 9mb instead of 2mb with that times.nim issue
20:14:14OrionPKMinstead of 20*
20:14:34*Mat3 joined #nimrod
20:14:54Mat3hi all
20:18:19Araqhi Mat3
20:18:33Mat3hi Araq
20:18:52Mat3how you doing before christmas ?
20:20:17OrionPKMaraq? Christmas? humbug
20:23:40Mat3well, independent from personality, it's a set of offical free-days here
20:25:50tylereit's alive!
20:25:51tylerehttps://github.com/tylereaves/euler/blob/master/bigint.nim
20:26:58tylere(for very generous definitions of alive)
20:27:05tylerebut adding of positive integers works
20:28:30*Endy quit (Ping timeout: 241 seconds)
20:30:44AraqMat3: I decided to not sleep anymore to get 0.9.4 out
20:31:13Mat3ehm, ok... how's the progress ?
20:31:28OrionPKMu can sleep when ur dead
20:34:13Araqprogress is ... slow, but steady
20:40:43OrionPKMwith the new VM can nim files be run without compilation?
20:41:06OrionPKMsimilar to python file.py
20:41:13Araqyeah but don't expect miracles
20:41:41OrionPKMcool.. I only really want it during development
20:41:49fowlbut does it run entitty
20:41:53fowlthats the real question
20:42:04fowlill test it in a minute
20:42:29OrionPKMhave u tried a nakefile?
20:42:33Araqrun detect.nim please
20:43:06Araqnakefiles love os and osproc, the vm doesn't ...
20:43:14OrionPKM:/
20:44:04Mat3Araq: I think to be finish my work somewhere february and will upload a flash installer for the duinomite-mini board first
20:44:33fowli dont think nake uses osproc
20:46:55AraqOrionPKM: you could try to re-activate the tiny C backend ... supporting the FFI at compile time is hard and will always be limited, unfortunately
20:50:16Araqunless Mat3 gives us a JIT ... ;-)
20:54:11Mat3as written, somewhere february I think (one will need a translator for .nim files, because the JIT environment execute a tensed Nimrod dialect)
20:56:43Araqah so thats what you meant
20:58:08shodan45wait, a new release is pending?
20:58:25shodan45I need to lurk more in #nimrod, I guess
20:59:38Araqwell "pending" is relative ...
21:03:21shodan45no offense to those involved, but what's the point of a nimrod VM?
21:03:36Mat3Araq: On the pro side, it will run on a lot of embedded boards natively inclusive arduino class ones (as firmware alternative) - in direct concurrency to projects like eLua
21:05:55Mat3shodan45: interactive development and realtime error handling on embedded boards (for example important for mission-critical systems)
21:06:46Mat3navigation systems, large offset-printer stacks etc.
21:07:23Mat3some medicinical systems - these kind of stuff
21:07:38shodan45Mat3: hmm how do people manage error handling on embedded when using C/C++?
21:09:34shodan45in my very limited experience with embedded stuff, I've used a serial connection for error handling/debugging
21:10:13Mat3there don't, because I know of no C based interactive environment. Typical C programmers cross compile and get paid for endless service workarounds
21:10:46Araqactually I disagree with Mat3 here :-)
21:10:58shodan45Mat3: so you're saying that you want to put devs out of work? :P
21:11:06AraqIMO embedded stuff should be proven correct and never touched again
21:13:33AraqMat3: so please elaborate. How will this nimrod->subset->run pipeline work in practice?
21:15:03Mat3you can't verify correctness of software in applications in work-situations which are not clearly evaluable, Araq
21:15:49Mat3beside errors as result from human nature
21:16:05Araqwell a NullPointerException for instance is never the desired behaviour
21:16:26Araqso proving the absense of these already is useful
21:16:41Araqsame for index out of bounds, etc.
21:17:03shodan45this reminds me of a segfault I found in PHP a few years ago
21:17:25Araqthere are lots of bugs that don't require a specification
21:18:18shodan45the "PHP devs" (I use the term loosely) actually told me it it was expected behavior
21:18:32Mat3there are chances for bugs, which relate to implicite shortcomings
21:19:19Araqadmittedly crashing might be preferable over silently producing the wrong output, though
21:19:50Araqso it's a hard question, I wonder what studies exist about this
21:20:32Mat3the software for a press stack for example need to be adjusted for each stack because of nuancable different speed for each paper-roll
21:21:44Mat3it is expensive to patch the firmware for each delivered product. Better is a flexible firmware which can be patched on the fly without reflashing
21:23:03*tylere quit (Ping timeout: 240 seconds)
21:24:56Mat3it can be also critcal for personal health to sell a software which can't be adjusted at realtime for installed systems (one broken roll will easily kill people in there way)
21:25:55Araqwell you can't expect the doctor to patch the firmware in realtime ... :P
21:26:07*Demos_ joined #nimrod
21:26:50Mat3for your example not, but the firmware can be programmed to patch itself this way
21:27:08Mat3<- self healing systems
21:27:32Araqsounds horrible to me but I trust you ;-)
21:28:06Araq("Oh no, firmware updated and got a new critical bug. Too bad, people dead")
21:28:24Mat3all this stuff is standard for satellite systems (as other example). Personally I know of some medicinical systems which work that way
21:29:24Mat3or think of the many self-adjusting (and externally adjustable) ABS systems in cars
21:29:59Araqquite terrifying. So people patch satellites' firmwire in realtime before they crash in orbit?
21:30:06Araq*firmware
21:30:12Mat3yes
21:30:20Araqwell better than letting it crash I guess
21:30:54Mat3<- realtime in the sense of fastest communication way
21:35:23Mat3get some sleep, ciao
21:35:34Araqwait
21:35:38*Mat3 quit (Quit: http://quassel-irc.org - Chat comfortably. Anywhere.)
21:35:48Araqoh well
21:43:58Varriount_Araq, you pinged me?
21:44:42Araqyes. please read the history
21:44:46*Varriount_ is now known as Varriount
21:44:57VarriountAraq, I read it, but paste what?
21:45:08VarriountOh, ok
21:45:32VarriountBy the way, I am yet again superbly impressed with German artistry and creativity
21:45:51VarriountAraq, -> http://rabbit.daedalic.de/en/
21:46:09VarriountI played that adventure game all the way through. I was crying at the end.
21:46:12Demos_is that written in nimrod?
21:46:42VarriountNo. But it has an *amazing* story
21:47:21VarriountFor me, adventure games (such as monkey island, etc) are the perfect mixture of my two favorite things: stories, and puzzles.
21:47:42Demos_myst and its sequals are probably my favorite games ever
21:47:48Demos_the current state of adventure games is pretty sad
21:48:28VarriountIt's a pity that I grew up at the point in time where the genre of adventure games was dying.
21:48:58VarriountDemos_, these days, it's all shooters and tactical simulations.
21:49:12VarriountOr storyless escape-the-room games.
21:49:45Demos_well cyan worlds is working on a new game, and there are things like Machinarium and Kairo
21:50:09VarriountYeah.
21:52:22VarriountAraq, any certain way on how I'm supposed to compile and/or run detect.nim
21:54:03Araqnimrod should say you're on win64 and so should be your gcc/clang
21:55:46VarriountAraq, I get this -> https://gist.github.com/Varriount/8105536
21:56:28Araqwell it's successful
21:56:48Araqdetect detects which header files your compiler knows about
21:57:01Araqso yeah, errors are expected and don't harm
21:58:20VarriountAraq, so... is this for anything in particular?
21:58:51Araqit's for native backends/vm2
21:59:04Demos_oh, I wrote a minElement and a count function for algorithm.nim, not sure how idomatic they are though
21:59:25VarriountAraq, should I have rebuilt nimrod with the vm2 branch?
21:59:31*BitPuffin joined #nimrod
21:59:55AraqDemos_: make a PR and you'll get a code review for free
22:00:16AraqVarriount: yeah ...
22:00:48Araqbtw does that fix the macro problem you were having?
22:01:15VarriountAraq, yes.
22:01:42Araqcool, I'll merge then
22:03:30Demos_allright, I made a pr
22:05:47VarriountAraq, I updated the gist with the output from detect.nim built with a nimrod built from the vm2 branch
22:06:38VarriountAraq, the only difference between the two is that in the vm2 version, the lines aren't cut off
22:06:53shodan45is there a list of projects that use nimrod? (aside from libraries, etc)
22:07:37Araqshodan45: I don't think so :-/ but it's not widely used
22:07:57AraqVarriount: windows_amd64_consts.nim should be somewhere
22:08:17VarriountWant me to run and compile that?
22:08:25Araqno pastebin that
22:08:34Demos_no sane person would use nimrod for a real project at this point, it is only version 0.9.4
22:08:53Araqno, it's at version 0.9.2
22:09:03Demos_sorry, been on master for too long
22:09:05VarriountDemos_, I use it for scrupts.
22:09:09Varriount*scripts
22:10:34VarriountAraq, ->https://gist.github.com/Varriount/8105714
22:10:36gradhashodan45: I think you can coerce github into telling you about nimrod repos
22:11:50*BitPuffin quit (Ping timeout: 240 seconds)
22:12:25*BitPuffin joined #nimrod
22:12:43AraqVarriount: thanks
22:18:56VarriountHm, what would be a good procedure name for getting the kind of filesystem object pointed to by a path?
22:19:26Araq'things_you_should_never_ask_part_8'
22:20:04Varriount*gasp* using underscores!?
22:20:55Araqthat was part 7 ;-)
22:21:53VarriountWell, unless you say otherwise, it's going to be called getTargetKind
22:22:28AraqfilesystemTargetKind or fsTargetKind sound better
22:22:28VarriountgetPathKind is confusing, and might possibly be better used for a future proc that guesses what OS a path comes from.
22:23:10VarriountHm. Choices choices...
22:23:52VarriountfsPathKind I think, otherwise the procedure get's too long.
22:23:59Varriount*procedure name
22:24:20Araqtype FileSystem = enum fat16, fat32, other ?
22:24:26VarriountEr, no
22:25:03Araqtype FileSystem = enum dos, unix, other ?
22:25:14VarriountfsTargetKind("c/python/python.exe") -> pcFile
22:25:24Araqgah
22:25:31VarriountGah?
22:25:32Araqthat's some shitty name then
22:25:55VarriountWell, I need a better one.
22:26:13AraqclassifyPath("boo") -> pcFile
22:26:37VarriountOoh, that's much better. Once again I concede to your brilliance.
22:27:07Araqthanks. I'm not sure I like though. :-)
22:27:14Araq*like it
22:27:52Araqwe need enum inheritance so that "none" is a valid value for that
22:27:57VarriountAraq, just so you know my reasoning, such a procedure is more efficient that using a series of existsXXX procedures to get the thing pointed to by a path.
22:28:17AraqI know your reasoning
22:28:41VarriountWoah, I never knew you were a mind reader!
22:28:48Varriount:3
22:29:20Araqask DAddYE. I debugged his code without seeing anything of it :P
22:32:20AraqTPathComponent doesn't have pcNone and we can't add it as that would break code
22:32:39VarriountAraq, acutally, we can, as long as we add it to the end.
22:32:49Araqlol no
22:32:55Araqwhat makes you think so?
22:33:00Araqcase comp
22:33:13VarriountOh. darn.
22:33:15Araqof pcfile..pcLinkToDir: compiles()
22:33:26Araq<-- doesn't compile anymore then
22:33:32Araqhowever
22:33:34VarriountAraq, well, right now, I just throw an error.
22:33:44Araqhmm ok I guess
22:33:48Araqthe alternative is:
22:33:57Araqtype TNewPath = enum ...
22:34:21Araqtype TPathComponent = range[pcFile..pcLinkToDir]
22:34:49VarriountAraq, but at some point in time, there have to be breaking changes of one sort or another.
22:35:09VarriountOtherwise you end up with *tons* of compatibility code
22:35:27Araqyes
22:35:35Araqwe have a deprecation path for that
22:35:44Araqwhich we try to follow
22:35:50VarriountIs it written down anywhere?
22:37:39Araqno, but it's simple:
22:38:01Araqversion N: add .deprecated. and document it in news.txt
22:38:15Araqversion N+1 or N+X: remove the feature and document it in news.txt
22:38:47Araqfor language changes the compiler doesn't produce errors but warnings about a soon to be removed feature
22:39:02Araqand then later the warning becomes an error
22:39:21Araqsometimes this doesn't work, but that is rare
22:39:52gradhagood night, honey badgers
22:39:57*gradha quit (Quit: bbl, need to watch http://www.youtube.com/watch?v=dEf4PJZXBxA again)
22:40:43dom96_andDemos_: depends what you mean by real but you could argue that many of my nimrod projects are "real".
22:41:08Demos_well OK jester is real, but like big money makin projects
22:42:02Demos_nimrod is not really a stable language at this point, so most of the code written in it is going to be library and compiler code. I meant projects with substantial money behind them
22:42:15VarriountSo Araq, how would one depracate and update TPathComponent
22:42:20AraqDemos_: at least ventor3000 uses it in a commercial setting :P
22:42:28AraqVarriount: already showed you the solution
22:43:32Araqcreate a new enum with all the values + pcNone and make TPathComponent a range of that, no need to deprecate anything
22:44:05Araqthis might trigger some bugs related to 'range' in the compiler but that's a good thing ;-)
22:44:36dom96_andThe language spec is quite stable. The compiler could be a bit more stable, but if you've got a company which uses nimrod all you have to do is hire Araq and you've got an expert on your side fixing bugs for you :p
22:47:59Araqspeaking of which
22:48:13AraqI'm gonna deprecate the "nil" *statement*
22:48:24OrionPKMI wouldn't use jester in a prod system
22:48:28OrionPKMnot yet
22:48:30Araqan empty 'discard' is the better solution
22:48:34fowlnoooo
22:48:37fowlnil is less characters
22:48:40*Demos_ quit (Ping timeout: 272 seconds)
22:48:51Araqnil is ambiguous, fowl
22:49:01Araqespecially with the expr/stmt unification
22:49:15fowlnew keyword: nvm
22:49:19fowl:p
22:49:37Araqwell actually the compiler can handle the ambiguity
22:49:44Araqbut it sucks for reading imho
22:49:54Araqalso it would simply the compiler :P
22:50:37Varriount^ Which is in desperate need of good simplification
22:51:05VarriountSo Araq, how do you feel about TPathClassifications?
22:51:36AraqI still think you end up with 1 additional kernel call in many cases
22:52:03Araqwhich is bad for the non-existing language comparing os module benchmarks
22:52:25dom96_andOrionPKM: works well for nimforum
22:52:41VarriountWhat, for 'classifyPath' versus 'if existsFile.. else if existsDir' ?
22:52:46VarriountAraq, ^
22:53:03AraqVarriount: where do we do that though?
22:53:17OrionPKMdom96_and wouldnt call that highly demanding by any means
22:54:05OrionPKMI'm more concerned about the foundation underneath the house than the house itself WRT jester
22:54:17dom96_andOrionPKM: according to benchmarks jester is better than most frameworks out there.
22:54:41OrionPKMit could be a lot faster if httpserver was faster
22:54:42VarriountAraq, walkDir, walkDirRec, my new makeSymlink (when on windows)
22:54:58OrionPKMdom96_and Java beats it last I checked ;0
22:55:00dom96_andOf course. The point is that it's secondly fast enough.
22:55:08*psquid joined #nimrod
22:55:19dom96_and*definitely
22:55:29AraqVarriount: so read the impl of walkDir et.al.
22:55:47Araqthey don't call existsDir/existsFile
22:56:18VarriountAraq, where do you think I got most of the implementation for classifyPath from?
22:56:28dom96_andIf you have a website that gets as many visits as facebook then you will have enough money to optimise jester anyway.
22:56:52VarriountAraq, in any case, it also provides *users* (that is other programmers) a way to get the type of a single path
22:57:06OrionPKM:P
22:57:26OrionPKMlike I said dom, i'm more worried about the standard library than about jester itself
22:57:29dom96_andFacebook used PHP and jester is currently faster than it. And that's without even trying.
22:58:04OrionPKMit's the not even trying part that tells me even you dont think it's ready for a big production system
22:58:08dom96_andWhat I said still splits to the stdlib
22:58:21dom96_and*applies
22:58:40AraqOrionPKM: so help us with the stdlib please. And sorry, PRs that break lots of code are not acceptable.
22:58:46VarriountAnd anyone who does benchmarks on filesystem functions should A: Know better than to benchmark IO bound calculations, and B:Perform benchmarks on how to perform certain actions as well as test the available procedures.
22:59:04OrionPKMaraq it's on my to-do list...
22:59:10Araqyay :D
22:59:14OrionPKMat least to look at sockets/httpserver
22:59:56dom96_andOrionPKM: look at the way it's done in scgi
23:00:04OrionPKMI'd really like to see jester get truly top-tier performance
23:00:10AraqVarriount: alright.
23:00:15OrionPKMnot 'good-enough for nim forums' :P
23:00:23dom96_and Most of httpserver should be rewritten though imo
23:00:31OrionPKMI agree
23:01:09VarriountI wonder how well a networking engine written with the entity-processing paradigm would work.
23:01:15OrionPKMyou should know im not trying to criticize any of ur work dom96_and
23:01:25Araqno, we need working first class iterators and make that the base of a libevent styled system
23:01:32OrionPKMjust think that some parts aren't going to scale well as the language matures
23:01:41Araqand then rewrite httpserver to sue that
23:01:42dom96_andOrionPKM: don't worry. I don't think that.
23:01:46Araq*use that
23:01:56dom96_andAraq: indeed
23:02:18OrionPKMyep, I agree araq
23:02:22dom96_andOrionPKM: those things can always be improved
23:02:59dom96_andMany languages don't even have good async stuff in their stdlib
23:03:09Araqdom96_and: yeah but the lack of async stuff is a show stopper
23:03:11OrionPKMaraq I feel like maybe we shouldnt walk on egg shells about breaking changes in the stdlib, nim is still < 1
23:03:41VarriountI have to somewhat agree with OrionPKM in that regard.
23:03:44OrionPKMdo you really want a lot of deprecated cruft in the stdlib stuck around for years?
23:04:02Araqyes. because otherwise it breaks my code
23:04:09dom96_andI disagree
23:04:15OrionPKMchange your code
23:04:18OrionPKMor dont
23:04:26OrionPKMif you dont change your code it keeps working, it just stops building :P
23:04:31dom96_and compile-time error is better than a confusing run time error
23:05:04dom96_andAnd that select change would be very subtle indeed
23:05:07*darkf joined #nimrod
23:05:21OrionPKMwell
23:05:27Araqendless bikeshedding is not the solution
23:05:31OrionPKMthe change would be to make it how you WOULD expect it to be
23:05:32OrionPKM:p
23:05:39OrionPKMas a 3rd party developer
23:05:56Araqright now the tester needs to learn about babel and some things broke
23:06:00Araqwith things moving to babel
23:06:22Araqthat means we work on fixing things that previously worked
23:06:26dom96_andAraq: remember to mention the move to babel in the news btw
23:06:26OrionPKMyou've just distributed the problem to outside of your control araq
23:06:30Araqas opposed to fix *bugs*
23:07:14OrionPKMyou start to depend on babel packages, they change, your code breaks,
23:07:23Araqslow evolution is the only thing that works with the stdlib
23:07:36Araqyou don't like osproc.nim? fine then create your own
23:07:40OrionPKMI agree by-and-large araq
23:07:48OrionPKMbut
23:07:51OrionPKMit's pre 1.0
23:08:03OrionPKMpeople should expect breaking changes
23:08:09Araqeverything that slows down my development speed is bad, sorry
23:08:29Araqespecially since the project is still incredibly dependent on me
23:09:28Araqyou can do things differently when you have the resources for it
23:09:35Araqbut we haven't
23:11:29OrionPKMok
23:12:07dom96_andWe also want to attract people. We won't do that if we break their code constantly.
23:12:29OrionPKMwe also wont by having a ton of confusing old functions in the std lib
23:12:49OrionPKMlegacy kruft
23:13:02AraqI disagree
23:13:27Araqthe fact is that *every* successful stdlib has some kruft
23:13:49OrionPKMbefore it even gets to 1.0
23:14:02OrionPKMborn with birth defects :p
23:14:08Araqyes
23:14:28Araqarguably C had lots of kruft that ended in the Ansi standard
23:14:46Araqdunno if they had versions back then
23:15:14AraqC#'s stdlib is full of old stuff, Java's is much worse
23:15:16OrionPKMwhat about a babel package containing the old stdlib :P
23:15:32Araqwell the compiler itself depends on the stdlib
23:15:34VarriountThat's an interesting idea.
23:15:53Araqyou can't just put it into a babel package and pretend it doesn't exist
23:15:55dom96_andDoesn't D have two stdlibs?
23:16:01OrionPKMlol
23:16:08Araqyeah and that almost killed D
23:16:28Varriountdom96, yes. They arose out of a big split in the community, if I remember my reading right.
23:16:31dom96_andYeah. Sounds like a good reputation booster for nimrod then :p
23:16:33fowlit does?
23:17:16OrionPKMlol
23:21:41NimBotAraq/Nimrod vm2 738fb2e Araq [+3 ±4 -0]: NoFakeVars progress
23:22:00VarriountFakeVars?
23:22:30Araqit's in system.nim, look it up
23:51:32*dom96_and quit (Quit: Bye)
23:52:56*MFlamer quit (Ping timeout: 240 seconds)
23:53:26*Reisen quit (Remote host closed the connection)