
Am 05.10.2018 um 21:46 schrieb MarLinn:
It seems when a Haskell projects gets a bit larger people tend to search for ways to make it more modular. They try plugin frameworks, OS-level dynamic linking, on-the-fly compilation etc. But I repeatedly get the feeling that all these current approaches aren't actually very good. But what if we had some kind of specialized format for compiled, dynamically loadable, typed Haskell libraries? Something between a plain OS library and bytecode. This might help make programs more modular while keeping them type safe.
I've been believing that having a strict, universally-understood binary format was the one thing that enabled Java's library ecosystem. Which is huge, with a constant evolution of new generations and survival of the fittest. The downside is that compatibility with an established binary format is a pretty restricting design constraint on language evolution - you cannot evolve the language in ways that require a change to the binary format, unless you are willing to give up compatibility with all the precompiled binaries that are around. I think it's doable, if the binary format has been carefully designed to allow the kind of extensions that are being tought about. The other prerequisite is that if a change to the binary format is unavoidable, old formats stay readable. I.e. the loader needs to be able to read old format, indefinitely. Alternatively, code repositories could convert the code at upload time - the compatibility code would then live in the repositories and not in the loader (which makes the code harder to write but keeps the runtime smaller). Well, that's what I can say from the Java and repository perspective. I'm pretty sure there are other, and more important perspectives :-) Regards, JO