Ruby 是不是之前 Ruby JIT 的努力都失败了?或者说为什么没有流行起来?

ecnelises · 2019年01月13日 · 最后由 watsy0007 回复于 2019年01月17日 · 2944 次阅读

从 Rubinius 到 JRuby、IronRuby……

vb.net 这样的亲儿子都没在 .net 里活的滋滋润润,IronRuby…

这次 mjit 性能提升非常有限,比 python 的 cython 或者 numba 差多了

这些都跟 JIT 没啥关系,都是不同的 Ruby 实现,JRuby 也不能说失败,至少 ELK 套装的 L 就是 JRuby 实现的。

IronRuby 坑了很可惜,本来这个是作者赌气的产物(根据一些资料的八卦,当时有人提出 .Net 上不可能实现高效的动态语言的虚拟机,作者不服不仅要试试而且要用大家公认不快的 Ruby 来,这个计划的最终产物并不是 IronRuby 而是 .Net 平台上非常重要的组件 动态语言运行时 DLR)

这次 mjit 能成还是因为路子太野,传统的 JIT 的设计需要投入很多精力,对实现者的知识要求也很高,MRI 没有 Google 这样大厂的资源支持(毕竟 JS 的 JIT 可以直接用在浏览器中,这样他的价值无比的高),所以很多人尝试过,结果都坑掉了...

Rubinius 是碰到 second system syndrome 了。。。 mjit 只是从无到有的一个 baseline jit, 后面还有很多优化可以继续做。

以前有人说,Dynamic Languages + Metaprogramming 和 JIT 是水火不容。强行将双方糅合,大多数..(全部)结果是 一天之内会武功全失,经脉逆流,胡思乱想而至走火入魔,最后啊,会血管爆裂而死。 ( 就是数十倍的记忆体用量 )

事实上后来 JRuby / TruffleRuby , 利用魔教*(甲骨文) 三大旷世奇功,JVM, GraalVM, SubstrateVM, 成功将不可能变成可能。

*江湖上太多自称名门正派不肖使用魔教的技术,所以得不到主流认可。

( 严重离题了 汗" )

说白了还是缺一个好爹,当年 Heroku 聘请 Matz 为首席架构师时,我以为 Heroku 可能会在 Ruby 上投入资源,没想到只是蹭 Rails 的热度

实现起来相对好说

难得是不断迭代优化 + 生态维护
不分裂 ruby, 跟随 ruby 升级.. 向下兼容...
各位开发者背后都没有支持...纯粹小群的爱好者精力扛不住...小众范围内提速体验就好了...

需要 登录 后方可回复, 如果你还没有账号请 注册新账号