[Haskell-cafe] Re[2]: [Haskell] Re: compiler-independent core
libraries infrastructure
Bulat Ziganshin
bulat.ziganshin at gmail.com
Fri Sep 15 14:02:10 EDT 2006
Hello Neil,
Friday, September 15, 2006, 8:12:34 PM, you wrote:
> [Moving to cafe for follow up discussions]
i should be started this discussion in libraries... :(
> Yhc.Core, Hugs.Core, GHC.Core ....
> With a different version for each compiler version. Tied intimately to
> the compiler.
> The leveler:
> Core - which abstracts each version/variant of *.Core into one big
> pile. Contains versions of STM/Arrays in Pure Haskell which might not
> give the expected performance, but at least keep the semantics as best
> they can.
Core - provides common API
*hc-core - implements strict subset of this API
Core, again - checks compiler brand and version and either imports
appropriate module or emulates required behavior
So, the *Core and Core has the same API, although each *Core defines
only subset of these names. it's why i called Core "equalizer" - it
adds unimplemented "rights" to the "poor" Haskell compilers :)
> Base:
> Pure Haskell which depends on Core, but NOT on *.Core.
yes, keeping in mind that *Core APIs are subsets of Core API
> I think this is a great plan! Now you have a concrete idea of what you
> want to achieve in the end, how are you going to get there? It seems a
> rather ambitious project.
> Perhaps you might be best suited by getting base to compile with Cabal
> (and maybe even natively on Windows - without MingW), then you can go
> from there to the splitting in a Cabal friendly manner without hacking
> through makefiles?
Igloo just wrote that he changes the 'base' to compile with Cabal (i even
don't known that it don't works). To be exact, i propose some
algorithm of doing it in a way that should allow
1) work over existing 'base' repository, so we don't end with two
libraries to maintain in-between
2) make the changes in small steps, don't breaking anything in-between
3) allow to participate all the 'base' hackers
if it will be possible to work with modified 'base' library as with
any other package, without rebuilding the GHC itself, i will make
some contribution to this work. as i said, i have great experience of
developing portable software
> Anyway, once you have decided what you want, I'm sure the Yhc team
> will do their best to help you get to where you want with regards to
> that specific compiler. Just to try and keep your work more generally
> applicable, it would be nice if you kept the Hat project in the back
> of your mind, so that this work can be reused by them to get full
> haskell.org libraries.
first - i propose to do a series of incremental rewrites of existing
base package, i never mind to do it from scratch :) second - are you
sure that Hat needs to work over core libs? all that these libs should
contain is just a lots of trivial definitions like this:
type Arr = Arr#
newArr = newArray#
.....
third - you can point to the guidelines of writing Hat-comptaible
libraries so that we will know how to write right code. as i said,
developing of basic libs is easy in terms of algorithms but a pain in
terms of lot of requirements from many various sources
about yhc - hopefully, current base lib don't supports it. ensuring
compatibility with ghc, hugs and nhc during transition will be a hard
problem by itself. but once transition will be completed,
implementation of yhc.core library should be very easy, especially
using nhc.core as a start point. that you can do to help us is to provide
list of differences between nhc and yhc low-level libraries so that we
account for these differences when developing Core API
--
Best regards,
Bulat mailto:Bulat.Ziganshin at gmail.com
More information about the Haskell-Cafe
mailing list