D Language Foundation Monthly Meeting Summary for November 2022
Adam D Ruppe
destructionator at gmail.com
Thu Jan 12 15:01:43 UTC 2023
On Thursday, 12 January 2023 at 11:47:26 UTC, Mike Parker wrote:
> Andrei asked Razvan about the status of [the ProtoObject
> DIP](https://github.com/dlang/DIPs/blob/master/DIPs/other/DIP1042.md). Razvan said that Adam Ruppe had raised some valid complaints in the DIP's pull request thread, and those were reinforced in the community review.
> [...]
> Andrei thinks it's worth making an effort to resolve any issues
> the proposal has.
What I'd recommend doing is migrating the existing Object to
match the desired capabilities.
The biggest complaint people have that has no real solution in
the existing language is the unconditional presence of the
monitor field. I actually think you could infer this without too
much of a breaking change; the presence of a `synchronized(this)`
in the same module as the class definition could infer its
necessity and add it to the type (this would also cover
`synchronized` classes and methods, of course), but in other
modules you couldn't be so sure (since they can be compiled
separately).
This would break anyone who uses synchronized(random_object)
(which includes me btw) but the migration would be so simple
(change the type) and it'd retain compatibility with old
compilers so I think it'd be a minimum amount of pain.
Other option is to just remove it and require everyone to use an
explicit Mutex field, which also has a number of advantages, but
is more invasive and means removing synchronized classes and
methods as language features entirely.
Among other complaints in that dip were opEquals, which is
already fixed (and tbh could just be removed but i think it is
fairly harmless to keep), factory which is slated for removal
already, opCmp (which currently throws if you call it! so it
isn't used by anything and could be simply removed), and opHash
which recently was subjected to a random breaking change anyway
(and a bad one that didn't achieve anything, but it shows that
breakage is obviously on the table), so everything else already
is being addressed in Object itself.
More information about the Digitalmars-d-announce
mailing list