Fork me on GitHub

跨平台的 .NET 运行环境 Mono 3.2 新特性

Mono 3.2 发布了,对 Mono 3.0 和 2.10 版本的支持不再继续,而且这两个分支也不再提供 bug 修复更新。

Mono 3.2 主要新特性:

  • LLVM 更新到 3.2 版本,带来更多的编译优化
  • 默认使用 SGen Garbage Collector 垃圾收集器,提供3种新的实验模式:Low pause mode、Low promotion nursery、Mostly precise stack scanning;
  • FullAOT编译器生成更优化的代码
  • Mono 3.2 基础类库可构建完整 Xamarin 的移动 profile
  • 降低编译后的文件包大小(对比3.x系列版本,尺寸缩减并不明显)
  • 性能提升
    • 解析性能大大增长
    • LINQ查询更快
    • 大对象的克隆和装箱速度提升两倍
    • 优化Marshal.Read/Write方法

详细介绍请看发行说明

上面的ppt需要FQ观看,所以把这个ppt的内容和大家分享下,请看下面的截图:
image
这张PPT介绍的是Mono 3.2的内容已经覆盖桌面、服务器和移动端,支持.NET 4.5的核心功能包括基础类库和c# 5.0 .对 Mono 3.0 和 2.10 版本的支持不再继续,而且这两个分支也不再提供 bug 修复更新, 如果是新部署的Mono环境可以考虑直接使用Mono 3.2版本了,这是一个正式发布的版本,从2.10.8到3.2 已经持续开发了2年的时间,中间经历好多的beta测试版本。
image
Mono 3.2版本有很多改变,这是一个完全成熟的.NET框架,包括垃圾回收器方面得到极大的提升,现在默认的GC实现称为SGen(Simple Generational),除此之外的选择还有Boehm(http://jezng.com/2012/02/How-the-Boehm-Garbage-Collector-Works/),Boehm GC的基本思想是在malloc()时记录分配空间的元信息,然后在数据中保守地检查每个可能为指针的整数。其好处是只要截malloc()和free()两个接口即可,因此可被用于uncooperative环境(即C/C++这种指针和整数界限模糊的情况),缺点是由于做法保守可能会有垃圾无法被回收。另外Boehm中对象不能被移动,所以会有fragmentation。SGen的主要思想是将对象分为两个generation:较新的称为generation 0,较老的称为generation 1。这种设计是基于这样的一个事实:程序经常会申请一些小的临时对象,用完了马上就释放。而那些一段时间没释放的,往往很长时间都不会释放,如全局对象等。基于这个原则,SGen将GC分两个阶段:minor collection和major collection,分别用于回收nursery heap和major heap中的内存。
image
image
image
image
image
Mono 3.2 对移动开发方面也是有很多的改进,这部分主要是涉及到Android和ios上开发
image
image
Mono 3.2里头还包含了很多微软开源的框架:
image
image
 
Mono 3.2 跨平台框架方面的内容:
image
image
image
image
image
image
后面的还有20张ppt是讲Mono项目团队正在做的事情,也有很多激动人心的特性:
 
image
image
image
 image
posted @ 2013-07-26 12:57 张善友 阅读(...) 评论(...) 编辑 收藏