Code sharing is in
Jaroslav Tulach
jaroslav.tulach at oracle.com
Mon Mar 27 08:19:01 UTC 2017
On pátek 24. března 2017 14:41:44 CEST Benoit Daloze wrote:
> So how does one achieve code sharing?
> What "code" can be shared and how?
Hello Benoit,
we still don't have a tutorial for language implementor's except the extra-
ordinary videos:
http://graalvm.github.io/truffle/javadoc/com/oracle/truffle/tutorial/newlanguage/
package-summary.html
We only document various bits and pieces in a class/method Javadoc. For
example the http://graalvm.github.io/truffle/javadoc/com/oracle/truffle/api/vm/
PolyglotRuntime.html has a reference to
http://graalvm.github.io/truffle/javadoc/com/oracle/truffle/api/TruffleLanguage.html
which now contains sentences like:
- A new language implementation instance is instantiated for each runtime that
is created using the runtime builder.
- Global state can be shared between multiple context instances by saving them
as a field of the TruffleLanguage subclass
I know, it isn't much, but hopefully enough to get you started.
-jt
PS: Feel free to report a bug if some of existing info is wrong or misleading.
>
> On Fri, Mar 24, 2017 at 12:53 PM, Jaroslav Tulach <
>
> jaroslav.tulach at oracle.com> wrote:
> > On čtvrtek 23. března 2017 6:46:55 CET Jaroslav Tulach wrote:
> > > 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.
> >
> > FYI: Javadoc for the new APIs for language integrators can be found at:
> > http://graalvm.github.io/truffle/javadoc/com/oracle/
> > truffle/api/vm/package-summary.html
> >
> > -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.TruffleLan
> >
> > > guage) com.oracle.truffle.api.nodes.RootNode: constructor protected
> > > com.oracle.truffle.api.nodes.RootNode.init(com.oracle.
> >
> > truffle.api.TruffleLan
> >
> > > guage,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