02:51:25 <juhp> hmm
02:51:36 <juhp> how about making base4 the default
02:51:38 <juhp> ?
04:06:14 <juhp> stepcut, how about making the base4 flag default in happstack-server?
04:06:39 <stepcut> seems reasonable at this point
04:06:55 <juhp> yeah ok
19:03:56 <donri> man even with heavily version constrained dependencies my builds fail to build over time
19:04:26 <donri> and why dies ixset-1.0.3 cause issues when i'm depending on ixset-1.0.2? -.-
19:06:25 <stepcut> :(
19:09:14 <donri> and it fails to build with new cabal without --force-reinstalls, but that flag also makes it fail to build on older cabal. so now i have to upgrade cabal on every build in the build bot. :D
19:10:24 <donri> well, or be less DRY between how it builds locally and on the bot
19:36:57 <stepcut> this is why we need scoutess
19:37:11 <stepcut> and all those other cabal-related GSoC projects
20:43:46 <donri> I wonder if the right approach to the JS problem is "write a bytecode VM in JS"
20:44:44 <donri> generated code tends to be big, and rather repetitive
20:45:36 <donri> and from haskell, tends to be very functional, which browsers don't optimize well for
20:46:47 <stepkut> the llvm and browser people need to have a little talk and come up with something
20:47:00 <stepkut> a bytecode engine for browsers that llvm can target
20:47:24 <donri> sure it would be great if browsers were in on it, but that would take a long time before it's widely deployed
20:47:28 <stepkut> I think firefox has a VM now.. but only they support it. :-/
20:47:41 <donri> chrome has "nativecall"
20:47:45 <donri> or something like that
20:47:47 <stepkut> no way! the W3C said xhtml was going to take over in 1999.. I'm sure that will happen any day now!
20:48:21 <donri> nativeclient
20:49:00 <stepkut> flash has a VM you can target.. but everyone hates flash.. so that doesn't help
20:49:06 <donri> in deed
20:49:17 <stepkut> I once wrote a haskell to flash VM compiler
20:53:08 <donri> screw it let's just build ghc with emscripten
20:54:00 <stepkut> :)
20:54:32 <stepkut> screw the web, let's just write native apss
20:54:39 <stepkut> ... for House
20:55:21 <donri> anyway i'm thinking a VM specialized for JS and perhaps FP; think opcodes for the DOM and stuff like map/fold (run as for loops)
20:56:14 <donri> i don't really want something like ghcjs where you can easily shoot yourself in the foot and accidentally compile the whole collections package into javascript to be sent over the wire, so i'm fine with a subset of haskell
20:56:35 <stepkut> :)
20:56:53 <stepkut> well.. that is sort of what chris's new thing that uses haskell-src-exts does? A subset of Haskell?
20:57:26 <donri> exactly, which is what got me pondering a VM... his stuff produces a lot of repetition, mostly calls to his "RTS" for things like thunks
20:57:43 <stepkut> ah
20:57:50 <stepkut> right
20:58:09 <donri> and since it's textual javascript source it's much larger than would seem necessary... unless a VM would also be large... i'm thinking it might not have to be?
20:58:25 <donri> (his output is still much smaller than ghc/uhc though)
20:59:19 <stepkut> the VM could be pretty small.. and cached
20:59:25 <donri> in deed
21:01:17 <donri> though i suppose an llvm bytecode interpreter could rock, e.g. benefitting from all the optimizations in ghc
21:01:40 <donri> assuming ghc does stuff like rewrite maps to smallish imperative loops
21:01:58 <donri> duno how that works wrt purity and all...
21:02:29 <donri> i guess that's part of the problem: difficult to efficiently translate code from a pure language to an impure runtime
21:03:34 <stepcut> there are a lot of papers on how to implement haskell using a variety of techniques
21:03:43 <stepcut> SPJ had a book
21:03:49 <stepcut> two perhaps
21:04:15 <donri> i doubt those are written with page load times in mind? you're assumed to have a compiler installed and everything?
21:05:35 <stepcut> they assume you are writing the compiler..
21:09:05 <stepcut> http://research.microsoft.com/en-us/um/people/simonpj/papers/pj-lester-book/
21:10:10 <stepcut> the G machine has a pretty small instruction set, > data Instruction
21:10:10 <stepcut> > = Unwind
21:10:11 <lambdabot>   <no location info>: parse error on input `='
21:10:12 <stepcut> > | Pushglobal Name
21:10:12 <stepcut> > | Pushint Int
21:10:13 <lambdabot>   <no location info>: parse error on input `|'
21:10:13 <lambdabot>   can't find file: L.hs
21:10:14 <stepcut> > | Push Int
21:10:14 <stepcut> > | Mkap
21:10:15 <lambdabot>   <no location info>: parse error on input `|'
21:10:15 <lambdabot>   can't find file: L.hs
21:10:16 <stepcut> > | Slide Int
21:10:17 <lambdabot>   <no location info>: parse error on input `|'
21:10:24 <stepcut> oops forget this was IRC and not jabber
21:11:04 <stepcut> i wonder if you could make something that used the byte code that ghci already knows how to generate?
21:14:09 <donri> that's an interesting thought, if it's small enough... binaries compiled with ghc tends to be 15+ megabytes for hello world
21:14:32 <stepkut> :)
21:15:04 <stepkut> if you don't inline everything and statically link everything it can be a lot better
21:15:24 <donri> kinda have to for js :P
21:15:46 <donri> well, i suppose you could have a package system over ajax
21:17:07 <stepkut> thanks to global naming spacing, you can just statically include some .js files
21:17:44 <donri> but then you *are* doing static linking
21:18:12 <stepkut> hmm
21:18:30 <stepkut> I guess I viewed it more as dynamic ..
21:19:12 <stepkut> if you shoved all the functions you needed plus the generated code for your app all into one .js file.. then you would have to download those library functions over and over
21:19:22 <donri> i want "opa for haskell", but it's probably not as easy as for opa because haskell and js is so different
21:19:28 <stepkut> if all the library functions live in .js files.. then you only have to download each library once, and the client will cache it
21:20:04 <stepkut> so.. as you switch from page to page, you only download the bytecode that specific to that page..
21:20:25 <stepkut> this would be more fun to implement than this formlets library :-/
21:20:36 <donri> :D
21:21:16 <donri> https://github.com/MLstate/hello-opa/blob/master/hello-opa.opa  happstack is already close to this, just need the seamless client-side compiled functions
21:21:42 <stepkut> nice
21:22:01 <donri> oh and the css selector update thingy
21:22:56 <donri> though for that we kinda need something like yesod widgets or something ..
21:25:27 <donri> or i guess they're doing it with ajax...
21:32:01 <luite> yeah just client-side compile functions, should be doable in a weekend :p
21:35:13 <donri> :)
21:36:58 <donri> jmacro includes some rpc stuff that i think do effectively what opa does... not sure how well it integrates with happstack
21:37:13 <stepkut> interesting
21:37:23 <donri> aww it depends on jquery
21:38:38 <stepkut> :-|
21:44:04 <donri> though i think opa bundles jquery anyway ...
21:46:10 <donri> i wonder how easily the way opa hides the client/server boundary can shoot you in the foot
21:52:33 <luite> donri: you're still writing javascript then
21:53:06 <donri> luite: ?
21:53:13 <luite> with jmacro
21:53:18 <luite> not quite seamless is what i mean
21:53:55 <donri> oh, sure, but it could be implemented *with* it
21:58:49 <luite> i was thinking of using jmacro int he code generator
21:59:33 <donri> yea, if you're doing something like what chrisdone is doing i think jmacro would be useful for the implementation
21:59:52 <luite> nah i'm starting from the other side
22:00:09 <donri> oh?
22:00:22 <luite> i'm using the ghc api to generate the code
22:00:27 <luite> actually started with ghcjs
22:00:57 <donri> sounds promising!
22:04:28 <luite> it generates too much code
22:05:10 <luite> chrisdone also found the haste compiler earlier today, which claims to generate smaller code
22:05:28 <luite> but it seems to be more or less the same, just slightly cleaner output and shorter identifiers
22:20:49 <donri> spooky, i think i recognize the author of haste from an internet forum for swedish youth i haven't been to for years
22:23:35 <donri> myep, confirmed
22:24:33 <stepkut> :-}
22:25:14 <luite> ah tell him that he should stop using GPL ;p
22:34:13 <donri> don't actually know him as such :P
22:35:40 <luite> his project is a lot more active than ghcjs, if i had discovered it earlier i would probably have contacted him...
23:13:12 <donri> ghcjs is... a hasteland
23:13:17 <donri> YEAAAAAA