阅读更多

MacRuby 0.5 beta 1版本发布,这是一个基于 Objective-C 的Ruby 实现。目的是将ruby 1.9移植到MacOS操作系统的Object-C平台上面,让ruby可以像MacOS操作系统上的原生应用软件那样,运行在Object-C的runtime和GC之上。

新版本主要更新:


编译
MacRuby以前一直都是基于YARV,新的0.5版本采用的是LLVM,性能提升了很多。全新的VM直接将解析器中的抽象源代码树(AST)转换成LLVM的中间表示(IR),再将其编译为优化过的机器码。

$ echo "p ARGV.map { |x| x.to_i }.inject(0) { |x, y| x + y }" > t.rb
$ macrubyc t.rb -o t
$ file t
t: Mach-O 64-bit executable x86_64
$ ./t 1 2 3 4 5
15


并发
新的MacRuby 0.5运行时支持并发执行,允许MacRuby程序同时使用多个CPU核心和多个线程。

waiting_chairs = Dispatch::Queue.new('com.apple.waiting_chairs')
semaphore = Dispatch::Semaphore.new(3)
index = -1
while true
  index += 1
  if semaphore.wait(Dispatch::TIME_NOW) != 0
    puts "Customer turned away #{index}"
    next
  end
  waiting_chairs.dispatch do
    semaphore.signal
    puts "Shave and a haircut #{index}"
  end
end

Cocoa发展
重新实现了对C 和Objective-C的实现,在此版本中执行的更快。面向OS X的开发者可以简洁地使用MacRuby来构建应用,并紧密地与Cocoa程序库相集成,来代替Objective-C。

兼容性
与大多数Ruby项目的实现相同,macRuby也使用RubySpec来检查兼容性。RubySpec是一个可执行的规格,用于定义Ruby实现的行为,最早由Rubinius项目所发起。

新版本对各个方面都进行了优化。

你可以在这下载:http://www.macruby.org/files/MacRuby%200.5%20beta%201.zip

 

点击查看详情:http://www.macruby.org/blog/2009/10/07/macruby05b1.html

  • 大小: 5.2 KB
来自: macruby
5
0
评论 共 4 条 请登录后发表评论
4 楼 CharlesCui 2009-10-12 10:11
是不是可以这样理解:

$ macrubyc t.rb -o t
$ file t
t: Mach-O 64-bit executable x86_64

之后t这个文件就可以运行在所有支持Object-C的runtime主机之上了?
3 楼 whaosoft 2009-10-12 09:39
  支持
2 楼 night_stalker 2009-10-10 23:11
梦幻组合 ……
1 楼 gakaki 2009-10-10 20:49
mac ruby 其实要比其他iphone上开源有优势的多

只要苹果愿意完全可以实现 把mac ruby 移植到iphone上

发表评论

您还没有登录,请您登录后再发表评论

