How does the merging process for new Phobos/druntime/DMD front ends work
w.r.t. GDC and LDC? To what extent is it automated? If it's mostly
automated except when things go wrong (or could be made so), we should
set up a server somewhere (maybe on one of the DMD tester boxes that's
underworked, if there is one) that automatically merges every commit to
druntime/phobos/dmd and tests it.
It seems to take agonizingly long after every DMD release for LDC and
GDC to get caught up, which makes sense only if the merges are being
done by hand or changes are made to low-level stuff (certain parts of
druntime, the glue layer of the compiler, etc.). Furthermore, such
continuous merging might encourage DMD/Phobos/druntime devs to do things
in a more LDC/GDC-friendly way and would make trunk revisions of
Phobos/druntime/dmd in between releases available to GDC/LDC users.

How does the merging process for new Phobos/druntime/DMD front ends work
w.r.t. GDC and LDC? =A0To what extent is it automated? =A0If it's mostly
automated except when things go wrong (or could be made so), we should se=

t

up a server somewhere (maybe on one of the DMD tester boxes that's
underworked, if there is one) that automatically merges every commit to
druntime/phobos/dmd and tests it.
It seems to take agonizingly long after every DMD release for LDC and GDC=

to

get caught up, which makes sense only if the merges are being done by han=

d

or changes are made to low-level stuff (certain parts of druntime, the gl=

ue

layer of the compiler, etc.). =A0Furthermore, such continuous merging mig=

ht

encourage DMD/Phobos/druntime devs to do things in a more LDC/GDC-friendl=

y

way and would make trunk revisions of Phobos/druntime/dmd in between
releases available to GDC/LDC users.

API changes in the D frontend could break builds. New features in D
that require backend support could break builds. The only positive to
continuous merging is that they will be caught early and dealt with.
Other than that, I tend to use merges as a time to start merging in
some experimental features I've got in the flux. In this current
merge I've been working out support for named value return support in
gdc, and weeding out some bugs present in the current in/out contract
inheritance.
--=20
Iain Buclaw
*(p < e ? p++ : p) =3D (c & 0x0f) + '0';

How does the merging process for new Phobos/druntime/DMD front ends work
w.r.t. GDC and LDC? To what extent is it automated? If it's mostly
automated except when things go wrong (or could be made so), we should set
up a server somewhere (maybe on one of the DMD tester boxes that's
underworked, if there is one) that automatically merges every commit to
druntime/phobos/dmd and tests it.
It seems to take agonizingly long after every DMD release for LDC and GDC to
get caught up, which makes sense only if the merges are being done by hand
or changes are made to low-level stuff (certain parts of druntime, the glue
layer of the compiler, etc.). Furthermore, such continuous merging might
encourage DMD/Phobos/druntime devs to do things in a more LDC/GDC-friendly
way and would make trunk revisions of Phobos/druntime/dmd in between
releases available to GDC/LDC users.

API changes in the D frontend could break builds. New features in D
that require backend support could break builds. The only positive to
continuous merging is that they will be caught early and dealt with.
Other than that, I tend to use merges as a time to start merging in
some experimental features I've got in the flux. In this current
merge I've been working out support for named value return support in
gdc, and weeding out some bugs present in the current in/out contract
inheritance.

It seems to me that there would be some value in this proposal. If
nothing else it could start with the most up-to-date hand merged
instance is available, branch (is that the correct term?) from it, go as
far as it can from that and generate a pull request for the maintainers
to consider. If it can merge cleanly from the DMD trunk and the test
situation doesn't regress, It's likely correct (and if it isn't then the
test suite is lacking :) and if it's not correct, it has likely done a
lot of the boring work.
Having that available would provide something like "nightly" builds to
the people who want that and it would provide as much automation as the
maintainers want to get from it (after all, it would be madness to allow
such a system to actual muck with the official branch).

How does the merging process for new Phobos/druntime/DMD front ends work
w.r.t. GDC and LDC? To what extent is it automated? If it's mostly
automated except when things go wrong (or could be made so), we should set
up a server somewhere (maybe on one of the DMD tester boxes that's
underworked, if there is one) that automatically merges every commit to
druntime/phobos/dmd and tests it.
It seems to take agonizingly long after every DMD release for LDC and GDC to
get caught up, which makes sense only if the merges are being done by hand
or changes are made to low-level stuff (certain parts of druntime, the glue
layer of the compiler, etc.). Furthermore, such continuous merging might
encourage DMD/Phobos/druntime devs to do things in a more LDC/GDC-friendly
way and would make trunk revisions of Phobos/druntime/dmd in between
releases available to GDC/LDC users.

API changes in the D frontend could break builds. New features in D
that require backend support could break builds. The only positive to
continuous merging is that they will be caught early and dealt with.
Other than that, I tend to use merges as a time to start merging in
some experimental features I've got in the flux. In this current
merge I've been working out support for named value return support in
gdc, and weeding out some bugs present in the current in/out contract
inheritance.

One thing that confuses me a bit is why GDC and LDC need downstream
copies of druntime/phobos. Couldn't patches that fix the libraries for
certain archs/OSs be sent upstream, in order to reduce merging work and
always provide the latest release to users? Now that so many version
identifiers are standardized across DMD, GDC, LDC, and SDC, I think it'd
be beneficial to do this.
- Alex

One thing that confuses me a bit is why GDC and LDC need downstream
copies of druntime/phobos. Couldn't patches that fix the libraries fo=

r

certain archs/OSs be sent upstream, in order to reduce merging work a=

nd

always provide the latest release to users? Now that so many version
identifiers are standardized across DMD, GDC, LDC, and SDC, I think i=

t'd

be beneficial to do this.

druntime is expected to have differing versions per compiler. Both Sean=
Kelly=20
and Iain Buclaw would argue that - they have in the past. However, I wo=
uld=20
certainly hope that that would _not_ be the case with Phobos. It's supp=
osed to=20
be at a higher level and thus should generally be able to avoid such is=
sues.
- Jonathan M Davis