PCon全球产品创新大会最新日程上线,查看更多 了解详情
写点什么

Mono 4.0 发布,支持 C# 6

  • 2015 年 6 月 09 日
  • 本文字数:1028 字

    阅读完需:约 3 分钟

Mono 4.0 本月正式发布。这标志着含有微软的 CoreCLR 项目的开放源代码的首个版本的问世。其默认的语言为 C# 6 ,这意味着 Mono 再一次抢在微软之前推出了新的 C#编译器的 RTM 版本。

除了我们之前报道的功能和变化,Mono 4 还应当具有“更小的调试开销”和“基本的PowerPC64 LE 支持”。目前这些功能的具体细节不详。

许多人在问,既然微软正在开发自己的开源、跨平台的CLR,为什么Mono 项目还要继续呢。Mono 的贡献者和reddit 用户 _alexrp_ 解释道,

我觉得人们对 Mono/CoreCLR 整件事情有种错误的观念。为什么一种虚拟机(VM)变成开源并移植到其它操作系统,就意味着另外一种虚拟机不能存在呢?这就好象是说,只能有一种 Python 实现,或者一种 JVM。那不是好事。竞争是良性的。

Mono 确实具备了很多 CoreCLR 没有的功能:LLVM、完整的提前编译(AOT)、原生客户端(NaCl)、微进程(tasklet)、跨虚拟机的垃圾回收 (GC)桥接(bridge)、各种探查器(profile)模块等等。Mono 的启动时间和运行时内存占用也针对那些连 CoreCLR(至少现在)都没有作为目标的平台/设备进行了优化。另一方面,CoreCLR 有更成熟的垃圾回收,以及通常来说更好的代码生成(也因此造成了更慢的启动速度)。两种虚拟机各有所长,没有理由不能同时存在。

倒不是我们坚持要保留我们自己的代码。如果切换到 CoreCLR/参考源代码有明显的好处(更少的维护、更正确、又具备足够的移植性),我们也很高兴这样做。我们已经引入了大量的参考源代码,而且我们也正在引入 CoreCLR 虚拟机的某些部分:

https://github.com/mono/mono/blob/master/mono/metadata/decimal-ms.c

https://github.com/mono/mono/blob/master/mono/metadata/threadpool-ms.c

4.0 版本也并非没有瑕疵。 Reddit 的用户 whatsinashagbox 写道,

我现在不太确定该如何处理这种情况,我有一个应用程序用到了一些第三方的 DLL,似乎要求 10.0.0.0 版本的 Microsoft.VisualBasic.dll,而它无法在 mono 4 下运行。发布说明中似乎暗示有办法让它使用.Net 4.5 的程序集,但是我不清楚怎么才能做到。有人知道怎么才能让它在新的 mono 版本下运行吗?

这事目前正在研究,似乎是个意外的问题。

查看英文原文: Mono 4.0 Released with C# 6


感谢邵思华对本文的审校。

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

2015 年 6 月 09 日 08:402760

评论

发布
暂无评论
  • Xamarin:使用 C#移植 Android 操作系统

    Oracle和Google针对Android中Java的专利问题鏖战正酣,与此同时Xamarin正在尝试使用C#移植Android操作系统,完全替换其中的Java代码。

  • 把成熟的代码从.NET 移植到 Mono

    跨平台代码重用对很多开发者来说是一个重要目标,而Mono平台正是为了促成这个目标而设计的。但究竟把一个现有的.NET项目移植到Mono有多容易?NDepend的开发者Patrick Smacchia在最近的一篇文章里分享了他的经验。

  • Mono 现状与未来: 从 Xamarin 到 WebAssembly、Blazor 及.NET 5

    InfoQ采访了Mono项目的原作者Miguel de Icaza,讨论了Mono的当前状态及其在.NET生态系统中的未来。

  • Novell 发布 Moonlight 1.0 正式版

    今天, Mono项目的领导者Miguel de Icaza在其博客上宣布:Novell以Firefox插件的方式正式发布了Silverlight 1.0在类Unix平台上的开源实现——Moonlight 1.0的正式版。同时,他也提到Moonlight 2。0正在紧张的开发之中。

  • SubstrateVM:AOT 编译框架

    SubstrateVM的设计初衷是提供一个高启动性能、低内存开销,和能够无缝衔接C代码的Java运行时。它是一个独立的运行时,拥有自己的内存管理等组件。

    2018 年 10 月 12 日

  • 64 位的 Mac OS X 也有 Windows.Forms 了

    Mono长期以来一直为MacOS、Linux和Windows提供Wiondow.Forms的纯C#实现 。可惜的是,随着Mono默认迁移到64位,MacOS对Windows.Forms的支持受到了严重影响。幸亏有社区的贡献,目前Miguel de lcaza在推进基于64位版本的Carbon的新版Windows.Forms。

  • 75 | 软件版本迭代的规划

    在不同阶段,版本迭代的侧重点会有极大的不同。

    2020 年 1 月 21 日

  • 深入 DLR 语言——IronJS

    IronJS是DLR上的ECMAScript 3.0实现。其作者Fredrik Holmström最近在i-programmer的访谈上深入讨论在DLR语言实现的各种细节。

  • .NET 4.6 的 RyuJIT 编译器中发现严重的 Bug

    来自Stack Exchange的开发者Nick Craver与Marc Gravell提交了一个严重的bug的相关报告,它可能会影响到安装了.NET 4.6的用户与开发者。一旦安装了.NET 4.6之后,新的RyuJIT编译器将默认设置为启动状态,它在用户的程序执行时可能会产生一个严重的问题。

  • Rust 异步编程之 tokio 运行时(十)

    2021 年 9 月 2 日

  • 课前必读 | 有关术语发音及环境要求

    希望能帮助你更好地学习和实践本专栏的内容。

    2019 年 11 月 25 日

  • 课前准备 | 搭建实验环境

    这节课,我会给你推荐具体的操作系统、编译器,带你一步步搭建环境,还会给你分享我的GitHub链接。

    2020 年 5 月 6 日

  • .NET 的平台分散问题

    多年以来,开发人员很容易理解.NET平台上的依赖问题,几乎每个程序都会标注为.NET精简版(Compact Edition)或是完整版本。此外,由于很少有人使用.NET Micro,这个问题似乎并不太值得关注。不过如今已经出现了十几个活跃的平台,这方面的问题也变得愈发复杂起来。

  • Mono 为何能跨平台?聊聊 CIL

    跨平台是Mono的一大特性,却并不仅仅局限于Mono。前一段时间CoreCLR登陆GitHub,便有很多人在Linux甚至是Mac OS X上成功编译了CoreCLR,并且用CoreCLR在各自的平台上成功的运行了同一个程序(CoreClrHelloWorld,是一个跨平台的.NET控制台演示程序,可以显示微软、Linux、苹果的logo)。与此同时,也正是由于具备这种跨平台的能力,所以Mono也被一些移动端开发工具所利用,例如游戏引擎Unity3D。那么这种跨平台的特性是如何实现的呢?为何同一个程序,能运行在不同的平台上呢?下面小匹夫就和各位一起聊聊Mono跨平台的基础,也是本文的主角CIL吧。Tag: Mono、 .Net、 Unity3D、 博文共赏文章是Markdown,注意排版。

  • .NET Framework 4.8 预览

    虽然人们的大多数关注点都在.NET Core上,但经典的.NET Framework仍然在开发中。.NET 4.8的“早期访问”预览版表明了微软最关心的领域包括高DIP、可访问性和并发性。

  • 了解移动 App 的持续交付生命周期

    今天我主要和你分享了移动App的持续交付生命周期的几个主要部分,包括代码及依赖管理、项目信息管理、静态代码检查、构建管理、发布管理、运营管理,以及热修复。

    2018 年 9 月 13 日

