On Friday, 22 May 2020 at 01:22:19 UTC, Walter Bright wrote:
3. Wrap the call to massage_data() with:() @trusted { massage_data(parameters); } ();
The correct solution is to encapsulate the C functions as-needed with a higher level API - and this is somewhat commonly done already and - as i understand it anyway - the whole purpose of @trusted being function level instead of statement level.
2. Existing, working code breaks.
@safe by default is probably the biggest breaking change D has ever seen as of this point. It eclipses anything in the D2 transition.
It is D3 in all by name. My preference, as I've said many times, is to fix the propagation of attributes into child scopes and leave the defaults alone, but failing that, I'd actually say embrace this: if we're doing big breakage anyway, go big and do it right.
