[Haskell-cafe] ghci & ghc -> JS (Emscripten)

Daniel Frumin difrumin at gmail.com
Wed Jul 3 20:45:17 CEST 2013

On Jul 3, 2013, at 5:13 PM, B B <blackbox.dev.ml at gmail.com> wrote:

>> I think GHCJS should be able to compile all Haskell code in GHC, but we haven't tested this yet. The tricky bit is probably getting foreign code work, and creating a working installation that includes all other things, like libraries and a package database. Usually, GHCi loads object files for the libraries when running Haskell code. Obviously you can't run machine code with JavaScript, so you'd have to find a way around it. GHCJS includes an IO layer, which can be used to set up a virtual filesystem [2], but the API is far from finished.
> Nice to hear that - we are concidering using GHCJS heavly in our project. We dont have many people and this is free-time "driven" project for now, but we would love to cooperate with you - help with GHCJS development and work together to make it suitable for the project we are working on.
>> Ah it's much easier if the code can be compiled on the server. This is more or less what Daniil Frumin is doing for his Google Summer of Code project [3]. We are using GHC on the server for non-interactive things, and GHCJS to compile interactive code that is run on the client. Our main goal is to get interactive graphics with the diagrams [4] library working.
>> Currently he is working on building a good sandbox for the compiler on the server (With SELinux, rlimits and cgroups) so that we can compile code, and run Template Haskell safely. I'm working on improving the GHCJS linker, so that we can support incremental code loading more easily (so users can download just the code for the new function they wrote, instead of the whole program every time)
> That's very interesting. We want to use GHCJS EXACTLY for this - we want to compile the code on the server and run it in the users browesr BUT we dont want to load the whole program everytime a function is changed - only this particular function. 
> Additional (which is NOT the same) - while writing a function - we want to interactively execute it's "body" on the client side - but this requires something like interpreter on the user client (please see below for explanation). But we are thinking right now about it and its architecture, so we will be in touch in this topic with you :)
>> I have a very crude example of this type here:
>> http://hdiff.luite.com/reduce/
> This is not exactly the kind of thing I'm talking about. 
> Think about something like matlab simulink or labview - functions are representaed by "nodes" (rectangles) connected with other functions by lines. Lines are "sending data" between these nodes. 
> So user is connecting these blocks - each block is like a function application on data - so adding a block is like adding a new line in Haskell .hs file. We want user to be able to interactively add such nodes (apply further functions on already processed and cached data - every "node" caches processed data) and process the data further - If I didn't explained this simple enought, I will try harder. Such thing needs something like client side interpreter I think ...
>> When we have the SELinux sandbox working, I plan to work on this again, so that users can enter/compile their own code.
> When do you plan roughtly to release it? We are strongly interested in testing and using it :) 

As Luite has pointed out we plan on releasing the first public beta within a month and we are hoping to ship full-featured easily extensible documented version by the end of the summer. 

> _______________________________________________
> Haskell-Cafe mailing list
> Haskell-Cafe at haskell.org
> http://www.haskell.org/mailman/listinfo/haskell-cafe
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://www.haskell.org/pipermail/haskell-cafe/attachments/20130703/63cf942a/attachment-0001.htm>

More information about the Haskell-Cafe mailing list