阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

MacRuby 综述:0.7 发布、基于 GCD 的 Web 服务器以及 BridgeSupport

  • 2010-11-07
  • 本文字数:1054 字

    阅读完需:约 3 分钟

近日,MacRuby 0.7 发布了(实际上是 0.7.1),该版本包含了众多的 Bug 修复并改进了对 Ruby 的兼容性

MacRuby 0.7 是 MacRuby 首个支持 Ruby 1.9.2 的版本,因此该版本重新实现了众多的新特性并提供了向后的修复(backport)。 此次发布通过了 90% 的 RubySpecs,而上一版本则为 82%。

MacRuby 0.7.1 借助于 BridgeSupport 工具的支持可以提供对 Cocoa、Objective-C 以及 C 的完整脚本支持。之前的版本在某些地方还是存在着缺陷,比如不支持 Apple 向 Objective-C 中所添加的块(blocks)特性。现在开发者可以向接收 C 块的 API 传递 Ruby Proc 了,反之亦然。

之所以不支持这些特性的原因在于缺少元数据的支持,而 BridgeSupport 则是这一问题的解决方案。由于构建在 LLVM 的 Clang 解析器上,它可以 查看到库的源代码并生成 MacRuby 所能使用的元数据,之后 MacRuby 可以使用这些元数据获悉库接收的到底是什么,比如块、符号等等。 BridgeSupport 的源代码表明了Clang 决定并生成元数据的方式。

MacRuby 支持并发的 Ruby 线程(也就是没有 GIL),这对于 Mac OS X Snow Leopard 系统范围的线程池系统Grand Central Dispatch(GCD)非常有帮助。

能够说明MacRuby 与GCD 集成的示例就是全新的Web 服务器ControlTower,它使用MacRuby 编写。由于构建在Rack 之上,它可以通过将请求委托给GCD 队列对其进行处理,而队列则可以按照顺序或并发的方式来处理请求。 ControlTower 的发布声明给出了其架构概览,同时还有与 Thin 服务器对比的性能参数。

虽然 ControlTower 支持 Rack,但 Rails 用户还是会有些失望——MacRuby 0.7.1 并不支持 Rails 3。团队期望 MacRuby 的下一版本能够支持 Rails。

MacRuby 0.7 所支持的另一个 Mac OS X 特性就是 Sandbox,它可以限制 OS 进程的权限。我们可以对 Sandbox 进行设定以拒绝网络访问、文件系统访问等等。但它并非 MacRuby 所独享的特性——其他的 Ruby 实现也可以通过 Playpen 扩展使用 Mac OS X Sandbox 特性。

最后,MacRuby 发布声明还提及了加快各种 Ruby 代码运行速度的一些小技巧:

我们实现了一个基本的解释器,通过简单的启发式方法在编译期计算代码中不常经过的路径。比如说,使用简单的#eval 声明来创建代码已经成为 Ruby 库的常见使用方式,现在它的运行速度已经得到了极大的提升。

想要上手 MacRuby 的开发者们应该读一读“ MacRuby: The Definitive Guid ”这本书,它是 Matt Aimonetti 为 O’Reilly 所编写的,网上有免费的版本。

查看英文原文: MacRuby Roundup: 0.7 Released, GCD-based Web Server, BridgeSupport

2010-11-07 01:03802
用户头像

发布了 88 篇内容, 共 258.5 次阅读, 收获喜欢 8 次。

关注

评论

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

第一本 Compose 图书上市,联想大咖教你学会 Android 全新 UI 编程

图灵教育

Compose AndroidUI

LevelDB Java&Go实践

FunTester

Java 自学 Go 语言 leveldb FunTester

浅谈 RDMA 与无损网络

青云技术社区

云计算 云原生 存储

如何穿透ToB客户生命周期的全链增长?

ToB行业头条

Python代码阅读(第58篇):压缩列表

Felix

Python 编程 列表 阅读代码 Python初学者

拥抱智能,AI 视频编码技术的新探索

阿里云视频云

阿里云 视频编码 机器视觉 视频编解码 视频云

从 Linux源码 看 Socket(TCP)的accept

赖猫

c++ Linux 后端 服务器 epoll

CSS布局之display:flex(二)

Augus

CSS 11月日更

我是一个程序员,总想引导亲朋好友走上编程的伟大航路......

图灵教育

程序员 App Inventor

月薪3万的大厂测试工程师裸辞3个月,送外卖谋生背后的真实感悟

六十七点五

程序员 程序人生 软件测试 软件自动化测试 测试工程师

一招教你通过焱融 SaaS 数据服务平台+ELK 让日志帮你做决策

焱融科技

云计算 分布式 SaaS 公有云 文件存储

极光笔记丨关于数据大屏一比一还原设计稿这件事

极光JIGUANG

大前端 数据可视化

首次!统一调度系统规模化落地,全面支撑阿里巴巴双 11 全业务

阿里巴巴中间件

阿里云 云原生 中间件 双十一 统一调度

我所理解的社群—社群本质

sec01张云龙

社群 11月日更 社群运营

手把手教你学Dapr - 2. 必须知道的概念

MASA技术团队

C# .net 微软 后端 dapr

Web 用户体验设计提升实践

Shopee技术团队

大前端 web开发 用户体验 交互设计 可访问性

Nginx中间件渗透总结

网络安全学海

网络安全 信息安全 渗透测试 WEB安全 漏洞挖掘

开源数据库风起云涌,openGauss 恰逢其时

openGauss

#数据库

盲盒app开发

项目管理常见问题系列(1)—资源不足

一叶而不知秋

项目管理

就是简单,全球100多万读者,一起跑通前端HTML5与CSS3知识!

图灵教育

大前端 HTML5, CSS3

模块三作业——外包学生管理系统架构设计

覃飞

经验分享|参与内部开源的心路历程

云智慧AIOps社区

大前端 数据可视化 知识分享 开源治理 flyfish

前端的状态管理与时间旅行:San实践篇

百度开发者中心

大前端 san san-store 技术实践

openGauss支持国密SM3和SM4算法

openGauss

#数据库

【云小课】如何初步定位GaussDB(for openGauss)慢SQL

华为云数据库小助手

GaussDB GaussDB(for openGauss) 华为云数据库

企业如何选择合适的低代码平台?这6点不得不考虑!

J2PaaS低代码平台

低代码 低代码开发 低代码平台 企业数字化

Nebula Graph 源码解读系列 | Vol.04 基于 RBO 的 Optimizer 实现

NebulaGraph

图数据库 源码解读

不要再重复造轮子了,Hutool这款开源工具类库贼好使

沉默王二

Java

手把手教你学Dapr - 1. .Net开发者的大时代

MASA技术团队

C# .net 微软 后端 dapr

速来!开源中国首届飞算SoFlu组件开发悬赏赛来袭

SoFlu软件机器人

Java

MacRuby综述:0.7发布、基于GCD的Web服务器以及BridgeSupport_Ruby_Werner Schuster_InfoQ精选文章