2018-06-19

  RyuJIT是作为.NET即时编译器的代号称谓,它是.NET运行时的基本组件之一。与此相反的是,Roslyn作为C#编译器,其编译C#代码成为IL字节码。然后,其再将IL字节码编译成相对于多种处理器的机器码。

  随着最近对dotnet/coreclr #18064的合并,将生成组件的遗留代码(来自较老的JIT实现)从RyuJIT的源码中进行了移除。这个版本删除了近5万行代码!现在,四种处理理体系结构(x86、x64、ARM32、ARM64)可完全基于RyuJIT架构。

  回顾一下关于RyuJIT短暂的历史,以及我们是如何做到现在这样的,是一件很有趣的事情。

  RyuJIT架构的设计开始于9年前,而着手实现开始于7年前。RyuJIT是现有的JIT32编译器(它支持x86和ARM32)的进化版实现,并逐步用一个新的寄存器分配器和代码生成器替换了编译器的大部分“后端”,并入了许多新的和改进的“前端”优化组件。在向新的代码生成体系结构过渡的过程中,我们将旧代码与之结合。这样做提供了好处,但是在测试和维护成本方面,以及开发人员需要处理由大量的分散的遗留代码的困惑,这些都是非常昂贵的。现在,由于RyuJIT在功能上优于遗留代码,所以现在是删除遗留代码,简化JIT代码,以及着眼于未来的时候了。

  在近5年前,RyuJIT的x64版本作为社区技术预览版展示给世界。这在当时是不寻常的。我们为人们提供了多年的更新,让人们可以尝试,并在我们发布产品之前给我们反馈。RyuJIT的x64系列是随.NET Framework 4.6发布的,它取代了3年前的JIT64,对于现在而言,它是一个遗留的代码库。

  在去年发布的.NET Core 2.0中,x86取代了JIT32。作为公共开发过程的一部分,我们宣布了JIT32的替换,并在.NET Core 2.0的发布声明中分享了完成的工作。

  .NET Core 2.0作为包含支持ARM32架构的预览版,使用了遗留后端代码。截至去年12月,对于dotnet/coreclr #15134的合并,.NET Core 2.1版本正式支持了ARM32体系架构。这一变化也包括了三星的许多贡献。

  RyuJIT对于ARM64架构的支持,在.NET Core 2.1中近乎为预览版程度,此支持是在RyuJIT架构实现之初就进行构建的。实际上,在过去的4年中,我们一直致力RyuJIT支持ARM64的相关工作,而这项工作最近又被高通的贡献者们所做的重要工作推进了。

  总的来说,RyuJIT的投入一直专注于发展代码库,以便更好地支持:

  1)多代码生成目标(指令集和操作系统);

  2)改进优化;

  3)更好和更灵活的代码生成;

  4)开放、灵活和健壮的设计与实现;

  我们相信新的RyuJIT编译器架构比(现在已删除)传统的代码生成器实现这些目标有很大的改进。

  最近,我们在RyuJIT代码生成器中,投入了新的代码生成技术。例如,SIMD支持,特定于硬件内部的体系结构,以及对Linux软件约定的支持。

  到达这一点是非常令人满意的,我们已经可以看到,删除所有这些旧的代码将使我们在前进的过程中更加灵活。

  感谢所有为这一切长期努力做出贡献的人!

参考链接:https://blogs.msdn.microsoft.com/dotnet/2018/06/19/the-ryujit-transition-is-complete/

