写点什么

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

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

关注

评论

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

Sentinel的注解支持 - @SentinelResource使用详解

麦洛

sentinel SpringCloud Alibaba

随机数环设想

waitmoon

Java

一个数组通过配置随机抽取组成小数组

waitmoon

Java

UUID不失精度,长度改进

waitmoon

Java uuid

EGG NETWORK阿凡提公链全新一代算法稳定币之王EFTalk

币圈那点事

智慧派出所管理系统,派出所指挥调度平台搭建

跟我学丨如何用鲲鹏服务器搭建Hadoop全分布式集群

华为云开发者联盟

hadoop 服务器 集群 鲲鹏 Hadoop全分布式集群

已助我拿到8个Offer!阿里巴巴Java面试参考指南(泰山版)

Java架构追梦

Java 编程 架构 面试 阿里巴巴泰山版

NetCore的缓存使用详例

happlyfox

缓存 学习 netcore 3月日更

推荐16款强大的Twitter视频下载器(2021精选)

科技猫

twitter 软件 网站 分享 视频下载

区块链底层Baas平台搭建,区块链政务底层平台开发

第9周作业

猫。

Tensorflow实现Transformer模型将葡萄牙语翻译成英语

AI_robot

这可能是全网关于Camera慢动作录像(SlowMotion)介绍最全的文章了

小驰笔记

android 音视频 camera 引航计划

产品训练营--第六期作业

曦语

产品训练营

理解reflect elem和value的一段测试代码

werbenhu

Go 语言

优秀软件设计的特征

这就是编程

tensorflow实现两种图像风格融合 即神经风格迁移

AI_robot

已拿到6个Offer!主动分享成功秘籍:阿里巴巴Java面试参考指南(2021最新版)

比伯

Java 架构 面试 程序人生 技术宅

在项目启动时(无request)获取Tomcat端口号

waitmoon

Java

【译】ECMAScript 2021: 最终功能集确定

清秋

JavaScript ecmascript 翻译 ES6 新闻

tensorflow实现CNN模型垃圾分类算法

AI_robot

未来直播 “神器”,像素级视频分割是如何实现的 | CVPR 冠军技术解读

阿里云CloudImagine

阿里云 算法 计算机视觉 音视频

Spring Boot集成 Sentinel 实现接口流量控制

麦洛

微服务 sentinel spring cloud alibaba

看完这篇文章,你起码对分析视频卡顿有点思路了

小驰笔记

android 音视频 camera 引航计划

Android 高通Camx架构学习 - 第1章

小驰笔记

android 音视频 camera 引航计划

深入分析小程序运行环境框架原理

小风以北

小程序 编译原理 框架 工作原理

如何在游戏中快速集成聊天功能

LeanCloud

游戏开发 即时通讯 聊天室 sdk

【无偿分享】史上最全Python学习大礼包 限24h删

sum56

Python Python基础 python入门 python学习 python资料

[译文] 用故事点数评估开发工作真的好吗?

LigaAI

项目管理 程序人生 敏捷开发

NodeJs 介绍

小风以北

nodejs 新特性

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