V8不仅是道奇Charger,Bentley Continental GT或Boss Hoss摩托车中的著名八缸发动机。 在2008年,Chromium项目的开发人员发布了一个新的Javascript和WebAssembly引擎 ,名称相同,即V8,这是对工程奇迹的参考。 因此,又诞生了一个Vee-8引擎。
“ Javascript有趣的特性之一,以及今天使用V8的原因是它与平台无关”, -Lars Bak,丹麦程序员,V8项目的技术负责人
什么是Javascript引擎?
简而言之,JS引擎是将Javascript代码转换为低级代码或机器代码的程序。 它们遵循ECMAScript标准,该标准定义了功能和执行过程。
与V8一样,它是一件了不起的机器,而V8 JS引擎本身就是一个利基。 您很可能已经面对面“满足”了Vee-8。 作为Chrome的一部分,当您访问网页时,此引擎将运行Javascript。 换句话说,V8为JS提供了运行时环境。 浏览器已经提供了Web平台的API(应用程序编程接口)。 除浏览器外,V8嵌入在诸如Node.js,MongoDB和Couchbase之类的服务器端技术中。
V8用C ++编写,可以独立运行,也可以嵌入到C ++应用程序中。 它是便携式的,可以在以下环境上运行:
- 使用x64,IA-32,MIPS和ARM处理器的Linux系统
除V8之外,著名的Javascript引擎包括:
- JavascriptCore(Nitro)-Safari
“无论是在浏览器,Node.js还是在IoT设备中运行它,都没有关系:从您编写的内容开始执行-那就是引擎正在做的事情。JS引擎是我们所做的一切的核心”,-Google的高级工程师Franziska Hinkelmann
前言:让我们开始引擎吧!
Javascript是当今网络上最流行的脚本语言,所有主要的浏览器都支持JS模块。 V8独立于其托管的浏览器是一项了不起的成就。 这怎么发生的?
Chromium项目(适用于Google Chrome浏览器)和更多Chromium浏览器诞生了此开源JS引擎。 丹麦程序员Lars Bak是项目的创建者,他是V8团队的负责人。 这个人是真正的虚拟机专家和面向对象设计的专家。 顺便说一句,Lars Bak花了30年时间来开发编程语言。 曾几何时,他为BETA实现了运行时系统。 从那时起,巴克先生就在各种软件系统的戏剧性清单上留下了痕迹,并最终加入了V8。 它怎么样?
2006年秋天。Google聘请Lars Bak来构建针对Chrome浏览器的新Javascript引擎。 该团队致力于建立全球最快的JS运行时。 对于这种动态的,松散类型的语言,这确实是一项壮举。 新的JS运行时被命名为“ V8”,这是对著名的强大肌肉汽车引擎的一种暗示。
帽子里发生了什么
有趣的是,V8的子过程是根据汽车详细信息来命名的。 那不仅是一个时尚的品牌理念。 这也是用户了解JS引擎行为的好方法。
“我喜欢他们如何将V8引擎的处理名称更改为“点火”和“涡扇”之类的东西。由于现在就像汽车引擎,因此更容易记住”,-YouTube用户Ksee
V8解析的Javascript究竟发生了什么?
从根本上讲,JS引擎:
- 加油(源代码)
- 解析器从源代码生成抽象语法树
- V8的解释器正在从语法树生成字节码,编译器可以理解
- V8的编译器正在根据字节码生成图形(用优化的机器代码替换字节码部分)
- 而且,达达–执行!
什么使代码运行如此之快? 让我们考虑一些有趣的V8特性。
解释还是编译?
JS通常被认为是一种解释型语言,但是它的现代引擎不只是解释器,它还可以使执行更高效。 允许高速JS执行的V8的基础是JIT(即时)编译器在运行时(而不是提前)优化代码。 它结合了解释器和编译器的最佳功能,混合了这些步骤并加快了翻译和执行速度。
V8的第一个优化编译器是“ FullCodegen”。 最新的和更先进的是“ Turbofan”。 V8的基于寄存器的底层解释器“ Ignition”使用其后端。 Ignition + TurboFan组合管道于2017年启动。
在2018 年发布了Liftoff,这是 WebAssembly(Wasm)在V8中的第一层编译器,用于快速启动具有Wasm模块的复杂网站,例如Google Earth 。
保持镇静并保持清洁
在过去的几年中,V8的开发人员在垃圾收集过程改进方面进行了大量工作。 最后,他们实现了一个基于第二代的垃圾收集器(也称为完整GC), 称为“ Orinoco” 。 它应用了最新的有效技术来释放线程。 收集器查找不再引用的对象和数据并收集它们。 这有助于大大改善延迟和页面加载,更流畅的动画,滚动以及用户交互。
延迟关闭
此外,还有一个有效的内存管理系统可供V8使用。 它允许在运行Javascript的同时进行快速分配和最少的处理,这意味着在浏览器中使用JS不会造成延迟和打ic。
在2018年,Chromium团队启动了一个名为V8 Lite的项目。 主要目的是强制减少内存使用量。
最初,它旨在作为低内存设备或嵌入式用例的精简模式 。 但是不久,开发人员决定在常规V8中完全实现该优化奖励,从而推进了所有第8版使用领域。 您可以在V8的官方博客中咨询有关节省内存和提高执行速度的技术细节,而无需进行向导。
引擎开发的主要目标是使Javascript尽可能快地运行。 开发人员强调,一项关键任务是改进分布式系统,在该系统中可以关闭单个单元,其余单元接管该功能。 这使系统更加强大。 可以将其与云系统体系结构进行比较,在云体系结构中,一个系统可以容忍单个设备崩溃,而整个系统则运行平稳。
“我们的理念是,如果您在从编程到从运行系统接收反馈的快速反馈循环中,在一秒钟之内,就会激发程序员进行实验和发明新事物”,-
丹麦程序员Lars Bak,V8项目的技术负责人
VROOM VROOM:继续前进!
著名的彼得·德鲁克(Peter Drucker)的名言“绝大多数成功的创新利用了变化”在Javascript领域尤为重要。 在发布过程中,Chromium的团队每6周创建一个新的V8引擎分支。 最新的V8的v.8.0(是!)已于12月18日发布。
这里列出了一些面向开发人员的好东西:
- 指针压缩可减少40%的内存使用
- 空合并
- 更快的高阶内置函数
- 可选链接
所有道路都通向铬
所有这些v.8.0亮点在预期新的Chrome版本中特别令人愉悦。 据Chromium报道, Chrome 80 Stable将于2020年2月4日发布。 因此,让我们检查错误修复和性能改进,并在2020年使用V8 JS进行开发 !
本文 最初发布在Freschode博客上 ,您可以在其中找到有关Web开发的更多文章。
From: https://hackernoon.com/vJavascript-engine-t-non-stop-improvementf-ih4r324s