www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.announce - Release D 2.075.0

reply Martin Nowak <code+news.digitalmars dawg.eu> writes:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA512

Glad to announce D 2.075.0.

This release comes with various phobos additions, a repackaged
std.datetime, configurable Fiber stack guard pages (now also on
Posix), and optional precise GC scanning for the DATA/TLS segment (static
data) on Windows.

http://dlang.org/download.html
http://dlang.org/changelog/2.075.0.html

- -Martin
-----BEGIN PGP SIGNATURE-----

iQIzBAEBCgAdFiEEpzRNrTw0HqEtE8TmsnOBFhK7GTkFAllvfHYACgkQsnOBFhK7
GTnSzhAAoSbvYNslsKZ0yqOOlQIIGAlfhNc4SlZold83DS/SPVjMzCPRURHwQgvj
T+NxivnAT8t794MBauYFv8t5JF1vEKf7e6Nyc6durr6zEDLwIuRGkjXnBzZjgC/J
DrCKTxuLpWqW+EIDB0V6VNUsrK+M9bz4GFZe3vYzK8CAO+c0l1a4/g9vf8Uf4KIv
4cSZ2lxsSZf4VuPlfPKXc9bdnVDNxm3uare/BtYM94V6w0f+z4xbmf9FCa86t4P+
Z7Ll2z14n7Ps9BxgLjHGkcPMeO/IwPL/8o+gce0QVlitHirfxayTtQyv/M4HwY+9
A2IGfrrErfeyJ1JmnBHw6uwQdER7C3z3NJPKP+GCF6vIuDXxxUOE9Nu792HBsFMg
Y6osvMqXqEp7dDAytTAnTKOd2R3Lg8ys7gx5xW21aBRRAhO4zBQ5bMTpvXhxEVxn
AKcnq4ri3tuwkPoPPNDSXMk32lqy0t/Ere8/X8dhL/8J04CNvAuiTaVQJsQnHKdw
4tQ7q55BGdsNqWdA7DHBFGcgbHmBsNfKA7fIb1OpggVzADNT7tLEAM4H498NAnoO
4AjnKZLJw1KhIdycDRkMz13m3zgVQvV4EdOENXTOlyOoRUrPA9cQx5N01MLA8WBG
4FkbqIlsjFBUj2NHRq1KsxDAI34DbSPXFzIeX5MJTixXqDL0eWo=
=HmY4
-----END PGP SIGNATURE-----
Jul 19 2017
next sibling parent reply Joakim <dlang joakim.fea.st> writes:
On Wednesday, 19 July 2017 at 15:36:22 UTC, Martin Nowak wrote:
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA512

 [...]
Wow, dmd builds in 12 seconds on a single linux/x64 core, can't wait to see what that time is when the backend is in D too, especially since it's taking most of the compile time now. Thanks to those involved for all the work on the release.
Jul 19 2017
next sibling parent Walter Bright <newshound2 digitalmars.com> writes:
On 7/19/2017 12:34 PM, Joakim wrote:
 when the backend is in D too
The sticking point there is the base D compiler used by GDC and LDC needs to be upgraded with the -mv switch. For discussion: https://github.com/dlang/dmd/pull/6907
Jul 19 2017
prev sibling parent reply Patrick Schluter <Patrick.Schluter bbox.fr> writes:
On Wednesday, 19 July 2017 at 19:34:44 UTC, Joakim wrote:
 On Wednesday, 19 July 2017 at 15:36:22 UTC, Martin Nowak wrote:
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA512

 [...]
Wow, dmd builds in 12 seconds on a single linux/x64 core, can't wait to see what that time is when the backend is in D too, especially since it's taking most of the compile time now. Thanks to those involved for all the work on the release.
version 2.067 that still had the C++ frontend took more than 100 seconds. I think if the backend is translated to D, building the compiler will take not more than 2 seconds. To put it in perspective, building gcc with only C and C++ support takes around 15 minutes on my machine and clang+llvm is ridiculously slow to compile with not far from 1 hour compilation. Ok, these projects are much, much bigger but that doesn't change the fact that C++ is slow to compile.
Jul 20 2017
next sibling parent Walter Bright <newshound2 digitalmars.com> writes:
On 7/20/2017 12:19 AM, Patrick Schluter wrote:
 version 2.067 that still had the C++ frontend took more than 100 seconds. I 
 think if the backend is translated to D, building the compiler will take not 
 more than 2 seconds.
 To put it in perspective, building gcc with only C and C++ support takes
