On Friday, 25 November 2016 at 16:10:51 UTC, Andrei Alexandrescu wrote:
* Low-tech: just use std.random_v2, std.json_v2, etc. Leave std.random, std.json etc be and put them in maintenance mode. Possibly deprecate them later if the v2 versions work great.

* High-tech: use std.random.v2, std.json.v2, etc. This entails more administrative work (convert modules to packages etc) but may have some advantages due to the version being a separate symbol instead of embedded in the name.

My favorite solution is the std.v2.random. Hoping std.v2.stdio works and it's an alias to std.stdio.

In this way it's easier to read documentation (I just need to go to doc/v2).

If you write a vXX for each packet we'll have:

std.v5.random
std.stdio
std.v2.json

And it's quite confusing.

IMHO:

std.v5.random
std.v5.stdio == std.stdio == std.v2.stdio == std.v3.stdio == std.v4.stdio
std.v5.json == std.v3.json == std.v4.json

is easier to work with (we simply choose an api level/snapshot of phobos).


Moreover I think that a new version of a module can have dependencies from another new module. I mean: std.v5.random could depend on std.v3.math. I'm using std.math and I'm not aware of this dependency and probably it is going to break something (or at least to generate more code than necessary).

Instead if i use std.v5.random and std.v5.math they are all on the same level and all dependencies should work fine.

Maybe we can define a const (just like c++) PHOBOS_API_LEVEL = XX we can override with a dmd flag (but set to max level inside phobos source) so we can avoid ugly xxx.v3.yyy names if not needed.

Andrea


Reply via email to