50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

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

关注

评论

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

iOS中的多态

NewBoy

ios 前端 移动端 iOS 知识体系 7月月更

更贴心、更好学的Python自动化办公教程!

博文视点Broadview

微服务项目中,Spring Security 比 Shiro 强在哪?

冉然学Java

编程 微服务架构 spring security Java’

浅入浅出Mybatis(一)

ES_her0

7月月更

阿里云机器学习平台PAI与华东师范大学论文入选SIGIR 2022

阿里云大数据AI技术

Transformer 机器学习/深度学习

文盘Rust -- 给程序加个日志

TiDB 社区干货传送门

开发语言

ORACLE进阶(十三)using实现简化连接查询

No Silver Bullet

oracle 7月月更 using

Spring Cloud源码分析之Eureka篇第八章:服务注册名称的来历

程序员欣宸

Java spring SpringCloud Eureka 7月月更

Qt | 显示网络图片 QNetworkAccessManager

YOLO.

网络 图片 qt 7月月更

百花齐放的家居行业联盟,三翼鸟率先撬动三个赛点

脑极体

双目立体匹配之代价聚合

秃头小苏

7月月更

SAP ABAP 系统同微软 Office 套件进行 Desktop Integration 的工作原理

汪子熙

Office SAP abap Netweaver 7月月更

作用域与作用域链

是乃德也是Ned

JavaScript 前端 7月月更

一站式 DevOps 平台,让开发大不同

飞算JavaAI开发助手

低代码实现探索(四十四)检查器待研究

零道云-混合式低代码平台

打造“拉动式”企业培训管理方案,释放人才潜能

明道云

Git .ignore 文件规则不生效

攻城狮杰森

git IDEA 协同开发 7月月更

面试突击64:了解 HTTP 协议吗?

王磊

Java 面试题

【C语言】进阶指针Four

謓泽

7月月更

Python+JS逆向哪里多?必然是登录逻辑,投资界登录pwd参数解析

梦想橡皮擦

Python 7月月更

CSS 中 ::before 和 ::after 伪元素的几个实际用途

南城FE

CSS 前端 伪元素 7月月更

使用Gitlab Jenkins Docker建立CI部署方案

沃德

程序员 jenkins 7月月更

CSS Houdini:用浏览器引擎实现高级CSS效果

vivo互联网技术

CSS 前端 引擎 css动画

MFC|自绘Static控件

中国好公民st

c++ 7月月更

不习惯的Vue3起步三 の computed和watch

空城机

vue3.2 7月月更

js对象的key到底加不加引号?

南极一块修炼千年的大冰块

7月月更

利用ECS服务器搭建安防视频监控平台

DS小龙哥

7月月更

麒麟v10上部署TiDBv5.1.2生产环境的最佳实践

TiDB 社区干货传送门

实践案例 安装 & 部署

Python|数据可视化——超星学习通助手后台数据的可视化处理

AXYZdong

Python 7月月更

滴-EventBus快速使用介绍-新手考驾照

芝麻粒儿

android EventBus 7月月更

羊城“论剑”!大湾区百家AI企业共话如何打牢人工智能“长链”的发展根基

极客天地

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