Selectively Shifting and Constraining Computation
John Rose
john.r.rose at oracle.com
Tue Oct 18 18:18:08 UTC 2022
And backing out of those particular points raised by Remi, I’d like to
say that this was a good read; thanks Mark.
Time-shifting is IMO a deeply fruitful notion, and will probably carry
beyond the specific use cases of adjusting class loading order and
static-final constant values. I hope we can find a few tiny spots in
the language and VM specs where we can remove unimportant restrictions
that will make various forms of time-shifting (forward and backward,
global and local) semantically neutral, with respect to specified
semantics. To do that we will have to make some parts of the
specification more lenient towards reordering of expressions that might
have side effects, and/or some way to constrain side effects. But we
must do so with exquisite care, and (often) with opt-in from the user.
That’s how lazy statics are conceived currently: They can be
reordered because they are uncoupled from their class’s `<clinit>`,
and the uncoupling must be explicitly permitted by the user. It’s a
very interesting problem, and a very worth-while one.
I like the way you link time-shifting to the introduction of
constraints. I already mentioned how the idea of constraints might tie
to call sites. Maybe also data structure fields; who knows. I’m not
in a hurry to figure it all out; it feels like we are at the start of
some years of excellent investigation.
— John
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mail.openjdk.org/pipermail/leyden-dev/attachments/20221018/c8e06f47/attachment.htm>
More information about the leyden-dev
mailing list