NVIDIA 初创加速计划,免费加速您的创业启动 了解详情
写点什么

MacRuby 0.6:GCD,线程性能改进,更快的调试器,AOT

  • 2010-05-17
  • 本文字数:1428 字

    阅读完需:约 5 分钟

MacRuby 0.6 已经发布(MacRuby 0.6下载链接)。

MacRuby 0.6 升级日志中指出,MacRuby 0.6 现在可以说是非常适合 Cocoa 开发,完善的 XCode 和预编译(AOT)支持将编译 Ruby 源代码以及运行二进制文件变为可能。

之前披露的一样,0.6 版实验性地加入了调试支持。MacRuby 的调试是在编译的代码中加入特殊指令以触发断点,而不是像其他 Ruby 编译器那样使用追踪或者 Ruby VM Hook。

关于此调试器,升级日志中描述说:

此调试器最有意思的特性是它被抽象为一个简单的 Objective-C API,而且将 macrubyd 作为一个客户端来使用。在未来我们可能会看到更多这样的结构。

Java 和 Ruby 的库之间的比较可以在 Debug-Commons 项目中找到。

MacRuby 0.5 移除了 GIL 之后,线程能够并行地运行(而不是像 Ruby 1.9 那样一次只能运行一个 Ruby 线程)。0.6 对多线程模式做了一些新的改进,例如(根据升级日志):

最后要说的是,在这个版本中,我们完全重写了 Regexp 类。它现在是基于 ICU 架构而不是 Oniguruma 的正则表达式编译和模式匹配架构。因为 ICU 是线程安全的。在 MacRuby 0.6 中,多线程可以高效地使用正则表达式。

MacRuby 0.5 已经开始支持Grand Central Dispatch(GCD),Apple 在 Mac OS X 雪豹和 Phone OS 4.0 上的系统级线程池以及任务系统。MacRuby 0.6 还在‘dispatch’库中加入了一些新的特性和抽象概念。

Job 提供了和 Thread 类似的接口,可以用于异步执行代码。它可以在同步或者异步的情况下使用。如下的代码就是一个例子。Job 类做一些工作,然后等待其结束(这段代码取自文档):

@result = job.value
puts @result.to_int.to_s.size # => 51

异步方式需要传递一个回调函数,一旦 Job 完成工作便调用此函数;在 Ruby 中,这个当然是使用代码段来完成。

job.value {|v| p v.to_int.to_s.size } # => 51 (eventually)

MacRuby Dispatch 库引入的另一个工具便是 Proxy,这个工具能够帮助将调用对象的方法序列化。

其他的新特性有迭代并行化,例如迭代器的并行实现,包括 Enumerable#p_each, Enumerable#p_map, Enumerable#p_find 和 其他类似的方法。

GCD 另一个激动人心的特性是事件源,这个特性能够允许用户在特定的事件中注册处理器,然后在 GCD 的队列中监视事件。事件源可以是计时器,进程的信号,I/O 的输入描述符等。事件源的确是一个非常有用的工具,它能够帮助开发者利用 OS 级的线程池,运行在队列中的事件处理器,当事件到来的时候,处理器从线程池中取出线程,然后运行完毕之后将线程放置回线程池中。

可以阅读 dispatch 库源码的 README 获取更多关于 MacRuby 0.6 中 GCD 特性的信息。

MacRuby 0.6 发布之后,用户发现了一个问题,在运行某代码段的时候,从后台线程切换到主线程会导致程序崩溃。因此,一旦发现这样古怪的线程问题,请细心留意;不过,MacRuby 的 trunk 代码库中很快就会增加 bug 报告功能。

每一个 Ruby 版本中最大的问题不用说,当然是兼容性问题;MacRuby 0.6 是如何处理这个问题的呢(根据升级日志):

MacRuby 0.6 支持为官方 Ruby 编写的 C 插件。我们也能够成功支持 Nokogiri,SQLite3 以及 PostGreSQL 的 MacRuby 旧版本插件。 这个发布版能够通过 85% 的 RubySpecs 测试,可以更好地支持修改过的 Rails 3 和 Ruby 1.9 编码。

