Jump to page: 1 25  
Page
Thread overview
DLF September 2023 Planning Update
Nov 14, 2023
Mike Parker
Nov 14, 2023
Nicholas Wilson
Nov 14, 2023
Mike Parker
Nov 14, 2023
Imperatorn
Nov 14, 2023
Mike Parker
Nov 14, 2023
Mike Parker
Nov 14, 2023
Andrey Zherikov
Nov 14, 2023
jmh530
Nov 14, 2023
Andrey Zherikov
Nov 14, 2023
Andrey Zherikov
Nov 14, 2023
matheus
Nov 14, 2023
Paul Backus
Nov 14, 2023
Mike Parker
Nov 14, 2023
Adam D Ruppe
Nov 14, 2023
Dennis
Nov 14, 2023
jmh530
Nov 14, 2023
max haughton
Nov 14, 2023
jmh530
Nov 15, 2023
Mike Parker
Nov 14, 2023
Guillaume Piolat
Nov 14, 2023
Paolo Invernizzi
Nov 14, 2023
Sergey
Nov 15, 2023
Jonathan M Davis
Nov 15, 2023
Sergey
Nov 15, 2023
Jonathan M Davis
Nov 15, 2023
Andrey Zherikov
Nov 14, 2023
monkyyy
Nov 15, 2023
Mike Shah
Nov 15, 2023
Adam D Ruppe
Nov 15, 2023
Mike Parker
Nov 15, 2023
Mike Parker
Nov 15, 2023
Adam Wilson
Nov 15, 2023
Mike Shah
Nov 15, 2023
Mike Shah
Nov 15, 2023
Mike Parker
Nov 21, 2023
Guillaume Piolat
Nov 22, 2023
Adam D Ruppe
Nov 22, 2023
Dukc
November 14, 2023

In September 2023, we had one planning session. The major item on the agenda was editions. Other items were a new meeting format, the Bugzilla to GitHub migration, and the future of D.

Attendees

The following people attended the session.

  • Walter Bright
  • Ali Çehreli
  • Martin Kinkelin
  • Dennis Korpel
  • Átila Neves
  • Razvan Nitu
  • Mike Parker
  • Robert Schadek

Editions

We had agreed in the September monthly meeting the week before that we need to define what editions will look like before we start deciding which features should go in any given edition. My goal with this session was to establish the first point on the timeline: a deadline for the editions proposal. I also thought it would be a good opportunity for all of us to clarify what editions are (there were some different ideas about that) and discuss aspects of the concept we need to consider.

Here are some points that came out of the discussion.

  • Editions are essentially feature sets. Each edition can add/remove/deprecate features.
  • Editions are entirely opt-in and only affect the source you explicitly apply them to, i.e., they are not transitive to dependencies.
  • 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;.
  • Features cannot be opted into individually. When you apply an edition to a module, you get the whole thing.
  • The default edition, meaning the code you have now, should compile forever.
  • We should have a tool that automates as much as possible the migration of modules to new editions
  • DMD-as-a-library is a critical component for that tool and other tools in the ecosystem. We need to put a priority on working out all the implementation issues Razvan has raised.
  • Given that much of the D community uses code-d, we need to bring Jan Jurzitza into any discussions about DMD-as-a-library.

Átila took on the job of writing the proposal and we set November 1st as the deadline. We've since moved it to mid-December.

One thing I'm looking forward to: editions will provide us with a framework to clearly define a roadmap for the language and the library.

Workgroup sessions

Our monthly and quarterly meetings have no fixed agendas. These are opportunities for each participant to report what they're working on and raise issues they'd like to see resolved. Our planning sessions are shorter, more focused meetings in which we resolve or decide how to proceed with a specific set of agenda items. I proposed we start having what I called "workgroup sessions", meetings aimed at hammering out details on bigger problems that can't be resolved in one meeting or by one person.

DMD-as-a-library was a good example. This project had been in the works in one form or another for years. Razvan has been making an effort to get it to the finish line, but there were some critical issues to resolve in terms of interface and implementation. It took a large chunk of time in our September monthly meeting and external conversations with no resolution. Complex issues like this need a group of stakeholders focused on hammering out the details.

