D versionning

deadalnix deadalnix at gmail.com
Thu Jul 12 09:49:16 PDT 2012


One thing PHP has been good at is evolving, and introducing change in 
the language (some can argument that the language is so fucked up that 
this is unavoidable, so I do it now and we can discuss interesting topic).

I discussed that system with Rasmus Ledorf at afup 2012 and it something 
that D should definitively look into.

The const vs OOP discussion have shown once again that D will have to 
introduce breaking changes in the language. This isn't easy matter 
because if we break people code, D isn't attractive. But as long as code 
isn't broken, D people can't worked on what's next and it slows down D 
progress.

The system adopted in PHP works with a 3 number version. The first 
number is used for major languages changes (for instance 4 > 5 imply 
passing object by reference when it was by copy before, 5 > 6 switched 
the whole thing to unicode).

The second number imply language changes, but either non breaking or 
very specific, rarely used stuff. For instance 5.2 > 5.3 added GC, 
closures and namespace which does not break code.

The last one is reserved for bug fixes. Several version are maintained 
at the same time (even if a large amount of code base is common, so bug 
fixes can be used for many version at the time).

We should leverage the benefit of having switched to git to go in that 
way. We can start right now D2.1.xx with the opX dropped from object and 
see how it goes without requiring everybody to switch now.

Such a system would also permit to drop all D1 stuff that are in current 
DMD because D1 vs D2 can be chosen at compile time on the same sources.

git provide all we need to implement such a process, it is easy to do it 
soon (after 2.060 for instance) because it doesn't imply drastic changes 
for users.


More information about the Digitalmars-d mailing list