DLF September 2023 Planning Update
Mike Parker
aldacron at gmail.com
Tue Nov 14 16:07:26 UTC 2023
On Tuesday, 14 November 2023 at 15:05:34 UTC, Steven
Schveighoffer wrote:
> On Tuesday, 14 November 2023 at 08:18:20 UTC, Mike Parker wrote:
>> * Editions will most likely be implemented via an attribute on
>> the module declaration. We haven't discussed any details about
>> that, but for now, just imagine something like `@edition(2024)
>> module foo;`.
>
> When considering how this should work, I would strongly suggest
> it be the default to work with the current edition of the
> language. Nobody wants to always have to attribute their module
> (or whatever other opt-in mechanism) to use current features.
> It's going to be a WTF moment for all newcomers to D.
>
> This brings us to the problem that no prior libraries have
> editions marked on them. So I think there needs to be an
> external mechanism to be able to set the edition for a package
> or module from the command line, or somehow in a config file.
> Or you can set the "assumed" edition using a switch (but it
> should still default to "current").
>
Experience with deprecations has shown people don't want to take
extra steps to make their outdated dependencies compile. The goal
with editions is that you should never have to take any extra
steps to use older code in your program. You can't do that if the
default edition changes with every new compiler release. But you
can do that if each module explicitly declares which edition it
needs.
An option to specify the latest edition via the attribute came up
in our discussions, so I'm sure we'll have that. And I anticipate
there'll be some way to generate source files with the
appropriately decorated module declarations, probably through
third-party tools like code-d, maybe from a tool that ships with
(or is built into) the compiler.
More information about the Digitalmars-d-announce
mailing list