intermediate representation
Thomas Wuerthinger
thomas.wuerthinger at oracle.com
Tue Dec 23 14:07:12 UTC 2014
Thanks for your comments, Raffaello.
I understood your question to be more about the state-of-the-art from a technical perspective. Btw, there is in addition to the mentioned large-scale Ruby, R, and Python efforts also a 100% ECMAScript compatible JavaScript implementation using the open source Truffle dynamic language framework based on the Graal OpenJDK project available. Check out the OTN (Oracle Technology Network) technology preview download at http://www.oracle.com/technetwork/oracle-labs/program-languages/overview/index.html <http://www.oracle.com/technetwork/oracle-labs/program-languages/overview/index.html>. Please feel invited to test our implementation on workloads you care about! Early feedback will help us improve the artefact.
Cheers, thomas
> On 23 Dec 2014, at 12:23, Marcus Lagergren <lagergren at gmail.com> wrote:
>
> Raffaello,
>
> Thanks for your interest!
>
> Nashorn indeed, like you say, has to run well on existing JVMs, so significant development time is spent on this. It also already has several customers and is productized as part of the JDK. This means that it follows the rest of the JDK release cycle with zero bug bounce days, ramp downs, testing criteria and so on. This, sadly, makes us a little less flexible than Truffle, but that is what we need to do in order to ship with the JDK as a supported product.
>
> We have spent the autumn implementing a TypeScript implementation on top of Nashorn and also using Ruby and Python as example languages to understand what the IR will require. We have a very good understanding of where we are going. It feels like most of the “thinking” is complete.
>
> We have incorporated new IR ideas with earlier IR drafts that existed solely to make code generation in Nashorn for JavaScript only much simpler - a lot of transforms don’t do so well on an AST.
>
> We have also looked at the IR in JRuby 9000 to find as much common future direction as we can for a multi language dynamic language IR.
>
> As soon as the thesis is available for publication, I will post a link on this list.
>
> The serious _implementation_ IR work for 9 will start in January, with Attila tech leading. I think we should try to keep it as open as possible on this list, so you can contribute from the beginning.
> I also suggest we try to do this in the new sandbox forest, so you can be with us from the start, Raffaello.
> (I am going to move my drastic warmup improvement branch there as soon as it becomes test compliant, and other 9 projects, such as ec6 support would probably do well there too.)
>
> http://www.javaworld.com/article/2689365/java-platform/openjdk-project-opens-up-java-9-to-collaboration-experimentation.html <http://www.javaworld.com/article/2689365/java-platform/openjdk-project-opens-up-java-9-to-collaboration-experimentation.html>
>
> /M
>
>> On 23 Dec 2014, at 11:40, Raffaello Giulietti <raffaello.giulietti at supsi.ch> wrote:
>>
>> Hi Thomas,
>>
>> I'm familiar with the beautiful and elegant Truffle/Graal framework, the related papers and presentations, and the ongoing work on the languages you mention.
>>
>> What is attractive about the Nashorn team's approach, however, is that the 100% compliant ECMAScript implementation works today on a pristine JVMs, has official support (which is an immensely important selling point in commercial environments) and has impressive performance. If you add that the Nashorn people would like to put their experience and work further by offering a complete toolkit for dynamic language implementors, well, the choice whether to implement a language on Truffle/Graal or on a Nashorn-like framework becomes a hard task.
>>
>> Both approaches are interesting enough to be tried out.
>>
>> On the one hand, I feel that Truffle/Graal is more productive today, partly because of its intuitive DSL, partly because of its AST interpreter approach. Unfortunately, as far as I know, it still doesn't have the official support that would convince commercial customers. Hence, although the chances are in its favor (it's too interesting to be ignored), it's still unclear to me if Truffle/Graal will become a mainstream product or if it will be confined in labs and be used by aficionados only. (Too many interesting projects have followed this sad fate.)
>>
>> On the other hand, Nashorn is fully supported as a product but the framework is probably not mature enough to be usable as a toolkit for other languages. But since it has already won the battle against (often stubborn and shortsighted) product managers, it has perhaps more concrete chances for further development and further ideas.
>>
>> Hard choice!
>>
>> Cheers
>> Raffaello
>>
>>
>>
>> On 2014-12-23 09:38, Thomas Wuerthinger wrote:
>>> Raffaello,
>>>
>>> Regarding your question about state of the art, you might also want to look at this paper from 2013: http://lafo.ssw.uni-linz.ac.at/papers/2013_Onward_OneVMToRuleThemAll.pdf. I do not think that it is the future dynamic languages toolkit Attila speaks about, but it might be related work. It is a dynamic languages toolkit with several open source projects building implementations on top of it:
>>> - Ruby: https://github.com/jruby/jruby/wiki/Truffle
>>> - R: https://bitbucket.org/allr/fastr
>>> - Python: https://bitbucket.org/ssllab/zippy
>>> - Smalltalk: https://github.com/smarr/TruffleSOM
>>>
>>> Cheers, thomas
>>>
>>>
>>>> On 22 Dec 2014, at 18:48, Raffaello Giulietti <raffaello.giulietti at supsi.ch <mailto:raffaello.giulietti at supsi.ch>> wrote:
>>>>
>>>> Hi,
>>>>
>>>> in some of the published presentations about Nashorn, Attila (on behalf of the Nashourn team, I guess) speaks about his vision for a dynamic languages toolkit to be used by language implementers targeting the JVM. One of its main components is a new IR resembling untyped JVM bytecode.
>>>>
>>>> I would be interested in hearing something more specific about this topic.
>>>>
>>>> What is the current state-of-the-art?
>>>> What can be expected in the next few months?
>>>> Is there a discussion group somewhere?
>>>>
>>>> Greetings
>>>> Raffaello
>>>
>>
>
More information about the nashorn-dev
mailing list