The D Language Foundation’s quarterly meeting for July 2025 took place on Friday the 4th at 15:00 UTC. It lasted a little under 30 minutes.

Our quarterly meetings are where representatives from businesses big and small can bring us their most pressing D issues, status reports on their use of D, and so on.

## The Attendees

The following people attended the meeting:

* Walter Bright (DLF)
* Dennis Korpel (DLF/SARC)
* Mario Kröplin (Funkwerk)
* Razvan Nitu (DLF)
* Mike Parker (DLF)
* Carsten Rasmussen (Decard)
* Bastiaan Veelo (SARC)

## The Summary

### Carsten

Carsten said things were going well at Decard. It was very exciting on the business side because they were going into logistics and security. The problems they were having to solve had nothing to do with the language, just normal development stuff. They were comfortable with what they had in the system and were happy.

### Mario

Mario said he’d emailed Mathis Beer about the meeting three days ago, but suspected he'd forgotten about it. Mathis was programming in D, but Mario was currently the Java programmer, so he had nothing to bring to us this time.

### Walter

Walter said he’d previously complained about the lack of D articles on Hacker News, but one had shown up recently and turned out to be a significant success for us. He wanted more of that kind of visibility.

He then went into a little rant about people who said "I used D for years, but it had this one flaw, so I dropped it," and then presented that flaw as the reason D couldn't succeed. The example he’d seen lately was, "I can’t use D because the exception handler uses the garbage collector."

Carsten said they shouldn't use exceptions if that was a concern. Walter said using exceptions with the GC wasn’t going to break your program. He got frustrated with people turning a single technical detail into a deal-breaker.

I brought up a comment I’d seen on Dennis’s DConf talk from last year: "The single biggest mistake Bright made when designing D was the GC. That is the sole reason D hasn't replaced C++ by now. It's the biggest crutch to D adoption. Really, who wants to deal with this kind of nonsense?"

Carsten said, "No, no, no, no, no, no, no."

Walter said if it wasn't the GC, it would be something else. Throughout his career, he'd had people telling him, "If only your compiler had this feature, our company would switch." He'd add that feature and they'd say, "That's nice, but what we really need is this other feature." Then you ended up on a merry-go-round. They had no intention of ever using it.

Carsten added that the GC was one of the reasons he had switched from C++ to D. He'd gotten tired of hunting wild pointers and was too old to do that anymore. Walter said that the GC had ended up being a surprising asset for CTFE.

I asked Walter if that was all. He said he was done ranting for the moment, but was sure he'd think of something else to rant about.

### Bastiaan

Bastiaan had two work issues he wanted to bring up. He'd spoken a little bit about them with Dennis.

__alloca and 64-bit DMD__

Bastiaan reminded us he’d started using `alloca` as a solution to one of the thread contention problems he'd had. It worked fine with DMD in 32-bit and fine with LDC in 64-bit, but when compiling for 64-bit with DMD, he got an error saying `alloca` didn't work with exception handling. He was wondering why and whether it was really working on 32-bit and 64-bit LDC.

Walter recalled giving up on trying to get `alloca` working on Windows 64-bit. It was ugly to implement, though he couldn't remember what the actual problem had been. He’d never been able to figure out Win64 exception handling. DMD’s exception handling on Windows differed from MSVC’s. He suggested that Bastiaan's problem was probably related to that.

