[8:04]<ondras> guys, does the modules/1.1 spec say that the mainfile must be treated as a module? or is it simply implied by a common sense? [8:04]<ondras> (or, reformulated: is there any implementation _not_ treating the mainfile as a module?) [8:14]<ashb> ondras: i thought it used to say that. and flusspferd does since 0.7 or 0.8, and i think we were the last ones to do it [8:50]<afonso> is this project related to mozilla foundation? [9:38]<ashb> afonso: not directly, only in so much as there are a few mozilla people involved in this [9:47]<ondras> ashb: okay, so v8cgi is definitely the last one not doing this :) adding to todolist... [9:47]<ashb> ondras: cool :) [11:51]<afonso> (not really sure if this is the right place ti ask but) do you know of a LALR(1) implementation in js? I've tried using http://jscc.jmksf.com/ but has some nasty bugs.. :\ just wanted to know before starting looking at the code [11:54]<ashb> afonso: last time i needed a serious parse in JS i hand crafted my own recursive descent one [11:54]<ashb> but that was early 2007 [11:55]<ashb> afonso: what kind of bugs out of interest? [11:57]<afonso> ashb: for instance [^a] will recognize the input 'd' but [^a]+ won't :( [11:57]<ashb> oh [11:57]<afonso> mostly regexp not matching the input [11:58]<afonso> i built my own bnf parser, but it kind of sucks (quick&dirty) so but this one seemed very nice! [11:58]<afonso> but they have different "drivers" I've used the web one (meant for webpages) still going to test the v8 and rhino [18:36]<- *humbletim* help [19:03]<humbletim> anyone have recommendations for the easiest tools nowadays for something like automake/configure functionality? rather than generating .c files to compile and run to flush out feature support, i'll be generating .js files and running them through CLI js VMs [19:04]<evilstreak> I think ashb is preferring premake at the moment [19:04]<Wes--> humbletim: since you have try/catch/finally, you can do this with a single giant JS program [19:07]<humbletim> Wes-: i like the craziness of that. however, if you check out my vdom push, monolithic detection glue can get out of hand almost immediately. i really don't want to have totally separate glue code for each evolving commonjs/VM imp, so am thinking aligning by required feature support would be better? [19:30]<ashb> humbletim: you keep thinking commonjs will be different. if it is this whole movement has failed. [19:31]<humbletim> ashb: i like to look at it as jumping ahead, if nothing else to help cross-check [19:32]<Wes--> ashb: did you ever run modjs on mac/ [19:32]<ashb> Wes--: most definately [19:32]<ashb> mac has been my dev platofmr since 2006 [19:33]<Wes--> ashb: darn. Having the wierdest problem with it, and it works fine on Linux. Behaving as the though the global object is empty (i.e. no standard classes) [19:33]<ashb> o_O [19:33]<ashb> that is really odd [19:33]<ashb> using gpsee or that code as it was? [19:33]<Wes--> yeah, tell me about it. There must be a wee bit of pointer spew or something in there [19:34]<Wes--> ashb: with gpsee, I never ran it as-is, didn't want to download js1.7 :) [19:34]<Wes--> ashb: And by "in there", I don't necessarily mean modjs, could just as easily be my code [19:34]<Wes--> ashb: Even this breaks! <a>sdlkfjskj</a>.toString(); [19:34]<ashb> yeah. i wouldn't rule out modjs codebase tho :) [19:35]<Wes--> ashb: I'm not. ;) [19:38]* ondras just learned that "var a = 3" at global level creates a property with DontDelete [19:38]<ashb> o_O [19:38]<ashb> not quite sure why its don't delete [19:38]<ondras> neither am i [19:38]<ashb> but then flusspferd doesn't run anything in the global scope anymore [19:38]<ondras> but ecma262 is very clear about that :) [19:38]<Wes--> there is no requirement that global is the var object [19:38]<ashb> not since the main-is-a-module change [19:38]<Wes--> iirc [19:39]<ondras> Wes--: true, but I am not sure if one can even try to delete a "var a" from a non-global area... [19:39]<ondras> ashb: exactly, it is related to this :) [19:39]<Wes--> ondras: There is no guarantee that you can even "name" the var object from script, IIUC [19:39]<ondras> yes [19:40]<ashb> there is also no requirement for the var object o be a proper js object [19:40]<ondras> well, when v8cgi moves to main-is-a-module, this won't be an issue anymore. [19:40]<ashb> it i s only a conceptual one [19:40]<ashb> on a side note - i discoverd how to create 'custom repls with top level functions' [19:41]<ashb> which is <3 [19:41]<Wes--> ashb: what do you mean? [19:41]<Wes--> I think it might even be > 3 [19:41]<humbletim> ondras: wow, check this out even -- js> (function () { var a = 2; delete a; })+'' == 'function () { var a = 2; false; }' [19:41]<ashb> http://github.com/ashb/juice/blob/master/skeleton/script/console [19:41]<ashb> ./script/console [19:41]<ashb> > get('/') [19:41]<ashb> and it works [19:42]<Wes--> ...why wouldn't it? [19:42]<Wes--> I do stuff like all the time, although I use consts [19:43]<Wes--> recall, prop/method -- false dichotomy [19:43]<ashb> we dont have a repl in JS yet [19:43]<ashb> which i guess would make it easier [19:43]<Wes--> ashb: I do, but it depends on my curses module [19:44]<Wes--> ashb: if you have something curses-like, you could steal me JS implementatin of readline ;) [19:44]<ashb> Wes--: so basically we use the --interactive mode in the evn far line [19:44]<ashb> whic says - run the code, but instead of quitting at the end, start the reupl [19:44]<ashb> *env var [19:45]<Wes--> ashb: Ah, that makes sense. If I want to do something like that, I have to do the exact opposite: [19:45]<Wes--> gsr -c 'command;command;command' -f sample/repl/jsie.js [19:45]<ondras> humbletim: wow :) [19:47]<humbletim> ondras: yeah, and change delete a to delete b (undefined) and the delete b; line passes through just fine [19:50]<ondras> humbletim: however, that behavior is specific to SM [19:50]<ondras> (and possibly rhino) [19:51]<humbletim> ondras: haven't tested rhino (only smjs17/18rc1). curious as well is that a third pass removes the false; line too js> (eval( (function () { var a = 2; delete a; })+'')+'').replace(/\n/g,' ') == function () { var a = 2; } [19:51]<ondras> :} [19:52]<humbletim> ondras: rhino 1.7 doesn't exhibit it [19:55]<ondras> okay [20:19]<humbletim> in current implementations, are primordials shared between modules? Array === Array? [20:19]<MisterN> humbletim: as long as it is not spec'd, you probably shouldn't rely on it [20:20]<MisterN> humbletim: but probably a good question for the ML :) [20:21]<humbletim> MisterN: i'm using it as a kludge right now for inter-module state (actually grafting props onto 'Function', which is rarely enumerated in existing client-side browser libs), but just curious how long that'll continue to work for me [20:22]<MisterN> humbletim: make a module for state :) [20:23]<MisterN> require('humbletims-humble-state').iCanSetStuff = true [20:23]<frodenius> who needs state anyway [20:23]<frodenius> and that file would be empty? :p [20:24]<Wes--> i believe there have been discussions to the effect that instanceof Array should behave as expected across modules [20:25]<Wes--> that would imply that Array === Array [20:25]<Wes--> and, more subtly, that that only holds when nobody's screwed with Array [20:25]<MisterN> which does not, however, imply that storing state on Array or Function is a good idea. [20:25]<Wes--> so that [] instanceof Array works as you would expect as well [20:25]<Wes--> absolutely [20:26]<Wes--> I am just waiting for humbletim to get some experience in this field, I think he will find that he is doing a lot of work he doesn't need to [20:26]<humbletim> Wes-: hmm, same issue exists in some browsers today (eg: between windows), just anticipating XPCNativeWrapper concepts coming into play. [20:27]<Wes--> humbletim: inter-window object exchange occurs with two separate globals [20:27]<Wes--> I would not expect one Array to be === to another [20:28]<Wes--> I don't know what the w3c has to say in this regard, however [20:28]<Wes--> I do not work with the browser anymore [20:30]<humbletim> Wes-: for what its worth, the commonjs initiative rocks. there isn't enough there yet to write portable modules tho [20:31]<inimino> this is why Array.isArray was added to ES5 [20:31]<MisterN> i don't think moving objects between globals is a glorious idea. [20:32]<humbletim> MisterN: i don't either but something along these lines is needed for resolving dependencies dynamically [20:32]<MisterN> humbletim: huh? [20:33]<MisterN> are we talking about the same thing? [20:33]<humbletim> MisterN: oops, nope, sorry [22:25]<ashb> anyone know if any engines other than mozilla's support |for each (x in y)| [22:46]<Wes-> ashb: for each is official e4x, fwiw [22:46]<ashb> yeah i know [22:47]<ashb> the one good hting to come out of e4x [22:48]<MisterN> ashb: you mean other than multi-line string literals? :D [22:48]<ashb> i'd much rather a proper """ constructor fwiw [22:48]<ashb> but yeah :) [22:49]<Wes-> ashb: "abc" + "def" is not significantly more expensive than "abcdef" in tracemonkey [22:50]<ashb> its not the expense - its the visualls :)