D Language Foundation Monthly Meeting for February 2022
Mike Parker
aldacron at gmail.com
Sun Feb 27 11:53:18 UTC 2022
## Monthly Meeting
The D Language Foundation's monthly meeting for February 2022
took place on February 4 and lasted around 1.5 hours. The
following foundation members, contractors, and contributors
attended:
Walter Bright
Iain Buclaw
Ali Çehreli
Max Haughton
Martin Kinkelin
Mathias Lang
Átila Neves
Razvan Nitu
Vladimir Panteleev
Mike Parker
### Me
I opened the meeting with a question for Walter. After [a recent
forum
discussion](https://forum.dlang.org/post/aarigbnntabwbcuqsuzg@forum.dlang.org), someone had [submitted a DIP](https://github.com/dlang/DIPs/pull/222) that would change the runtime behavior of the default `toString` implementation in the `Exception` class such that it generates stack trace output only when an environment variable is set. Should this be a DIP or an enhancement request in Bugzilla? We had a brief discussion.
Vladimir pointed out that stack trace output is only useful when
debug symbols are enabled.
Ali suggested that perhaps it could be configurable for
`Exception`, but `Error` should always print. Átila and Mathias
noted that anyone who wants this can just catch all `Exception`s
in `main`. This doesn't handle static constructors, but they both
said that static constructors that aren't `nothrow` are probably
wrong anyway.
Walter said a DIP isn't needed---it's fine to post it in Bugzilla
as an enhancement request.
Later, at the end of the meeting, Martin said he had looked into
the DRuntime source. The stack trace handler is configurable by
the user, so there may be no need for an enhancement request. It
should be sufficient for the user to set the trace handler to a
function that returns null.
### Martin
Martin said he was eager to see news about the 2.099 release. He
felt it was the right time for the stable branch to be updated as
some important breaking changes had recently made it into the
compiler. This brought about a discussion about the number of the
next version after 2.099: should it be 2.0100 or 2.100? The
latter would match what we did with the pre-1.0 releases, which
[went up to
0.178](https://digitalmars.com/d/1.0/changelog2.html). We moved
on quickly from this discussion without any definitive statement,
but my impression is that we're leaning toward 2.100.
The beta for 2.099 [was announced on February
17](https://forum.dlang.org/thread/vlyynedwupodqcytjptn@forum.dlang.org).
Martin later reported that he has worked on template emission in
unit test mode. When compiling with `-unittest`, it used to
behave similarly to `-allinst`, but now emissions have been
significantly reduced. The best benchmark of ~20 projects from
Átila showed a 36% reduction in memory usage and compile time.
There are still some things that can be culled even more.
### Iain
Iain said the most productive thing he'd done over the previous
month was removing ~5,000 LOC from DRuntime in the form of
redundant bindings. Other than that, he agreed with Martin about
the stable branch.
### Vladimir
Vladimir opened with a progress report. Back in December, [we
discussed migrating our Bugzilla issues to
Github](https://forum.dlang.org/post/wnnwxyjtizvhyswwqehz@forum.dlang.org). An alternative solution is to [upgrade to Bugzilla Harmony](https://github.com/bugzilla/harmony), a project Vladimir had been contributing to for some time. After that meeting, we agreed that Robert Schadek would move forward with implementing his migration script, while Vladimir would get the new Bugzilla instance set up so we can test it out in the interim.
Unfortunately, he reported that he has encountered a blocker. He
needs the configuration files for our active Bugzilla instance,
but the maintainer has so far been unresponsive. For now, he will
continue working on Bugzilla and will keep trying to get the
configuration files. (On a side note, this is one reason why we
plan to get all of the services in our ecosystem under one roof
with access for multiple admins. We're thankful for all of the
work the volunteers in our community have put into maintaining
services for us, but we've grown well beyond the point where we
can live with having a single point of failure for every service
in the ecosystem.)
### Ali
Ali reported that he finished his [Programming in
D](https://ddili.org/ders/d.en/index.html) edits, saying that the
physical book is updated as well.
### Razvan
Razvan gave us a report on the status of [the leaderboard for the
Bugzilla rewards](https://bot.dlang.io/contributor_stats. He
added asterisks next to the names of those ineligible to receive
rewards, and he also added another page:
https://bot.dlang.io/contributor_stats shows overall stats, and
https://bot.dlang.io/contributor_stats_cycle shows the stats for
the current cycle. He told us he was thinking of theming the page
based on the DConf logo and colors from 2016/17 in Berlin, and he
has since done so.
He also brought up the vision document.
In [the discussion thread of our September 2021 meeting
summary](https://forum.dlang.org/post/yybthlissupxlgsgjupl@forum.dlang.org), I said the following in response to a question about the vision document:
> ...in the process of revising it, I realized it needs a
> complete rewrite. The document we ended up with isn't what we
> said we wanted.
>
> The rewrite will be a high priority for me once I wrap up the
> DConf Online Q & A videos and get the DIP queue moving again
At the time of the meeting, I was still working on the last DConf
Online video (the AUA), so I wasn't quite ready to turn my
attention to it yet. I had intended at some point to propose a
special meeting to discuss it, but since Razvan brought it up I
suggested we hold that meeting on February 18. Everyone agreed.
We did have the meeting, and you'll find a brief summary of it
below.
### Átila
Átila had nothing to report.
### Mathias
Mathias brought up [a PR he had submitted to
dmc](https://github.com/DigitalMars/Compiler/pull/13) a year ago.
It adds CI. He asked if Walter could provide feedback on it.
Walter asked him to send him an email with the link, and Mathias
said he would do so as soon as he rebased the PR.
While putting together this summary, I followed up with Mathias.
He has now rebased the PR, and I've sent Walter the link.
### Walter
**ImportC**
Walter told us how he thinks ImportC is going to be a big deal
for D. He wants to get us "over the hump" with getting it working
properly. He thinks his C extension to allow importing D files in
C is working out far better than he expected, and he's
considering proposing it to the C committee. The biggest
difficulty with ImportC is compiler extensions that we either
have to implement or give up on.
Walter asked Iain and Martin if they were going to implement
ImportC in GDC and LDC.
Iain explained that it will be used when importing a C header
into a D program, but any C files passed on the command line will
go through the GCC driver and be handed off to the C compiler.
Walter asked if GDC could get a command-line flag to bypass the
driver and pass C files to ImportC instead of GCC, and Iain said
that's not possible. He and Walter brainstormed ways to do it,
but Iain said GDC has no control over the `main` function. He
also noted that GCC is already a good C compiler, so he doesn't
see a reason to bypass it.
Martin said you can currently import C headers and compile C
source with ImportC in LDC, but he hasn't yet implemented the two
new AST nodes that Walter implemented for ImportC in DMD's
backend (initializer lists and bitfields). He hopes to handle
those in the glue layer and output errors saying LDC currently
has limited ImportC support. Implementing bitfields is going to
take a bit of work.
Walter said he now thinks having the C initializers flowing
through to the backend in a new AST node was a mistake. He plans
to change the implementation so that the frontend semantic
routines translate them into D initializers.
**Bitfields**
Walter then brought up bitfields in D. He had expected it was
going to be an obvious, uncontroversial feature, and was
surprised by the resistance to it.
The number one objection he's seen is that it would break the
reflection API. He noted that bitfields will work with the
reflection API without breaking anything (callers will get a
field that is a union of the bitfields, so its address can be
taken, and it will have a name derived from "bitfields"). We can
add a traits feature that specifically fetches a bitfield.
Martin said he was satisfied with that solution, but wondered
what would happen when taking the address of a bitfield. Walter
said that would fail to compile. Martin feels this hurts the
elegance of the language just for the sake of a rare case for
which there has been no big demand and for which we already have
a library solution ("not great", but it works). This went into a
long discussion about opportunities for compression of data
structures (particularly in DMD), whether or not that's
beneficial for DMD, compatibility with C, library vs. language
solutions, experience reports (Mathias described how his company
handled bitfields in bindings not using the library solution),
improving the library solution so that it's more elegant, the
bitfield implementation in ImportC, C compiler bitfield layouts,
and quite a bit more.
**128-bit integers**
Finally, Walter said he has looked at implementing 128-bit
integers (cent and ucent), but implementing them in DMD would be
a nightmare. After more thought, he has decided it's probably
better to implement them as a library type. He mentioned how
complex numbers were ripped out of the compiler and implemented
as a library feature. The work that has already been done on
`cent`/`ucent` will not be wasted, as it can still be built on to
implement the library type.
### Max
Max on a whim began implementing the string interpolation of [the
DIP under development](https://github.com/John-Colvin/YAIDIP)
(not yet submitted) by Andrei and John. He asked if it's okay to
go ahead and finish it up and put it behind a preview switch.
Walter hadn't seen the DIP yet but noted that he was strongly
opposed to any complicated string interpolation feature. The
implementation of string interpolation should be easy to explain
to anyone. Anything that is complicated to explain just isn't
going to work. He will need to review the DIP before deciding on
allowing a preview switch.
I suggested finishing the named arguments implementation should
be a higher priority right now, and Walter agreed. Walter
stressed that named arguments need to be interchangeable with
struct initializers. We'll have to keep struct initializers
around for backward compatibility, but he wants named arguments
to replace them generally.
## Vision Meeting
The vision meeting took place on February 18 at 15:00 UTC. The
following members attended:
Walter Bright
Iain Buclaw
Ali Çehreli
Max Haughton
Mathias Lang
Átila Neves
Razvan Nitu
Vladimir Panteleev
Mike Parker
Robert Schadek
One of the things we were missing from our initial conversations
about the vision document last year was an overarching Vision
Statement. This is the elevator pitch that describes where D is
going. It isn't down at the level of specific details, but far up
above. It's a broad, general statement about our long-term goals
for the language. This will sit at the top of the vision
document. While the rest of the document will change as
priorities shift and tasks are completed, the vision statement
should remain fairly constant. The more specific details in the
rest of the document should all be there because they are sending
us on the path described by the vision statement.
I asked everyone present to brainstorm. What do you want for D?
Where are we going with it? If there were an end goal, what would
it be? No idea, no matter how broad or how specific, was
off-limits. The more information I have to draw from, the better.
Each person has their own ideas about the specifics of where we
need to go, but I was confident we could find a consensus at a
higher level. I'm not going to copy here every item on the list
or summarize the entire discussion. The meeting lasted over an
hour and we covered quite a bit of ground. However, many of the
items fall under broader categories related to the usability of
the language and the quality of the overall user experience
(i.e., the ecosystem, Phobos).
I haven't gotten to it yet, but the next step is on me. I'll
draft three or four different vision statements, then we'll hone
in on something that makes us happy. Once we have that, I can
start assembling the details for the rest of the document. My
current plan is to lay it out in three sections:
**Current Focus**: This describes where Walter and Átila are
currently directing their attention and what their end goals are.
It also serves as a guide for volunteer contributors looking to
fix bugs or make other contributions, e.g., bug categories
related to Walter and Átila's work, suggestions for how to test
related language features, ideas for projects that can help reach
their end goals, etc.
**Future Focus**: This describes possible directions toward which
Walter and Átila would like to turn their attention in the
future, also with suggestions for volunteer contributors. Those
who feel their skills are better applied toward one of these
areas than those of the current focus can do so knowing that
their work will move us toward the desired goal.
**Wishlist**: This is a grab bag of ideas ranging from small
tasks to large projects. Some of them will be things that would
be nice to have, but that Walter and Átila will never have time
to work on. Some may be important tasks that don't fit into the
broader focus categories above, things that either Walter or
Átila will have to do at some point if no one else does. Some of
these may be set up as paid contract work.
I can't say with any certainty how long it will take us to get
all of this together. I know many in the community are eager to
see it. Speaking for myself, it's not my highest priority at the
moment. I'm sure that's true for everyone else whose input will
be required to get to the final version. But I *am* making sure
it gets done, step-by-step, section-by-section. My loose goal is
to have it completed before DConf.
## The Next Monthly Meeting
I'm quite late putting this summary out, so it's already almost
time for our next meeting. We're scheduled to hold it on March 4
at 15:00 UTC. I plan to put forward a proposal about the next
step in getting our services under one roof with multiple admins.
If you have an idea or issue you'd like to bring to us at this or
a future meeting, please contact me at social at dlang.org and I'll
see about getting it on the agenda.
More information about the Digitalmars-d-announce
mailing list