报名参加CloudWeGo黑客松,奖金直推双丰收! 了解详情
写点什么

微软开源.NET Core 的执行引擎 CoreCLR

  • 2015-02-05
  • 本文字数:1085 字

    阅读完需:约 4 分钟

继去年 12 月宣布.NET Core 开源之后,微软拥抱开源的决心又向前迈了一步,Microsoft 于昨日在 .NET Framework Blog 上 宣布开源.NET Core 的执行引擎 CoreCLR ,同时该项目将继续托管在 Github 上。

CoreCLR 是.NET Core 的执行引擎,负责垃圾收集、机器码编译等方面的工作,此次开源的是CoreCLR 最新、最完整的代码实现,包含RyuJIT、.NET GC、本地互操作以及很多其他的.NET 运行时组件。Microsoft 表示,.NET Core 目前能够构建并运行在Windows 平台上,在未来的几个月内会增加Linux 和Mac 平台的支持。

从大小上看,CoreCLR 库大约有260 万行的代码,其中JIT 的代码大约有32 万行,GC 的代码大约有5.5 万行,而之前发布的 CoreFX 库大约有 50 万行代码,只占该库最终大小的 25%,如果.NET Core 完全开源,那么总共大约会有 500 万行代码。不同的是,CoreFX 全部是 C#代码,而 CoreCLR 包含大量的 C#和 C++ 代码,要构建这些代码需要多个工具集,而有些工具 Visual Studio 并没有提供,如果你想构建 CoreCLR,那么可以查看 CoreCLR 开发指南

CoreCLR 的开源在社区上引发了广泛的讨论, HackerNews 上的 JeremyMorgan 评论说:

“是好是坏取决于你如何看待这件事情,虽然在盖茨时代之后 Microsoft 对开发者一直都很好,但是与之前相比最大的不同也仅仅是人们不需要再付费了而已,因为这之前只有相关的付费用户才能得到良好的服务。”

对此 klibertp 则发表了不同的观点:

“这不仅仅是一个财务问题。Microsoft 开源自己的类库对开发者而言好处非常多,因为现在他们能够查看自己日常使用的类库的源码,这使得调试更加容易,同时也能够帮助开发者理解当他们调用某些函数的时候其内部到底做了什么。十年之前我离开了 Microsoft 阵营,那时候我非常愿意付费查看相关 Microsoft 工具的源码,但是却找不到门路,现在 Microsoft 提供了相关的源码,并且是开源的,这非常好,也非常重要。”

brudgers 在评论中写道:

“我认为开源非常伟大,我非常钦佩 Stallman(自由软件之父),因为他广阔的胸襟。但是我并不认为 Windows 闭源有问题,因为 Windows 能够通过 Microsoft 商业模式的优势非常有效地解决一组特定的问题,但是无论如何开源的选择是好的。”

最后,Microsoft 表示自己在开源和跨平台的.NET 计划上依然有很多事情要做,具体内容或许会在今年将会举行的.NET Conf 上透露,该虚拟网络会议的召开时间为2015 年的3 月18 日和19 日。


感谢郭蕾对本文的审校。

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

2015-02-05 00:345248
用户头像

发布了 321 篇内容, 共 123.6 次阅读, 收获喜欢 19 次。

关注

评论

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

【一Go到底】第二天---你好,Go and GOROOT&GOPATH

指剑

golang Go入门 10月月更

业务实时监控服务

穿过生命散发芬芳

10月月更 业务监控

Docker下,两分钟极速体验Nacos

程序员欣宸

Docker Spring Cloud 10月月更

【LeetCode】检查二进制字符串字段Java题解

Albert

LeetCode 10月月更

Linux操作系统——组管理和权限管理

胖虎不秃头

Linux 操作系统 10月月更

大数据ELK(十一):Elasticsearch架构原理

Lansonli

elasticsearch 10月月更

Linux操作系统——进程管理、RPM与YUM

胖虎不秃头

操作系统 Linux tar 10月月更

使用 RxJs 实现一个支持 infinite scroll 的 Angular Component

汪子熙

前端开发 angular RXJS web开发 10月月更

MyBatis 学习笔记之配置文件

薛定谔的猫

mybatis 10月月更 mybatis配置文件

js事件循环与macro&micro任务队列-前端面试进阶

loveX001

JavaScript

2022-10-02:以下go语言代码能否通过编译?A: 能;B: 不能;C: 不知道。 package main import ( “fmt“ ) type worker interfa

福大大架构师每日一题

golang 福大大 选择题

react的jsx和React.createElement是什么关系?面试常问

beifeng1996

React

【SSM】Spring系列——IoC 控制反转

胖虎不秃头

spring ssm 10月月更

React-Hooks源码深度解读

goClient1992

React

MyBatis 学习笔记之MyBatis入门开发

薛定谔的猫

mybatis 10月月更 mybatis入门

JS继承有哪些,你能否手写其中一两种呢?

helloworld1024fd

JavaScript

带你实现react源码的核心功能

goClient1992

React

Collections之 Arraylist源码解读(二)

知识浅谈

ArrayList 10月月更

Python应用之计算阶乘

芯动大师

函数 10月月更 阶乘计算

Linux操作系统——日志管理

胖虎不秃头

Linux 操作系统 10月月更

面试官:vue2和vue3的区别有哪些?

bb_xiaxia1998

Vue

SAP 电商云 Spartacus UI 的响应式 UI 实现细节

汪子熙

前端 前端开发 web开发 10月月更 breakpoint

Python基础(七) | 文件、异常以及模块详解

timerring

异常 Python Monad 10月月更

Linux操作系统——定时任务调度、磁盘分区与挂载、网络配置

胖虎不秃头

Linux 操作系统 10月月更

写过自定义指令吗,原理是什么?

bb_xiaxia1998

Vue

能否手写vue3响应式原理-面试进阶

helloworld1024fd

JavaScript

怎样对react,hooks进行性能优化?

beifeng1996

React

Vue3入门指北(六)列表渲染

Augus

Vue3 10月月更

如何在 Linux 中删除超过 30 天的文件

wljslmz

Linux 10月月更

什么是虚拟服务器?一共有多少种虚拟服务器?这篇文章带你扫盲!

wljslmz

10月月更 虚拟服务器

用30分钟相中10倍工程师

愚夫一得

面试 技术管理 招聘 文化 & 方法

微软开源.NET Core的执行引擎CoreCLR_.NET_孙镜涛_InfoQ精选文章