5 ms·
Isn't this a general problem of cross-language VMs? Different languages need different object models, and different data representations. [0] At least accordi
by Solarsail 12y ago
Isn't this a general problem of cross-language VMs? Different languages need different object models, and different data representations. [0] At least according to one Parrot developer, the Parrot object model was one of the biggest pain points for porting JS/Ruby/Python to Parrot... Where that object model was meant to be universal, and work for any language. [1] That said, IronPython does still semi-exist [2], and I'm not sure how well JRuby handles interoperability with Java or Jython...
[0] One former dev on one of the Iron* languages posted on reddit about how the CLR failed on its cross language ambitions. I can't find the post, but they gradually found it was mostly C# centric anyways, and ports of other languages were mostly incompatible and second-class
[1] http://whiteknight.github.io/2015/01/15/parrottheend.html http://whiteknight.github.io/2015/01/15/parrottheend.html
[2] http://ironpython.net/announcements/ http://ironpython.net/announcements/ for what it's worth...
- larsberg 12y agoIt's a hard problem, which the COMPlus team knew when they started out. During the early pre-release period, there was a then-NDA-only project, Project 7, which gave grants to people trying to port both commercial languages like perl and academic languages like scheme. I was at Northwestern, where we got a Project 7 grant to work on a scheme implementation (under Ian Horswill, done by Pinku Surana in my group) and scheme language service (done by me). We provided a lot of feedback, but it's tough for a group of a couple of students (or in the case of Perl, one commercial dev) to keep up with the then massive-breaking-changes drops we'd get from DevDiv every 3 months or so and provide feedback when it was on stuff that was, to the developers, around 6 months old. Often, by the time feedback landed, it was "too late" to incorporate because of product cycles and got postponed. Or the stuff we'd request was a dupe of "add tail call instruction" which had been postponed long before any of us got started in Project 7. I say this as somebody who then graduated and then went to work in DevDiv for the next 7 years, where I was treated very well, so I certainly have no axes to grind on that front :-)
- moomin 12y agoThe strange thing is they seemed to have had a bit of cognitive dissonance from the outset. They wanted to support Java and JavaScript, but the semantics of their Java and JavaScript basically made them different syntaxes for C#. On the other hand, they've put a lot of effort into support tail calls. On the third, it's only really used by F#, which is .NET specific. :(
- zeendo 12y agoJRuby interops fine with Java. Any specific thing you might be curious about? One example is Rack applications are hosted by Java web containers Just Fine via a server -> Rack mapping. We use this in production for both a Sinatra app and a Rails app.
- Solarsail 12y agoInteresting! Does that (partially) obsolete this answer [0]? Do Ruby programs see Java objects as a separate kind of Object, or is it seamless? Is there a translation layer anywhere? Does JRuby-Rack have to use wrappers for Java functions? [0] http://stackoverflow.com/questions/2752979/using-jruby-jython-for-ruby-python-interoperability http://stackoverflow.com/questions/2752979/using-jruby-jytho...