Transitioning std lib modules/packages

Jonathan M Davis via Digitalmars-d digitalmars-d at puremagic.com
Mon Nov 28 07:47:10 PST 2016


On Monday, November 28, 2016 14:09:10 Ilya Yaroshenko via Digitalmars-d 
wrote:
> Compiler version should be split from a library versions. --Ilya

While that might theoretically be nice, I don't think that it's particularly
realistic, and it's definitely not how things have functioned for us
historically. dmd and druntime are definitely too interconnected to separate
those, and Phobos relies on druntime, so to some extent at least, it's tied
to the version of druntime. It's also the case that it's often tied to a
specific version of the compiler, because there's a feature change, and
Phobos has to be updated accordingly (e.g. Walter has been making various
improvements to @safe of late, and that has required changes in Phobos). The
APIs of druntime and Phobos are reasonably stable, but they aren't
completely stable, and their ABIs aren't stable. We're not constantly
changing them, but there is no guarantee that they stay the same from
release to release. We just try and ensure that user code that built and ran
with the previous release continues to do so with the current one. There is
no attempt to ensure that Phobos from one release builds with another, and
it would make updating stuff way more of a pain if we had to worry about
that. There is also no attempt to make it so that code _built_ with the
previous release will work with the current one.

It's expected that if you're updating the compiler, you're going to update
druntime and Phobos. And I don't think that that's unreasonable. It's
actually pretty normal. I don't know of any language that separates their
compiler releases from their standard library releases. They always go
together. That's part of what comes with them being standard.

- Jonathan M Davis



More information about the Digitalmars-d mailing list