2007-08-08
xruby 0.3.0 released
I am pleased to announce that XRuby 0.3.0 is released:
http://code.google.com/p/xruby/downloads/list
We have fixed lots of bugs and made significant improvement in the code.
Changes from 0.2.1 to 0.3.0:
1. Use annotation and code generation to bind Java level method to Ruby level method (I will talk more about this later).
2. More unit tests passed. We have not eliminated all test failures in test/ruby. But as most of the failures are caused by the implementation of builtin libraries, we will be able to fixed them soon in 0.4.0.
Changes from 0.2.0 to 0.2.1:
1) Dreamhead optimized method/block calls for methods with zero/one
arguments. It makes our performance even better.
2) ZhangYu improved Java integration significantly, he also created a wiki page with lots of good examples:
http://code.google.com/p/xruby/wiki/JavaIntegration
3) Mechiland and I made more ruby unit tests pass.
The most significant change of 0.3.0 is the using of annotation and code generation to bind Java level method to ruby level method. The idea was inspired by the discussions about Java 5 on jruby's maillist, and dreamhead turned it into reality quickly.
As we know, a Ruby method does a little bit more than a Java method. So if we have a method like this in Java:
I have not used Java 5's annotation feature before, but this looks like an very elegant solution.
Thank everyone who has contributed to this release.
http://code.google.com/p/xruby/downloads/list
We have fixed lots of bugs and made significant improvement in the code.
Changes from 0.2.1 to 0.3.0:
1. Use annotation and code generation to bind Java level method to Ruby level method (I will talk more about this later).
2. More unit tests passed. We have not eliminated all test failures in test/ruby. But as most of the failures are caused by the implementation of builtin libraries, we will be able to fixed them soon in 0.4.0.
Changes from 0.2.0 to 0.2.1:
1) Dreamhead optimized method/block calls for methods with zero/one
arguments. It makes our performance even better.
2) ZhangYu improved Java integration significantly, he also created a wiki page with lots of good examples:
http://code.google.com/p/xruby/wiki/JavaIntegration
3) Mechiland and I made more ruby unit tests pass.
The most significant change of 0.3.0 is the using of annotation and code generation to bind Java level method to ruby level method. The idea was inspired by the discussions about Java 5 on jruby's maillist, and dreamhead turned it into reality quickly.
As we know, a Ruby method does a little bit more than a Java method. So if we have a method like this in Java:
public class RubyString {
public RubyFloat to_f() {
...
}
}
To turn it (RubyString.to_f) into a Ruby level method, we have to add a few more code to 'wrap' into a class (extends RubyMethod) and 'register' it (defineMethod), e.g:public class String_to_f extends RubyNoArgMethod {
protected RubyValue run(RubyValue receiver, RubyBlock block) {
return ((RubyString)receiver).to_f();
}
}
...
RubyRuntime.StringClass.defineMethod("to_f", new String_to_f());
For every method, we need to write similar code and it is not fun to repeat yourself. In 0.3.0, we no longer have to do this anymore. As as long as you add annotation like this:@RubyLevelClass(name="String")XRuby will turn it into a Ruby level method automatically (using ASM to generate Java bytecode).
public class RubyString {
@RubyLevelMethod(name="to_f")
public RubyFloat to_f() {
...
}
}
I have not used Java 5's annotation feature before, but this looks like an very elegant solution.
Thank everyone who has contributed to this release.
发表评论
- 浏览: 12175 次

- 详细资料
搜索本博客
最新评论
-
gem.config的一个小问题
haha, 正是我想要的。 谢谢!
-- by yawl -
gem.config的一个小问题
config.gem 'solr-ruby', :lib => 'solr'
-- by rainux -
最近的ruby的vulnerabilit ...
robbin 写道哈哈,原来是一个项目,那肯定需要做一些代码方面的修改,无可避免 ...
-- by neodoxy -
最近的ruby的vulnerabilit ...
哈哈,原来是一个项目,那肯定需要做一些代码方面的修改,无可避免的。
-- by robbin -
最近的ruby的vulnerabilit ...
robbin 写道neodoxy 写道Quake Wang 写道phoenix5 ...
-- by neodoxy






评论排行榜