Code sharing is in was: There are API changes in Truffle API!

Jaroslav Tulach jaroslav.tulach at oracle.com
Thu Mar 23 05:46:55 UTC 2017


Hi there.
For last nine months I was struggling with code sharing. I tried many ways, 
but I couldn't get it to work properly. But yesterday was a great day: 
Christian Humer managed to merge his code sharing work. Congrats!

I am so excited. The introduction of PolyglotRuntime gives us a chance to 
experiment with sharing of ASTs between different PolyglotEngines - something 
many language implementations wanted to play with. I am thrilled to gain some 
experience with the sharing and then think of proper ways to make it work in 
multi-language interop system as well.

I hope you find Truffle code sharing support interesting too.
-jt


SignatureTest report
Base version: 
Tested version: 
Check mode: bin [throws removed]
Constant checking: on


Added Classes
-------------

com.oracle.truffle.api.TruffleLanguage$ContextReference
com.oracle.truffle.api.nodes.LanguageInfo

Added Nested Classes
--------------------

com.oracle.truffle.api.TruffleLanguage: nested public final static 
com.oracle.truffle.api.TruffleLanguage$ContextReference

Added Constructors
------------------

com.oracle.truffle.api.nodes.RootNode:  constructor protected 
com.oracle.truffle.api.nodes.RootNode.init(com.oracle.truffle.api.TruffleLanguage)
com.oracle.truffle.api.nodes.RootNode:  constructor protected 
com.oracle.truffle.api.nodes.RootNode.init(com.oracle.truffle.api.TruffleLanguage,com.oracle.truffle.api.frame.FrameDescriptor)

Added Methods
-------------

com.oracle.truffle.api.TruffleLanguage: method public final 
com.oracle.truffle.api.TruffleLanguage$ContextReference 
com.oracle.truffle.api.TruffleLanguage.getContextReference()
com.oracle.truffle.api.nodes.RootNode:  method public final 
com.oracle.truffle.api.TruffleLanguage 
com.oracle.truffle.api.nodes.RootNode.getLanguage(java.lang.Class)
com.oracle.truffle.api.nodes.RootNode:  method public final 
com.oracle.truffle.api.nodes.LanguageInfo 
com.oracle.truffle.api.nodes.RootNode.getLanguageInfo()

Added Annotations
-----------------

com.oracle.truffle.api.ExecutionContext:anno 0 java.lang.Deprecated()
com.oracle.truffle.api.TruffleLanguage.createFindContextNode:                   
anno 0 java.lang.Deprecated()
com.oracle.truffle.api.TruffleLanguage.findContext:         anno 0 
java.lang.Deprecated()
com.oracle.truffle.api.nodes.Node.getLanguage:              anno 0 
java.lang.Deprecated()
com.oracle.truffle.api.nodes.Node.getLanguage:              anno 0 
java.lang.Deprecated()
com.oracle.truffle.api.nodes.Node.getLanguage:              anno 0 
java.lang.Deprecated()
com.oracle.truffle.api.nodes.Node.getLanguage:              anno 0 
java.lang.Deprecated()
com.oracle.truffle.api.nodes.Node.getLanguage:              anno 0 
java.lang.Deprecated()
com.oracle.truffle.api.nodes.RootNode.getExecutionContext:  anno 0 
java.lang.Deprecated()
com.oracle.truffle.api.nodes.RootNode.init:                 anno 0 
java.lang.Deprecated()



Added Annotations
-----------------

com.oracle.truffle.api.nodes.Node.getLanguage:              anno 0 
java.lang.Deprecated()
com.oracle.truffle.api.nodes.Node.getLanguage:              anno 0 
java.lang.Deprecated()


Missing Methods
---------------

com.oracle.truffle.api.interop.MessageResolution:           method public 
abstract java.lang.Class 
com.oracle.truffle.api.interop.MessageResolution.language()

Added Methods
-------------

com.oracle.truffle.api.interop.MessageResolution:           method public 
abstract !hasdefault java.lang.Class 
com.oracle.truffle.api.interop.MessageResolution.language()
 anno 0 java.lang.Deprecated()

Added Annotations
-----------------

com.oracle.truffle.api.interop.MessageResolution.language:  anno 0 
java.lang.Deprecated()

Missing Superclasses or Superinterfaces
---------------------------------------

com.oracle.truffle.api.vm.PolyglotEngine$Instrument:        superclass 
java.lang.Object

Added Classes
-------------

com.oracle.truffle.api.vm.PolyglotRuntime
com.oracle.truffle.api.vm.PolyglotRuntime$Builder
com.oracle.truffle.api.vm.PolyglotRuntime$Instrument

Added Superclasses or Superinterfaces
-------------------------------------

com.oracle.truffle.api.vm.PolyglotEngine$Instrument:        superclass 
com.oracle.truffle.api.vm.PolyglotRuntime$Instrument

Added Methods
-------------

com.oracle.truffle.api.vm.PolyglotEngine:                   method public 
com.oracle.truffle.api.vm.PolyglotRuntime 
com.oracle.truffle.api.vm.PolyglotEngine.getRuntime()
com.oracle.truffle.api.vm.PolyglotEngine$Builder:           method public 
com.oracle.truffle.api.vm.PolyglotEngine$Builder 
com.oracle.truffle.api.vm.PolyglotEngine
$Builder.runtime(com.oracle.truffle.api.vm.PolyglotRuntime)
com.oracle.truffle.api.vm.PolyglotEngine$Value:             method public 
com.oracle.truffle.api.source.SourceSection 
com.oracle.truffle.api.vm.PolyglotEngine$Value.getSourceLocation()
com.oracle.truffle.api.vm.PolyglotEngine$Value:             method public 
com.oracle.truffle.api.vm.PolyglotEngine$Value 
com.oracle.truffle.api.vm.PolyglotEngine$Value.getMetaObject()

Added Annotations
-----------------

com.oracle.truffle.api.vm.PolyglotEngine$Instrument:        anno 0 
java.lang.Deprecated()
com.oracle.truffle.api.vm.PolyglotEngine.getInstruments:    anno 0 
java.lang.Deprecated()




More information about the graal-dev mailing list