mirror of
https://github.com/apple/pkl.git
synced 2026-01-11 22:30:54 +01:00
Move to the Truffle Object Model #226
Reference in New Issue
Block a user
Delete Branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @KushalP on GitHub (Oct 22, 2024).
The Dynamic Object Model APIs were introduced with GraalVM 20.2.0, and the Static Object Model APIs were introduced with GraalVM 21.3.0.
Using these Object Model APIs would be useful for caching, reducing safety checks, and improving profiling.
@odenix commented on GitHub (Oct 24, 2024):
A redesign of the interpreter's object model could explore the following topics:
For example, different representations could be used for small, large, and surrogate listings.
Truffle supports this via Truffle Libraries.
java.lang.Stringwith TruffleStringA thread-safe object model could open the door to multi-threaded evaluation of Pkl code in the same
Evaluator.As far as I know, code generated by Truffle is thread-safe.
@KushalP commented on GitHub (Oct 24, 2024):
Agreed. As an extension to this it would be interesting to explore if
ListingandListcould be consolidated alongsideMappingandMap. This PR already tries to consolidate the APIs of these two structures, but it could go further with Truffle Libraries to have the "representation" choices around lazy vs. eager be modelled transparently: https://github.com/apple/pkl/pull/683@odenix commented on GitHub (Oct 24, 2024):
As of 0.26, Listing and List have very different semantics (late binding, etc.) and performance characteristics (lazy amendable object vs. eager persistent collection). Unless that changes (and maybe that's what you'd like to explore?), I don't think their internal representations can/should be unified.
@KushalP commented on GitHub (Oct 24, 2024):
I'm purely trying to find ways to help. I'll leave that up to the Pkl team.