Phobos 3 Discussion Notes - 02-01-2024
Atila Neves
atila.neves at gmail.com
Mon Feb 5 14:28:15 UTC 2024
On Friday, 2 February 2024 at 09:09:37 UTC, Adam Wilson wrote:
> Second, this design implies that the '2' in `std2.` is a
> version specifier that would be incremented with each Phobos
> release. This was not the intention and we agreed that it would
> be confusing. I proposed using `sys.` as the root name for
> Phobos 3 and Walter found that acceptable. We briefly discussed
> splitting up Phobos into multiple roots and no firm agreement
> was reached.
And then subsequent versions get put in a package with a version
number under that?
> The other major topic of discussion was what I've been calling
> the "Crippled by Default" design of editions, where the oldest
> edition (technically the last pre-edition release) is the
> default edition if no edition is specified. This poses a few
> challenges from an end-user standpoint
Which ones?
> , but the argument that ended up resonating was the idea that
> in engineering we always want to make the "right" way the
> default or easiest way to do something, and then provide escape
> hatches where necessary.
And the right way should be to not break existing code, even if
they upgrade the compiler.
> Therefore, the compiler should default to use the latest version
The latest version of Phobos? Of the language?
> and then provide the ability via a switch to set the edition,
> or lack thereof, of the modules an import path.
I think this option is useful for trying to upgrade a project to
a new edition, but I'm not sure how it applies here.
> This solves the problem of abandon-ware packages being
> accessible
Abandon-ware Phobos packages?
> without presenting the new user with an ever more decayed
> version of the compiler.
I don't understand what this means.
> 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.
It's unclear to me how we'd be doing that if the new Phobos
version(s) is namespaced differently.
> When then moved on to a conversation about how Walter envisions
> editions actually working. Since none of have seen the document
> that Atila is working on, Walter shared his opinions on how it
> should work. Essentially, Walter would like to see a "hybrid"
> approach having edition attributes for specific experimental
> features, and then having a yearly "roll-up" edition that
> includes all the promoted features from the prior year. So if
> DIP1000 gets promoted to Edition 2025, then DIP1000 would be
> active by default in that edition and all subsequent editions
> without having to specifically enable it.
I'm not sure every year is a good time interval.
> I did bring up that this was likely to cause another "function
> attribute soup" problem
How?
> but in general I wholeheartedly agree with the idea that
> editions should use this model, both C# and C++ both do
> something similar so it would be conceptually comfortable to
> users coming from those languages. Atila, if you're reading
> this, this is what Walter was thinking/hoping would appear,
The reason for that is because I told him that's how I was
thinking of doing it ;)
> 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.
This is the part I'm really not clear about yet.
> I think this makes sense as Phobos doesn't really have editions,
Unless it opts in to a new one. And it should, because we want to
lead by example.
> 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:
> - Promoting allocators out of experimental.
This requires solving a number of thorny issues, including "does
this API even make sense?", which I'm told Paul Backus is working
on.
> - Range interface redesign (see JMD's thread
> [here](https://forum.dlang.org/thread/mailman.588.1705813271.3719.digitalmars-d@puremagic.com)).
> - Fix std.traits.
What does "fix" mean in this context?
> The above list is not exhaustive and we are open to further
> suggestions.
- XML
- JSON
- YAML
- SDL?
- Channels
- ...
More information about the Digitalmars-d
mailing list