Unifying Memory Addresses and Memory Segments

The Java 19 Foreign Function and Memory API (FFM API) uses zero-length memory segments to encode pointers that are temporally safe (this replaces the NativeSymbol abstraction that was available in Java 18). It turns out that there's more to this approach than meets the eye, as memory segments can (with few tweaks) be used as a replacement for memory address everywhere in the FFM API, which leads to a simpler and more symmetric API.

More at https://mail.openjdk.org/pipermail/panama-dev/2022-July/017181.html