BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Mono开始采纳.NET源代码

| 作者 Jonathan Allen 关注 553 他的粉丝 ,译者 邵思华 关注 3 他的粉丝 发布于 2015年4月11日. 估计阅读时间: 4 分钟 | 如何结合区块链技术,帮助企业降本增效?让我们深度了解几个成功的案例。

Mono 4.0发布说明的草稿目前已经提交,在新版本的诸多变更之中,值得注意的一点是Mono团队开始采纳微软CoreCLR项目中的源代码了。

让我们说得更准确一些,微软实际上一共推出了三个以MIT方式授权的源代码集。

  • ReferenceSource
  • CoreFX
  • CoreCLR

由于CoreCLR项目本身依然还不够稳定,因此Mono团队目前主要专注于ReferenceSource项目中的代码。团队的短期目标是将Mono项目中一些有bug或未完成的组件替换为.NET的对应代码,你可以在Trello网站上跟踪该项目的进展情况

除了Decimal类之外,以下命名空间中的代码也都被替换为ReferenceSource项目中的源代码了:

  • System.Collections
  • System.Collections.Concurrent
  • System.Collections.Generic
  • System.Collections.Specialized
  • System.ComponentModel
  • System.ComponentModel.Design
  • System.Diagnostic.Contracts
  • System.Linq
  • System.Linq.Parallel
  • System.Text.RegularExpressions
  • System.Runtime.CompilerServices
  • System.Threading.Tasks

而其它命名空间中也有多个类的源代码已经整合到Mono项目中了

不再支持的特性

Mono将不再支持生成对应.NET 4.0或更早版本的程序集了,在新的版本中只支持生成.NET 4.5以及基于移动档案的程序集。这一变动引起了那些使用Unity进行开发的使用者的疑虑,因为Unity的开发目前还依赖于某个早期版本的Mono中对.NET 3.5的实现。

新版本也将不再提供对Entity Framework的“内置支持”,因为毕竟大多数用户都会选择使用NuGet下载的EF版本进行开发。与之类似的是,Mono中也不再提供自己的Npgsql驱动了。

性能优化

之前,Mono对于浮点数的操作默认是使用最大精度的。虽然使用64位算法进行32位浮点数操作同样是安全的,但这种方式对于性能会带来不利的影响。因此,新版本中提供了一个选项,可以选择进行32位的计算。

方法的内联也得到了改进。“我们现在能够对最多8个机器字长的数据结构的拷贝进行内联,而之前只支持最多5个机器字长。超过8个字长的数值仍将使用memcpy指令以完成操作”。

此外,对于原子操作的运行方式也有某些地方进行了变更。

现在,JIT能够将框架中的所有原子方法认可为固有方法,并进行内联,这一点利益于平台中某些特定代码的功能。这些方法包括Interlocked和Volatile的所有方法,以及Thread类中的MemoryBarrier、VolatileRead和 VolatileWrite方法。

在x86及64位机器上,Thread.MemoryBarrier的实现方式选择了使用mfence指令,而不是使用lock add rsp,0指令。此外,Interlocked.Exchange的实现使用了xchg [dst], val指令,而不是之前那种更耗性能的lock cmpxchg [dst], val循环方式。

对于使用获取/释放语法的原子方法来说,我们将为这些语法生成内存屏障,而不是使用过于严格的顺序一致性方式。

查看英文原文Mono Adopts .NET Source Code

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT