druntime function to query whether any exception is "in flight"
Petar
Petar
Wed Oct 21 06:22:28 UTC 2020
On Tuesday, 20 October 2020 at 17:45:19 UTC, Andrei Alexandrescu
wrote:
> On 10/20/20 11:23 AM, Adam D. Ruppe wrote:
>> On Tuesday, 20 October 2020 at 15:16:33 UTC, Andrei
>> Alexandrescu wrote:
>>> One change please - can you have it return the current
>>> exception as a Throwable (and null if no exception in flight)?
>>
>>
>> and prolly at least document that it shouldn't let the
>> reference escape cuz otherwise it complicates memory freeing
>> of the exception.
>>
>> basically it would be a borrowed reference. again at least
>> just documented, not necessarily enforced, but people should
>> be aware escaping it is UB.
>
> Nice.
>
> extern(C) scope(Throwable) _d_eh_getExceptionInFlight();
onlineapp.d(1): Error: declaration expected, not `(`
extern(C) scope Throwable _d_eh_getExceptionInFlight();
onlineapp.d(1): Error: function
`onlineapp._d_eh_getExceptionInFlight` functions cannot be `scope`
Slightly off-topic: Unfortunately `scope` is a parameter storage
class and not a type qualifier (which is probably the biggest
point of contention regarding dip1000) so you can't express what
you meant above.
This has certain issues:
* it makes expressing certain code patterns that should be safe
impossible in @safe code (which are e.g. safe in Rust)
* it makes some holes in @safe (both language and library) hard
to fix. See e.g.: https://issues.dlang.org/show_bug.cgi?id=17764
* doesn't help with concurrency safety issues, like these
proposals:
* https://forum.dlang.org/post/k831b6$1368$1@digitalmars.com
*
https://forum.dlang.org/post/kluaojijixhwigoujeip@forum.dlang.org
More information about the Digitalmars-d
mailing list