On Thursday, 21 May 2020 at 20:46:09 UTC, Walter Bright wrote:
On 5/21/2020 9:14 AM, Seb wrote:
Why we can't we have a technical board where the community can vote in experts and potentially companies could even buy a seat for $$$ which would mean a lot more for them than the current very vague sponsorship options. I'm aware that Walter doesn't like the idea of giving up ownership, but it makes all the other people question why they should still bother with this process and not simply fork and move to an open, transparent development...

I expected flak from this decision. I'm prepared to take the flak because this is the right decision. I did not make it lightly.

That's interesting that you are saying it is the "right" decision. Let's analyze that for a second:

What this boils down to is

    Simplicity Vs. Memory Safety

Is the **correct** code actually simpler? A beginner that doesn't have the knowledge of D's safety system will ultimately create C bindings that are implicitly @safe without realizing the consequences of their actions.

This change introduces a risk to memory safety, extern(C) declarations that were @system will now be flipped to @safe. No, putting @system: at the top isn't a solution, extern(C) functions aren't all nicely put in their own modules. Druntime and Phobos both have extern(C) declarations throughout their source; I guarantee you missed them with your PR's trying to illustrate how simple it is. As others will most definitely miss them as well.

Reasons for Memory Safety:
- Less error prone and simpler for beginners, the default is what the *correct* behavior should be. They organically discover @safe writing C bindings. - Less error prone for advanced users, won't accidentally call a C function that isn't explicitly verified as being @trusted. - Switch to @safe by default won't introduce potential security bugs from extern(C) functions not being annotated @system in the switch.
- Proven implementation by other safe languages (Rust).

Reasons for Simplicity:
- simpler logic for the compiler
- simpler rules for the user that default to *incorrect* code
- Fear of the unknown, unforeseen complexity
- trust Walter


This is where the divide is, from my perspective. There's this fear of the unknown, that making it slightly more complicated will introduce these unforeseen complications that will far outweigh any benefit that is added from it.

I don't see what that can be. There are other languages that have safe by default, and then have C declarations be unsafe by default. They don't have any of these devastation complications you seem to think that there will be.

This is what doesn't sit right with me. If you could give an example of a complication that could occur, then I think you could get more people onboard. But it would have to be justifiable against the increased security risk of having extern(C) declarations be @safe by default. For a DIP that is trying to increase safety, it is a bit ironic that it will also be reducing safety at the same time.

Otherwise right now, as it stands, this basically boils down to Logic Vs. Fear.

Please keep in mind that I've made other unpopular decisions that have proven their worth over time. I hope you'll reserve judgement until we all see how this change plays out.

If it does turn out badly, it's on me and I'll take my lumps.

You've also done the opposite, you can't justify it with such a statement unless you've never made a mistake. This whole process is suppose to avoid exactly this; a single person taking a gamble.

Reply via email to