As of last week (7th May), GCC 10.1 has now been released.
For the D language front-end, only a small number of incremental,
but substantial changes have gone in. Most notable of the lot
has been the addition of `static foreach`, which makes the
front-end (the C++ port of DMD) feature complete with DMD version
2.076.1. There is also now a configurable separation between
building Druntime and Phobos, which has allowed many targets to
have gained library support for building a D runtime library by
disabling the build of Phobos.
See [1] for more information about changes in GDC 10.1. Sources
are available from any of the GCC mirrors [2], or you can clone
the git repository [3].
[[GCC 11 Development]]
Now the development cycle has started again, I have ambitions for
a number disruptive changes to land during the next release cycle.
1. Switch implementation of the compiler from C++ to D. Rebase
front-end with DMD master. Taking into account the alignment of
release cycles, the aim is for GCC 11.1 to have DMD
2.098.0-beta.1 or 2.098.0-rc.1. The GCC 11.2 release will then
have DMD 2.098.1, plus any other fixes that have gone into stable
before the master/stable merge.
2. Update the D demangling library to be in sync with current
spec, down-streaming this to GDB/Binutils. This'll include the
ability to decode recent(-ish) ABI changes such as back
references, as well as decoding @live and variadic parameter
attributes.
3. Dynamically generate C bindings from headers, possibly using a
new command-line switch -fdump-d-spec where one can use gcc (or
g++, gfortran, gccgo...) to read in sources/headers of one
language, and write out bindings in D. The primary use case of
this would be to drop the manual maintenance of core.sys.*;
core.stdc.* (and core.stdcxx.*?); and instead generate these
modules during the build of libphobos.
4. Turn on library support for the platforms FreeBSD, NetBSD,
DragonflyBSD, OpenBSD, MinGW, Darwin, HP-UX/PA, and AIX/PowerPC.
Though given that there'll be a need to bootstrap, expect these
ports to also get pushed to a GCC 10.x release too.
I'm not going to tire you with anything more on my TODO list
(there are over 50 items), but if any thing sounds interesting,
or you feel you could help in any way, please don't hesitate to
jump on the #gdc channel in either the Dlang Slack or Freenode
IRC.
[[Nota Bene]]
No sooner had the RC for GCC 10 branched, that a bug in
std.net.curl was raised relating to the handling of HTTP/2
requests (it can't, as it turns out). This patch [4] is being
backported for the 10.2 release, which is highly important for
tools such as dub to be able to function correctly. The patch
has already been applied to Debian and Ubuntu, it would be kind
if other package maintainers do the same for their distributions.
Having a look at my own personal site, it is clearly in need of
some tender loving care. A minor styling improvement will be
done soon, along with a refresh of all documentation hosted on
the site to better reflect the situation now, as opposed to 8
years ago.
I'll also be triggering a rebuild of D compilers for all
supported GCC targets, and pushing them to the compiler explorer
site [5] maybe sometime next week (there's 198 of them, so please
excuse the slowness of the process).
Until next year...
Regards
Iain.
[1] https://gcc.gnu.org/gcc-10/changes.html#d
[2] https://gcc.gnu.org/mirrors.html
[3] git://gcc.gnu.org/git/gcc.git
[4]
https://patch-diff.githubusercontent.com/raw/dlang/phobos/pull/6752.diff
[5] https://explore.dgnu.org