On Wednesday, 6 February 2013 at 11:33:20 UTC, Jonathan M Davis wrote:
On Wednesday, February 06, 2013 12:06:18 deadalnix wrote:
Andrei made a proposal to allow transforming a module into a
package. It seems to me like the way to go for this.

Yes, but that's a different issue. It's one thing to take std.algorithm or std.datetime and turn them into packages while still allowing you to import std.algorithm or std.datetime as before. It's quite another to completely replace a module with another module. To do that, you need a new module. Anything else will break code. The question then is what to name the new
module.


If we use the package trick as proposed, a possible solution is :

std/datetime/v1.d :
// Datetime version 1

std/datetime/v2.d :
// Datetime version 2

std/datetime.d or std/datetime/package.d (or whatever) :
version(DATETIME_V1) {
    public import std.datetime.v1;
} else {
    public import std.datetime.v2;
}

You could replace the entire module in-place, but doing so will break code, and Walter in particular is very much against that in general. Whatever we did would require allowing people to transition from one to the other and we might even have to leave the old one around permanently (which I don't like, but I'm sure that Walter would favor). Simply changing it with a new version of Phobos
wouldn't cut it.


Well Walter seems very worried about breaking code, but seems unable to adopt any practice the reduce its effect, and in the facts, my cod break at any new dmd release (and right now compile with none released one).

Reply via email to