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:56 | dom96 | hello |
12:33:59 | * | q66 joined #nimrod |
12:35:24 | Araq | hi |
12:36:19 | * | dom96 is adding the license field |
12:47:05 | NimBot_ | nimrod-code/babel c732892 Dominik Picheta [+0 ±2 -0]: Addition of required license field. |
12:47:06 | NimBot_ | nimrod-code/babel 41da5f7 Dominik Picheta [+0 ±1 -0]: Implemented list feature. |
12:50:02 | Araq | what about the 'version' field? ;-) |
12:50:27 | dom96 | It's already been implemented ;) |
12:52:19 | Araq | your commit messages are too short :P |
12:55:02 | dom96 | So, you think babel is ready to be announced? |
12:55:20 | * | silven quit (Read error: Connection reset by peer) |
12:55:52 | Araq | let me test it |
12:56:29 | * | silven joined #nimrod |
12:56:35 | Araq | can people specify dependencies already? |
12:56:40 | dom96 | no |
12:57:03 | Araq | but you had that feature already, right? |
12:57:21 | dom96 | you mean in the 2 year old version of babel? yeah |
12:57:27 | Araq | I mean, let them describe it in a .babel file |
12:57:46 | Araq | you don't have to do anything with it for now |
12:58:00 | Araq | but I really dislike people having to update their .babel files ;-) |
12:58:34 | dom96 | I think it will take a while before someone decides to create a package which uses another package |
12:58:55 | Araq | not really ;-) |
12:59:14 | dom96 | how do we want this to work again? |
12:59:14 | Araq | but the compiler itself is a moving target |
12:59:38 | dom96 | depends = "jester, pkg1, pkg2" |
12:59:42 | Araq | so 'requires: nimrod > 0.9.0' is a nice piece of information |
13:00:06 | dom96 | bah |
13:00:25 | dom96 | it's as if you are slowly turning this back into the old babel |
13:04:33 | dom96 | but ok, I can add that |
13:04:42 | Araq | good |
13:05:15 | dom96 | what else? |
13:05:29 | Araq | well I guess it's too much work |
13:05:42 | dom96 | what is? |
13:05:53 | Araq | but it would be cool if a .babel file had the same format of some debian package spec |
13:06:22 | Araq | or of some other existing package management |
13:06:32 | Araq | but *shrug* it's not important |
13:07:07 | dom96 | well you still have not told me how you want dependency resolution to work |
13:08:28 | Araq | well I'll implement that part :P |
13:08:49 | dom96 | well what do you want for that? |
13:09:02 | dom96 | Last time you told me "just get the latest packages" |
13:09:12 | dom96 | Now it seems like you want proper versioning and everything. |
13:09:26 | Araq | that's because I slept over it :P |
13:09:27 | dom96 | And I am pissed off because old babel had exactly that. |
13:09:45 | Araq | oh really? it had that implemented? |
13:10:05 | dom96 | the only thing missing was downloading the dependencies properly. |
13:10:13 | dom96 | it had all the other stuff though. |
13:10:30 | Araq | I don't think it had, sorry |
13:10:42 | Araq | you need to check what's already installed |
13:10:46 | Araq | did it do that? |
13:10:54 | dom96 | yes |
13:11:01 | Araq | how? |
13:11:22 | dom96 | ~/babel/packages/ |
13:11:26 | dom96 | contained all the babel files |
13:11:33 | dom96 | it checked that directory |
13:11:40 | dom96 | IIRC |
13:12:00 | Araq | well add that feature back then ... -.- |
13:12:05 | Araq | didn't know about it |
13:12:18 | dom96 | ugh seriously -.- |
13:12:30 | dom96 | "Just stop worrying about versioning, ignore it." |
13:12:39 | dom96 | And now you want versioning ffs. |
13:19:10 | dom96 | oh well. |
13:19:19 | dom96 | Back to nimbuild/aporia then |
13:19:39 | Araq | sorry |
13:20:10 | dom96 | argh, 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:54 | Araq | ping zahary |
20:25:18 | * | shevy joined #nimrod |
20:41:21 | * | FreeArtMan quit (Ping timeout: 244 seconds) |
20:44:24 | zahary | hi Araq |
20:52:39 | Araq | zahary: maybe we had this idea already, but ... |
20:53:22 | Araq | we could parse the whole module's AST and then re-order the proc definitions according to some pre-pass |
20:53:39 | Araq | and solve the implicit forwarding this way |
20:54:20 | Araq | for a mutual recursion that still requires a forward declaration, but as I said, I don't mind them at all |
20:55:07 | Araq | and the pre-pass cannot work accurately because the symbol could be created by a macro |
20:56:23 | Araq | but it's a simple solution that doesn't require to change much of the compiler ;-) |
20:56:57 | Araq | in fact the pre-pass needs to be specified anyway for things like: |
20:57:07 | Araq | when not defined(p): proc p() |
21:38:06 | zahary | well, I chose my proposed approach as fitting the "minimum changes required" criteria |
21:38:06 | zahary | whatever 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:27 | zahary | I'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:32 | zahary | I don't need a pre-pass for when not defined(x): proc x (given that x is imported from another module) |
21:40:58 | Araq | yeah I remember |
21:41:30 | Araq | but you have to introduce pseudo dependencies otherwise an unused proc wouldn't be type checked at all |
21:41:44 | Araq | which I find pretty weird tbh |
21:43:50 | zahary | I 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:10 | zahary | by instantiate I mean "start compiling from this proc", the root "first use" in the depth-first compilation |
21:46:25 | zahary | if 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:55 | Araq | it is a problem for auto completion in an IDE |
21:49:18 | Araq | but sure, "fake" dependencies solve it |
21:49:22 | zahary | it's the opposite, It should be a big win for auto completion |
21:49:32 | Araq | hu? how so? |
21:49:43 | zahary | because then, you use as a root the proc where the cursor is |
21:50:32 | Araq | hm, will be interesting to watch in practice ;-) |
21:50:32 | zahary | it will trigger compilation for a small subset of the graph of definitions |
21:50:49 | Araq | yeah got it |
21:53:03 | zahary | another 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:41 | Araq | yeah, symbol files achieve the same |
21:53:45 | Araq | *but |
22:13:14 | * | Vladar quit (Quit: Leaving) |
22:13:39 | NimBot_ | nimrod-code/babel 2b28c91 Dominik Picheta [+1 ±2 -0]: Dependencies can now be specified. |
23:31:02 | NimBot_ | nimrod-code/babel 2330cf8 Dominik Picheta [+1 ±4 -0]: Added BSD license information. |
23:33:31 | NimBot_ | nimrod-code/babel 035777d Dominik Picheta [+0 ±1 -0]: Fixed links in readme. |
23:58:53 | dom96 | Guys take a look at my post here: http://forum.nimrod-code.org/t/98 |
23:59:00 | dom96 | And please test babel. |