最后要说的是,Matt Aimonetti 正在为 O’Reilly 写一本书,书名是 MacRuby: The Definite Guide,开头数个章节已经可以在线阅读了

查看英文原文: MacRuby 0.6 With GCD and Threading Improvements, Fast Debugger, AOT

2010-05-17 20:381147
用户头像

发布了 90 篇内容, 共 32.9 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

Java笔试题及答案详解,nginx入门到精通百度云,全网最全原理讲解

Java 程序员 后端

Java数据结构面试题,java架构师指南下载百度,Java工程师面试题及答案

Java 程序员 后端

Java知识体系!java黑马视频和达内,链表反转的两种实现方法

Java 程序员 后端

Java知识体系!极客学院黑马程序员,BIO和NIO有啥区别

Java 程序员 后端

Java程序员最新职业规划,尚学堂高琪300集,初级Java工程师面试题

Java 程序员 后端

Java程序员面试笔试真题,java零基础入门视频百度云,阿里P7大牛亲自讲解

Java 程序员 后端

Java教程百度云最新版,极客时间vip年卡,Java开发者面试如何系统复习

Java 程序员 后端

Java春招实习面试经验汇总,图灵学院诸葛,Java微服务架构视频下载

Java 程序员 后端

Java研发岗必问30+道高级面试题,腾讯,字节等大厂面试真题汇总

Java 程序员 后端

Java研发岗面试复盘总,4面技术5面HR附加笔试面

Java 程序员 后端

Java算法基础面试题,java教程张孝祥百度云,Java初级程序员面试题目

Java 程序员 后端

Java经典入门教程,vue尚学堂,Java面试问项目

Java 程序员 后端

Java架构师必备技能,java程序设计实用教程第五版答案,掌握这个提升路径

Java 程序员 后端

云栖发布|企业级互联网架构全新升级 ,助力数字创新

阿里巴巴云原生

阿里云 云原生 产品升级 云栖大会

Java百度云,springboot实例教程,面试大厂应该注意哪些问题

Java 程序员 后端

Java程序员必会!开课吧java高级架构师课程,Java开发大厂面试经验

Java 程序员 后端

Java程序员面试中最容易答错的8道面试题,tomcat面试题及答案

Java 程序员 后端

Java笔试编程题大全带答案,mysql入门视频教程,Java多态实现原理

Java 程序员 后端

Java数据处理的常用技术,springboot源码解读与原理分析

Java 程序员 后端

Java月薪过万要掌握的技能,javajdk下载教程,高级Java工程师面试问题

Java 程序员 后端

Java爬虫爬取视频,尚硅谷笔试答案,最全面试考点与面试技巧

Java 程序员 后端

Java百度云资源,java基础案例教程黑马程序员在线阅读,美团Java面试流程

Java 程序员 后端

Java程序员全套,百度三面牛客网猿生活,疯狂膜拜

Java 程序员 后端

Java日常开发的12个坑,你踩过几个,一招让你拿下seata分布式事务框架

Java 程序员 后端

Java架构师进阶之路,马士兵的java教程,大厂Java面试总结+详细解答

Java 程序员 后端

Java框架,黑马java视频教程,面试资料分享

Java 程序员 后端

Java程序员如何有效提升学习效率,如何化身BAT面试收割机

Java 程序员 后端

Java百度云教程,深入java虚拟机百度云,附详细答案

Java 程序员 后端

Java的Io模型你了解多少?尚硅谷大厂学院课,Java开发面试笔试题大汇总

Java 程序员 后端

Java教程视频百度网盘,小甲鱼数据结构百度云,腾讯Java面试题

Java 程序员 后端

Java程序员面试笔记,极客时间vue开发实战,Java进阶教程视频

Java 程序员 后端

MacRuby 0.6:GCD,线程性能改进,更快的调试器,AOT_Ruby_Werner Schuster_InfoQ精选文章