Dennis posted [a link to the relevant code in DMD's `eh.d`](https://github.com/dlang/dmd/blob/9f573c494acc38855027462bde162fabea9cf33f/compiler/src/dmd/backend/eh.d#L50) along with a comment that he thought Walter had probably written:

```
// BUG: alloca() changes the stack size, which is not reflected
// in the fixed eh tables.
```

Walter said we were kind of stuck with that. He suggested using a RAII malloc/free scheme, which would accomplish the same thing as `alloca`. Bastiaan pointed out that `malloc` required the global lock. One of the reasons they were using `alloca` was to avoid that.

As an alternative, Walter suggested that if they knew the maximum size of the allocation, they could use a struct of that size. That would then be the allocated storage. Bastiaan didn't think they could get rid of `alloca`. It wasn’t a deal-breaker because they could just use LDC, but it was a minor inconvenience that they couldn’t fall back on DMD.

Bastiaan recalled an initiative for nonallocating exceptions and wondered what the story was. Walter said there was a compiler switch that enabled them and it did work, but there were some issues with it he never fully understood. I said Razvan could probably explain it, and that I recalled it had to do with stack trace generation. Walter said that sounded like that was probably the issue.

__Link errors in LDC__

Bastiaan's second issue was an LDC linking problem after upgrading the front end. He didn’t expect a full answer on the call and would need to work on a reduction. He asked if Dennis had any thoughts on it.

Dennis thought it was a mix of compiler flags and preview switches causing a difference in symbol generation. He hadn't yet reproduced it.

Walter suggested it could also be a DRuntime/Phobos mismatch and stressed that DRuntime, Phobos, and user code all needed to be built with the same compiler version. Bastiaan believed they were doing that. He said the error mentioned "conflicting weak external definition". He'd only seen it a few times and had forgotten the context.

__Floating point issue__

Bastiaan said that aside from those issues, things were generally fine. The only other issue he could think of was that 64-bit floating point answers sometimes deviated from 32-bit. One reason was that he'd been relying on undefined behavior for some code using `bitmanip`. He was glad they'd disovered that. It was in order now.

The other was because 32-bit DMD used 80-bit floating point in intermediate results. This was code using floats, not doubles. LDC, even in 64-bit, was using 32-bit intermediates. He figured that was introducing a lot of rounding errors in the intermediate results.

Walter explained that if the target machine supported XMM floating point registers, the compiler would use them, otherwise it would use the 80-bit floating point coprocessor, which did everything in 80 bits. He said 32-bit LDC on the platform Bastiaan was working on wasn't using the XMM registers. He suggested looking at the LDC switches to see if there was one to enable it. That should clear up the problem. Bastiaan said that was a good point and he would look into it.

### Dennis and Razvan

After Bastiaan finished, I asked Dennis if he had anything work-related to add beyond what had come up in Bastiaan’s issues. Dennis did not. Neither he nor Razvan had anything DLF-related.

### Me

I said I would be be announcing the Symmetry Autumn of Code in the next few days. We had funding from Symmetry for three slots. I noted Emmanuel Nyarko had already told me he planned to apply. I asked all present to let me know if they had any open source libraries they were using that needed some work. That sort of thing could make potential project ideas.

I asked Carsten if he could send me an updated headcount of Decard's DConf attendees within the next week. We needed to send the caterers an approximation of our final numbers. Then I asked if anyone had anything else to add. Dennis asked if there was going to be a monthly meeting the following week. There was.

### AI interlude

As we were about to close, Walter told us he’d tried very hard to get an AI to draw a D-man. He'd failed miserably no matter how he crafted the prompt. He kept getting something that looked like Superman with a D on his chest.

Carsten offered to ask someone at his company who was "super good at that" to see if they could come up with a prompt that worked. I mentioned that some of the services let you upload a reference image. Walter said he’d tried that, too. He'd tried everything. All these people were saying AI was going to take over everything, and he hadn't been successful with getting it to do what he wanted.

I said it had been very useful for me with research and translation. Carsten agreed. He thought it was great for extracting information and translation. When it came to writing code you wanted to maintain, he thought it was just crap on crap, but maybe he was too old for that.

I noted that I'd gotten GPT to generate a Lua script as a plugin for Pandoc, because I knew nothing about Pandoc plugins. It had mistakes that I'd had to correct, but it got me further than I would have gotten on my own in a shorter amount of time. Carsten thought it was great for that sort of thing, scripts for specific tasks. But for something that you wanted to develop and maintain, he didn't think we'd be losing our jobs any time soon.

Walter said he’d been invited to give a short presentation about D that highlighted concurrent programming. He didn't know much of anything about concurrency, so he'd asked Grok for a sample program and it worked. Then he thought he should send the prompt to Bruce, who was an expert on concurrent programming. Bruce sent back a marvelously written piece of concurrent code that did the same thing. Walter scrapped the one from the AI and went with Bruce's. There was nothing like talking to an expert to get something we could be proud of. That had been fun.

Mario joked that it was good Mathis wasn’t there, otherwise the meeting would run for another hour. Mathis did nothing without AI. He put the code in a loop with the compiler and the AI was fixing his bugs. He was very deep into AI. Carsten said you could probably use it as a tool if you knew what you were doing. Mario agreed and mentioned a saying that it made good people better and bad people worse.

Walter said when he asked AI to write a piece of code, he knew how to specify what he wanted. It was really helpful in getting the results he wanted on that front. He was just annoyed that he couldn't get it to generate a D-man.

He said we had a shortage of D-man cartoons. He had a directory with a collection of all the ones he'd seen. For him to draw one was a long, complicated process because he had no talent for it. He would have to spend a lot of time with the image editor to make it look presentable. Being able to automate it would be wonderful. Something silly like D-man jumping rope or something. If anyone could figure out how to do it, he asked that they send him the prompt.

### Conclusion

Our July monthly meeting took place the following Friday, July 11th. Our next quarterly happened on Friday, October 3rd, 2025.

If you are running or working for a business using D, large or small, and would like to join our quarterly meetings periodically or regularly to share your problems or experiences, please let me know.
  • D Language Fo... Mike Parker via Digitalmars-d-announce
    • Re: D La... Kapendev via Digitalmars-d-announce
      • Re: ... Sergey via Digitalmars-d-announce
    • Re: D La... monkyyy via Digitalmars-d-announce
      • Re: ... Sergey via Digitalmars-d-announce
        • ... Kapendev via Digitalmars-d-announce
          • ... Sergey via Digitalmars-d-announce
    • Re: D La... bauss via Digitalmars-d-announce
      • Re: ... Kapendev via Digitalmars-d-announce
    • Re: D La... Richard (Rikki) Andrew Cattermole via Digitalmars-d-announce
      • Re: ... Bastiaan Veelo via Digitalmars-d-announce

Reply via email to