写点什么

微软开源新一代浏览器的 JavaScript 引擎核心代码

  • 2015-12-14
  • 本文字数:1177 字

    阅读完需:约 4 分钟

近日,微软宣布开源Chakra 的核心组件。Chakra 是微软新一代浏览器Microsoft Edge 的JavaScript 引擎。相关代码将于2016 年1 月上传到微软的GitHub 账号,项目名称为ChakraCore,遵循MIT 许可协议。

Chakra 是微软 2008 年新创建的一个JavaScript 引擎,其基本构建原则是要具备现代Web 应用所需要的性能特性,并能非常容易地应用于各种不断出现的场景。也就是说,Chakra 需要能够快速启动和运行,提供卓越的用户体验,并充分发挥底层硬件的潜能。下面是Chakra 的基本架构:

为了实现上述目标,Chakra 采用一种独特的多层管道架构,包含一个解释器、一个多层架构的后台JIT 编译器和一个可以并发和局部回收的标记- 清除垃圾收集器。

自Chakra 创建以来,JavaScript 已经从一种主要用于Web 浏览器的语言,成长为一种支持商店应用、服务器端应用、云服务、NoSQL 数据库、游戏引擎、前端工具和IoT 的语言。期间,微软一直在不断改进和优化Chakra,使它不仅可以很好地适应这些场景,而且还能在所有这些场景中提供卓越的体验。这意味着,除了吞吐能力外,Chakra 还必须具备本地互操作性、良好的扩展性和在有限资源环境中执行代码时限制资源占用的能力。Chakra 的解释器在可移植性方面发挥了重要作用。

现在,在Microsoft Edge 浏览器之外,Chakra 还应用于通用Windows 应用、 Azure DocumentDB Cortana Outlook.com TypeScript (做过专门优化)。微软还使Node.js 可以使用Windows 10 上的Chakra ,从而使开发人员可以在新IoT 平台 Windows 10 IoT Core 上使用 Node.js。

随着 Windows 10 的发布,Chakra 不仅在Microsoft Edge 中提供了更好的JavaScript 性能,而且在其他浏览器提供商所拥有的基准测试中,性能也有大幅提升,如下图所示:

此外,Chakra 还支持大部分 ECMAScript 2015(即 ES6)特性,并支持部分 ECMAScript 提案特性,如 Async Functions SIMD 。它还支持 asm.js ,其团队在 WebAssembly 及其相关基础设施的发展中发挥了重要作用。

ChakraCore 是一个全功能、自包含的 JavaScript 虚拟机,可以嵌入衍生产品及用于诸如 NoSQL 数据库、生产力软件、游戏引擎这类需要脚本语言的应用程序。如下图所示,与 Chakra 相比,ChakraCore 主要有两点不同:一是未将私有绑定暴露给浏览器和通用 Windows 平台;二是用一组新的现代化诊断 API 取代了基于 COM 的诊断 API。

虽然将在 1 月份发布的 ChakraCore 版本仅限于 Windows,但微软承诺会将其带到其他平台。感兴趣的读者可以继续关注,在 1 月份正式发布的时候,微软会提供更多细节。


感谢郭蕾对本文的审校。

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

2015-12-14 18:003435
用户头像

发布了 1008 篇内容, 共 422.1 次阅读, 收获喜欢 346 次。

关注

评论

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

模块七作业

张贺

架构训练营

ABBYY FineReader16永久版图片文字识别软件

茶色酒

ABBYY FineReader16

全国独家线下面授 | 北京大规模敏捷LeSS认证5月18-20日开班

ShineScrum

less 大规模敏捷

MySql基础-笔记12 -重复数据处理、SQL注入、导入导出数据

MySQL 数据库

自动化测试概况和认知

自动化测试 测试工具

推荐系统[三]:粗排算法常用模型汇总(集合选择和精准预估),技术发展历史(向量內积,Wide&Deep等模型)以及前沿技术

汀丶人工智能

推荐系统 推荐算法 搜索系统

一文搞懂秒杀系统,欢迎参与开源,提交PR,提高竞争力。早日上岸,升职加薪。

王中阳Go

Go golang 架构 高并发 秒杀

好用的录屏工具值得免费拥有

穿过生命散发芬芳

录屏工具

【深度挖掘RocketMQ底层源码】「底层源码挖掘系列」透彻剖析贯穿RocketMQ的消费者端的运行调度的流程(Pull模式)

码界西柚

RocketMQ 消费原理 运行机制 源码实现

用reduce高阶函数组装查询表单分隔字符数据

咖啡教室

toFixed和Math.round既不是四舍五入也不是银行家舍入法

咖啡教室

磁盘有限,Docker 垃圾很多怎么办

newbe36524

C# Docker Kubernetes

降本提效 | AIRIOT设备运维管理解决方案

AIRIOT

物联网 设备运维

10 个值得掌握的 reduce 技巧

devpoint

JavaScript reduce 数组方法

2023年Web安全最详细学习路线指南,从入门到入职(含书籍、工具包)【建议收藏】

网络安全学海

黑客 网络安全 信息安全 渗透测试 WEB安全

CleanMyMac2024免费版系统清理优化软件

茶色酒

CleanMyMac X CleanMyMac2024

2023-02-22:请用go语言调用ffmpeg,保存mp4文件的视频帧,每帧用ppm图片保存。

福大大架构师每日一题

golang ffmpeg 福大大

【FAQ】获取Push Token失败,如何进行排查?

HarmonyOS SDK

HMS Core

Zebec官方辟谣“我们与Protradex没有任何关系”

股市老人

3 个加强理解TypeScript 的面试问题

devpoint

JavaScript typescript ES6 前端面试

K8S发布应用步骤详解

tiandizhiguai

云原生 k8s

秒懂算法 | 子集树模型——0-1背包问题的回溯算法及动态规划改进

TiAmo

算法 回溯算法 动态回溯算法

Python写入csv出现空白行,如何解决?

Python csv 数据读写

Python json中一直搞不清的load、loads、dump、dumps、eval

Python json 字符串

【深度挖掘 RocketMQ底层源码】「底层源码挖掘系列」抽丝剥茧贯穿RocketMQ的消费者端的运行核心的流程(Pull模式-下)

码界西柚

RocketMQ 消息队列 源码解析 原理解析

fl studio21中文版免费的音乐编曲制作软件

茶色酒

FL Studio21

Zebec生态持续深度布局,ZBC通证月内翻倍或只是开始

股市老人

WebUI自动化中截图的使用

Python 自动化测试 unittest 截图

阿里云ECS TOP性能提升超20%!KeenTune助力倚天+Alinux3达成开机即用的全栈性能调优 | 龙蜥技术

OpenAnolis小助手

ECS 龙蜥社区 KeenTune 云场景 全栈性能调优

微软开源新一代浏览器的JavaScript引擎核心代码_JavaScript_谢丽_InfoQ精选文章