Elektrine lite

← Feed

@zwarich@hachyderm.io

2026-05-20 14:49 UTC

@saikou@gts.chuuni.solutions The most relevant line of research here is probably the area of object initialization analyses for Java-like languages. This fell out of fashion for a while, but was later revisited. I would consider this work of Liu, Lhotak, et al to be a good starting point: https://dl.acm.org/doi/10.1145/3428243 There is a video of the talk on YT: https://www.youtube.com/watch?v=Ha37rTljRoA They have a followup paper doing something similar using abstract interpretation: https://dl.acm.org/doi/10.1145/3486610.3486895

Replies (1)

  • @zwarich@hachyderm.io 2026-05-20 17:29

    @saikou@gts.chuuni.solutions All of this work is very closely connected to other work on typestate, which could loosely be defined as a flavor of flow-sensitive typing that is based around the idea of a protocol of valid states/transitions on a variable/object. Traditional typestate is very non-monotonic (since it wanted to enforce that resources are appropriately released), whereas initialization analysis in the context of Java is monotonic. However, in a systems language you might want to uninitialize a field that was previously initialized. I was trying to find a particular reference that isolates this point, but with typestate you don't need to expose information about the actual fields of your module's abstract types. Instead, you can expose the types along with an abstract (semi)lattice of potential states and annotations indicating how your public functions transition between states.

    Open ##5277309