|
锁定老贴子 主题:JRuby 1.0的一个严重的bug
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
|---|---|
| 作者 | 正文 |
|
时间:2007-07-15 关键字: JRuby
if "string" puts "true" else puts "false" end 很简单的代码,在CRuby和JRuby中运行得到了不同的结果。 保存为test.rb,分别使用CRuby和JRuby运行: ruby test.rb test.rb:5: warning: string literal in condition true jruby test.rb false CRuby版本:ruby 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32] JRuby版本:ruby 1.8.5 (2007-06-07 rev 3841) [x86-jruby1.0] 因为《Ruby for Rails中文版》中说字符串求值结果为true,而在JRuby中却得到false。 虽说是JRuby 1.0的一个很弱智的bug,不过这也暴露出一个问题,就是Ruby应该尽早出一个语言的规范了。 声明:JavaEye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
|
|
| 返回顶楼 | |
|
时间:2007-07-15
这个应该很明确了吧,ruby里只有false和nil为'假'
|
|
| 返回顶楼 | |
|
时间:2007-07-15
寒。。。groovy也是true的,这个JRuby的确很弱智。。。
难道是按照java的规范来写的?? |
|
| 返回顶楼 | |
|
时间:2007-07-16
确实这是一个bug,因为这里是字符串,所以和正则表达式匹配有些弄混了。从代码中解析出来的结果,不是当作一个字符串,而是要做一次匹配,估计是parser的问题。
我已经替你将这个bug发到JRuby的开发邮件列表中了,相信很快他们就会改过来。 |
|
| 返回顶楼 | |
|
时间:2007-07-16
一直有个疑问:
JRuby单纯解释执行Ruby代码,速度怎么可能比CRuby快? |
|
| 返回顶楼 | |
|
时间:2007-07-16
hideto 写道 一直有个疑问:
JRuby单纯解释执行Ruby代码,速度怎么可能比CRuby快? 因为有JVM提供JIT |
|
| 返回顶楼 | |
|
时间:2007-07-17
Thomas Enebo已经解决了这个问题,下一个发行版中应该就没有这个问题了。如果急需,可以考虑直接从SVN上拿最新版本。
hideto 写道 一直有个疑问:
JRuby单纯解释执行Ruby代码,速度怎么可能比CRuby快? 因为JRuby已经支持了部分代码的编译。JRuby号称提供了JIT,实际上,编译多次运行的代码。编译的工作本质上和XRuby一样。但是,JRuby对编译的支持并不完整,对于那些无法编译的部分,依然采用解释的方式执行。所以,对于某些代码,JRuby可以运行得很快,而对于很多代码,它的性能还是上不来。 |
|
| 返回顶楼 | |
|
时间:2007-07-17
dreamhead 写道 Thomas Enebo已经解决了这个问题,下一个发行版中应该就没有这个问题了。如果急需,可以考虑直接从SVN上拿最新版本。
多谢。暂时也不是很急需。 用JRuby运行一些应用,常常会发现一些奇怪的现象,而在CRuby上运行完全不存在。我前一段时间测试Beast的时候,一进入用户列表页面,JRuby就报错,而在CRuby上完全没有问题。 我还会坚持使用JRuby,如果发现了新的问题,再到这里来讨论。 |
|
| 返回顶楼 | |
|
时间:2007-07-17
dlee 写道 用JRuby运行一些应用,常常会发现一些奇怪的现象,而在CRuby上运行完全不存在。我前一段时间测试Beast的时候,一进入用户列表页面,JRuby就报错,而在CRuby上完全没有问题。
因为JRuby并不完全兼容C Ruby,所以,有一些问题是正常的。 dlee 写道 我还会坚持使用JRuby,如果发现了新的问题,再到这里来讨论。
我倒是觉得如果你发现问题,最好还是报告到JRuby的邮件列表或者JIRA中。仅仅报告在这里,问题是无法得到解决的。 |
|
| 返回顶楼 | |
|
时间:2007-07-17
dreamhead 写道 我倒是觉得如果你发现问题,最好还是报告到JRuby的邮件列表或者JIRA中。仅仅报告在这里,问题是无法得到解决的。
两边都会说的,呵呵。只发到JIRA中,这里也不会有人知道。 |
|
| 返回顶楼 | |














