[graalvm-users] Calling Ruby from R

Chris Seaton chris.seaton at oracle.com
Mon Oct 1 08:19:12 PDT 2018


Thanks I’ve created an issue to track this and we’ll look at it soon.

https://github.com/oracle/truffleruby/issues/1434

> On 28 Sep 2018, at 16:46, Rodrigo Botafogo <rodrigo.a.botafogo at gmail.com> wrote:
> 
> Hello...
> 
> I have the following code:
> 
> rf = Polyglot.eval("R", <<-R)
>   function(ruby_obj) {
>     print(ruby_obj);
>     ruby_obj$to_s();
>   }
> R
> 
> h = [1, 2, 3, 4]
> puts h
> 
> rf.call(h)
> puts h
> 
> The result:
> 
> 1
> 2
> 3
> 4
> [polyglot value]
> [1] 1 2 3 4
> 
> An error occurred while loading ./specs/tmp.rb.
> Failure/Error: rf.call(h)
> 
> RuntimeError:
>   org.truffleruby.language.control.RaiseException: can't convert String into Integer with to_int (TypeError) (RInternalError)
>       from com.oracle.truffle.r.nodes.function.FunctionDefinitionNode.execute(FunctionDefinitionNode.java:318)
>       from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callProxy(OptimizedCallTarget.java:269)
>       from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callRoot(OptimizedCallTarget.java:258)
>       from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callBoundary(OptimizedCallTarget.java:248)
>       from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.doInvoke(OptimizedCallTarget.java:230)
>       from org.graalvm.compiler.truffle.runtime.OptimizedCallTarget.callDirect(OptimizedCallTarget.java:213)
>       from org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.callProxy(OptimizedDirectCallNode.java:86)
>       from org.graalvm.compiler.truffle.runtime.OptimizedDirectCallNode.call(OptimizedDirectCallNode.java:70)
>       from com.oracle.truffle.r.nodes.function.call.CallRFunctionNode.execute(CallRFunctionNode.java:59)
>       from com.oracle.truffle.r.nodes.function.RCallNode$DispatchedCallNode.execute(RCallNode.java:1155)
>   Caused by:
>   (eval):3:in `convert_type': can't convert String into Integer with to_int (TypeError)
>       from (eval):3:in `rb_to_integer'
>       from (eval):3:in `rb_to_int'
>       from (eval):3:in `rb_num2long'
>       from (eval):3:in `element_reference_fallback'
>       from (eval):3:in `[]'
>       from (eval):3:in `function(ruby_obj) {\n    print(ruby_obj)'
>   (exception java.lang.NullPointerException null org.truffleruby.language.backtrace.BacktraceFormatter.formatForeign(BacktraceFormatter.java:259)
>       from /home/rbotafogo/desenv/cantata/specs/tmp.rb:35:in `<top (required)>'
>       from /home/rbotafogo/lib/graalvm-ce-1.0.0-rc6/jre/languages/ruby/lib/ruby/gems/2.4.0/gems/rspec-core-3.8.0/lib/rspec/core/configuration.rb:2034:in `load'
>       from /home/rbotafogo/lib/graalvm-ce-1.0.0-rc6/jre/languages/ruby/lib/ruby/gems/2.4.0/gems/rspec-core-3.8.0/lib/rspec/core/configuration.rb:2034:in `load'
>       from /home/rbotafogo/lib/graalvm-ce-1.0.0-rc6/jre/languages/ruby/lib/ruby/gems/2.4.0/gems/rspec-core-3.8.0/lib/rspec/core/configuration.rb:2034:in `__send__'
>       from /home/rbotafogo/lib/graalvm-ce-1.0.0-rc6/jre/languages/ruby/lib/ruby/gems/2.4.0/gems/rspec-core-3.8.0/lib/rspec/core/configuration.rb:2034:in `load_file_handling_errors'
>       from /home/rbotafogo/lib/graalvm-ce-1.0.0-rc6/jre/languages/ruby/lib/ruby/gems/2.4.0/gems/rspec-core-3.8.0/lib/rspec/core/configuration.rb:1560:in `block in load_spec_files'
>       from /home/rbotafogo/lib/graalvm-ce-1.0.0-rc6/jre/languages/ruby/lib/ruby/gems/2.4.0/gems/rspec-core-3.8.0/lib/rspec/core/configuration.rb:1558:in `each'
>       from /home/rbotafogo/lib/graalvm-ce-1.0.0-rc6/jre/languages/ruby/lib/ruby/gems/2.4.0/gems/rspec-core-3.8.0/lib/rspec/core/configuration.rb:1558:in `load_spec_files'
>       from /home/rbotafogo/lib/graalvm-ce-1.0.0-rc6/jre/languages/ruby/lib/ruby/gems/2.4.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:98:in `setup'
>       from /home/rbotafogo/lib/graalvm-ce-1.0.0-rc6/jre/languages/ruby/lib/ruby/gems/2.4.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:86:in `run'
>       from /home/rbotafogo/lib/graalvm-ce-1.0.0-rc6/jre/languages/ruby/lib/ruby/gems/2.4.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:71:in `run'
>       from /home/rbotafogo/lib/graalvm-ce-1.0.0-rc6/jre/languages/ruby/lib/ruby/gems/2.4.0/gems/rspec-core-3.8.0/lib/rspec/core/runner.rb:45:in `invoke'
>       from /home/rbotafogo/lib/graalvm-ce-1.0.0-rc6/jre/languages/ruby/lib/ruby/gems/2.4.0/gems/rspec-core-3.8.0/exe/rspec:4:in `<top (required)>'
>       from /home/rbotafogo/lib/graalvm-ce-1.0.0-rc6/jre/languages/ruby/bin/rspec:23:in `load'
>       from /home/rbotafogo/lib/graalvm-ce-1.0.0-rc6/jre/languages/ruby/bin/rspec:23:in `load'
>       from /home/rbotafogo/lib/graalvm-ce-1.0.0-rc6/jre/languages/ruby/bin/rspec:23:in `<main>'
>   Translated to internal error
> 
> 
> -- 
> Rodrigo Botafogo
> 
> _______________________________________________
> GraalVM-Users mailing list
> GraalVM-Users at oss.oracle.com
> https://oss.oracle.com/mailman/listinfo/graalvm-users




More information about the GraalVM-Users mailing list