around 
 15 minutes on my machine and clang+llvm is ridiculously slow to compile with
not 
 far from 1 hour compilation.
 Ok, these projects are much, much bigger but that doesn't change the fact that 
 C++ is slow to compile.
DMC++ takes about 15 seconds to do an optimized build of itself on my old Windows XP machine. (Of course, it doesn't use STL, or any templates for that matter. The code predates templates.)
Jul 20 2017
prev sibling next sibling parent reply Vladimir Panteleev <thecybershadow.lists gmail.com> writes:
On Thursday, 20 July 2017 at 07:19:03 UTC, Patrick Schluter wrote:
 version 2.067 that still had the C++ frontend took more than 
 100 seconds. I think if the backend is translated to D, 
 building the compiler will take not more than 2 seconds.
 To put it in perspective, building gcc with only C and C++ 
 support takes around 15 minutes on my machine and clang+llvm is 
 ridiculously slow to compile with not far from 1 hour 
 compilation.
 Ok, these projects are much, much bigger but that doesn't 
 change the fact that C++ is slow to compile.
One day, a colleague and I were working on migrating a large MSVC project to LLVM. Due to various reasons (using git master / bisecting regressions), this involved building LLVM from source code, which took an exorbitant amount of time (about 40 minutes IIRC). Later that day, I mentioned in passing that we might make building D part of the build process (of a project using D code), since building the compiler took only 3 seconds on my machine. To quote my colleague: "Whaaaaaaaaaaat? How can a compiler compile in 3 seconds?!"
Jul 20 2017
parent Walter Bright <newshound2 digitalmars.com> writes:
On 7/20/2017 1:20 AM, Vladimir Panteleev wrote:
 Later that day, I mentioned in passing that we might make building D part of
the 
 build process (of a project using D code), since building the compiler took
only 
 3 seconds on my machine.
 
 To quote my colleague:
 
 "Whaaaaaaaaaaat? How can a compiler compile in 3 seconds?!"
Back in the 80's (!) computer magazines regularly ran C compiler benchmark results. (At one time I counted 30 C compilers available for the PC.) I took a class at Standford on compilers, which included a lot of info on data flow analysis. I decided to implement it. Data flow analysis optimizations basically deleted the benchmark code, because it didn't do anything (lots of dead assignments). This compiler was released as Datalight Optimum C. The article writer concluded that the compiler had a giant bug in it, because it ran the benchmarks impossibly fast, because it deleted the dead code. Instead of being lauded as the only C compiler on the PC that did global data flow analysis, it was labeled as a buggy piece of crap. By the time we dug ourselves out of that PR disaster, other compilers had implemented it, too. Ironically, these days DMD gets repeatedly charged with not doing data flow analysis, and clang is assumed to have invented data flow analysis. Just goes to show the power of marketing :-)
Jul 22 2017
prev sibling next sibling parent reply Adrian Matoga <dlang.spam matoga.info> writes:
On Thursday, 20 July 2017 at 07:19:03 UTC, Patrick Schluter wrote:
 version 2.067 that still had the C++ frontend took more than 
 100 seconds.
I can hardly believe it. I remember versions 2.05x building in about 11 seconds.
Jul 20 2017
next sibling parent reply Patrick Schluter <Patrick.Schluter bbox.fr> writes:
On Thursday, 20 July 2017 at 12:10:14 UTC, Adrian Matoga wrote:
 On Thursday, 20 July 2017 at 07:19:03 UTC, Patrick Schluter 
 wrote:
 version 2.067 that still had the C++ frontend took more than 
 100 seconds.
I can hardly believe it. I remember versions 2.05x building in about 11 seconds.
1 cpu on 2.4 GHz Westmere, gcc 6.2 version 2.067
Jul 20 2017
parent Martin Nowak <code dawg.eu> writes:
On Thursday, 20 July 2017 at 18:22:36 UTC, Patrick Schluter wrote:
 1 cpu on 2.4 GHz Westmere, gcc 6.2 version 2.067
They don't sell single-core CPUs any longer ;). What matters is the time you have to wait.
Jul 22 2017
prev sibling parent Patrick Schluter <Patrick.Schluter bbox.fr> writes:
On Thursday, 20 July 2017 at 12:10:14 UTC, Adrian Matoga wrote:
 On Thursday, 20 July 2017 at 07:19:03 UTC, Patrick Schluter 
 wrote:
 version 2.067 that still had the C++ frontend took more than 
 100 seconds.
