Ticket #1610 (new proposed-project)
Cabal support for the UHC JavaScript backend
| Reported by: | norm2782 | Owned by: | |
|---|---|---|---|
| Priority: | not yet rated | Keywords: | |
| Cc: | Topic: | Tools | |
| Difficulty: | 1 person Summer | Mentor: | not-accepted |
Description (last modified by norm2782) (diff)
We recently improved the UHC JavaScript? backend[1] and showed that we can use it to write a complete front end for a web application[2]. A summary and demo of our results is available online[3].
Currently, however, it is still quite inconvenient to compile larger UHC JS projects, since Cabal support for UHC's different backends is limited. The programmer currently manually specifies include paths to the source of the used modules. Improving this situation is the goal for this GSoC project: make it possible to type cabal configure && cabal build and find a complete JS application in the project's dist folder.
Successful completion of this project would go a long way towards making the UHC JS backend more usable and as a result, make Haskell a practical language to use for client-side programming.
In solving this problem, one will have to think about how to deal with external Haskell libraries (UHC compiles JS from its internal core representation, so storing pre-compiled object files won't work in this case) and perhaps external JS libraries as well. One will also need to modify Cabal so that it becomes possible to select a specific UHC backend in your cabal files. Ideally, only one cabal file for an entire web application is needed; for both the front-end and backend application.
An additional goal (in case of time to spare) would be the creation of a UHC JS-specific Haskell Platform-like distribution, so that programmers interested in using this technology can get started right away. Of course, such a distribution would have to be installed alongside the regular Haskell Platform.
As for mentoring is concerned, I (Jurriën) might be able to help out there, but since the above project would revolve more around Cabal and not so much around the UHC internals, there might be more suitable mentors out there.
[1] http://www.norm2782.com/improving-uhc-js-report.pdf
[2] http://alessandrovermeulen.me/2012/01/26/getting-rid-of-javascript-with-haskell/
[3] http://uu-computerscience.github.com/uhc-js/
