News for hackers. Stuff that matters.
Re:GraalVM: Run Programs Faster Anywhere by weberc2 on Tuesday April 17, 2018 @07:04PM (#16863075)
Me too. I’m thinking there must be some library that knows how to marshal between object representations. Surely Graal doesn’t have universal objects that suit every language.
Re:GraalVM: Run Programs Faster Anywhere by miguro on Tuesday April 17, 2018 @07:17PM (#16863154)
That's the thing - there is no marshaling. The objects are passed between the languages as pointers under-the-hood. There is a standard way of invoking methods/functions on those pointers, that works across all languages.
Re:GraalVM: Run Programs Faster Anywhere by chrisseaton on Tuesday April 17, 2018 @09:32PM (#16863941)
To give you an idea of how deep this goes - you can pass a Ruby object to a C function and the C function can read and write it as if it was a pointer to a structure.

http://chrisseaton.com/truffleruby/structs/

Re:GraalVM: Run Programs Faster Anywhere by mike_hearn on Wednesday April 18, 2018 @03:42AM (#16865491)
It has a form of universal object used for scripting languages (but not more static languages like Java or C++). But using it is not required, it's just a convenience to make implementing languages easier.

What it actually provides is a form of "universal abstract syntax tree". So if a C program wants to access a JavaScript object by writing "a->b = c" then the dereference is turned into a snippet of JavaScript code (in effect) and inlined right into the C function.