I can hardly believe it. I remember versions 2.05x building in about 11 seconds.
My times were all single threaded. Comparing parallel builds on a shared server with varying loads is kind of pointless as the build are all over the place and can not be used to draw some conclusion. Furthermore, I avoid parallel builds as there are often problems with them. My first build of clang+llvm that I had done with -j option was a catastrophe, it grabbed all the cpus and hogged the machine for a long time and failed to build properly. Only when limiting to -j 4 was I able to build it and even then it took a little less than an hour. The nice thing with dmd is that you can build it gently in single task and it doesn't take you a whole morning to get it set up. PS: The environment we work on at work are very restricted for security reasons, this means that the servers are built from standard images provided by IT and any piece of software that we want to install has to be built from source. The standard image has gcc 4.4.7 installed, has no graphic libraries (X or whatever). Even git has to be built from source.
Dec 24 2017
prev sibling parent reply Martin Nowak <code dawg.eu> writes:
On Thursday, 20 July 2017 at 07:19:03 UTC, Patrick Schluter wrote:
 version 2.067 that still had the C++ frontend took more than 
 100 seconds. I think if the backend is translated to D, 
 building the compiler will take not more than 2 seconds.
Using ccache solves the (tiny) problem as the backend hardly every changes. But even without ccache `make -C src -f posix.mak ../generated/linux/release/64/backend.a -j8` runs in about a second on my machine, hardly anything that needs optimization given that it's a solid codebase with little ongoing development. Also translating the C++ backend to D zero benefit to D users (at worst it introduces codegen bugs). I'm inclined to say we should rather spent our time on the various more important issues. It was a good move for the frontend as that will allow us to make use of D features to improve the code/architecture and to eventually turn it into a proper library. Converting the stable and well tested codebase of the backend, which will hardly receive any feature development, is unlikely to ever pay off.
Jul 22 2017
parent reply Walter Bright <newshound2 digitalmars.com> writes:
On 7/22/2017 2:04 AM, Martin Nowak wrote:
 Also translating the C++ backend to D zero benefit to D users (at worst it 
 introduces codegen bugs). I'm inclined to say we should rather spent our time
on 
 the various more important issues.
 It was a good move for the frontend as that will allow us to make use of D 
 features to improve the code/architecture and to eventually turn it into a 
 proper library.
 Converting the stable and well tested codebase of the backend, which will
hardly 
 receive any feature development, is unlikely to ever pay off.
It'll be converted anyway. :-) I'm about half way through converting the DMC++ front end. It isn't as difficult as I expected. The -betterC is helping a lot, as well as the fact that DMC++ is still pretty much C code. Some years back Daniel Murphy and I removed a lot of the preprocessor trickery from it, which helps, too. Note that DMC++ is now Boost licensed as well. Putting the entire set in D (C compiler, C++ compiler, C preprocessor, htod converter, optimizer, code generator) makes the whole thing much more tractable, and who knows what we will be able to do with it!
Jul 22 2017
next sibling parent reply Moritz Maxeiner <moritz ucworks.org> writes:
On Saturday, 22 July 2017 at 21:22:00 UTC, Walter Bright wrote:
 Putting the entire set in D (C compiler, C++ compiler, C 
 preprocessor, htod converter, optimizer, code generator) makes 
 the whole thing much more tractable, and who knows what we will 
 be able to do with it!
