Thursday, February 28, 2008

bug fixing for JSR223 JRuby engine

I started debuggig JSR223 JRuby engine to make this work on JRuby 1.1RC2. Right now, JRuby engine in CVS, the latest version, is compliant to JRuby 1.1RC1 only. Since some internal APIs that JRuby engine uses has changed in JRuby 1.1 RC2, the engine doesn't work correctly.
Today, I fixed an easy bug related to GlobalVariables. Again, GlobalVariables. Many bugs of JRuby engine have found in its own definition to override GlobalVariables. JRuby engine needs to have own GlobalVariables' definition because JRuby engine has to work under mutil-threads environment. JRuby engine wants single JRuby instance to eval many Ruby scripts concurrently, while JRuby basically degined to eval one script only once in single JRuby instance. GlobalVariables' instance might be critical. Therefore, JRuby engine must protect GlobalVariables' instance not to be refered concurrently and should be resposible to restore an original interal state when each eval completes.

They added new member, defaultSeparator, in GlobalVariables, but this new parameter couldn't get from JRuby engine's GlobalVariables. Just adding one small accessor method fixed this bug.

However, invokeFunction and invokeMethod methods haven't work at all without any exceptions nor compile errors. Fixes for these might take longer time.