Migrating D front end to D - post Dconf

Jonathan M Davis jmdavisProg at gmx.com
Sat May 11 18:09:53 PDT 2013


On Saturday, May 11, 2013 17:51:24 Walter Bright wrote:
> On 5/11/2013 2:09 PM, Jonathan M Davis wrote:
> > I have to be able
> > to build old haskell code without updating it,
> 
> I guess this is the crux of the matter. Why can't you update the source?

Well, in this particular case, it has to do with work on my master's thesis, 
and I have the code in various stages of completion and need to be able to 
look at exactly what it was doing at each of those stages for writing the 
actual paper. Messing with the code risks changing what it does, and it wasn't 
necessarily in a great state anyway given that I'm basically dealing with 
snapshots of the code over time, and not all of the snapshots are necessarily 
fully functional.

In the normal case, I'd definitely want to update my code, but I still might 
need to get the old code working before doing that so that I can be sure of 
how it works before changing it. Obviously, things like solid unit testing 
help with that, but if you're dealing with code that hasn't been updated in a 
while, it's not necessarily a straightforward task to update it, especially 
when it's in a language that you're less familiar with. It's even worse if 
it's code written by someone else entirely, and you're just trying to get it 
working (which isn't my current situation, but that's often the case when 
building old code).

Ultimately, I don't know how much we need to care about situations where 
people need to compile an old version of the compiler, and all they have is 
the new compiler. Much as its been causing me quite a bit of grief in haskell, 
for the vast majority of people, it's not likely to come up. But I think that 
it at least needs to be brought up so that it can be considered when deciding 
what we're doing with regards to porting the front-end to D. I think that main 
reason that C++ avoids the problem is that it's so rarely updated (which 
causes a whole different set of problems). And while we obviously want to 
minimize breakage caused by changes to the library, language, or just due to 
bugs, they _are_ going to have an effect with regards to building older 
compilers if the compiler itself is affected by them.

So, we might be better of restricting how much the compiler depends on - or we 
may decide that the workaround is to simply build the last C++ version of the 
compiler and then move forward from there. But I think that the issue should 
at least be raised.

- Jonathan M Davis


More information about the Digitalmars-d mailing list