digitalmars.D - dmd 2.068, 2.069, 2.0xx Evil Plan going forward
- Walter Bright (17/17) Jul 19 2015 2.068 - resolve remaining regressions and release
- H. S. Teoh via Digitalmars-d (17/36) Jul 19 2015 Are there any remaining naming issues (introduced in this release, that
- Walter Bright (9/20) Jul 19 2015 It's the basis of static if - does this piece of code compile. It's been...
- Kagamin (3/7) Jul 20 2015 Redistribution is explicitly disallowed though (i.e. one can't
- Joseph Rushton Wakeling (6/8) Jul 20 2015 Technically, I believe that by uploading any project to GitHub,
- Walter Bright (3/9) Jul 20 2015 Yeah, well, I've never denied anyone permission, and the only point of t...
- Rikki Cattermole (16/34) Jul 19 2015 Or instead, move to SEMVER? Same effect.
- Andrea Fontana (6/18) Jul 20 2015 Semver ftw! About D3: if we have to do a switch, it's the right
- Rikki Cattermole (3/23) Jul 20 2015 In a way we are in a transition period. Not a big language change, but a...
- ZombineDev (2/20) Jul 19 2015 + 1000000000
- ZombineDev (11/34) Jul 19 2015 I believe that migrating the the development of the compiler from
- Ilya Yaroshenko (4/7) Jul 19 2015 Great!
- Jacob Carlborg (4/22) Jul 19 2015 I like it. Please continue with these kinds of posts.
- Adrian Matoga (3/8) Jul 20 2015 This may also be the best moment to start keeping frontend
- wobbles (5/14) Jul 20 2015 So much this.
- Iain Buclaw via Digitalmars-d (12/30) Jul 20 2015 I just have one request. We need to designate a supported version of
- Walter Bright (2/11) Jul 20 2015 We can do that for 2.068.
- Martin Nowak (4/8) Jul 20 2015 I don't fully understand what you're asking for.
- Iain Buclaw via Digitalmars-d (24/29) Jul 20 2015 the compiler (2.069?) as the base to which we convert and maintain
- Walter Bright (3/7) Jul 20 2015 I agree it makes sense to stick with 2.068 to compile ddmd until gdc and...
- Martin Nowak (9/12) Jul 20 2015 Sticking to 2.068 will help for some time but is not a long-term
- Iain Buclaw via Digitalmars-d (9/20) Jul 21 2015 Phobos may not be a problem depending on what ends up being decided -
- Walter Bright (3/13) Jul 21 2015 I don't see a reason to maintain 2.068 beyond the time that LDC and GDC ...
- Dicebot (1/1) Jul 20 2015 Good intentions. Totally insane versioning scheme.
- sigod (3/9) Jul 20 2015 But hate version jumps.
- Gary Willoughby (5/6) Jul 20 2015 2.1 Sounds good!
- sigod (3/9) Jul 20 2015 +1
- Meta (4/11) Jul 20 2015 That'd probably cause confusion, people wondering if there'd been
- sigod (3/15) Jul 20 2015 2.69.0 for DDMD release, then? Or does 3rd digit means PATCH
- Meta (4/6) Jul 20 2015 I don't really know how the current versioning system works. I
- sigod (3/9) Jul 20 2015 Yes, you're right. I forgot about current version - 2.067.1
- Jack Stouffer (4/14) Jul 20 2015 It's missing the most important piece of semver, the fact that
- Brad Anderson (2/6) Jul 20 2015 D2 is the product name. We're on major version 67 of D2. :P
- Jacob Carlborg (6/9) Jul 20 2015 Since we're about to release 2.068.0, I would say D68 ;). I'm actually
- Whatever (11/12) Jul 20 2015 That version was already released in 2007 [1]. Version numbers
- Iain Buclaw via Digitalmars-d (9/15) Jul 20 2015 You might be able to get away with 2.001 == 2.0.01 and 2.1 == 2.1.00. :o...
- Walter Bright (3/8) Jul 20 2015 I'm sad that this discussion on Evil Plans has so quickly turned into a ...
- Brian Rogoff (7/9) Jul 20 2015 Is there a timeline for this Evil Plan? What about bug fixes
- Walter Bright (7/11) Jul 20 2015 That's right. Trying to fix bugs while translating doesn't work very wel...
- Martin Nowak (4/10) Jul 20 2015 Please target the stable branch with regression fixes.
- Gary Willoughby (7/9) Jul 20 2015 Hardly bikeshedding. The comments are merely pointing out that as
- Mathias Lang via Digitalmars-d (18/27) Jul 20 2015 We do follow a versioning style: '2.MAJOR.PATCH' (with major being 3
- HaraldZealot (2/26) Jul 21 2015 +100
- Dicebot (3/15) Jul 20 2015 The fact that you consider this bikeshedding is quite a highlight
- Temtaime (6/6) Jul 20 2015 DMD is a problem for all the D ecosystem.
- ZombineDev (14/20) Jul 20 2015 By your logic we should also drop support for Windows, since
- rsw0x (7/29) Jul 20 2015 because versions are released with GDC and LDC lagging 2-3
- Jonathan M Davis (7/13) Jul 20 2015 Unifying the frontend will go a long way towards fixing this
- Iain Buclaw via Digitalmars-d (26/32) Jul 20 2015 behind, when DMD is unusable for production quality codegen.
- Jonathan M Davis (24/67) Jul 20 2015 Sorry. I was not trying to take credit away from you or anyone
- Suliman (3/3) Jul 20 2015 Maybe it's really better to jump ddmd to 2.1 version and stay
- Johannes Pfau (11/58) Jul 21 2015 That also summarizes my biggest doubts regarding frontend unification:
- Martin Nowak (16/20) Jul 23 2015 I understand that it's sometimes frustrating to spend hours convincing
- Andrei Alexandrescu (4/16) Jul 20 2015 I, too, think we devote too much attention to the picayune. There's a
- Jonathan M Davis (7/10) Jul 20 2015 Agreed. Maybe we should change how we do versioning, maybe not.
- Dicebot (9/12) Jul 20 2015 And I see this as typical "two steps forward, one step back" case
- Walter Bright (3/6) Jul 20 2015 Yah, it was a throwaway comment I thought of while I was typing in the p...
- Nick Sabalausky (9/12) Jul 21 2015 We worry too much about that. I don't mind bikeshedding so much as
- Jacob Carlborg (4/5) Jul 20 2015 This should absolutely be our main focus, to finish the D port.
- Jonathan M Davis (24/42) Jul 20 2015 It'll be fantastic to get a lot of that done. The CTFE
- Tofu Ninja (28/46) Jul 20 2015 YAY, I have been wanting to learn how the compiler works for a
- Walter Bright (6/24) Jul 20 2015 Yes.
- Martin Nowak (4/9) Jul 20 2015 Releasing ddmd with dmd's current backend results in a ~20-30%
- Walter Bright (2/4) Jul 20 2015 First we have to make sure we know why it is slower.
- Martin Nowak (4/5) Jul 20 2015 I got this number from Daniel, he didn't found a reason.
- Walter Bright (3/6) Jul 21 2015 Consider that the Win32 version of dmd is built with with the same backe...
- Johannes Pfau (5/13) Jul 21 2015 "On Win32 the performance difference is much smaller, because it's
- Iain Buclaw via Digitalmars-d (3/15) Jul 21 2015 You beat me to it....
- Martin Nowak (4/7) Jul 21 2015 Talking about compiler speed, we can get an easy 10% speedup
- Walter Bright (2/4) Jul 21 2015 The PR needs to be updated.
- ketmar (5/13) Jul 23 2015 DMC version of DMD is noticably slower on building phobos than MinGW=20
- Martin Nowak (11/23) Jul 20 2015 Great for thing with good test coverage. Will hopefully attract
- Martin Nowak (11/13) Jul 22 2015 - We already have a working C++ backend and can interface that
- ketmar (7/9) Jul 23 2015 the one reason is that it's small and doesn't require 3rd-party librarie...
- Martin Nowak (7/8) Jul 20 2015 This sounds like workload for the rest of the year.
- Jonathan M Davis (11/19) Jul 20 2015 What's the hold up on those anyway? I thought that Kenji had a PR
- Martin Nowak (9/19) Jul 20 2015 We have a PR from Kenji, that fixes 313+314.
- Jonathan M Davis (7/10) Jul 20 2015 I thought that one of them did. Clearly, I misremembered.
- ketmar (12/17) Jul 23 2015 at least for phobos, it breaks almost nothing. and where it does some=20
- Walter Bright (7/14) Jul 20 2015 What is high priority is certainly debatable, but what is most clear to ...
- Martin Nowak (6/12) Jul 20 2015 It makes sense to spent quite some time on the D transition b/c
- Martin Nowak (3/7) Jul 20 2015 I still have a lot WIP for the GC, RefCounted, and Unique.
- Walter Bright (2/4) Jul 20 2015 Right, the library should not be affected.
2.068 - resolve remaining regressions and release 2.069 - translate to D. No new features, no refactoring. Only regression fixes and what's already in HEAD. This should give us a solid baseline. It also means that open PRs that address other issues will not be pulled for 2.069. Perhaps we should name this 2.100, to signify such a milestone. 2.101+ - 1. Take advantage of D features to improve quality. 2. Go to full lazy semantic analysis of imports, rather than the current "analyze them all" 3. Rethink what "speculative instantiation" of templates means so we can have a coherent process of compiling them. 4. Redo CTFE interpreter so it only rarely needs to allocate memory. This was already done for constant folding, but now it's time for the rest of the interpreter. 5. Get rid of reliance on the global error count. This has been mostly done, it just hast to be finished. 6. Convert the back end to D as well.
Jul 19 2015
On Sun, Jul 19, 2015 at 09:02:03PM -0700, Walter Bright via Digitalmars-d wrote:2.068 - resolve remaining regressions and releaseAre there any remaining naming issues (introduced in this release, that is, not stuff that's already out there -- let's not touch those anymore) that people are dying to fix? If there are, we should get them in now before the names become set in stone.2.069 - translate to D. No new features, no refactoring. Only regression fixes and what's already in HEAD. This should give us a solid baseline. It also means that open PRs that address other issues will not be pulled for 2.069.Sounds like a good idea, give ourselves a whole release to stabilise self-hosting D, without anything else to distract our efforts.Perhaps we should name this 2.100, to signify such a milestone. 2.101+ - 1. Take advantage of D features to improve quality. 2. Go to full lazy semantic analysis of imports, rather than the current "analyze them all" 3. Rethink what "speculative instantiation" of templates means so we can have a coherent process of compiling them.For the sake of those of us who aren't so familiar with dmd internals: what is speculative instantiation and why does matter so much?4. Redo CTFE interpreter so it only rarely needs to allocate memory. This was already done for constant folding, but now it's time for the rest of the interpreter.Yes, please! This would significantly widen the practical usage of D compile-time features in real-world projects.5. Get rid of reliance on the global error count. This has been mostly done, it just hast to be finished.Does this involve cleaning up the handling of error-gagging too?6. Convert the back end to D as well.Will a D backend still be under the same license encumbrances as the current one? T -- Why are you blatanly misspelling "blatant"? -- Branden Robinson
Jul 19 2015
On 7/19/2015 9:15 PM, H. S. Teoh via Digitalmars-d wrote:On Sun, Jul 19, 2015 at 09:02:03PM -0700, Walter Bright via Digitalmars-d wrote:It's the basis of static if - does this piece of code compile. It's been a rich source of bugs because if the compilation fails, it can leave the state of the compiler in an indeterminate state.3. Rethink what "speculative instantiation" of templates means so we can have a coherent process of compiling them.For the sake of those of us who aren't so familiar with dmd internals: what is speculative instantiation and why does matter so much?Yes.5. Get rid of reliance on the global error count. This has been mostly done, it just hast to be finished.Does this involve cleaning up the handling of error-gagging too?Yes. Mere translation would not change the license. But I view the backend license encumbrance as more of a theoretical issue than a practical one - the license is extremely permissive. There isn't that much more to it than agreeing to not sue Symantec.6. Convert the back end to D as well.Will a D backend still be under the same license encumbrances as the current one?
Jul 19 2015
On Monday, 20 July 2015 at 04:35:30 UTC, Walter Bright wrote:But I view the backend license encumbrance as more of a theoretical issue than a practical one - the license is extremely permissive. There isn't that much more to it than agreeing to not sue Symantec.Redistribution is explicitly disallowed though (i.e. one can't fork it on github without individual permission).
Jul 20 2015
On Monday, 20 July 2015 at 08:40:24 UTC, Kagamin wrote:Redistribution is explicitly disallowed though (i.e. one can't fork it on github without individual permission).Technically, I believe that by uploading any project to GitHub, one has granted permission for it to be forked _on GitHub_. (This is explicitly stated in the GitHub Terms of Service.) That doesn't automatically grant any other permissions of re-use or redistribution, though.
Jul 20 2015
On 7/20/2015 1:40 AM, Kagamin wrote:On Monday, 20 July 2015 at 04:35:30 UTC, Walter Bright wrote:Yeah, well, I've never denied anyone permission, and the only point of that is they have to agree not to sue Symantec.But I view the backend license encumbrance as more of a theoretical issue than a practical one - the license is extremely permissive. There isn't that much more to it than agreeing to not sue Symantec.Redistribution is explicitly disallowed though (i.e. one can't fork it on github without individual permission).
Jul 20 2015
On Mon, 20 Jul 2015 02:11:49 -0700, Walter Bright wrote:On 7/20/2015 1:40 AM, Kagamin wrote:but still, the backend license is what blocks including DMD in some GNU/ Linux distros repositories, 'cause "The Software is copyrighted and comes=20 with a single user license, and may not be redistributed." this effectively blocks all non-source-based distros from redistributing=20 DMD as distro package (both in compiled and in source forms).=On Monday, 20 July 2015 at 04:35:30 UTC, Walter Bright wrote:=20 Yeah, well, I've never denied anyone permission, and the only point of that is they have to agree not to sue Symantec.But I view the backend license encumbrance as more of a theoretical issue than a practical one - the license is extremely permissive. There isn't that much more to it than agreeing to not sue Symantec.Redistribution is explicitly disallowed though (i.e. one can't fork it on github without individual permission).
Jul 23 2015
i.e. blocks any distros that doesn't "git clone" as the part of package=20 installing process.=
Jul 23 2015
On 20/07/2015 4:02 p.m., Walter Bright wrote:2.068 - resolve remaining regressions and release 2.069 - translate to D. No new features, no refactoring. Only regression fixes and what's already in HEAD. This should give us a solid baseline. It also means that open PRs that address other issues will not be pulled for 2.069. Perhaps we should name this 2.100, to signify such a milestone.Or instead, move to SEMVER? Same effect. Although, now might be a good time to think about D3. After all, we are having a massive change in the ecosystem. It wouldn't be that strange to think of it as more of a push for polishing.2.101+ - 1. Take advantage of D features to improve quality.As a library perhaps?2. Go to full lazy semantic analysis of imports, rather than the current "analyze them all"Ooo3. Rethink what "speculative instantiation" of templates means so we can have a coherent process of compiling them.Can the plan include stripping out unneeded ones? And even inlining some?4. Redo CTFE interpreter so it only rarely needs to allocate memory. This was already done for constant folding, but now it's time for the rest of the interpreter.Less memory = win! E.g. can we compile + run phobos test suite in < 1gb memory? Because it's a real pain finding single board computers that support more then 1gb.5. Get rid of reliance on the global error count. This has been mostly done, it just hast to be finished. 6. Convert the back end to D as well.Ooo, yes please. Perhaps even as a library? I would love to see dmd literally along with it's backends as dub packages. That would be *high pitched* awesome.
Jul 19 2015
On Monday, 20 July 2015 at 04:45:21 UTC, Rikki Cattermole wrote:Semver ftw! About D3: if we have to do a switch, it's the right time to remove old things left for retro-compatibility and rename/move things (and fix property, for example).Perhaps we should name this 2.100, to signify such a milestone.Or instead, move to SEMVER? Same effect. Although, now might be a good time to think about D3. After all, we are having a massive change in the ecosystem. It wouldn't be that strange to think of it as more of a push for polishing.+100 for library2.101+ - 1. Take advantage of D features to improve quality.As a library perhaps?+1006. Convert the back end to D as well.Ooo, yes please. Perhaps even as a library?
Jul 20 2015
On 20/07/2015 7:12 p.m., Andrea Fontana wrote:On Monday, 20 July 2015 at 04:45:21 UTC, Rikki Cattermole wrote:In a way we are in a transition period. Not a big language change, but a ecosystem/organization one.Semver ftw! About D3: if we have to do a switch, it's the right time to remove old things left for retro-compatibility and rename/move things (and fix property, for example).Perhaps we should name this 2.100, to signify such a milestone.Or instead, move to SEMVER? Same effect. Although, now might be a good time to think about D3. After all, we are having a massive change in the ecosystem. It wouldn't be that strange to think of it as more of a push for polishing.+100 for library2.101+ - 1. Take advantage of D features to improve quality.As a library perhaps?+1006. Convert the back end to D as well.Ooo, yes please. Perhaps even as a library?
Jul 20 2015
On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:2.068 - resolve remaining regressions and release 2.069 - translate to D. No new features, no refactoring. Only regression fixes and what's already in HEAD. This should give us a solid baseline. It also means that open PRs that address other issues will not be pulled for 2.069. Perhaps we should name this 2.100, to signify such a milestone. 2.101+ - 1. Take advantage of D features to improve quality. 2. Go to full lazy semantic analysis of imports, rather than the current "analyze them all" 3. Rethink what "speculative instantiation" of templates means so we can have a coherent process of compiling them. 4. Redo CTFE interpreter so it only rarely needs to allocate memory. This was already done for constant folding, but now it's time for the rest of the interpreter. 5. Get rid of reliance on the global error count. This has been mostly done, it just hast to be finished. 6. Convert the back end to D as well.+ 1000000000
Jul 19 2015
On Monday, 20 July 2015 at 05:05:52 UTC, ZombineDev wrote:On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:I believe that migrating the the development of the compiler from C++ to D will have extremely positive effect to to the whole language and ecosystem. We should make this our number one priority! WalterBright and the other core developers: Can you make a TODO list of what needs to be done to make this happen? Is this list in bugzilla complete? https://issues.dlang.org/buglist.cgi?bug_status=__open__&content=ddmd&list_id=202211&order=relevance%20desc&query_format=specific (I just searched for DDMD)2.068 - resolve remaining regressions and release 2.069 - translate to D. No new features, no refactoring. Only regression fixes and what's already in HEAD. This should give us a solid baseline. It also means that open PRs that address other issues will not be pulled for 2.069. Perhaps we should name this 2.100, to signify such a milestone. 2.101+ - 1. Take advantage of D features to improve quality. 2. Go to full lazy semantic analysis of imports, rather than the current "analyze them all" 3. Rethink what "speculative instantiation" of templates means so we can have a coherent process of compiling them. 4. Redo CTFE interpreter so it only rarely needs to allocate memory. This was already done for constant folding, but now it's time for the rest of the interpreter. 5. Get rid of reliance on the global error count. This has been mostly done, it just hast to be finished. 6. Convert the back end to D as well.+ 1000000000
Jul 19 2015
On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:4. Redo CTFE interpreter so it only rarely needs to allocate memory. This was already done for constant folding, but now it's time for the rest of the interpreter.Great! ... and CTFE-able unions, thought. They are required for CTFE-able math.
Jul 19 2015
On 2015-07-20 06:02, Walter Bright wrote:2.068 - resolve remaining regressions and release 2.069 - translate to D. No new features, no refactoring. Only regression fixes and what's already in HEAD. This should give us a solid baseline. It also means that open PRs that address other issues will not be pulled for 2.069. Perhaps we should name this 2.100, to signify such a milestone. 2.101+ - 1. Take advantage of D features to improve quality. 2. Go to full lazy semantic analysis of imports, rather than the current "analyze them all" 3. Rethink what "speculative instantiation" of templates means so we can have a coherent process of compiling them. 4. Redo CTFE interpreter so it only rarely needs to allocate memory. This was already done for constant folding, but now it's time for the rest of the interpreter. 5. Get rid of reliance on the global error count. This has been mostly done, it just hast to be finished. 6. Convert the back end to D as well.I like it. Please continue with these kinds of posts. -- /Jacob Carlborg
Jul 19 2015
On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:2.069 - translate to D. No new features, no refactoring. Only regression fixes and what's already in HEAD. This should give us a solid baseline. It also means that open PRs that address other issues will not be pulled for 2.069. Perhaps we should name this 2.100, to signify such a milestone.This may also be the best moment to start keeping frontend versions among DMD/GDC/LDC synchronized, forever.
Jul 20 2015
On Monday, 20 July 2015 at 07:15:16 UTC, Adrian Matoga wrote:On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:So much this. Theres always so many nice new features in the newest dmd (and phobos) that you want to use it, but cant as a result of GDC/LDC being slightly outdated.2.069 - translate to D. No new features, no refactoring. Only regression fixes and what's already in HEAD. This should give us a solid baseline. It also means that open PRs that address other issues will not be pulled for 2.069. Perhaps we should name this 2.100, to signify such a milestone.This may also be the best moment to start keeping frontend versions among DMD/GDC/LDC synchronized, forever.
Jul 20 2015
On 20 July 2015 at 06:02, Walter Bright via Digitalmars-d <digitalmars-d puremagic.com> wrote:2.068 - resolve remaining regressions and release 2.069 - translate to D. No new features, no refactoring. Only regression fixes and what's already in HEAD. This should give us a solid baseline. It also means that open PRs that address other issues will not be pulled for 2.069. Perhaps we should name this 2.100, to signify such a milestone. 2.101+ - 1. Take advantage of D features to improve quality. 2. Go to full lazy semantic analysis of imports, rather than the current "analyze them all" 3. Rethink what "speculative instantiation" of templates means so we can have a coherent process of compiling them. 4. Redo CTFE interpreter so it only rarely needs to allocate memory. This was already done for constant folding, but now it's time for the rest of the interpreter. 5. Get rid of reliance on the global error count. This has been mostly done, it just hast to be finished. 6. Convert the back end to D as well.I just have one request. We need to designate a supported version of the compiler (2.069?) as the base to which we convert and maintain compatibility for, and do not introduce any new features after that point. Something as vague as "the last three versions" does *not* cut it. This is to give maximum time for all ecosystems to adjust, and encourage that we have a "stable" snapshot of D2 before the conversion that will receive maintenance fixes long after mainline development has switched. Iain
Jul 20 2015
On 7/20/2015 2:09 AM, Iain Buclaw via Digitalmars-d wrote:I just have one request. We need to designate a supported version of the compiler (2.069?) as the base to which we convert and maintain compatibility for, and do not introduce any new features after that point. Something as vague as "the last three versions" does *not* cut it. This is to give maximum time for all ecosystems to adjust, and encourage that we have a "stable" snapshot of D2 before the conversion that will receive maintenance fixes long after mainline development has switched.We can do that for 2.068.
Jul 20 2015
On Monday, 20 July 2015 at 09:10:13 UTC, Iain Buclaw wrote:I just have one request. We need to designate a supported version of the compiler (2.069?) as the base to which we convert and maintain compatibility for, and do not introduce any new features after that point.I don't fully understand what you're asking for. Can you tell us what problem you're trying to address instead of which solution to apply.
Jul 20 2015
On 21 Jul 2015 00:00, "Martin Nowak via Digitalmars-d" < digitalmars-d puremagic.com> wrote:On Monday, 20 July 2015 at 09:10:13 UTC, Iain Buclaw wrote:the compiler (2.069?) as the base to which we convert and maintain compatibility for, and do not introduce any new features after that point.I just have one request. We need to designate a supported version ofI don't fully understand what you're asking for. Can you tell us what problem you're trying to address instead of whichsolution to apply. 1. If you want ddmd to be compilable by both gdc and ldc then you can't introduce any new features to the ddmd codebase post conversion. The work you've left me is an added burden that was ultimately welcome, but unasked for. So expect things to halt on my side for some time as I'm going through a partial rewrite. 2. Simplifies bootstrap for porting to self-hosted D. Though the gdc compiler is available in Debian on all supported platforms - some 16 in total - the library is still only being built on x86 and ARM, because of lack of testing or build failures. Having the last C++ frontend being able to build the latest D frontend allows the transition for these targets that need their runtime library ported and tested easier. The reality still is that C++ has the upper hand for being more portable, but there should be no reason why we can't run everywhere C++ runs granted there is an OS. 3. Force stability language through codebase. Maybe ddmd will be a bad example as it's pretty much written in the style of a Poor-mans-C++-in-D. But not breaking language compatibility between 2.068 and LATEST should help reduce regressions between versions. Most people I've talked to agree. Iain.
Jul 20 2015
On 7/20/2015 8:47 PM, Iain Buclaw via Digitalmars-d wrote:3. Force stability language through codebase. Maybe ddmd will be a bad example as it's pretty much written in the style of a Poor-mans-C++-in-D. But not breaking language compatibility between 2.068 and LATEST should help reduce regressions between versions. Most people I've talked to agree.I agree it makes sense to stick with 2.068 to compile ddmd until gdc and ldc can switch to ddmd.
Jul 20 2015
On Tuesday, 21 July 2015 at 03:47:11 UTC, Iain Buclaw wrote:1. If you want ddmd to be compilable by both gdc and ldc then you can't introduce any new features to the ddmd codebase post conversion.Sticking to 2.068 will help for some time but is not a long-term solution. Particularly when considering some of the bigger D issues left to resolve, we'll likely have to deal with some incompatibilities/deprecations. Also consider that we might use the stable phobos parts. I made a Trello card, let's discuss the details when we're actually working on this. https://trello.com/c/4NtxWDtK/30-compatibility-implications-for-self-hosting-d-compiler
Jul 20 2015
On 21 July 2015 at 08:19, Martin Nowak via Digitalmars-d <digitalmars-d puremagic.com> wrote:On Tuesday, 21 July 2015 at 03:47:11 UTC, Iain Buclaw wrote:Phobos may not be a problem depending on what ends up being decided - there have been both arguments for and against Phobos being used in ddmd. I certainly don't want to have bugs get in the way, so it is in my interest to have some sort of backport window open for 2.068 as ddmd transforms out of it's current design. Iain1. If you want ddmd to be compilable by both gdc and ldc then you can't introduce any new features to the ddmd codebase post conversion.Sticking to 2.068 will help for some time but is not a long-term solution. Particularly when considering some of the bigger D issues left to resolve, we'll likely have to deal with some incompatibilities/deprecations. Also consider that we might use the stable phobos parts. I made a Trello card, let's discuss the details when we're actually working on this. https://trello.com/c/4NtxWDtK/30-compatibility-implications-for-self-hosting-d-compiler
Jul 21 2015
On 7/20/2015 11:19 PM, Martin Nowak wrote:On Tuesday, 21 July 2015 at 03:47:11 UTC, Iain Buclaw wrote:I don't see a reason to maintain 2.068 beyond the time that LDC and GDC migrate to ddmd.1. If you want ddmd to be compilable by both gdc and ldc then you can't introduce any new features to the ddmd codebase post conversion.Sticking to 2.068 will help for some time but is not a long-term solution. Particularly when considering some of the bigger D issues left to resolve, we'll likely have to deal with some incompatibilities/deprecations. Also consider that we might use the stable phobos parts. I made a Trello card, let's discuss the details when we're actually working on this. https://trello.com/c/4NtxWDtK/30-compatibility-implications-for-self-hosting-d-compiler
Jul 21 2015
Good intentions. Totally insane versioning scheme.
Jul 20 2015
On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:2.068 - resolve remaining regressions and release 2.069 - translate to D. No new features, no refactoring. Only regression fixes and what's already in HEAD. This should give us a solid baseline. It also means that open PRs that address other issues will not be pulled for 2.069.I like this idea.Perhaps we should name this 2.100, to signify such a milestone.But hate version jumps.
Jul 20 2015
On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:Perhaps we should name this 2.100, to signify such a milestone.2.1 Sounds good! But going forward can we stick to a sane versioning system like what dub uses: http://semver.org/
Jul 20 2015
On Monday, 20 July 2015 at 11:45:31 UTC, Gary Willoughby wrote:On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:2.1.0 sounds even better. 2.100 - not.Perhaps we should name this 2.100, to signify such a milestone.2.1 Sounds good!But going forward can we stick to a sane versioning system like what dub uses: http://semver.org/+1
Jul 20 2015
On Monday, 20 July 2015 at 13:16:46 UTC, sigod wrote:On Monday, 20 July 2015 at 11:45:31 UTC, Gary Willoughby wrote:That'd probably cause confusion, people wondering if there'd been a mistake and an old version was put in the release. 2.7.0 would probably be better. Otherwise, +1 for semver.On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:2.1.0 sounds even better. 2.100 - not.Perhaps we should name this 2.100, to signify such a milestone.2.1 Sounds good!
Jul 20 2015
On Monday, 20 July 2015 at 13:52:16 UTC, Meta wrote:On Monday, 20 July 2015 at 13:16:46 UTC, sigod wrote:2.69.0 for DDMD release, then? Or does 3rd digit means PATCH version in current versioning system?On Monday, 20 July 2015 at 11:45:31 UTC, Gary Willoughby wrote:That'd probably cause confusion, people wondering if there'd been a mistake and an old version was put in the release. 2.7.0 would probably be better. Otherwise, +1 for semver.On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:2.1.0 sounds even better. 2.100 - not.Perhaps we should name this 2.100, to signify such a milestone.2.1 Sounds good!
Jul 20 2015
On Monday, 20 July 2015 at 13:58:02 UTC, sigod wrote:2.69.0 for DDMD release, then? Or does 3rd digit means PATCH version in current versioning system?I don't really know how the current versioning system works. I think it just increments by 1 every release, and patches get .1, etc. added on.
Jul 20 2015
On Monday, 20 July 2015 at 14:07:12 UTC, Meta wrote:On Monday, 20 July 2015 at 13:58:02 UTC, sigod wrote:Yes, you're right. I forgot about current version - 2.067.1 It seems not so different from semver.2.69.0 for DDMD release, then? Or does 3rd digit means PATCH version in current versioning system?I don't really know how the current versioning system works. I think it just increments by 1 every release, and patches get .1, etc. added on.
Jul 20 2015
On Monday, 20 July 2015 at 14:31:38 UTC, sigod wrote:On Monday, 20 July 2015 at 14:07:12 UTC, Meta wrote:It's missing the most important piece of semver, the fact that the major version number denotes backwards incompatible changes. If D were using semver, we would be somewhere between D10 and D15.On Monday, 20 July 2015 at 13:58:02 UTC, sigod wrote:Yes, you're right. I forgot about current version - 2.067.1 It seems not so different from semver.2.69.0 for DDMD release, then? Or does 3rd digit means PATCH version in current versioning system?I don't really know how the current versioning system works. I think it just increments by 1 every release, and patches get .1, etc. added on.
Jul 20 2015
On Monday, 20 July 2015 at 16:32:08 UTC, Jack Stouffer wrote:It's missing the most important piece of semver, the fact that the major version number denotes backwards incompatible changes. If D were using semver, we would be somewhere between D10 and D15.D2 is the product name. We're on major version 67 of D2. :P
Jul 20 2015
On 2015-07-20 18:32, Jack Stouffer wrote:It's missing the most important piece of semver, the fact that the major version number denotes backwards incompatible changes. If D were using semver, we would be somewhere between D10 and D15.Since we're about to release 2.068.0, I would say D68 ;). I'm actually quite serious. Every single release since at least 2.050 has broken at least one of my projects. -- /Jacob Carlborg
Jul 20 2015
On Monday, 20 July 2015 at 11:45:31 UTC, Gary Willoughby wrote:2.1 Sounds good!That version was already released in 2007 [1]. Version numbers are not floats, they are period separated lists of integers. So `assert(2.1 == 2.01 && 2.01 == 2.001);`. The leading zero is actually forbidden in several important places (such as Linux package version numbers), and is one of the more head-scratching stylistic choices in D. Bumping to 2.100 will appease those who insist on a three-digit second component for reasons I will never understand, and make it so that D versions can actually be uniformly represented everywhere they show up. [1]: http://dlang.org/changelog.html#new2_001
Jul 20 2015
On 20 July 2015 at 19:10, Whatever via Digitalmars-d <digitalmars-d puremagic.com> wrote:On Monday, 20 July 2015 at 11:45:31 UTC, Gary Willoughby wrote:You might be able to get away with 2.001 == 2.0.01 and 2.1 == 2.1.00. :o) On a serious note though, the versioning could be better, and I think the current suggested version bump from Walter is a missed opportunity to set things right. To quote anther project leader though: "Let’s face it - what’s the point of being in charge if you can’t pick the bike shed color without holding a referendum on it?" Iain2.1 Sounds good!That version was already released in 2007 [1]. Version numbers are not floats, they are period separated lists of integers. So `assert(2.1 == 2.01 && 2.01 == 2.001);`.
Jul 20 2015
On 7/20/2015 11:06 AM, Iain Buclaw via Digitalmars-d wrote:On a serious note though, the versioning could be better, and I think the current suggested version bump from Walter is a missed opportunity to set things right. To quote anther project leader though: "Let’s face it - what’s the point of being in charge if you can’t pick the bike shed color without holding a referendum on it?"I'm sad that this discussion on Evil Plans has so quickly turned into a deluge of posts bikeshedding a version number.
Jul 20 2015
On Monday, 20 July 2015 at 19:30:36 UTC, Walter Bright wrote:I'm sad that this discussion on Evil Plans has so quickly turned into a deluge of posts bikeshedding a version number.Is there a timeline for this Evil Plan? What about bug fixes during the 2.068-2.069 period; are these deprioritized in favor of the translation? It's pretty exciting! I hope that after the compiler is all D-ified, there'll be some work on building DMD from source so that it becomes a much simpler process.
Jul 20 2015
On 7/20/2015 12:52 PM, Brian Rogoff wrote:Is there a timeline for this Evil Plan?Not really, other than ASAP.What about bug fixes during the 2.068-2.069 period; are these deprioritized in favor of the translation?That's right. Trying to fix bugs while translating doesn't work very well. The idea is to get a 2.068 workalike to use as a baseline. Regressions can, of course, still be pushed to the 2.068 line. That said, one can still post PR's for fixes. No reason to stop doing that.It's pretty exciting!Me too!
Jul 20 2015
On Monday, 20 July 2015 at 23:01:26 UTC, Walter Bright wrote:That's right. Trying to fix bugs while translating doesn't work very well. The idea is to get a 2.068 workalike to use as a baseline. Regressions can, of course, still be pushed to the 2.068 line. That said, one can still post PR's for fixes. No reason to stop doing that.Please target the stable branch with regression fixes. We might create a long term 2.068 branch before using stable for 2.069.
Jul 20 2015
On Monday, 20 July 2015 at 19:30:36 UTC, Walter Bright wrote:I'm sad that this discussion on Evil Plans has so quickly turned into a deluge of posts bikeshedding a version number.Hardly bikeshedding. The comments are merely pointing out that as it stands D doesn't follow any particular versioning style, making each release hard to understand in the big picture. No other language has these problems and usually use well documented, easily understandable versioning. a la http://semver.org
Jul 20 2015
2015-07-20 22:28 GMT+02:00 Gary Willoughby via Digitalmars-d < digitalmars-d puremagic.com>:On Monday, 20 July 2015 at 19:30:36 UTC, Walter Bright wrote:We do follow a versioning style: '2.MAJOR.PATCH' (with major being 3 digits). It's not as good as SemVer, but better than it was few years ago, and I have faith we'll end up following SemVer at some point. Following SemVer strictly wouldn't solve the real problem: We'll go from 2.068, 2.069. 2.070.. to 3.0.0, 4.0.0, 5.0.0 and will soon end up playing catch up with Chrome. To follow SemVer we'll have to separate breaking changes from bugfixes (including regressions) from new feature, and most likely work with separate branches.. Martin already started to work on this and we're in a nicer spot now, but it requires manpower. Since we don't have 2 consecutive releases that don't break code, I see no point in changing the version scheme at this point other than satisfying the purists. Having a focus for releases will hopefully mitigate that problem. But so far most posts have been about "BTW we need that fixed" and "our versioning scheme is broken".I'm sad that this discussion on Evil Plans has so quickly turned into a deluge of posts bikeshedding a version number.Hardly bikeshedding. The comments are merely pointing out that as it stands D doesn't follow any particular versioning style, making each release hard to understand in the big picture. No other language has these problems and usually use well documented, easily understandable versioning. a la http://semver.org
Jul 20 2015
On Monday, 20 July 2015 at 21:27:17 UTC, Mathias Lang wrote:We do follow a versioning style: '2.MAJOR.PATCH' (with major being 3 digits). It's not as good as SemVer, but better than it was few years ago, and I have faith we'll end up following SemVer at some point. Following SemVer strictly wouldn't solve the real problem: We'll go from 2.068, 2.069. 2.070.. to 3.0.0, 4.0.0, 5.0.0 and will soon end up playing catch up with Chrome. To follow SemVer we'll have to separate breaking changes from bugfixes (including regressions) from new feature, and most likely work with separate branches.. Martin already started to work on this and we're in a nicer spot now, but it requires manpower. Since we don't have 2 consecutive releases that don't break code, I see no point in changing the version scheme at this point other than satisfying the purists. Having a focus for releases will hopefully mitigate that problem. But so far most posts have been about "BTW we need that fixed" and "our versioning scheme is broken".+100
Jul 21 2015
On Monday, 20 July 2015 at 19:30:36 UTC, Walter Bright wrote:On 7/20/2015 11:06 AM, Iain Buclaw via Digitalmars-d wrote:The fact that you consider this bikeshedding is quite a highlight of the problem alone.On a serious note though, the versioning could be better, and I think the current suggested version bump from Walter is a missed opportunity to set things right. To quote anther project leader though: "Let’s face it - what’s the point of being in charge if you can’t pick the bike shed color without holding a referendum on it?"I'm sad that this discussion on Evil Plans has so quickly turned into a deluge of posts bikeshedding a version number.
Jul 20 2015
DMD is a problem for all the D ecosystem. It supports only x86, has a proprietary backend license, generates very, very slow and ugly code. Only one feature : it's faster than ldc for example and it's only because 1.5 humans want to optimize ldc. DMD should be dropped in favor of ldc.
Jul 20 2015
On Monday, 20 July 2015 at 20:53:09 UTC, Temtaime wrote:DMD is a problem for all the D ecosystem. It supports only x86, has a proprietary backend license, generates very, very slow and ugly code. Only one feature : it's faster than ldc for example and it's only because 1.5 humans want to optimize ldc. DMD should be dropped in favor of ldc.By your logic we should also drop support for Windows, since currently only DMD supports Windows well. It would be really stupid to focus on only one backend. Being backend agnostic is a far better objective. Why should anyone be tied to using _only_ LLVM? For example, AFAIK, GDC has far superior support for embedded platforms. Also having a reference implementation _different_ from GDC and LDC has advantages on its own. DMD's backend isn't holding back GDC or LDC in any way. Nowadays there are quite few changes in that area so DMD's backend isn't stealing manpower that would otherwise go to LDC or GDC. Surprisingly, in the last few months I have the impression that DMD has far less codegen bugs than LDC and GDC, though I maybe wrong.
Jul 20 2015
On Monday, 20 July 2015 at 21:25:22 UTC, ZombineDev wrote:On Monday, 20 July 2015 at 20:53:09 UTC, Temtaime wrote:because versions are released with GDC and LDC lagging 2-3 versions behind, when DMD is unusable for production quality codegen. 2.068 is almost out and GDC and LDC both only support 2.066. Until D decides to adopt either GDC or LDC as a real backend, this will never be fixed.DMD is a problem for all the D ecosystem. It supports only x86, has a proprietary backend license, generates very, very slow and ugly code. Only one feature : it's faster than ldc for example and it's only because 1.5 humans want to optimize ldc. DMD should be dropped in favor of ldc.By your logic we should also drop support for Windows, since currently only DMD supports Windows well. It would be really stupid to focus on only one backend. Being backend agnostic is a far better objective. Why should anyone be tied to using _only_ LLVM? For example, AFAIK, GDC has far superior support for embedded platforms. Also having a reference implementation _different_ from GDC and LDC has advantages on its own. DMD's backend isn't holding back GDC or LDC in any way. Nowadays there are quite few changes in that area so DMD's backend isn't stealing manpower that would otherwise go to LDC or GDC. Surprisingly, in the last few months I have the impression that DMD has far less codegen bugs than LDC and GDC, though I maybe wrong.
Jul 20 2015
On Monday, 20 July 2015 at 22:26:53 UTC, rsw0x wrote:because versions are released with GDC and LDC lagging 2-3 versions behind, when DMD is unusable for production quality codegen. 2.068 is almost out and GDC and LDC both only support 2.066. Until D decides to adopt either GDC or LDC as a real backend, this will never be fixed.Unifying the frontend will go a long way towards fixing this problem, and Daniel is working on that right now. He's aiming to make it so that the frontend is identical across all three compilers so that the ldc and gdc developers don't have to fork it like they do now. - Jonathan M Davis
Jul 20 2015
On 21 Jul 2015 00:45, "Jonathan M Davis via Digitalmars-d" < digitalmars-d puremagic.com> wrote:On Monday, 20 July 2015 at 22:26:53 UTC, rsw0x wrote:behind, when DMD is unusable for production quality codegen.because versions are released with GDC and LDC lagging 2-3 versionsdecides to adopt either GDC or LDC as a real backend, this will never be fixed.2.068 is almost out and GDC and LDC both only support 2.066. Until DUnifying the frontend will go a long way towards fixing this problem, andDaniel is working on that right now. He's aiming to make it so that the frontend is identical across all three compilers so that the ldc and gdc developers don't have to fork it like they do now.Hardly. All he can take credit for is removing the virtual method interface and replacing them with visitors (which can be described as no small job, but benefitted more towards ddmd). Everything else has been a slow, tedious three year job from yours truly to remove all x86-isms and platform-specific handling out of the frontend. There are a more than a few last leg things to be done, some are in PRs raised by me, but or not being looked at, or understood properly. Example, I moved underscore prefixing hacks for OSX out of the frontend (every single one broke GDC ABI in one way or another) and into Target. Then Walter slams it for being pointless refactoring. Target is a concept raised at DConf 2013 where I bounced the idea that all uses of global.params.isXXX should be removed from the frontend as all are there to only address a perk of DMD when targeting that platform. The end goal then becomes to make it so that instead of asking 'Is my target OSX?', what the frontend should be asking is 'Does the target add prefixes to symbols?' I shouldn't have to explain why the latter benefits all. Iain
Jul 20 2015
On Tuesday, 21 July 2015 at 03:19:16 UTC, Iain Buclaw wrote:On 21 Jul 2015 00:45, "Jonathan M Davis via Digitalmars-d" < digitalmars-d puremagic.com> wrote:Sorry. I was not trying to take credit away from you or anyone else. I just know that Daniel considers getting the frontend to the point that it's identical across all three compilers to be the top priority, and as of dconf at least, that's what he was focusing on. I mentioned him, because I knew he was working on it. I'm certainly grateful for the stuff that you've done, though admittedly, I don't keep up with what's happening with any of the compilers very well, so you're bound to have done a lot more than I'm aware of.On Monday, 20 July 2015 at 22:26:53 UTC, rsw0x wrote:behind, when DMD is unusable for production quality codegen.because versions are released with GDC and LDC lagging 2-3 versionsdecides to adopt either GDC or LDC as a real backend, this will never be fixed.2.068 is almost out and GDC and LDC both only support 2.066. Until DUnifying the frontend will go a long way towards fixing this problem, andDaniel is working on that right now. He's aiming to make it so that the frontend is identical across all three compilers so that the ldc and gdc developers don't have to fork it like they do now.Hardly. All he can take credit for is removing the virtual method interface and replacing them with visitors (which can be described as no small job, but benefitted more towards ddmd). Everything else has been a slow, tedious three year job from yours truly to remove all x86-isms and platform-specific handling out of the frontend.There are a more than a few last leg things to be done, some are in PRs raised by me, but or not being looked at, or understood properly. Example, I moved underscore prefixing hacks for OSX out of the frontend (every single one broke GDC ABI in one way or another) and into Target. Then Walter slams it for being pointless refactoring. Target is a concept raised at DConf 2013 where I bounced the idea that all uses of global.params.isXXX should be removed from the frontend as all are there to only address a perk of DMD when targeting that platform. The end goal then becomes to make it so that instead of asking 'Is my target OSX?', what the frontend should be asking is 'Does the target add prefixes to symbols?' I shouldn't have to explain why the latter benefits all.Yeah. Walter seems surprisingly resistant to making changes that make the frontend identical across the three compilers. David and Daniel were arguing with him over something related to that at dconf and were having a hard time getting him to even consider it (though in that case, it was because he was afraid it would slow the compiler down rather being an issue with refactoring). In your case, you might have had bad timing (depending on when your work was rejected), since just prior to dconf Walter was getting annoyed with the higher than normal number of regressions and decided that excessive refactoring was to blame (which it may or may not have been), which would tend to make him a lot more resistant to accepting refactoring even with a good reason. Hopefully, he can be convinced of it at some point. - Jonathan M Davis
Jul 20 2015
Maybe it's really better to jump ddmd to 2.1 version and stay 2.06+ for compatibility purpose? The something similar was with D1 time, when for a long times it's get new updates.
Jul 20 2015
Am Tue, 21 Jul 2015 05:10:45 +0200 schrieb Iain Buclaw via Digitalmars-d <digitalmars-d puremagic.com>:On 21 Jul 2015 00:45, "Jonathan M Davis via Digitalmars-d" < digitalmars-d puremagic.com> wrote:That also summarizes my biggest doubts regarding frontend unification: We have quite some DMD-backend-specific stuff in the shared frontend (profiler, ...) and nobody complained about that. OTOH adding GDC always met with scepticism. Such gdc-specific frontend changes are fortunately rare. But with our own frontend fork we can simply commit them. With a unified frontend we'll have to spent hours convincing dmd devs that we need these changes for GDC.On Monday, 20 July 2015 at 22:26:53 UTC, rsw0x wrote:behind, when DMD is unusable for production quality codegen.because versions are released with GDC and LDC lagging 2-3 versionsdecides to adopt either GDC or LDC as a real backend, this will never be fixed.2.068 is almost out and GDC and LDC both only support 2.066. Until DUnifying the frontend will go a long way towards fixing this problem, andDaniel is working on that right now. He's aiming to make it so that the frontend is identical across all three compilers so that the ldc and gdc developers don't have to fork it like they do now.Hardly. All he can take credit for is removing the virtual method interface and replacing them with visitors (which can be described as no small job, but benefitted more towards ddmd). Everything else has been a slow, tedious three year job from yours truly to remove all x86-isms and platform-specific handling out of the frontend. There are a more than a few last leg things to be done, some are in PRs raised by me, but or not being looked at, or understood properly. Example, I moved underscore prefixing hacks for OSX out of the frontend (every single one broke GDC ABI in one way or another) and into Target. Then Walter slams it for being pointless refactoring. Target is a concept raised at DConf 2013 where I bounced the idea that all uses of global.params.isXXX should be removed from the frontend as all are there to only address a perk of DMD when targeting that platform. The end goal then becomes to make it so that instead of asking 'Is my target OSX?', what the frontend should be asking is 'Does the target add prefixes to symbols?' I shouldn't have to explain why the latter benefits all. Iain
Jul 21 2015
On 07/21/2015 09:47 AM, Johannes Pfau wrote:Such gdc-specific frontend changes are fortunately rare. But with our own frontend fork we can simply commit them. With a unified frontend we'll have to spent hours convincing dmd devs that we need these changes for GDC.I understand that it's sometimes frustrating to spend hours convincing somebody of a seemingly obvious change. But please bear in mind that communication is the foundation for collaboration. The only sustainable way to raise awareness for gdc/ldc implications of dmd changes is to explain why something needs to be done differently. I think the Target pattern is a good example for a design decision making gdc/ldc related differences visible in the dmd frontend. Of course it's possible to just fork the frontend and pave your own way, but in the interest of alternative compilers I'd rather see more involvement of you in dmd development to help identify issues upfront. A good improvement would be to continously merge the dmd frontend during gdc development. Right now we only get feedback (if any) for issues long after the changes have been released. TL;DR The reason you have to convince dmd devs is b/c we have no idea what you're doing and you don't tell us.
Jul 23 2015
On 7/20/15 4:42 PM, Dicebot wrote:On Monday, 20 July 2015 at 19:30:36 UTC, Walter Bright wrote:I, too, think we devote too much attention to the picayune. There's a lot of interesting stuff in Walter's post, yet most discussion focused on a side remark. -- AndreiOn 7/20/2015 11:06 AM, Iain Buclaw via Digitalmars-d wrote:The fact that you consider this bikeshedding is quite a highlight of the problem alone.On a serious note though, the versioning could be better, and I think the current suggested version bump from Walter is a missed opportunity to set things right. To quote anther project leader though: "Let’s face it - what’s the point of being in charge if you can’t pick the bike shed color without holding a referendum on it?"I'm sad that this discussion on Evil Plans has so quickly turned into a deluge of posts bikeshedding a version number.
Jul 20 2015
On Monday, 20 July 2015 at 21:02:38 UTC, Andrei Alexandrescu wrote:I, too, think we devote too much attention to the picayune. There's a lot of interesting stuff in Walter's post, yet most discussion focused on a side remark. -- AndreiAgreed. Maybe we should change how we do versioning, maybe not. But it is disappointing that almost the entirety of the discussion has been on changing the versioning scheme rather than the cool stuff that the original post was about. - Jonathan M Davis
Jul 20 2015
On Monday, 20 July 2015 at 21:02:38 UTC, Andrei Alexandrescu wrote:I, too, think we devote too much attention to the picayune. There's a lot of interesting stuff in Walter's post, yet most discussion focused on a side remark. -- AndreiAnd I see this as typical "two steps forward, one step back" case which tends to be the trend in later D development. Meaningless versioning scheme makes hard to both implement breaking changes in industry-friendly manner (every single release becomes breaking) and reason about support cycle of specific feature set (major headache with gdc inclusion into gcc which means version freeze).
Jul 20 2015
On 7/20/2015 2:02 PM, Andrei Alexandrescu wrote:I, too, think we devote too much attention to the picayune. There's a lot of interesting stuff in Walter's post, yet most discussion focused on a side remark. -- AndreiYah, it was a throwaway comment I thought of while I was typing in the post. I should have known better :-)
Jul 20 2015
On 07/20/2015 05:02 PM, Andrei Alexandrescu wrote:I, too, think we devote too much attention to the picayune. There's a lot of interesting stuff in Walter's post, yet most discussion focused on a side remark. -- AndreiWe worry too much about that. I don't mind bikeshedding so much as bikeshedding *about* bikeshedding. I don't think anyone *has* anything to say about the real meat of the original post beyond just "Yes, sounds good, +1, etc." There's nothing anyone disagrees with, there's nothing anyone is uncertain or unclear about, and therefore there is nothing to say on those matters. Discussion only occurs when there *isn't* universal understanding and agreement.
Jul 21 2015
On 2015-07-20 06:02, Walter Bright wrote:2.069 - translate to D.This should absolutely be our main focus, to finish the D port. -- /Jacob Carlborg
Jul 20 2015
On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:2.068 - resolve remaining regressions and release 2.069 - translate to D. No new features, no refactoring. Only regression fixes and what's already in HEAD. This should give us a solid baseline. It also means that open PRs that address other issues will not be pulled for 2.069. Perhaps we should name this 2.100, to signify such a milestone. 2.101+ - 1. Take advantage of D features to improve quality. 2. Go to full lazy semantic analysis of imports, rather than the current "analyze them all" 3. Rethink what "speculative instantiation" of templates means so we can have a coherent process of compiling them. 4. Redo CTFE interpreter so it only rarely needs to allocate memory. This was already done for constant folding, but now it's time for the rest of the interpreter. 5. Get rid of reliance on the global error count. This has been mostly done, it just hast to be finished. 6. Convert the back end to D as well.It'll be fantastic to get a lot of that done. The CTFE improvements in particular are likely to be huge. It'll be interesting to see how much faster some of the compiler improvements will get done once we don't have to worry about maintaining it in C++ anymore. One big item that we've never quite managed to get far with is removing opEquals, opCmp, toString, and toHash from Object: https://issues.dlang.org/show_bug.cgi?id=9769 https://issues.dlang.org/show_bug.cgi?id=9770 https://issues.dlang.org/show_bug.cgi?id=9771 https://issues.dlang.org/show_bug.cgi?id=9772 Without that, attributes on classes are kind of borked - particularly with regards to const. As it is, druntime is violating the type system by casting away const to compare const Objects. Making that work without breaking code is going to require some changes in both dmd and druntime (probably including the work on AAs that Martin's been working on), and it'll likely be fairly interesting to pull off, but I think that it's pretty clear that we need to find a way to do it if we don't want classes to be too restrictive with regards to attributes - both with regards to which ones are permitted and which ones are required. - Jonathan M Davis
Jul 20 2015
On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote: How is this evil? This seems very good :)2.068 - resolve remaining regressions and release 2.069 - translate to D. No new features, no refactoring. Only regression fixes and what's already in HEAD. This should give us a solid baseline. It also means that open PRs that address other issues will not be pulled for 2.069.YAY, I have been wanting to learn how the compiler works for a while but have been to lazy and don't want to look at so much c++, having to be in D will make diggin into it so much more attractive. Also seems like the compiler as a library is not too far away, is that going to be apart of the plan eventually?Perhaps we should name this 2.100, to signify such a milestone.Your the boss, I dont gaf what the version numbers are.2.101+ - 1. Take advantage of D features to improve quality.Again, yay...2. Go to full lazy semantic analysis of imports, rather than the current "analyze them all"What effects will this have? Faster compile times? Smaller binaires?3. Rethink what "speculative instantiation" of templates means so we can have a coherent process of compiling them.Sounds complicated... what effects will this have? Simpler internals? What effects for end user?4. Redo CTFE interpreter so it only rarely needs to allocate memory. This was already done for constant folding, but now it's time for the rest of the interpreter.Oh god yes5. Get rid of reliance on the global error count. This has been mostly done, it just hast to be finished.No idea what this is referring to..6. Convert the back end to D as well.<3 This all seems very not evil. One question I have, are there any plans for a language clean up of sorts, there are a bunch of little features and some big that don't really make sense anymore. D is starting to feel like it's going down the road of c++ with lots of baggage and unwillingness to get rid of old features even if they are discouraged from use, all for the sake of backwards compatibility. I know D has been getting progressively more reserved about breaking changes, do you see that changing any time in the future? 1 year? 3 years? Would automatic conversion tools make you more willing to break things?
Jul 20 2015
On 7/20/2015 1:52 PM, Tofu Ninja wrote:Also seems like the compiler as a library is not too far away, is that going to be apart of the plan eventually?Yes.Yes.2. Go to full lazy semantic analysis of imports, rather than the current "analyze them all"What effects will this have? Faster compile times? Smaller binaires?Mainly fewer compiler bugs.3. Rethink what "speculative instantiation" of templates means so we can have a coherent process of compiling them.Sounds complicated... what effects will this have? Simpler internals? What effects for end user?This all seems very not evil.Not evil enough? I have failed!One question I have, are there any plans for a language clean up of sorts, there are a bunch of little features and some big that don't really make sense anymore. D is starting to feel like it's going down the road of c++ with lots of baggage and unwillingness to get rid of old features even if they are discouraged from use, all for the sake of backwards compatibility. I know D has been getting progressively more reserved about breaking changes, do you see that changing any time in the future? 1 year? 3 years? Would automatic conversion tools make you more willing to break things?I think we're kinda stuck there.
Jul 20 2015
On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:2.068 - resolve remaining regressions and release 2.069 - translate to D. No new features, no refactoring. Only regression fixes and what's already in HEAD. This should give us a solid baseline. It also means that open PRs that address other issues will not be pulled for 2.069.Releasing ddmd with dmd's current backend results in a ~20-30% slowdown s we'd have to compile ddmd with gdc or ldc to make this feasible.
Jul 20 2015
On 7/20/2015 1:58 PM, Martin Nowak wrote:Releasing ddmd with dmd's current backend results in a ~20-30% slowdown s we'd have to compile ddmd with gdc or ldc to make this feasible.First we have to make sure we know why it is slower.
Jul 20 2015
On Monday, 20 July 2015 at 23:20:58 UTC, Walter Bright wrote:First we have to make sure we know why it is slower.I got this number from Daniel, he didn't found a reason. Chances are it's uniformly slower because of dmd's backend, but of course profiling might help.
Jul 20 2015
On 7/20/2015 11:34 PM, Martin Nowak wrote:I got this number from Daniel, he didn't found a reason. Chances are it's uniformly slower because of dmd's backend, but of course profiling might help.Consider that the Win32 version of dmd is built with with the same backend as dmd. If there's a slowdown with that version, it isn't due to the backend.
Jul 21 2015
Am Tue, 21 Jul 2015 01:54:44 -0700 schrieb Walter Bright <newshound2 digitalmars.com>:On 7/20/2015 11:34 PM, Martin Nowak wrote:"On Win32 the performance difference is much smaller, because it's going from compiling with dmc to compiling with dmd" https://youtu.be/5daHGXSetXk?t=2438I got this number from Daniel, he didn't found a reason. Chances are it's uniformly slower because of dmd's backend, but of course profiling might help.Consider that the Win32 version of dmd is built with with the same backend as dmd. If there's a slowdown with that version, it isn't due to the backend.
Jul 21 2015
On 21 July 2015 at 11:04, Johannes Pfau via Digitalmars-d <digitalmars-d puremagic.com> wrote:Am Tue, 21 Jul 2015 01:54:44 -0700 schrieb Walter Bright <newshound2 digitalmars.com>:You beat me to it....On 7/20/2015 11:34 PM, Martin Nowak wrote:"On Win32 the performance difference is much smaller, because it's going from compiling with dmc to compiling with dmd"I got this number from Daniel, he didn't found a reason. Chances are it's uniformly slower because of dmd's backend, but of course profiling might help.Consider that the Win32 version of dmd is built with with the same backend as dmd. If there's a slowdown with that version, it isn't due to the backend.
Jul 21 2015
On Tuesday, 21 July 2015 at 08:54:43 UTC, Walter Bright wrote:Consider that the Win32 version of dmd is built with with the same backend as dmd. If there's a slowdown with that version, it isn't due to the backend.Talking about compiler speed, we can get an easy 10% speedup using PGO+LTO. https://github.com/D-Programming-Language/dmd/pull/4651
Jul 21 2015
On 7/21/2015 4:31 AM, Martin Nowak wrote:Talking about compiler speed, we can get an easy 10% speedup using PGO+LTO. https://github.com/D-Programming-Language/dmd/pull/4651The PR needs to be updated.
Jul 21 2015
On Tue, 21 Jul 2015 01:54:44 -0700, Walter Bright wrote:On 7/20/2015 11:34 PM, Martin Nowak wrote:DMC version of DMD is noticably slower on building phobos than MinGW=20 version. i'm using HEAD built with MinGW with wine, and the difference=20 can be noticed with my eyes. i didn't measure that with "time", though. so backend is surely plays a role here.=I got this number from Daniel, he didn't found a reason. Chances are it's uniformly slower because of dmd's backend, but of course profiling might help.=20 Consider that the Win32 version of dmd is built with with the same backend as dmd. If there's a slowdown with that version, it isn't due to the backend.
Jul 23 2015
On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:2.101+ - 1. Take advantage of D features to improve quality.Great for thing with good test coverage. Will hopefully attract more contributors.2. Go to full lazy semantic analysis of imports, rather than the current "analyze them all"Good for compilation speed, but sound very work intensive. Maybe do an 80/20 solution instead? We have a few more important compiler issue, such as 313+314.3. Rethink what "speculative instantiation" of templates means so we can have a coherent process of compiling them.Longstanding issue, particularly for separate compilation and when compiling to multiple object files.4. Redo CTFE interpreter so it only rarely needs to allocate memory. This was already done for constant folding, but now it's time for the rest of the interpreter.High priority task.5. Get rid of reliance on the global error count. This has been mostly done, it just hast to be finished.Sure6. Convert the back end to D as well.Waste of time IMO, there is nothing to gain here.
Jul 20 2015
On Monday, 20 July 2015 at 21:10:57 UTC, Martin Nowak wrote:- We already have a working C++ backend and can interface that from ddmd, the other compilers will have to work with a C++ interface anyhow. Just translating doesn't improve anything for D users. - The backend generates pretty bad code, we'll never be able to catch up with good optimizers. Why should we invest in an outdated backend? - Bugs in the backend are among the worst for users and time consuming to fix. Translating the backend risks to introduce new bugs.6. Convert the back end to D as well.Waste of time IMO, there is nothing to gain here.
Jul 22 2015
On Wed, 22 Jul 2015 12:17:21 +0000, Martin Nowak wrote:- The backend generates pretty bad code, we'll never be able to catch up with good optimizers. Why should we invest in an outdated backend?the one reason is that it's small and doesn't require 3rd-party libraries=20 to build. while it's not the best backend out here, change-compile-full- rebuild cycle is very fast for DMD, and doesn't require to install gcc=20 sources or llvm. yet i'm not sure that this reason will outweigh the translation and=20 maintenance burden.=
Jul 23 2015
On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:2.101+ -This sounds like workload for the rest of the year. Are you sure that the CTFE interpreter and compilation speed are the 2 most important issues? They are definitely very high priority, but I'd also like us to address all the import (313+314) and protection issues (DIP22) this year.
Jul 20 2015
On Monday, 20 July 2015 at 21:24:59 UTC, Martin Nowak wrote:On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:What's the hold up on those anyway? I thought that Kenji had a PR that sorted them out. In fact, I thought that someone at dconf said something about those changes being merged in already (though maybe I'm misremembering). I take it that there were outstanding issues with the PR that have made it so that it hasn't gotten in yet? Or maybe it only fixed some of the issues? Regardless, it's a serious issue, particularly in light of how easy it is to break existing code with unrelated changes thanks to how private is dealt with currently. - Jonathan M Davis2.101+ -This sounds like workload for the rest of the year. Are you sure that the CTFE interpreter and compilation speed are the 2 most important issues? They are definitely very high priority, but I'd also like us to address all the import (313+314) and protection issues (DIP22) this year.
Jul 20 2015
On Monday, 20 July 2015 at 21:38:35 UTC, Jonathan M Davis wrote:What's the hold up on those anyway? I thought that Kenji had a PR that sorted them out. In fact, I thought that someone at dconf said something about those changes being merged in already (though maybe I'm misremembering). I take it that there were outstanding issues with the PR that have made it so that it hasn't gotten in yet? Or maybe it only fixed some of the issues?We have a PR from Kenji, that fixes 313+314. https://github.com/D-Programming-Language/dmd/pull/3407 It's a major change of the import system, so it needs a thorough review and we also need to mitigate the code breakage impact of this change.Regardless, it's a serious issue, particularly in light of how easy it is to break existing code with unrelated changes thanks to how private is dealt with currently.Those 2 issues have nothing to do with visibility of imported private symbols. There is DIP22 and a few outstanding protection checks.
Jul 20 2015
On Monday, 20 July 2015 at 21:49:01 UTC, Martin Nowak wrote:Those 2 issues have nothing to do with visibility of imported private symbols. There is DIP22 and a few outstanding protection checks.I thought that one of them did. Clearly, I misremembered. Regardless, both of those issues and DIP22 definitely need to be sorted out, and it is kind of embarrassing that it's taken this long, but we're not exactly the quickest with getting stuff done... :( - Jonathan M Davis
Jul 20 2015
On Mon, 20 Jul 2015 21:49:00 +0000, Martin Nowak wrote:We have a PR from Kenji, that fixes 313+314. https://github.com/D-Programming-Language/dmd/pull/3407 =20 It's a major change of the import system, so it needs a thorough review and we also need to mitigate the code breakage impact of this change.at least for phobos, it breaks almost nothing. and where it does some=20 breckage, it identifies invalid code that relies on import bugs anyway. the same with some projects i tried to build, like deadcode, for example=20 (which is fairly big): this PR breaks only invalid code, i.e. code that=20 relies on current buggy import and should be fixed anyway. yet, there is surprisingly small amount of such code, literally along 10=20 or so patches for phobos (and that number constantly decreases), and not=20 much more for deadcode (but for deadcode the fixes was a little more=20 complicated, as i have to add some qualifiers in some modules). i'm using DMD with that patch incorporated for more a year now, and got=20 no problems with code that doesn't rely on import bugs.=
Jul 23 2015
On 7/20/2015 2:24 PM, Martin Nowak wrote:On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:What is high priority is certainly debatable, but what is most clear to me is that transitioning to D source code has finally bubbled to the top of the stack. I strongly believe that D source code will enable us to simplify the front end and improve its quality substantially, which will help with everything else we want to improve. And if it doesn't, we should be reevaluating what we're doing with D :-)2.101+ -This sounds like workload for the rest of the year. Are you sure that the CTFE interpreter and compilation speed are the 2 most important issues? They are definitely very high priority, but I'd also like us to address all the import (313+314) and protection issues (DIP22) this year.
Jul 20 2015
On Monday, 20 July 2015 at 23:11:57 UTC, Walter Bright wrote:It makes sense to spent quite some time on the D transition b/c it's feasible, thanks to Daniel's work, and might have a good impact on compiler contributions. Still we should have that debate and prioritize the bigger remaining D issues, e.g. for the 2015H2 vision.They are definitely very high priority, but I'd also like us to address all the import (313+314) and protection issues (DIP22) this year.What is high priority is certainly debatable, but what is most clear to me is that transitioning to D source code has finally bubbled to the top of the stack.
Jul 20 2015
On Monday, 20 July 2015 at 04:02:04 UTC, Walter Bright wrote:2.069 - translate to D. No new features, no refactoring. Only regression fixes and what's already in HEAD. This should give us a solid baseline. It also means that open PRs that address other issues will not be pulled for 2.069.I still have a lot WIP for the GC, RefCounted, and Unique. So I hope you only mean dmd with this restriction.
Jul 20 2015
On 7/20/2015 2:51 PM, Martin Nowak wrote:I still have a lot WIP for the GC, RefCounted, and Unique. So I hope you only mean dmd with this restriction.Right, the library should not be affected.
Jul 20 2015