写点什么

微软开源新一代浏览器的 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:003320
用户头像

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

关注

评论

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

第九节:SpringBoot在线文档Swagger2入门

入门小站

springboot

【堡垒机】堡垒机的起源以及发展历史简单了解

行云管家

运维 网络安全 堡垒机 运维安全

代码评审|阿里巴巴DevOps实践指南

阿里云云效

阿里云 DevOps 云原生 代码管理 代码评审

可持续·向未来:碳中和背景下绿色冬奥发展新趋势

易观分析

碳中和 冬奥会 产业经济

向工程腐化开炮 | proguard治理

阿里巴巴终端技术

Java App 客户端开发 proguard 腐化治理

元宇宙的本质特征是五大融合

CECBC

mark:Failed to download metadata for repo 'appstream': Cannot prepare internal mirrorlist: No URLs in mirrorlist

webrtc developer

Flutter 重构 QTalk

Qunar技术沙龙

Camtasia音画同步剪辑教程

淋雨

Camtasia 录屏软件

【安全漏洞】浅谈Bypass Waf (基础-实战)

H

网络安全 渗透测试 漏洞

从小样本学习出发,奔向星辰大海

百度大脑

2022年的元宇宙,你该知晓些什么?

CECBC

云运维必备知识-云运维定义以及工作内容讲解

行云管家

云计算 IT运维 云运维

微信朋友圈的高性能复杂度分析

阿卷

架构实战营

在Rainbond中实现数据库结构自动化升级

北京好雨科技有限公司

有哪些创建线程的方法?推荐使用哪种?

王磊

java面试

人人都是 Serverless 架构师之“盲盒抽奖”创意营销活动实践

Serverless Devs

Serverless 架构 2月月更

亚信科技AISWare AntDB数据库在运营商核心业务系统的联合实践分享

亚信AntDB数据库

5G AntDB intel 亚信科技

springcloud五大核心组件

编程江湖

PingCode Wiki 权限设计之ACL

PingCode研发中心

项目管理 开发 acl PingCode 页面权限

新版DevOps Handbook (Part 1) 五个新增实践

Franklin 许峰

DevOps DevOps认证 Handbook DevOps实践指南 EXIN

netty系列之:Bootstrap,ServerBootstrap和netty中的实现

程序那些事

Java Netty 程序那些事 2月月更

2022-02微软漏洞通告

火绒安全

微软 网络安全 终端安全 漏洞修复

2022年1月云主机性能评测报告,移动云升至第三

博睿数据

在线字节转换工具

入门小站

工具

基于babel的埋点工具简单实现及思考

CRMEB

Flink SQL 在快手的扩展和实践

Apache Flink

大数据 flink 实时计算 编程开发

iofsstat:帮你轻松定位 IO 突高,前因后果一目了然 | 龙蜥技术

OpenAnolis小助手

开源 技术分享 工具集 进程管理

2 月亚马逊云科技培训与认证课程,精彩不容错过!

亚马逊云科技 (Amazon Web Services)

架构师 培训 认证

虚拟空间引领 数字化转型拉开银行差距

CECBC

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