Even if this blog has been silent since the first post, I've completed my gsoc project, producing a branch of Cabal that supports preprocessor chaining, incremental and parallel builds, and yhc.
Deciding how to best handle preprocessor chaining raised a lot of problems: gnu make handle this with suffix rules, but in our model we've abstracted out the concept of filenames, we only have opaque targets.
In the end we took the simplest approach: we represent a preprocessor as a matcher on suffixes in a way that we can translate a list of them down to the rules of our model, sort of like a compiler implements new user-level features by translating them into its core language.
Now the problem is how to integrate this framework in the mainline Cabal. It's quite easy to just use it for preprocessors and yhc (my branch does exactly this), but in the end we'd like to move most of the IO code in Cabal to our model so that users don't need to "cabal clean" from time to time to get consistent results.
We'd also like to provide a very high-level edsl that avoids the risks of wrong declarations of targets and dependencies, solving "what's wrong with make".
The developement could continue inside of Cabal, taking the burden of dealing with old code, limited available packages, and portability between compilers that doing so requires, but we preferred to spawn a separate project with the aim of replacing the building code in Cabal when we're sufficiently confident about it.
So now we've yet another haskell build tool, hbuild!
The first release should come very soon, since the first milestone corresponds to the work i've done this summer.
Monday, September 8, 2008
Subscribe to:
Post Comments (Atom)
0 comments:
Post a Comment