
[Moving to cafe for follow up discussions] Hi Bulat, So, just to confirm in my mind what you are proposing: Compiler/Version specific Core: 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. Base: Pure Haskell which depends on Core, but NOT on *.Core. (Then after you split up base - useful, but personally not of massive importance to me ;) ) 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? 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. Thanks Neil