新手问题 有人知道为何不能预编译 Ruby 源码到字节码呢, 就像 Python 一样.

lilijreey · 2016年07月26日 · 最后由 shallmentmo 回复于 2016年07月30日 · 4018 次阅读

有同学知道原因吗?预编译可以加快启动速度哦。甚至还可以保护源码

mruby 的话可以编译给 C 用,但不知道是不是你要的东西。

#3 楼 @shallmentmo 我的意思就是二楼的意思。执行 ruby 前不从源码执行,而直接读入字节码执行。

先问有没有,再问为什么。 编译到字节码,Ruby 作为这么一个灵活的语言,不可能有很好的办法去保护源码。 要不然连反射和元编程都做不了了。 Python 和 Java 和.NET 都是,分分钟反编译,而且有些时候反编译出来的代码比你原来写的还漂亮(doge

6 楼 已删除

#5 楼 @msg7086 哎呦,这你就不懂了,能不预编译成字节码,和 ruby 语言自身的自省机制,没有冲突。原因 2 楼给的链接以及回答的很好了。主要就是,没有必要。为啥,因为 Ruby 的后端实现太多,没有办法做到统一。为啥没办法做到统一。很简单.每个后端的虚拟机都不一样。所以也就没必要。还有一点,就是如果执行运行字节码,会有一个验证的问题。

python 的字节码简直讨厌,一点用处没有

#7 楼 @lilijreey 我并没有说不能编译到字节码。 倒不如说我第一句话就是告诉你可以编译到字节码的。

后文我说的是编译到字节码并不能保护源代码。 请审题。

2.3 可以编译 bytecode. 记得看过个 ko1 的演讲,好像是说能提高 30% 的启动速度。数字记不大清了。

twitter 上问了一下 Matz,供楼主参考

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