RyuJIT的华丽转身【译文】的更多相关文章

  1. 我的这10年——从机械绘图 到 炼油 到 微软MVP 的华丽转身

    年底了,各种总结计划满天飞,有空的时候我也一直在思考这么多年,是怎么过来的.也曾经很迷茫,希望经验和经历能给大家一点带来一点正能量的东西.10年很长,10年前说实话我没有思考过现在的样子,但10年前的 ...

  2. 揭秘传智播客班级毕业薪资超7k的内幕系列之四----汽车工的华丽转身

         ---不是本科毕业?不是计算机专业?做过电子厂?做过数控?看传智中专生侃项目,"侃晕"项目经理.从流水线上华丽转身,8.5k高薪再就业      系列三承诺写写上海传智J ...

  3. 纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!

    前言 FineUI控件库发展至今已经有 5 个年头,目前论坛注册的QQ会员 5000 多人,捐赠用户 500 多人(捐赠用户转化率达到10%以上,在国内开源领域相信这是一个梦幻数字!也足以证明Fine ...

  4. [置顶] 纯手工打造漂亮的垂直时间轴,使用最简单的HTML+CSS+JQUERY完成100个版本更新记录的华丽转身!

    前言 FineUI控件库发展至今已经有 5 个年头,目前论坛注册的QQ会员 5000 多人,捐赠用户 500 多人(捐赠用户转化率达到10%以上,在国内开源领域相信这是一个梦幻数字!也足以证明Fine ...

  5. 前端向后台的华丽转身 — PHP基础篇

    这一次,本K带大家来看一下关于PHP中数组.字符串的一些注意事项和函数(方法). 一.PHP中的数组 (一)PHP中的数组简介 数组类型是PHP两种复合数据类型之一.根据下标的不同,可以将PHP中的数 ...

  6. 前端向后台的华丽转身 — PHP入门篇

    三个月就这么悄悄溜走了,本K对于前端虽然有了一定的认识,但对一些方面还是处于一种比较萌币的状态,就在这种萌币状态下,本K又跟着大神浩开始了后台语言-PHP语言的学习.PHP的学习对于学过其他语言的人来 ...

  7. Google 的 QUIC 华丽转身成为下一代网络协议: HTTP/3.0

    HTTP/2.0 还没有普及,HTTP/3.0 标准就要被制定了. 据 IETF 透露,HTTP-over-QUIC 实验协议将被重命名为 HTTP/3,并成为 HTTP 协议的第三个正式版本. IE ...

  8. EventEmitter:从命令式 JavaScript class 到声明函数式的华丽转身

    新书终于截稿,今天稍有空闲,为大家奉献一篇关于 JavaScript 语言风格的文章,主角是函数声明式. 灵活的 JavaScript 及其 multiparadigm 相信"函数式&quo ...

  9. C# 使用SIMD向量类型加速浮点数组求和运算(1):使用Vector4、Vector<T>

    作者: 目录 一.缘由 二.使用向量类型 2.1 基本算法 2.2 使用大小固定的向量(如 Vector4) 2.2.1 介绍 2.2.2 用Vector4编写浮点数组求和函数 2.3 使用大小与硬件 ...

随机推荐

  1. springMVC一个Controller处理所有用户请求的并发问题(转)

    springMVC一个Controller处理所有用户请求的并发问题 有状态和无状态的对象基本概念: 有状态对象(Stateful Bean),就是有实例变量的对象 ,可以保存数据,是非线程安全的.一 ...

  2. uboot处理dtb

    目录 uboot处理dtb 传递参数给内核 dtb 地址选择 dtb修改 移植fdt title: uboot处理dtb date: 2019/4/28 17:18:19 toc: true --- ...

  3. 记web模拟手机环境已经微信开发者工具中可正常运行,实体机运行报错问题

    问题描述: 有个手机微信OA的项目 用户信息采用cookie方式保存.发布后使用chorme浏览器进行模拟访问测试发现一切运行顺畅,使用微信开发者工具进行测试也一切正常. 采用实体机进行测试时,用微信 ...

  4. HTML5之FileReader文件读取接口

    FileReader用来把文件读入内存,并且读取文件中的数据.FileReader接口提供了一个异步API,使用该API可以在浏览器主线程中异步访问文件系统,读取文件中的数据. 1.FileReade ...

  5. js中的块级作用域

    概述 函数是js中最常见的作用域单元, 声明在一个函数内部的变量或函数会在所处的作用域中隐藏起来, 这是有意为之的非常好的设计原则. 但是随着js的发展, 我们有了某个代码块(通常指{..}内部)隐藏 ...

  6. PHP、JS、Python,数据库 获取今天是星期几了?[开发篇]

    额,这个看起来是一个好简单的问题,但是真正到自己去一行行写的时候,又给忘了,妈蛋.有空就看看吧.今天是星期几?下面就来看看几种不同语言的实现吧! PHP语言 输出当前时间: echo date('Y- ...

  7. 请求报错:“应以Content-Type: application/x-www-form-urlencoded为请求类型,在form表单中提交登录信息。"

    竟然是post 方法少了参数 // // 摘要: // 以异步操作将 POST 请求发送给指定 URI. // // 参数: // requestUri: // 请求发送到的 URI. // // c ...

  8. [EXP]Microsoft Windows CONTACT - Remote Code Execution

    [+] Credits: John Page (aka hyp3rlinx) [+] Website: hyp3rlinx.altervista.org [+] Source: http://hyp3 ...

  9. 测试工具之Match Tracer(正则表达式匹配工具)

    这个工具完全界面化,非常好用,如果对自己写的正则表达式不够确定,可以使用这个软件来试水一下 从下面网址可以下载: http://www.regexlab.com/zh/mtracer/download ...

  10. 21天打造分布式爬虫-Spider类爬取糗事百科(七)

    7.1.糗事百科 安装 pip install pypiwin32 pip install Twisted-18.7.0-cp36-cp36m-win_amd64.whl pip install sc ...