One thing to watch out for, though, is that if the D frontend starts using features introduced after its conversion to D, we are going to need to explicitly document the bootstrapping path (right now it's still simple enough with `C++ compiler -> D compiler with 2.068.2 frontend (e.g. ldc 0.17.x) -> Latest D compiler`).
Jul 24 2017
parent reply Martin Nowak <code dawg.eu> writes:
On Monday, 24 July 2017 at 22:15:16 UTC, Moritz Maxeiner wrote:
 One thing to watch out for, though, is that if the D frontend 
 starts using features introduced after its conversion to D, we 
 are going to need to explicitly document the bootstrapping path 
 (right now it's still simple enough with `C++ compiler -> D 
 compiler with 2.068.2 frontend (e.g. ldc 0.17.x) -> Latest D 
 compiler`).
We're using the latest previous major release line to build releases, so 2.068.x build 2.069.x, builds 2.070.x, ..., builds 2.075.0. You might get away with skipping versions, but that's not how the releases were built. Bootstrapping the compiler to run on new architectures requires cross-compliation, but it's less of an interest than cross-compiling for a different architecture.
Jul 24 2017
parent Moritz Maxeiner <moritz ucworks.org> writes:
On Monday, 24 July 2017 at 23:25:50 UTC, Martin Nowak wrote:
 On Monday, 24 July 2017 at 22:15:16 UTC, Moritz Maxeiner wrote:
 One thing to watch out for, though, is that if the D frontend 
 starts using features introduced after its conversion to D, we 
 are going to need to explicitly document the bootstrapping 
 path (right now it's still simple enough with `C++ compiler -> 
 D compiler with 2.068.2 frontend (e.g. ldc 0.17.x) -> Latest D 
 compiler`).
We're using the latest previous major release line to build releases, so 2.068.x build 2.069.x, builds 2.070.x, ..., builds 2.075.0.
That's a sensible choice for the official binary distribution.
 You might get away with skipping versions, but that's not how 
 the releases were built.
When you bootstrap (e.g. on any source based Linux distribution such as Gentoo, Funtoo, ...) you want the path to be as short as feasible (even with dmd's fairly short compile times) and how the official binary releases are/were build isn't part of the consideration, because - unlike them - you don't happen to have a D compiler with D frontend version - 1 ready for use. In any case, all that would be required - if the path ever becomes longer - would be an automatically updated file like this: bootstrap-path: --- 2.068.2 --- An autotester can then check before each release if dmd master can still be build by dmd with the version of the last line in that file, and if not, append the last dmd release to it.
Jul 24 2017
prev sibling parent reply Dmitry Olshansky <dmitry.olsh gmail.com> writes:
On Saturday, 22 July 2017 at 21:22:00 UTC, Walter Bright wrote:
 On 7/22/2017 2:04 AM, Martin Nowak It'll be converted anyway. 
 :-)
 Putting the entire set in D (C compiler, C++ compiler, C 
 preprocessor, htod converter, optimizer, code generator) makes 
 the whole thing much more tractable, and who knows what we will 
 be able to do with it!
Does that mean that DMC++ will hit Github? I'm also interested in open-sourced version of snn library, of course.
Jul 24 2017
next sibling parent Brad Roberts via Digitalmars-d-announce writes:
On 7/24/2017 10:35 PM, Dmitry Olshansky via Digitalmars-d-announce wrote:
 On Saturday, 22 July 2017 at 21:22:00 UTC, Walter Bright wrote:
 On 7/22/2017 2:04 AM, Martin Nowak It'll be converted anyway. :-)
 Putting the entire set in D (C compiler, C++ compiler, C 
 preprocessor, htod converter, optimizer, code generator) makes the 
 whole thing much more tractable, and who knows what we will be able 
 to do with it!
Does that mean that DMC++ will hit Github? I'm also interested in open-sourced version of snn library, of course.
It did that a long time ago, but as a private repository. I suspect it won't stay private forever though.
Jul 24 2017
prev sibling parent Walter Bright <newshound2 digitalmars.com> writes:
On 7/24/2017 10:35 PM, Dmitry Olshansky wrote:
 Does that mean that DMC++ will hit Github?
 I'm also interested in open-sourced version of snn library, of course.
Yes to both. I just haven't gotten around to it yet.
Jul 25 2017
prev sibling next sibling parent Walter Bright <newshound2 digitalmars.com> writes:
On 7/19/2017 8:36 AM, Martin Nowak wrote:
 Glad to announce D 2.075.0.
 
 This release comes with various phobos additions, a repackaged
 std.datetime, configurable Fiber stack guard pages (now also on
 Posix), and optional precise GC scanning for the DATA/TLS segment (static
 data) on Windows.
 
 http://dlang.org/download.html
 http://dlang.org/changelog/2.075.0.html
Pretty dazz! Thank you!
Jul 19 2017
prev sibling next sibling parent Joseph Rushton Wakeling <joseph.wakeling webdrake.net> writes:
On Wednesday, 19 July 2017 at 15:36:22 UTC, Martin Nowak wrote:
 Glad to announce D 2.075.0.

 This release comes with various phobos additions, a repackaged
 std.datetime, configurable Fiber stack guard pages (now also on
 Posix), and optional precise GC scanning for the DATA/TLS 
 segment (static
 data) on Windows.

 http://dlang.org/download.html 
 http://dlang.org/changelog/2.075.0.html

 - -Martin
Congratulations Martin and everyone! A snap package for DMD 2.075.0 is now available in the `edge` channel of the snap store: sudo snap install --classic --edge dmd for a fresh install, or sudo snap refresh --classic --edge dmd ... for anyone who already has an earlier version installed. Note that there's a known issue with `rdmd` in this package (which is an issue with `snapd` rather than the package itself). However, please do let me know about any other issues (or successes!).
Jul 19 2017
prev sibling next sibling parent jj <jj aol.com> writes:
wow, how nice - but it is not installed correctly with VS2017. 
While installing, i am told that 64bit will not work.

what a SH.T

you guys should get your act together - just once. it's always a 
real experience to install software and have problems. Nice 
experience!!
Jul 20 2017
prev sibling next sibling parent Andre Pany <andre s-e-a-p.de> writes:
On Wednesday, 19 July 2017 at 15:36:22 UTC, Martin Nowak wrote:
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA512

 [...]
Could you please create a post on reddit? Kind regards André
Jul 20 2017
prev sibling next sibling parent reply Mike Parker <aldacron gmail.com> writes:
On Wednesday, 19 July 2017 at 15:36:22 UTC, Martin Nowak wrote:
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA512

 Glad to announce D 2.075.0.
I've published a post on the blog to announce the release there. For future releases, I'll be coordinating with Martin so that I can time the blog posts to go out on the same day as the forum announcements. This will give us something more redditable than the forum announcement or the changelog. Blog: https://dlang.org/blog/2017/07/24/new-d-compiler-release-dmd-2-075-0/ Reddit: https://www.reddit.com/r/programming/comments/6p89zj/new_d_compiler_release_dmd_20750/
Jul 24 2017
next sibling parent reply Joakim <dlang joakim.fea.st> writes:
On Monday, 24 July 2017 at 13:18:01 UTC, Mike Parker wrote:
 On Wednesday, 19 July 2017 at 15:36:22 UTC, Martin Nowak wrote:
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA512

 Glad to announce D 2.075.0.
I've published a post on the blog to announce the release there. For future releases, I'll be coordinating with Martin so that I can time the blog posts to go out on the same day as the forum announcements. This will give us something more redditable than the forum announcement or the changelog. Blog: https://dlang.org/blog/2017/07/24/new-d-compiler-release-dmd-2-075-0/ Reddit: https://www.reddit.com/r/programming/comments/6p89zj/new_d_compiler_release_dmd_20750/
typo: "module structure is avaialble"
Jul 24 2017
parent Mike Parker <aldacron gmail.com> writes:
On Monday, 24 July 2017 at 17:18:53 UTC, Joakim wrote:

 typo: "module structure is avaialble"
Fixed. Thanks.
Jul 24 2017
prev sibling parent Joakim <dlang joakim.fea.st> writes:
On Monday, 24 July 2017 at 13:18:01 UTC, Mike Parker wrote:
 On Wednesday, 19 July 2017 at 15:36:22 UTC, Martin Nowak wrote:
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA512

 Glad to announce D 2.075.0.
I've published a post on the blog to announce the release there. For future releases, I'll be coordinating with Martin so that I can time the blog posts to go out on the same day as the forum announcements. This will give us something more redditable than the forum announcement or the changelog. Blog: https://dlang.org/blog/2017/07/24/new-d-compiler-release-dmd-2-075-0/ Reddit: https://www.reddit.com/r/programming/comments/6p89zj/new_d_compiler_release_dmd_20750/
Looks like the blog post approach worked, a new all-time high in downloads, and still heading up: :D http://erdani.com/d/downloads.daily.png
Jul 30 2017
prev sibling parent Moritz Maxeiner <moritz ucworks.org> writes:
On Wednesday, 19 July 2017 at 15:36:22 UTC, Martin Nowak wrote:
 -----BEGIN PGP SIGNED MESSAGE-----
 Hash: SHA512

 Glad to announce D 2.075.0.

 This release comes with various phobos additions, a repackaged
 std.datetime, configurable Fiber stack guard pages (now also on
 Posix), and optional precise GC scanning for the DATA/TLS 
 segment (static
 data) on Windows.

 http://dlang.org/download.html 
 http://dlang.org/changelog/2.075.0.html
Sorry for replying so late, but the changelog for 2.075.0[1] incorrectly list issue 14246[2] as solved, when the fix was, in fact, reverted [3]. [1] http://dlang.org/changelog/2.075.0.html#bugfix-list [2] https://issues.dlang.org/show_bug.cgi?id=14246 [3] https://github.com/dlang/dmd/pull/6913
Aug 08 2017