On Tue, Jun 21, 2022 at 06:28:14PM +, Paul Backus via Digitalmars-d-learn
wrote:
> On Tuesday, 21 June 2022 at 17:33:46 UTC, H. S. Teoh wrote:
> >
> > Does the language allow you to declare a @system delegate inside
> > @safe code?
>
> Yes. This compiles:
>
> void main() @safe
> {
>
On 6/21/22 1:33 PM, H. S. Teoh wrote:
On Tue, Jun 21, 2022 at 01:29:47PM -0400, Steven Schveighoffer via
Digitalmars-d-learn wrote:
```d
void foo(void delegate() @system dg) @safe {
int *bar;
@system void corrupt() { bar = cast(int *)0xdeadbeef;}
dg = &corrupt;
// can I call dg
On Tuesday, 21 June 2022 at 17:33:46 UTC, H. S. Teoh wrote:
Does the language allow you to declare a @system delegate
inside @safe code?
Yes. This compiles:
void main() @safe
{
void delegate() @system dg = () @system { /* do scary
stuff */ };
}
On Tue, Jun 21, 2022 at 01:29:47PM -0400, Steven Schveighoffer via
Digitalmars-d-learn wrote:
> On 6/21/22 1:17 PM, H. S. Teoh wrote:
[...]
> > This is why I've proposed in the past that @safe functions should be
> > allowed to call @system delegates that they receive as arguments. The
> > reasoni
On 6/21/22 1:17 PM, H. S. Teoh wrote:
On Tue, Jun 21, 2022 at 04:47:44PM +, Antonio via Digitalmars-d-learn wrote:
On Tuesday, 21 June 2022 at 16:20:32 UTC, Antonio wrote:
My code starts to be a @safe/@trusted mess (because external
libraries). The only solution I have is to "wrap" them o
On Tue, Jun 21, 2022 at 04:47:44PM +, Antonio via Digitalmars-d-learn wrote:
> On Tuesday, 21 June 2022 at 16:20:32 UTC, Antonio wrote:
>
> > My code starts to be a @safe/@trusted mess (because external
> > libraries). The only solution I have is to "wrap" them or to trust
> > all code by def
On 6/21/22 12:33 PM, Antonio wrote:
On Tuesday, 21 June 2022 at 15:14:43 UTC, Steven Schveighoffer wrote:
You delegate doesn't seem to be marked @safe as well.
Thanks a lot Steve,
I didn't found a way (or example) to specify the delegate must be @safe
until I have found vibe.d.db.post
On Tuesday, 21 June 2022 at 16:20:32 UTC, Antonio wrote:
My code starts to be a @safe/@trusted mess (because external
libraries). The only solution I have is to "wrap" them or to
trust all code by default (I'm using vibe.d that forces @safe
code)
Only as a comment: I can remember now when d
On Tuesday, 21 June 2022 at 15:14:43 UTC, Steven Schveighoffer
wrote:
You delegate doesn't seem to be marked @safe as well.
Thanks a lot Steve,
I didn't found a way (or example) to specify the delegate must be
@safe until I have found vibe.d.db.postgress implementation (that
you maint
On Tuesday, 21 June 2022 at 15:13:36 UTC, Paul Backus wrote:
If the destructor is `@system`, then the only way to call
`destroy` in `@safe` code is to (1) determine the conditions
necessary to call the destructor without violating memory
safety, (2) ensure that those conditions are met (using
On Tuesday, 21 June 2022 at 15:13:36 UTC, Paul Backus wrote:
`destroy` should be `@safe` as long as the destructor it's
calling is `@safe`.
For classes, the current dmd+druntime implementation makes it
impossible to determine statically if the destructor is safe or
not.
Structs I'm not sure
On 6/21/22 10:40 AM, Antonio wrote:
I'm using explicitly destroy!false(obj) for a "deterministic" resources
release.
I replicate the c# "using" pattern, or the python "with" pattern with my
own "use" template supposing object are RAII
i.e.:
```d
Item[] items = query("...").use( (Answer a) =
On Tuesday, 21 June 2022 at 14:40:41 UTC, Antonio wrote:
The problem:
"use" can't be @safe because it contains a call to "destroy".
`destroy` should be `@safe` as long as the destructor it's
calling is `@safe`.
If the destructor is `@system`, then the only way to call
`destroy` in `@safe`
I'm using explicitly destroy!false(obj) for a "deterministic"
resources release.
I replicate the c# "using" pattern, or the python "with" pattern
with my own "use" template supposing object are RAII
i.e.:
```d
Item[] items = query("...").use( (Answer a) =>
a.rangify.map!(rowToItem).array()
14 matches
Mail list logo