[Not really OT] Crowdstrike Analysis: It was a NULL pointer from the memory unsafe C++ language.
Paolo Invernizzi
paolo.invernizzi at gmail.com
Thu Jul 25 12:24:27 UTC 2024
On Thursday, 25 July 2024 at 11:47:21 UTC, Timon Gehr wrote:
> On 7/25/24 04:32, Walter Bright wrote:
>> On 7/22/2024 12:00 PM, Timon Gehr wrote:
>>> Anyway, the point is there should be a way to have the
>>> compiler help you do this kind of safety scaffolding without
>>> you needing to lie to the compiler.
>>
>> I understand your design and it has merit.
>>
>> Issues:
>>
>> 1. the proliferation of these features. Have you seen all the
>> C extensions VC and gcc have? It makes for an excessively
>> large and intimidating language. The larger the specification,
>> the less people will read it.
>> ...
>
> Hardly applies in any relevant fashion to pragmas that enable
> additional type checking.
>
>> 2. if an existing feature can be pressed into service instead,
>> adding a new feature needs a big advantage
>> ...
>
> You are in effect removing an existing feature.
>
>> 3. one of the earliest goals with D was to make it easier for
>> managers and QA staff to have rules and enforce them. @trusted
>> was always intended to be an easily greppable construct so
>> that the QA reviewer knows where to focus his effort. A
>> manager can lay down a rule "no level1 programmers can check
>> in @trusted" and enforce it mechanically.
>> ...
>
> Well, your approach is essentially that your higher-level
> programmers go around slapping `@trusted:` on files. I'll give
> you that banning "level1 programmers" from checking in any code
> at all probably does help safety.
>
>> 4. @trusted makes for a nice and easily grepped TODO list to
>> measure progress on making the code actually safe
>> ...
>
> No, some uses of `@trusted` are inevitable. `@trusted` means:
> "this has been audited and the author certifies that the
> interface is safe".
>
> What you are describing is not `@trusted`, you are describing
> `@yolo`: "this has not been audited at all but I need it to be
> `@safe` anyway for marketing purposes".
>
>> 5. In a final release, @trusted should be quite rare. But it's
>> up to the team to enforce it.
>> ...
>
> Well, what do you think I am doing here? You are behaving in a
> way I deem irresponsible by promoting this way of using
> `@trusted`.
>
>> 6. @trusted can absolutely be abused. But you can't hide it!
>> ...
>
> I am putting forward a critique of that abuse, which is indeed
> plainly visible.
>
>> 7. Simple is better.
>> ...
>
> Apparently `@trusted` is already too complex for most people to
> wrap their heads around it. It's a pity.
>
>> 8. Not needing to learn new things is better.
>
> The way you suggest `@trusted` should be used is a novelty.
> It's a completely new attribute.
I totally agree with Timon here.
Lately I was speaking with a friend of mine, now a senior Nvidia
manager, curious about what programming language we are using in
DeepGlance as I claimed we care for memory safety. Guess what he
should think about this thread, after having pointed it to
https://dlang.org/spec/memory-safe-d.html
"@trusted functions __MUST__ have a safe interface"
when he could see the language main author writing: `@trusted
void list_delete(list_t list) { free(list); }`, advocating to
slap trusted everywhere?
How you can think someone can just expose himself in advising D
stating that??
I understand the problem you put on the table, but that MUST be
solved with a new greppable attribute or a pragma, abusing
@trusted. There's no plan B.
/P
More information about the Digitalmars-d
mailing list