Mono 3.0 添加了异步支持、改进的 SGen 垃圾收集器及其他特性

  • Roopesh Shenoy
  • 臧秀涛

2012 年 11 月 1 日

话题:.NET开源移动语言 & 开发架构

Miguel De Icaza 已经宣布了Mono 3.0 的发布,该版本带来了一些改进,如异步支持、更好的 SGen 垃圾收集器、改进的 Eval API 以及与.NET 4.5 的兼容等。

Mono 3.0 是对之前最新的稳定版本 2.10 的更新。有些新特性已经包含在今年早些时候的 2.11.x预览版中了。值得注意的变化有以下几点:

  • 支持 C# 异步特性的编译器
  • 从微软的开源软件堆栈中集成了一些框架和库,其中包括 ASP.NET MVC 4、ASP.NET WebPages、Entity Framework、Razor 和 System.Json
  • SGen 现在是默认的垃圾收集器,为了更好地支持多处理器硬件引入了一些性能和可伸缩性改进
  • Eval() API 目前能够编译完整的类型,而非仅支持表达式。编译器即服务(compiler-as-a-service)也不再是一个全局的编译器,而是可以在多个作用域内实例化
  • 对一些类型(如 ThreadLocal和 List)的运行时优化
  • 引入了一些新的属性,支持出于性能调优考虑强制编译器内联代码
  • 在 MacOS 上可以编译为 64 位的二进制文件(尽管发行时只提供了 32 位二进制文件)
  • 改进了Soft Debugger,使用 USB 连接的设备时可以获得更好的性能
  • 在 OS X 上捆绑提供了 F# 3.0
  • Mono 中的 SQLite 数据库实现目前支持 iOS 的加密 API,也允许以配置形式修改线程模型

关于变化的更多细节请参考发布说明

Miguel 指出,所有这些改进都应该在适当的时候支持 MonoTouch 与 Mono for Android。他也暗示道,Mono 的开发会以更快的发行速度为目标,所以重要的开发会在独立的分支中进行,然后再合并到主干分支中,以便保证在任何时候主干都尽量稳定。

使用 Mono 的开发者提出了一些一般性问题,其中一个是 Mono 一直缺乏一个跨平台的 UI 层——Mono 团队当前的建议是在一组公共的核心功能集之上为每个平台构建一个原生接口。Miguel 建议使用GTK#Qyoto(Qt 的 C# 绑定)或一个新的工具包 Xwt。

在本文撰写之时,Mono 3.0 只发布了支持 OS X 平台的二进制文件,而支持其他平台的二进制文件尚有待社区发布。不过读者可以自己从更新的源代码构建。

查看英文原文Mono 3.0 Adds Async, Improves SGen GC and More


感谢李永伦对本文的审校。

给 InfoQ 中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

.NET开源移动语言 & 开发架构