www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - GCC 12.1 Released (D v2.100-rc.1)

reply Iain Buclaw <ibuclaw gdcproject.org> writes:
Hi,

I am proud to announce another major GCC release, 12.1.

This year, the biggest change in the D front-end is the version 
bump from v2.076.1 to 
**[v2.100.0-rc.1](https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=b4acfef1342097ceaf10fa93
831f8edd7069431)**.  For the full list of front-end changes, please read the
[change log on dlang.org](https://dlang.org/changelog/2.100.0.html). As and
when DMD releases new minor releases of v2.100.x, they will be backported into
the next minor release of GCC.

In order to build GDC, you will now require a working GDC 
compiler (GCC version 9.1 or later) and D runtime library, as GDC 
is now written in D.

For the best chance of bootstrapping successfully, the latest 
version of GCC 11.x will have all the backported fixes necessary 
to build GCC 12.  Alternatively, you can also use 
[LDC2](https://gist.github.com/ibuclaw/e6733142a8644ffb53106cc9986372fa) or
[DMD](https://gist.github.com/ibuclaw/73f91fd66b5d4a1a6ad29d739be627c1) to
build GDC with the use of a simple wrapper.

Note that configure does not test whether the GDC installation 
works and has a sufficiently recent version. Though the 
implementation of the D front-end does not make use of any 
GDC-specific extensions, or novel features of the D language, if 
too old a GDC version is installed and --enable-languages=d is 
used, the build will fail.  On some targets, libphobos isn’t 
enabled by default, but compiles and works if 
`--enable-libphobos` is used.  While the bootstrap process has 
been tested on a vagary of platforms and architectures, your 
mileage may ultimately vary.

If you encounter difficulties, while you may contact me directly, 
it is better to visit https://gcc.gnu.org/bugzilla and file a 
problem report.

---


Now the development cycle has started again, its time for the 
next round of have ambitions for changes to land during the next 
release cycle.

1. ImportC is gaining a preprocessor.  DMD will achieve this by 
calling `fork()` to the system installed cpp program, I rather 
have other ideas.  As the preprocessor for GCC is already linked 
into GDC (though only used for internal location tracking by the 
middle-end optimizer), it would make more sense to preprocess C 
sources in-memory using the exposed cpplib interface.

2. Add new compiler intrinsics for all functions in the 
`core.int128` module.  Some preliminary testing has yielded 
results that show the building blocks for 128-bit integers 
generate the same code as per native types, however more stress 
testing is required, particularly on big endian and strict 
alignment architectures before this will land in mainline.

3. Update the compilers on the [GDC compiler 
explorer](https://explore.dgnu.org) site to version 12, and other 
continued maintenance on the testing infrastructure, the costs of 
which are now covered by the [kind 
sponsors](https://github.com/sponsors/ibuclaw) of GDC.  If you 
are interested in helping support the on-going development of 
GDC, you can do so by making a donation to the [D Language 
Foundation](https://dlang.org/foundation/donate.html).

4. As GDC is now in sync with current DMD development, this will 
generally continue throughout the release cycle so that the next 
version of GCC will also sport the latest release of the D 
language.

There are - as always - more things to do than I have available 
hours to do them in, but if this has pricked your interest, or 
you feel you could help in any way, please don't hesitate to jump 
on the [#gdc](https://dlang.slack.com/archives/C6LTP6MV1) channel 
on the Dlang Slack or [#d.gdc](irc://irc.libera.chat/d.gdc) on 
Libera.Chat IRC.

Until the next major/minor release...

Regards,
Iain.
May 06 2022
next sibling parent reply Steven Schveighoffer <schveiguy gmail.com> writes:
On 5/6/22 7:57 AM, Iain Buclaw wrote:
 Hi,
 
 I am proud to announce another major GCC release, 12.1.
 
 This year, the biggest change in the D front-end is the version bump 
 from v2.076.1 to 
 **[v2.100.0-rc.1](https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=b4acfef1342097ceaf10fa93
831f8edd7069431)**.  
 For the full list of front-end changes, please read the [change log on 
 dlang.org](https://dlang.org/changelog/2.100.0.html). As and when DMD 
 releases new minor releases of v2.100.x, they will be backported into 
 the next minor release of GCC.
 
 In order to build GDC, you will now require a working GDC compiler (GCC 
 version 9.1 or later) and D runtime library, as GDC is now written in D.
 
 For the best chance of bootstrapping successfully, the latest version of 
 GCC 11.x will have all the backported fixes necessary to build GCC 12.  
 Alternatively, you can also use 
 [LDC2](https://gist.github.com/ibuclaw/e6733142a8644ffb53106cc9986372fa) 
 or 
 [DMD](https://gist.github.com/ibuclaw/73f91fd66b5d4a1a6ad29d739be627c1) 
 to build GDC with the use of a simple wrapper.
 
 Note that configure does not test whether the GDC installation works and 
 has a sufficiently recent version. Though the implementation of the D 
 front-end does not make use of any GDC-specific extensions, or novel 
 features of the D language, if too old a GDC version is installed and 
 --enable-languages=d is used, the build will fail.Β  On some targets, 
 libphobos isn’t enabled by default, but compiles and works if 
 `--enable-libphobos` is used.Β  While the bootstrap process has been 
 tested on a vagary of platforms and architectures, your mileage may 
 ultimately vary.
 
 If you encounter difficulties, while you may contact me directly, it is 
 better to visit https://gcc.gnu.org/bugzilla and file a problem report.
 
 ---

 
 Now the development cycle has started again, its time for the next round 
 of have ambitions for changes to land during the next release cycle.
 
 1. ImportC is gaining a preprocessor.Β  DMD will achieve this by calling 
 `fork()` to the system installed cpp program, I rather have other 
 ideas.Β  As the preprocessor for GCC is already linked into GDC (though 
 only used for internal location tracking by the middle-end optimizer), 
 it would make more sense to preprocess C sources in-memory using the 
 exposed cpplib interface.
 
 2. Add new compiler intrinsics for all functions in the `core.int128` 
 module.Β  Some preliminary testing has yielded results that show the 
 building blocks for 128-bit integers generate the same code as per 
 native types, however more stress testing is required, particularly on 
 big endian and strict alignment architectures before this will land in 
 mainline.
 
 3. Update the compilers on the [GDC compiler 
 explorer](https://explore.dgnu.org) site to version 12, and other 
 continued maintenance on the testing infrastructure, the costs of which 
 are now covered by the [kind 
 sponsors](https://github.com/sponsors/ibuclaw) of GDC.Β  If you are 
 interested in helping support the on-going development of GDC, you can 
 do so by making a donation to the [D Language 
 Foundation](https://dlang.org/foundation/donate.html).
 
 4. As GDC is now in sync with current DMD development, this will 
 generally continue throughout the release cycle so that the next version 
 of GCC will also sport the latest release of the D language.
 
 There are - as always - more things to do than I have available hours to 
 do them in, but if this has pricked your interest, or you feel you could 
 help in any way, please don't hesitate to jump on the 
 [#gdc](https://dlang.slack.com/archives/C6LTP6MV1) channel on the Dlang 
 Slack or [#d.gdc](irc://irc.libera.chat/d.gdc) on Libera.Chat IRC.
 
 Until the next major/minor release...
 
 Regards,
 Iain.
Amazing, congrats! I'll have to try out gdc now that it might be able to build my stuff ;) -Steve
May 06 2022
next sibling parent max haughton <maxhaton gmail.com> writes:
On Friday, 6 May 2022 at 13:27:40 UTC, Steven Schveighoffer wrote:
 On 5/6/22 7:57 AM, Iain Buclaw wrote:
 [...]
Amazing, congrats! I'll have to try out gdc now that it might be able to build my stuff ;) -Steve
The brew version of GCC has D disabled for non-x86 targets. It might just be a flip of a switch to enable but could he a wild west in terms of some library features (if the latter I still vote for trying to enable it as long as hello world works)
May 06 2022
prev sibling parent max haughton <maxhaton gmail.com> writes:
On Friday, 6 May 2022 at 13:27:40 UTC, Steven Schveighoffer wrote:
 On 5/6/22 7:57 AM, Iain Buclaw wrote:
 [...]
Amazing, congrats! I'll have to try out gdc now that it might be able to build my stuff ;) -Steve
https://github.com/Homebrew/homebrew-core/blob/31e2ed54e34225db270b13228036009d427e8056/Formula/gcc.rb#L79
May 06 2022
prev sibling next sibling parent reply Steven Schveighoffer <schveiguy gmail.com> writes:
On 5/6/22 7:57 AM, Iain Buclaw wrote:
 Hi,
 
 I am proud to announce another major GCC release, 12.1.
 
 This year, the biggest change in the D front-end is the version bump 
 from v2.076.1 to 
 **[v2.100.0-rc.1](https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=b4acfef1342097ceaf10fa93
831f8edd7069431)**.  
 For the full list of front-end changes, please read the [change log on 
 dlang.org](https://dlang.org/changelog/2.100.0.html). As and when DMD 
 releases new minor releases of v2.100.x, they will be backported into 
 the next minor release of GCC.
Why is this news not captured [here](https://gcc.gnu.org/gcc-12/changes.html)? I would have expected to see it in the language specific changes. -Steve
May 06 2022
parent Iain Buclaw <ibuclaw gdcproject.org> writes:
On Friday, 6 May 2022 at 13:30:41 UTC, Steven Schveighoffer wrote:
 Why is this news not captured 
 [here](https://gcc.gnu.org/gcc-12/changes.html)?

 I would have expected to see it in the language specific 
 changes.
I need some more time to push in that content to the GCC site. Expect it some time over the next fortnight.
May 06 2022
prev sibling next sibling parent "H. S. Teoh" <hsteoh quickfur.ath.cx> writes:
On Fri, May 06, 2022 at 11:57:47AM +0000, Iain Buclaw via
Digitalmars-d-announce wrote:
 Hi,
 
 I am proud to announce another major GCC release, 12.1.
 
 This year, the biggest change in the D front-end is the version bump from
 v2.076.1 to **[v2.100.0-rc.1](https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=b4acfef1342097ceaf10fa935831f8edd7069431)**.
 For the full list of front-end changes, please read the [change log on
 dlang.org](https://dlang.org/changelog/2.100.0.html). As and when DMD
 releases new minor releases of v2.100.x, they will be backported into the
 next minor release of GCC.
[...] This is AWESOME news!!! Finally, GDC will be able to compile the up-to-date language. I will be seriously considering using gdc for my latest projects again. Huge thanks to Iain for all his hard work through all these years to make this happen! T -- If lightning were to ever strike an orchestra, it'd always hit the conductor first.
May 06 2022
prev sibling next sibling parent Tejas <notrealemail gmail.com> writes:
On Friday, 6 May 2022 at 11:57:47 UTC, Iain Buclaw wrote:
 Hi,

 I am proud to announce another major GCC release, 12.1.

 [...]
Go Iain πŸŽ‰πŸŽ‰πŸŽ‰πŸŽ‰πŸ₯³πŸ₯³πŸ₯³πŸ₯³πŸ₯³
May 06 2022
prev sibling next sibling parent rikki cattermole <rikki cattermole.co.nz> writes:
Well done Iain!

We should do a celebration party for both it and 2.100.0 release!
May 06 2022
prev sibling next sibling parent zjh <fqbqrr 163.com> writes:
On Friday, 6 May 2022 at 11:57:47 UTC, Iain Buclaw wrote:
 Hi,
Is there a newest Windows version?
May 06 2022
prev sibling next sibling parent Walter Bright <newshound2 digitalmars.com> writes:
On 5/6/2022 4:57 AM, Iain Buclaw wrote:
 I am proud to announce another major GCC release, 12.1.
Very impressive work, Iain!
May 06 2022
prev sibling next sibling parent reply Witold Baryluk <witold.baryluk+d gmail.com> writes:
On Friday, 6 May 2022 at 11:57:47 UTC, Iain Buclaw wrote:
 Hi,

 I am proud to announce another major GCC release, 12.1.
Thank you so much Ian on your hard and dedicated work on GDC. It is my goto default compiler for D on Debian Linux. (I use ldc and sometimes dmd sporadically, but only for testing compatibility). Glad to have newer GCC backend, frontend up to date with DMD, all the Phobos work, and various architectures supports landing!
 Update the compilers on the GDC compiler explorer site to 
 version 12, and other continued maintenance on the testing 
 infrastructure, the costs of which are now covered by the kind 
 sponsors of GDC. If you are interested in helping support the 
 on-going development of GDC, you can do so by making a donation 
 to the D Language Foundation.
Good you mentioned that! I was not aware of the sponsorship program, and now that I know, I gladly will chip in (well, just did it moments ago). For testing infrastructure, I would suggest tracking compilation speed and memory usage and output binary size of GDC on amd64 and aarch64 at least (to detect compiler getting slower, or due to growth of Phobos / druntime), and having a public website showing this data. Something like this maybe https://fast.vlang.io/ Cheers.
May 07 2022
next sibling parent max haughton <maxhaton gmail.com> writes:
On Saturday, 7 May 2022 at 20:14:51 UTC, Witold Baryluk wrote:
 On Friday, 6 May 2022 at 11:57:47 UTC, Iain Buclaw wrote:
 Hi,

 I am proud to announce another major GCC release, 12.1.
Thank you so much Ian on your hard and dedicated work on GDC. It is my goto default compiler for D on Debian Linux. (I use ldc and sometimes dmd sporadically, but only for testing compatibility). Glad to have newer GCC backend, frontend up to date with DMD, all the Phobos work, and various architectures supports landing!
 Update the compilers on the GDC compiler explorer site to 
 version 12, and other continued maintenance on the testing 
 infrastructure, the costs of which are now covered by the kind 
 sponsors of GDC. If you are interested in helping support the 
 on-going development of GDC, you can do so by making a 
 donation to the D Language Foundation.
Good you mentioned that! I was not aware of the sponsorship program, and now that I know, I gladly will chip in (well, just did it moments ago). For testing infrastructure, I would suggest tracking compilation speed and memory usage and output binary size of GDC on amd64 and aarch64 at least (to detect compiler getting slower, or due to growth of Phobos / druntime), and having a public website showing this data. Something like this maybe https://fast.vlang.io/ Cheers.
I'm planning on getting something like this set up for the frontend but its not the easiest thing to do on cheap cloud instances. Hypothetically we could use something like callgrind to measure raw instruction counts but this becomes more and more synthetic the more data you collect.
May 07 2022
prev sibling parent reply Iain Buclaw <ibuclaw gdcproject.org> writes:
On Saturday, 7 May 2022 at 20:14:51 UTC, Witold Baryluk wrote:
 Good you mentioned that! I was not aware of the sponsorship 
 program, and now that I know, I gladly will chip in (well, just 
 did it moments ago). For testing infrastructure, I would 
 suggest tracking compilation speed and memory usage and output 
 binary size of GDC on amd64 and aarch64 at least (to detect 
 compiler getting slower, or due to growth of Phobos / 
 druntime), and having a public website showing this data. 
 Something like this maybe https://fast.vlang.io/


 Cheers.
Thanks for the suggestion. Vladimir did in fact do that for dmd last decade, it only ran for a couple years though. Have been thinking about maybe reviving it every so often. https://blog.cy.md/2015/05/05/is-d-slim-yet/ Adam (maybe in a TWID post) did a few months back lament that D1 vs D2 equivalent code compiles slower with the latter. The bulk of which in the trivial case came from Druntime and how many modules are imported (D1 object.d had no imports, D2 object.d imports around 25 modules). Remove the excessive imports and the original speed was observed again. That's only one small example though of where perceived slowness comes from the library becoming more complex over time - and I expect it only to increase as more of the old opaque compiler-library interface is replaced with a templated interface that exposes the guts of what each helper does (for improved run-time performance, of course).
May 07 2022
parent Adam Ruppe <destructionator gmail.com> writes:
On Saturday, 7 May 2022 at 22:07:58 UTC, Iain Buclaw wrote:
 I expect it only to increase as more of the old opaque 
 compiler-library interface is replaced with a templated 
 interface that exposes the guts of what each helper does (for 
 improved run-time performance, of course).
Well, I'm pretty sure if we do this carefully we can have the best of both worlds. It is just important to get the interface right at this stage, then we can look at the other optimizations later with precompiling and such.
May 07 2022
prev sibling next sibling parent Brian Callahan <bcallah openbsd.org> writes:
On Friday, 6 May 2022 at 11:57:47 UTC, Iain Buclaw wrote:
 Hi,

 I am proud to announce another major GCC release, 12.1.
Thanks, Iain. All is good on OpenBSD. ~Brian
May 08 2022
prev sibling next sibling parent Andrea Fontana <nospam example.com> writes:
On Friday, 6 May 2022 at 11:57:47 UTC, Iain Buclaw wrote:
 Hi,

 I am proud to announce another major GCC release, 12.1.
 [...]
 Regards,
 Iain.
Great!
May 08 2022
prev sibling next sibling parent Adrian Matoga <dlang.spam matoga.info> writes:
On Friday, 6 May 2022 at 11:57:47 UTC, Iain Buclaw wrote:
 Hi,

 I am proud to announce another major GCC release, 12.1.
 [...]
Thank you for all the great work!
May 11 2022
prev sibling next sibling parent reply Anonymouse <zorael gmail.com> writes:
On Friday, 6 May 2022 at 11:57:47 UTC, Iain Buclaw wrote:
 Hi,

 I am proud to announce another major GCC release, 12.1.

 This year, the biggest change in the D front-end is the version 
 bump from v2.076.1 to 
 **[v2.100.0-rc.1](https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=b4acfef1342097ceaf10fa93
831f8edd7069431)**.  For the full list of front-end changes, please read the
[change log on dlang.org](https://dlang.org/changelog/2.100.0.html). As and
when DMD releases new minor releases of v2.100.x, they will be backported into
the next minor release of GCC.
Amazing, congratulations! I was hammering the Arch Linux package page for `gcc-d` waiting for the update to show up there, but it went from 11.2.0-4 to deleted.
 gcc-d 11.2.0-4 has been removed from the [core] repository.
Does anyone know what's going on there?
May 11 2022
parent Iain Buclaw <ibuclaw gdcproject.org> writes:
On Wednesday, 11 May 2022 at 19:08:15 UTC, Anonymouse wrote:
 gcc-d 11.2.0-4 has been removed from the [core] repository.
Does anyone know what's going on there?
You should ask the package maintainers. https://github.com/archlinux/svntogit-packages/commit/6ebddb843f621263f4ce6e5a8b2b6856f337c218
May 11 2022
prev sibling next sibling parent Per =?UTF-8?B?Tm9yZGzDtnc=?= <per.nordlow gmail.com> writes:
On Friday, 6 May 2022 at 11:57:47 UTC, Iain Buclaw wrote:
 I am proud to announce another major GCC release, 12.1.
Thank you, Ian!
May 13 2022
prev sibling parent Iain Buclaw <ibuclaw gdcproject.org> writes:
On Friday, 6 May 2022 at 11:57:47 UTC, Iain Buclaw wrote:
 Hi,

 I am proud to announce another major GCC release, 12.1.

 This year, the biggest change in the D front-end is the version 
 bump from v2.076.1 to 
 **[v2.100.0-rc.1](https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=b4acfef1342097ceaf10fa93
831f8edd7069431)**.  For the full list of front-end changes, please read the
[change log on dlang.org](https://dlang.org/changelog/2.100.0.html). As and
when DMD releases new minor releases of v2.100.x, they will be backported into
the next minor release of GCC.
The GCC-12 release branch has now been [sync'd up](https://gcc.gnu.org/git/?p=gcc.git;a=commitdiff;h=0556c356e541aa106dcc4 76db429ee0d2343d99) with the release of DMD v2.100.0.
May 15 2022