<<08-12-2012>>

01:15:17*ccssnet quit (Read error: Connection reset by peer)
02:29:42*q66 quit (Quit: Quit)
04:00:19*ccssnet joined #nimrod
12:05:56dom96hello
12:33:59*q66 joined #nimrod
12:35:24Araqhi
12:36:19*dom96 is adding the license field
12:47:05NimBot_nimrod-code/babel c732892 Dominik Picheta [+0 ±2 -0]: Addition of required license field.
12:47:06NimBot_nimrod-code/babel 41da5f7 Dominik Picheta [+0 ±1 -0]: Implemented list feature.
12:50:02Araqwhat about the 'version' field? ;-)
12:50:27dom96It's already been implemented ;)
12:52:19Araqyour commit messages are too short :P
12:55:02dom96So, you think babel is ready to be announced?
12:55:20*silven quit (Read error: Connection reset by peer)
12:55:52Araqlet me test it
12:56:29*silven joined #nimrod
12:56:35Araqcan people specify dependencies already?
12:56:40dom96no
12:57:03Araqbut you had that feature already, right?
12:57:21dom96you mean in the 2 year old version of babel? yeah
12:57:27AraqI mean, let them describe it in a .babel file
12:57:46Araqyou don't have to do anything with it for now
12:58:00Araqbut I really dislike people having to update their .babel files ;-)
12:58:34dom96I think it will take a while before someone decides to create a package which uses another package
12:58:55Araqnot really ;-)
12:59:14dom96how do we want this to work again?
12:59:14Araqbut the compiler itself is a moving target
12:59:38dom96depends = "jester, pkg1, pkg2"
12:59:42Araqso 'requires: nimrod > 0.9.0' is a nice piece of information
13:00:06dom96bah
13:00:25dom96it's as if you are slowly turning this back into the old babel
13:04:33dom96but ok, I can add that
13:04:42Araqgood
13:05:15dom96what else?
13:05:29Araqwell I guess it's too much work
13:05:42dom96what is?
13:05:53Araqbut it would be cool if a .babel file had the same format of some debian package spec
13:06:22Araqor of some other existing package management
13:06:32Araqbut *shrug* it's not important
13:07:07dom96well you still have not told me how you want dependency resolution to work
13:08:28Araqwell I'll implement that part :P
13:08:49dom96well what do you want for that?
13:09:02dom96Last time you told me "just get the latest packages"
13:09:12dom96Now it seems like you want proper versioning and everything.
13:09:26Araqthat's because I slept over it :P
13:09:27dom96And I am pissed off because old babel had exactly that.
13:09:45Araqoh really? it had that implemented?
13:10:05dom96the only thing missing was downloading the dependencies properly.
13:10:13dom96it had all the other stuff though.
13:10:30AraqI don't think it had, sorry
13:10:42Araqyou need to check what's already installed
13:10:46Araqdid it do that?
13:10:54dom96yes
13:11:01Araqhow?
13:11:22dom96~/babel/packages/
13:11:26dom96contained all the babel files
13:11:33dom96it checked that directory
13:11:40dom96IIRC
13:12:00Araqwell add that feature back then ... -.-
13:12:05Araqdidn't know about it
13:12:18dom96ugh seriously -.-
13:12:30dom96"Just stop worrying about versioning, ignore it."
13:12:39dom96And now you want versioning ffs.
13:19:10dom96oh well.
13:19:19dom96Back to nimbuild/aporia then
13:19:39Araqsorry
13:20:10dom96argh, it's alright.
16:14:22*zahary1 is now known as zahary
18:18:17*FreeArtMan quit (Quit: Out of this 3D)
19:11:13*FreeArtMan joined #nimrod
19:25:17*FreeArtMan quit (Quit: Out of this 3D)
19:38:27*Vladar joined #nimrod
19:41:15*Trix[a]r_za is now known as Trixar_za
20:12:20*zahary quit (Read error: Connection reset by peer)
20:12:35*shevy quit (Ping timeout: 252 seconds)
20:19:22*FreeArtMan joined #nimrod
20:20:20*zahary joined #nimrod
20:21:54Araqping zahary
20:25:18*shevy joined #nimrod
20:41:21*FreeArtMan quit (Ping timeout: 244 seconds)
20:44:24zaharyhi Araq
20:52:39Araqzahary: maybe we had this idea already, but ...
20:53:22Araqwe could parse the whole module's AST and then re-order the proc definitions according to some pre-pass
20:53:39Araqand solve the implicit forwarding this way
20:54:20Araqfor a mutual recursion that still requires a forward declaration, but as I said, I don't mind them at all
20:55:07Araqand the pre-pass cannot work accurately because the symbol could be created by a macro
20:56:23Araqbut it's a simple solution that doesn't require to change much of the compiler ;-)
20:56:57Araqin fact the pre-pass needs to be specified anyway for things like:
20:57:07Araqwhen not defined(p): proc p()
21:38:06zaharywell, I chose my proposed approach as fitting the "minimum changes required" criteria
21:38:06zaharywhatever algorithm is chosen, it must be easily explainable and the user should be able to "execute it mentally". this was another reason I liked this "compile on first use" approach - it's very similar to how scripting languages work, whatever is possible in terms of cyclic dependencies in python or ruby becomes possible with nimrod too and you can explain it by analogy
21:39:27zaharyI've spent some though on topological sorting of definitions and there are certainly many edge cases that make it harder to devise a proper sort algorithm, we can discuss them too
21:40:32zaharyI don't need a pre-pass for when not defined(x): proc x (given that x is imported from another module)
21:40:58Araqyeah I remember
21:41:30Araqbut you have to introduce pseudo dependencies otherwise an unused proc wouldn't be type checked at all
21:41:44Araqwhich I find pretty weird tbh
21:43:50zaharyI see this as advantage. it's possible to type check all procs (to instantiate all procs instead of just the main one), but maybe that's something that the user doesn't want to do in every compilation… so if it can speed up the compilation in some situations my bet is that many users will decide to sacrifice the pedantic type checking
21:45:10zaharyby instantiate I mean "start compiling from this proc", the root "first use" in the depth-first compilation
21:46:25zaharyif you remember my argument that "type checks" is not that strong of a guarantee either - I don't trust code that doesn't have coverage and if it does have coverage it will be compiled
21:48:55Araqit is a problem for auto completion in an IDE
21:49:18Araqbut sure, "fake" dependencies solve it
21:49:22zaharyit's the opposite, It should be a big win for auto completion
21:49:32Araqhu? how so?
21:49:43zaharybecause then, you use as a root the proc where the cursor is
21:50:32Araqhm, will be interesting to watch in practice ;-)
21:50:32zaharyit will trigger compilation for a small subset of the graph of definitions
21:50:49Araqyeah got it
21:53:03zaharyanother possible speed up that I foresee is with big libraries with numerous functions. I trust the developer of the library to have type checked his public code, but if I only use a few functions ...
21:53:41Araqyeah, symbol files achieve the same
21:53:45Araq*but
22:13:14*Vladar quit (Quit: Leaving)
22:13:39NimBot_nimrod-code/babel 2b28c91 Dominik Picheta [+1 ±2 -0]: Dependencies can now be specified.
23:31:02NimBot_nimrod-code/babel 2330cf8 Dominik Picheta [+1 ±4 -0]: Added BSD license information.
23:33:31NimBot_nimrod-code/babel 035777d Dominik Picheta [+0 ±1 -0]: Fixed links in readme.
23:58:53dom96Guys take a look at my post here: http://forum.nimrod-code.org/t/98
23:59:00dom96And please test babel.