2天时间,聊今年最热的 Agent、上下文工程、AI 产品创新等话题。2025 年最后一场~ 了解详情
写点什么

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

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

关注

评论

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

python入门难?十之八九是因为python 协程吧!

梦想橡皮擦

12月日更

前端开发框架react 之UmiJS

@零度

大前端 React

开源机器学习数据库OpenMLDB贡献者计划全面启动

第四范式开发者社区

第四范式 开源社区 OpenMLDB 机器学习数据库 贡献者

服务端质量保证体系(三) CI原子能力建设

homber

ci 服务端 质量保证 签约计划第二季

星环科技 TDH8.1.0:全新升级为用户带来极致体验

星环科技

大数据

Linux一学就会之Centos8软件包的管理和安装之yum管理软件包

学神来啦

Linux centos 运维 rpm yum

入驻快讯|欢迎字节跳动终端技术团队正式入驻 InfoQ 写作平台!

InfoQ写作社区官方

入驻快讯

服务端质量保证体系(二) 流水线标准化建设

homber

服务端 CI/CD 流程 质量保证 签约计划第二季

基于HTML、CSS和JS的年龄计算器

海拥(haiyong.site)

html 大前端 28天写作 签约计划第二季 12月日更

「Oracle」Oracle 数据库备份还原

恒生LIGHT云社区

数据库 oracle

Java 动态代理之 InvocationHandler 最简单的入门教程

汪子熙

Java 动态代理 28天写作 SAP 12月日更

从源码分析快速实现对新开源软件的检测

华为云开发者联盟

二进制 开源软件 二进制SCA 特征

华为AppCube入选Forrester《中国低代码平台市场分析报告》

华为云开发者联盟

华为 低代码 AppCube 应用魔方 Forrester

【分布式技术专题】「OSS中间件系列」Minio的Server端服务的架构和实战搭建

码界西柚

OSS Minio Minio 集群 12月日更 FS

恒源云(GPUSHARE)_云GPU服务器如何使用PyCharm?

恒源云

深度学习 gpu 算力加速

Apache ShenYu源码阅读系列-注册中心实现原理之Http注册

子夜2104

图数据和知识图谱,数字化转型的新引擎

星环科技

图数据库 知识图谱

Hadoop完全分布式安装部署

编程江湖

大数据 hadoop

Redis 核心知识点归纳总结,从根上理解 Redis

码哥字节

redis Redis 核心技术与实战 签约计划第二季

编程谜题:提升你解决问题的训练场

华为云开发者联盟

Python 编程 编程语言 代码 编程谜题

2021 China DevOpsDays演讲实录

homber

DevOps DevOpsDays 签约计划第二季

Go语言学习查缺补漏ing Day3

恒生LIGHT云社区

Go 编程语言

Redis 很强,不懂使用规范就糟蹋了

码哥字节

redis Redis开发规范 签约计划第二季

服务端质量保证体系(一) 全流程规范管理

homber

服务端 流程 质量保证 签约计划第二季

java开发SSM框架整合之MyBatis动态SQL

@零度

mybatis ssm JAVA开发

少儿春晚表演

Tiger

28天写作

Redis 分布式锁的正确实现原理演化历程与 Redisson 实战总结

码哥字节

redis RedLock redisson 分布式锁 签约计划第二季

TDengine在雷达台站运维管理系统中的落地实践

TDengine

数据库 tdengine 时序数据库

云原生时代的"应用级"多云管理

北京好雨科技有限公司

云计算 Kubernetes 容器 多云管理

大数据开发之数据读取—Pandas vs Spark

@零度

大数据 spark pandas

QA进阶成长感悟录

homber

成长 内容合集 签约计划第二季

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