On Friday, 2 February 2024 at 09:09:37 UTC, Adam Wilson wrote:
>First, it would be very easy to accidentally type std.
in an std2.
module. We realized that this would be a problem no matter what root name was used and that the appropriate answer would be to specify a DStyle rule specific to Phobos that only modules in std.
can import std.
modules.
What about std.v1., std.v2. and so on? And obviously std.v1.* == std.*
>Therefore, the compiler should default to use the latest version and then provide the ability via a switch to set the edition, or lack thereof, of the modules an import path. This solves the problem of abandon-ware packages being accessible without presenting the new user with an ever more decayed version of the compiler. We want to put out best foot forward and presenting the last pre-editions release, which is constantly getting old as time passes, does not do that. No specific agreement was reached but Walter agreed to consider it.
Is the newest compiler compatible with oldest phobos?
Maybe some sort of automagical import std.old.v108;
After that we had a discussion about how to distribute Phobos. This mostly centered on what release cadence to use. I argued for linking the Phobos version to the edition release schedule. I think this is sensible and makes it easier for people to reason about which compiler/library pairing they are using. Walter was fine with that, but he does not want to use the "Edition" language to describe Phobos releases. I think this makes sense as Phobos doesn't really have editions, but following SemVer, it would have yearly major releases. This would mean that new features are released once per year, and bugfixes would be released on whatever the fast-cadence schedule is for DMD in between Yearly Edition roll-ups.
Can phobos and dmd split themselves, just like any other library, or are we supposed to keep them together?
>Finally, we touched briefly on the major changes we would like to see in Phobos 3 and these are the major changes we are committing to for Phobos 3 so far:
- Removal of Autodecoding.
+1
>- Promoting allocators out of experimental.
+1
>- Range interface redesign
+1
>- Fix std.traits.
+1
- Removing ext dependencies could make things easier (f.e. libcurl) for multi-platform development (it's nice to statically compile everything in a single executable, but it's not that easy: I did it for https://github.com/trikko/tshare)
- Phobos with webassembly
- Phobos with betterC
Andrea