发现更多内容

Kafka系列第1篇:Kafka是什么?它能干什么?

z小赵

大数据 kafka 推荐 实时计算

太极宗师与华晨宇

伯薇

水平思考力 电视剧 综艺节目 歌手

如何优雅的接收正在运行古董代码?

冰临深渊

项目管理 架构

Java并发编程系列——锁顺序

孙苏勇

Java Java并发 并发编程 多线程

程序员陪娃漫画系列——上学路上

孙苏勇

程序员 生活 陪伴 漫画

每天打卡python面试题 - 在一行中捕获多个异常(块除外)

志学Python

Python 面试 python 爬虫 python3.7

高仿瑞幸小程序 01 初建项目,引入Vant Weapp

曾伟@喵先森

小程序 微信小程序 大前端 vant

​成功的人,都是 “狠角色”

非著名程序员

程序员 提升认知 成功学 自律

JAVA中Base64加密与解密

Howe

Java base64 加密解密

Flutter引擎源码解读-Flutter是如何在iOS上运行起来的

稻子

flutter ios 移动应用 跨平台 dart

20 大类,100+ 网络副业兼职平台汇总推荐

一尘观世界

程序员 自由职业 副业 赚钱

Java新技术:文字块

范学雷

Java 编程语言

Nacos 1.1.4 与微服务的实践经验记录

itfinally

Java 微服务 nacos

Kafka系列第2篇:安装测试

z小赵

大数据 kafka 推荐 实时计算

制作Unknown Pleasures效果图的3种方法

张云金_GISer

设计 T恤 GIS 地图

为AndroidApk添加系统级签名

Howe

Java android

为什么每个软件人都要懂点系统架构?

刘华Kenneth

架构 DevOps 高可用 敏捷 高并发

C++中glog源码剖析以及如何设计一个高效 log模块

圣保罗爷爷

c++ 编程语言

kettle(Pentaho Data Integration) 使用"最佳"实践

稻草鸟人

Java kettle

我愿沉迷于学习,无法自拔(二)

孙瑜

深度思考 个人成长

目标:2020年学会写文章

wiflish

记录自有意义

彭宏豪95

人生 写作 感悟 记录

如何梳理画出牛逼的、高大上的架构图?

狂师

程序员 企业架构 开发者 软件测试 软件开发

MyBatis核心功能介绍

Java收录阁

mybatis

聊聊测试工程师的价值

软件测试 质量 测试工程师产出 测试的价值

Kafka系列第4篇:消息发送时,网络“偷偷”帮忙做的那点事儿

z小赵

kafka 推荐 实时计算

Spring中的测试类~简洁方便

程序员的时光

spring

职场“35岁现象”:焦虑 or 出路?是时候说出真相了!

狂师

职场 成长 软件测试 测试 软件开发

爬虫(108)Python 3.8的超酷新功能(接近一万字,请耐心享用,而且建议收藏)

志学Python

python 爬虫 python3.x python升级

周日福利来了

志学Python

Python 福利 python教程 python视频教程

游戏夜读 | 2020周记(4.3-4.10)

game1night

Mono 4.0发布,支持C# 6-InfoQ