We agreed I should set up a meeting. I noted who was interested in participating and took suggestions for other invitations.

We ended up having two DMD-as-a-library meetings in October. I didn't participate, but I'll post an update on the outcome.

Bugzilla to GitHub migration

I've already written about this as an update note in the September monthly meeting summary, but this was the session where we agreed that Robert should be running the migration script instead of me. He just needed admin access to our GitHub repositories, and there were no objections to granting it. We agreed with Robert's proposal to migrate the VisualD issues first, then each project in order from lowest to highest issue count.

I'll have more on this in upcoming summaries and updates.

The future of D

Robert had been itching to talk about our long-term plans for D. I think most of us understood that he was talking in terms of language features, but in this session, he explained that's not what he meant. D started as a successor to C and C++, but he doesn't see the language that way. He sees it as the best parts of C, Haskell, and Python. Others may see it differently. So how do we define the language going forward? What role do we want it to play? Are we mostly concerned with C-style stuff where every bit counts? Do we see D as a great tool for one-off scripts that would normally be written in something like Python?

This prompted Walter to introduce the first draft of his Didactica, a list of the principles behind the language. That's the kind of thing Robert was looking for. Everyone looked them over and provided feedback.

As I noted in the September monthly meeting summary, Walter has since gone through multiple drafts of this list. Though he originally saw it as a set of principles behind the language, he's now come to see it more as the principles behind the DLF, guiding not just the development of the language, but also the ecosystem, community resources, and so on.

Once it's finalized, this list and the DLF's IVY statement should together serve as an aspirational filter for evolving the language, the ecosystem, and the community. Does a proposed language feature align? Is a current feature not in alignment? Are we falling short of our principles in any specific area?

Wrapping up

We ended with a non-agenda discussion on expanding BuildKite to test more code.dlang.org packages to further reduce breakage with new compiler releases. The current list is manually curated. Átila has a script that determines which code.dlang.org projects currently build, and that results in a bigger list. The only actionable item that came out of this is that Robert will write a script to work out the dependency graph from that list in the hope it can be used to minimize the time taken to run the tests and reduce resource usage.

November 14, 2023

On Tuesday, 14 November 2023 at 08:18:20 UTC, Mike Parker wrote:

>

Editions

We had agreed in the September monthly meeting the week before that we need to define what editions will look like before we start deciding which features should go in any given edition.

Good

>

My goal with this session was to establish the first point on the timeline: a deadline for the editions proposal. I also thought it would be a good opportunity for all of us to clarify what editions are (there were some different ideas about that) and discuss aspects of the concept we need to consider.

Here are some points that came out of the discussion.

  • Editions are essentially feature sets. Each edition can add/remove/deprecate features.
  • Editions are entirely opt-in and only affect the source you explicitly apply them to, i.e., they are not transitive to dependencies.

(see note below about packages)

>
  • 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;.

There are an awful lot of versions set by things that should be part of editions, but exactly how this is supposed to be implemented can be hashed out later.

They should also be ideally settable via a (say) an attribute, on the module declaration of a package and have that apply to the whole package. That way we limit a whole lot of redundant configuration.

>
  • Features cannot be opted into individually. When you apply an edition to a module, you get the whole thing.

Well that's DoA then. Why bother to implement feature sets if you can't select them?
This is a particular problem from incompatible sets of features, which D has a not insignificant amount of ( betterC, basically all of the -preview flags), including things that affect safety/codegen like -boundscheck, -check, -checkaction, -cov.

Selectable features would solve the problem of "a dependancy uses an option I don't want to enable"

Implementing default combinations of features (editions) on top of selectable features would be reasonable.

>
  • The default edition, meaning the code you have now, should compile forever.

I hope you mean "we will keep around old editions as (potentially command line) selectable options and we can update the default to be the current"

>
  • We should have a tool that automates as much as possible the migration of modules to new editions
  • DMD-as-a-library is a critical component for that tool and other tools in the ecosystem. We need to put a priority on working out all the implementation issues Razvan has raised.
  • Given that much of the D community uses code-d, we need to bring Jan Jurzitza into any discussions about DMD-as-a-library.

Yes, yes, yes.

November 14, 2023

On Tuesday, 14 November 2023 at 08:18:20 UTC, Mike Parker wrote:

>

In September 2023, we had one planning session. The major item on the agenda was editions. Other items were a new meeting format, the Bugzilla to GitHub migration, and the future of D.

[...]

Great summary. From the user side of things I think our best options are code-d and Visual D, but I haven't heard so much about Visual D-development plans. Do you know if there are any?

Thanks!

November 14, 2023

On Tuesday, 14 November 2023 at 08:55:22 UTC, Nicholas Wilson wrote:

>

I hope you mean "we will keep around old editions as (potentially command line) selectable options and we can update the default to be the current"

No. The whole point is that old code will continue to compile without any special flags. We want to get out of this situation where an old but useful library stops compiling just because you use a newer compiler version on your project. The default edition doesn't change.

November 14, 2023

On Tuesday, 14 November 2023 at 09:51:29 UTC, Imperatorn wrote:

>

Great summary. From the user side of things I think our best options are code-d and Visual D, but I haven't heard so much about Visual D-development plans. Do you know if there are any?

Thanks!

You'll have to ask Rainer about his plans for Visual D. I haven't chatted with him in a long while.

November 14, 2023

On Tuesday, 14 November 2023 at 10:31:54 UTC, Mike Parker wrote:

>

On Tuesday, 14 November 2023 at 09:51:29 UTC, Imperatorn wrote:

>

Great summary. From the user side of things I think our best options are code-d and Visual D, but I haven't heard so much about Visual D-development plans. Do you know if there are any?

Thanks!

You'll have to ask Rainer about his plans for Visual D. I haven't chatted with him in a long while.

And I should add that at some point, I do hope to be able to tell people about plans for Visual D. That's one of the projects we need to think about once we start discussion broader ecosystem plans.

November 14, 2023

On Tuesday, 14 November 2023 at 08:18:20 UTC, Mike Parker wrote:

>

The future of D

Did you see this video from cppnow'23? https://youtu.be/VMYVbA2gg0g?si=fMGbnE0FliLwmYgo
It's a good talk about language evolution in general.

November 14, 2023

On Tuesday, 14 November 2023 at 08:18:20 UTC, Mike Parker wrote:

>

Editions

Did you take a look at other languages and how they implement this feature? May be there is a language that already implements the approach your are looking for and you don't need to reinvent a wheel?
What I'd like to see is something like "we took a look at languages A,B and C and we decided that editions should work that way because X, Y and Z" or "editions should work the same way as in language A"

There will always be two requests and you'll have to provide a solution (tbh I don't see how to make everyone happy here):

  • I want my old code to be built with the latest compiler the same way forever.
  • I want to evolve my code together with the language and compiler.
November 14, 2023

On Tuesday, 14 November 2023 at 12:55:28 UTC, Andrey Zherikov wrote:

>

On Tuesday, 14 November 2023 at 08:18:20 UTC, Mike Parker wrote:

>

The future of D

Did you see this video from cppnow'23? https://youtu.be/VMYVbA2gg0g?si=fMGbnE0FliLwmYgo
It's a good talk about language evolution in general.

Haven't seen that one, but there's certainly a lot of interest in the C++ community on language evolution.

From the same conference, this one on the Carbon language is kind of in line with the work on editions
https://www.youtube.com/watch?v=1ZTJ9omXOQ0

I also enjoyed Herb's discussion of language evolution at the latest CppCon
https://www.youtube.com/watch?v=8U3hl8XMm8c&list=PLHTh1InhhwT7gQEuYznhhvAYTel0qzl72&index=4

November 14, 2023

On Tuesday, 14 November 2023 at 08:18:20 UTC, Mike Parker wrote:

>
  • We should have a tool that automates as much as possible the migration of modules to new editions
  • DMD-as-a-library is a critical component for that tool and other tools in the ecosystem. We need to put a priority on working out all the implementation issues Razvan has raised.

IMHO having a general purpose migration tool is a big win. For example, I, as a library owner, want to help users to migrate their code from one library version to another and making this code evolution automatic would be ideal.

« First   ‹ Prev
1 2 3 4 5