相关推荐

  • Notes端口帮助大全

    Notes端口帮助大全,Domino中所说的网络端口,大部分情况指的是Notes端口(用于Domino服务器与服务器的连接以及Notes客户端与Domino服务器的连接),所以不要与TCP/IP协议中的端口号相混淆。

  • Notes真的无处不在

    大家好,才是真的好。 本篇是2022年的第一篇公众号,首先祝大家2022年新年好。 差不多两年前我写过一篇《Notes无处不在》,还是仓促了,写的不够全面,现在才发现,Notes真的无处不在。 对了,你一定知道Notes客户机是啥吧? 有人说它是一个邮件和日历客户机程序,这么来说,也对,但不够全面。 在上个世纪90年代到本世纪初,Notes可是一个革命性的软件。除开邮件、联系人和日历等内置功能,还可以使用各种构建的、基于表单的应用程序或业务程序。 Notes是辣么优秀,以至于GTD(Getting Th.

  • 接口测试—-下篇,以/note/readnotes接口为例子详细介绍怎么做接口的

    接口测试—-前言,接口是怎么来的 接口测试—-中篇,通过django实现一个记事本接口 接口测试—-下篇,以/note/readnotes接口为例子详细介绍怎么做接口的 接口测试—-工具篇,实现接口自动化那么通过上两篇文章的学习,我们了解接口开发的基本知识,接下来就是进入正文,怎么测试这些接口。接口测试的流程其实和我们实际功能测试的流程差不多: 需求分析—-用例编写—-执行测试 我们

  • Notes与Office接口程序的编制

    本文介绍了Notes 与 Office的三种接口程序的编制,它们可实现将 Notes数据引入Office程序中,实现在Notes中较难实现的标签打印、表格打印以及修订显示等功能。利用Word“邮件合并”功能 ----Word的邮件合并功能可以将数据源的数据与主文档的数据合并,主要用于生成标签和信封等具有固定格式的文档。我们可以利用这个功能,将 Notes数据库中的数据引出,生成固定格式的文档,

  • ajoo JRC

    rc 项目的缘起可以看这里。 ... 项目总共分3部分。 1. jrc的组合子部分,可以生成AST。...看到这部分ajoo已经做了。...ajoo称之为AST。...准备用jparsec来写。 这部分是我的任务。要写一个Parser,根据SQL的解析结

  • Re: ajoo JRC

    JParsec,Jaskell就问世了。 几天前看他在询问和讨论Class Loader,几天后IoC container就出来了。.net版本的JParsec也是如此。 就说这个JParsec,前几天抱怨java generic is a mistake。过几天,JParsec就换上了...

  • ajoo经典稿子.你擦了吗

    这是从百度找出的.原稿已经被剔除了..悲剧.遗憾那么多精彩的评述找不到了.java的try-finally给我们提供了一个“责任书某个动作必定实施”的机遇。一个try-finally构造,只要try块开始施行了,finally块里头的代码...

  • ajoo经典文章.你擦了吗

    这是从百度找到的.原文已经被删除了..悲剧....   ...java的try-finally给我们提供了一个“保证某个动作必然执行”的机会。...一个try-finally结构,只要try块开始执行了,finally块里面的代码保证执行一次并且只有一次。...

  • Guava(三)CharStreams和ByteStreams

    转载出处:http://ajoo.iteye.com/blog/737718 其实guava可以看成是支持java5的apache commons之类的项目.  第一第二回讲的主要是集合类的一些最常用的工具. 其实com.google.common.collect里还有很多非常...

  • Notes与Office的接口 (转)

    Notes与Office的接口 (转)[@more@] Notes与Office的接口   本文Notes与Office的接口介绍了Notes 与 Office的三种接口程序的编制,它们可实现将Notes数据引入 Offi...

  • 身份证实名认证接口,实名认证API接口文档

    身份证实名认证接口,根据身份证姓名和身份证号码核对是否一致

  • Guava(六)ComparisonChain和primitives包

    转载出处:http://ajoo.iteye.com/blog/740079 有时候我们不可避免地要实现Comparator, 好做排序之类的事情.  要比较两个整数的时候, 我一度曾经这么写:  Java代码  return a - b;  ...

  • Guava(四)Resources和Files

    另外一对我经常需要用到的, 是Resources和Files.  一般来说, 如果我有一大块的文本, 或者properties文件, xml, 我会选择把它们存到一个文本文件里, 放到jar里. 然后在运行时, 把这个文件当作资源读出. 这样做比...

  • 已知OO世界中函数式编程实践和小结

    FP不是一个什么全新的概念,在lisp等语言中被广泛应用,其设计方法向我们描绘了一个美好的世界,不过... 闭包计算和高阶函数。 函数本身是first class对象,闭包是起函数作用并可以像对象一样操作的。 高阶函数是可...

  • Scala学习笔记番外篇-学习曲线和应用前景

    这里要根据项目和兴趣进行选择。 第五块:其它 Scala中的一些其它特性,比如: Dynamic: http://stackoverflow.com/questions/15799811/how-does-type-dynamic-work-and-how-to-use-it macro scala.js, jsscala...

  • Faramita语言设计草案0.1 -- 真正的可移动代码(mobile code)

    我只知道一门支持Curry的解释语言——Haskell,以及从Haskell派生出来的Jaskell。 5. 解释一下Curry Curry是什么意思呢?Curry有点Partial Evaluation的意思。一个函数有多个参数,我们如果给够了参数,那么函数就会...

Global site tag (gtag.js) - Google Analytics