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

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

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

共收到 14 条回复

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,供楼主参考

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