启动 Ignition 解释器
V8 和其他现代 JavaScript 引擎通过 即时(JIT)编译 将脚本转换为本机机器代码以获得执行速度,而这通常是在执行前立即进行的。代码最初由基础编译器快速生成非优化的机器代码,在运行时进行分析,并根据需要动态使用更高级的优化编译器进行重编译以实现更优性能。在 V8 中,这种脚本执行管道包含各种特殊情况和条件,因而需要复杂的机制在基础编译器和两个优化编译器 Crankshaft 与 TurboFan 之间切换。
V8 和其他现代 JavaScript 引擎通过 即时(JIT)编译 将脚本转换为本机机器代码以获得执行速度,而这通常是在执行前立即进行的。代码最初由基础编译器快速生成非优化的机器代码,在运行时进行分析,并根据需要动态使用更高级的优化编译器进行重编译以实现更优性能。在 V8 中,这种脚本执行管道包含各种特殊情况和条件,因而需要复杂的机制在基础编译器和两个优化编译器 Crankshaft 与 TurboFan 之间切换。
BlinkOn 是 Blink、V8 和 Chromium 贡献者的半年一次会议。BlinkOn 6 于 6 月 16 日和 6 月 17 日在慕尼黑举行。V8 团队进行了多场关于架构、设计、性能计划及语言实现的演讲。
V8团队非常重视JavaScript语言的演进,使其成为一个能够表达更多内容且定义完善的语言,从而让编写快速、安全和正确的网络应用变得轻松。2015年6月,ES2015规范由TC39标准委员会正式通过,这是JavaScript语言史上最大的一次更新。新特性包括类、箭头函数、Promise、迭代器/生成器、代理、知名符号以及额外的语法糖。TC39还加快了新规格的发布步伐,并于2016年2月发布了ES2016候选草案,预计在夏季正式通过。虽然由于较短的发布时间周期,ES2016的更新没有ES2015那么全面,但它引入了指数运算符和Array.prototype.includes
。
在之前的博客文章中,我们介绍了垃圾回收中断顺畅浏览体验导致的卡顿问题。在本文中,我们介绍了三种优化,这些优化为V8中的新垃圾回收器(代号为_Orinoco_)奠定了基础。Orinoco基于这样一个理念:实现一个大部分并行和并发的垃圾回收器,在没有严格代界限的情况下,可以减少垃圾回收的卡顿和内存消耗,同时提供高吞吐量。我们没有将Orinoco作为单独的垃圾回收器在标志后面实现,而是决定逐步在V8的主代码库中发布Orinoco的功能以便用户立即受益。本篇文章讨论的三个功能是并行压缩、并行记忆集处理和黑色分配。
关于 WebAssembly 的全面概述以及未来社区协作的路线图,请参阅 Mozilla Hacks 博客上的 A WebAssembly Milestone。
自 2015 年 6 月以来,来自 Google、Mozilla、微软、苹果以及 W3C WebAssembly Community Group 的合作伙伴一直在努力 设计、规范化 并实现 (1, 2, 3, 4) WebAssembly, 一种新的网络运行时和编译目标。WebAssembly 是一种低级的、可移植的字节码,设计为以紧凑的二进制格式编码,并在一个内存安全的沙盒中以接近原生的速度执行。作为现有技术的演变,WebAssembly 与 Web 平台紧密集成,同时在网络上下载更快且比 asm.js(JavaScript 的低级子集)更快启动。
正则表达式自 ECMA-262 规范第三版发布以来,就已经从 1999 年开始成为 JavaScript 的一部分。在功能和表达能力方面,JavaScript 对正则表达式的实现大致与其他编程语言相似。