This a thread to explore whether it would be feasible to do so.

Motivation
----------

DRuntime and DMD heavily depend on each other.

It happens very often that a PR needs to touch both and then a complicated three-step (or sometimes four-step PR series) needs to be done to keep the CIs happy. Moreover, as the whole testsuite is at dmd, it happens more often that an error is caught in the testsuite, but would require a druntime PR or the opposite you make a PR to druntime and want its accompanying test to be checked by the CI.

How would this happen?
----------------------

A potential migration could look like this:

- lock druntime (e.g. only allowing admins to merge)
- move source code to dmd (of course with the git history, see e.g. [1]) - update the druntime/posix.mak build script to forward to the new source location
- update other dlang Makefiles
- remove everything else from druntime (optional check for the Makefile update step)
- update CIs and build scripts (more on this below)

[1] https://stackoverflow.com/a/10548919/3026245

What would need to be updated?
-----------------------------

- Makefiles for DMD, Druntime, Phobos, Tools, Dlang.org (mostly path updates)
- LDC/GDC (I think LDC already includes druntime as git submodule)

If we update the druntime/posix.mak file to call the druntime/posix.mak at its new location, then there would be zero breakage (druntime already requires dmd to cloned) and over time these can be updated:

- CI scripts (all of them explicitly clone druntime, but removing that line should be all)
- Release scripts at dlang/installer
- Packager build scripts

(most distros just ship the the libphobos2.{so,a} libraries, but if druntime is shipped too, it will require a path update for the release after such a potential migration.)

What do you think?
------------------

- Has the dmd/druntime split being annoying you too?
- Do you have a better suggestion?
- Would this break your workflow in a drastic way?

Reply via email to