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.
[ Parent
| on HN ]
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.
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.