Bringing Verse Transactional Memory Semantics to C++ (
from to on 16 Mar 2024 00:54

Verse (paper/slides, language reference) is the “language for the metaverse” being developed by Epic Games and some very well-known PL researchers.

It has some very ambitious and non-traditional features: first-class types, effects, non-strict evaluation, choice (kind of like non-determinism), and transactional memory. Transactional memory means that a Verse computation (transaction) can be aborted early, and all effects produced by the transaction will be reverted.

Verse also is interoperable with C++, and part of that interop is that C++ functions called in Verse must also have their C++ effects reverted. Furthermore, this is for graphically-intensive realtime games so this rollback implementation must cause as minimal overhead as possible. That’s what this article is about.

There’s already some Verse code running in Fortnite and you can write Fortnite plugins in Verse today, but it’s very WIP.


threaded - newest on 16 Mar 2024 01:50 collapse

Haven’t read the paper yet, but skimming the front page of the docs, their description makes “choice” sound more like Java/C++ exceptions than Prolog’s choice point system.

Edit: Yeah. It looks like the if expression takes a fallible expression rather than a Boolean expression. It’s basically a catch in other languages.

Maybe I’m being a bit too critical. But I’m a fan of choice in logic programming, and this ain’t that. on 17 Mar 2024 00:06 collapse

Huh, the docs are the only place where I see if defined in that way; in the slide decks and the paper the term “choice” means what you would expect in a logic programming context, and they even show concrete examples of unification. Maybe the Unreal Engine is using a subset of the full language for its dialect so that it can be mapped to and from C++? on 19 Mar 2024 19:25 collapse

Ah, ok. I’ll have to check this out in more detail.