呜啦!日常碎碎念,偶尔掉落优质前端博文推荐、学习资源等
网页:https://tg.cosine.ren
本频道的搜索Bot 来辣 👉 @cosSearchBot
私聊直接发消息就可以搜索啦~
🔖tags
#优质博文 #资源推荐 #博客更新 #碎碎念 #项目更新 #手工 #书摘 #阮一峰的科技周刊 #新动态
图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
网页:https://tg.cosine.ren
本频道的搜索Bot 来辣 👉 @cosSearchBot
私聊直接发消息就可以搜索啦~
🔖tags
#优质博文 #资源推荐 #博客更新 #碎碎念 #项目更新 #手工 #书摘 #阮一峰的科技周刊 #新动态
图频:Cosine 🎨 Gallery @CosineGallery
猫片: @cosine_cat
#优质博文 #javascript #前端 #V8
How V8 JavaScript Engine Works Behind the Scenes
author Deep Into Dev
How V8 JavaScript Engine Works Behind the Scenes
AI 摘要:本文深入解析了 V8 JavaScript 引擎如何将人类可读的代码转换为机器码的全过程,重点介绍了 Ignition 解释器、字节码生成与执行机制,以及 TurboFan 的 JIT 优化技术。通过示例代码的字节码逐步分析,揭示了 V8 如何利用寄存器、反馈向量和对象形状(Shapes)实现高效执行,最终将高频调用的“热点”函数编译为机器码。
1. 脚本加载与解析
• 浏览器通过 HTML 解析器识别 <script> 标签并获取 JavaScript 文件字节流。
• 字节流解码器 将原始字节转换为标记(Tokens),例如识别 function 为关键字。
2. 语法分析与 AST 生成
• 解析器 将 Tokens 转换为抽象语法树(AST),同时检查语法错误。
3. Ignition 解释器与字节码执行
• Ignition 将 AST 编译为平台无关的字节码(介于人类代码与机器码间的抽象层)。
• 寄存器操作示例(以 calc 函数为例):
• LdaSmi [10] 加载常量到累加器 → Star1 存入寄存器 r1
• GetNamedProperty a0,[0] 获取参数对象属性(如 obj.x )→ 通过 Add 指令进行运算。
• 最终结果通过 Return 指令返回。
4. 优化技术(TurboFan JIT)
• 反馈向量(Feedback Vector):记录运行时类型信息(如对象形状),用于触发优化。
• 对象形状(Shapes):相同结构的对象(如 {x,y,z} )共享形状,加速属性访问。
• JIT 编译:对高频调用的“热点”函数生成优化的机器码,若类型假设失效则回退至解释执行。
5. 关键概念
• 寄存器类型:通用寄存器( r0-rn )、参数寄存器( a0-an )、累加器(临时存储计算结果)。
• 字节码调试:通过 node --print-bytecode 查看生成的字节码。
author Deep Into Dev
#优质博文 #javascript #前端
Awesome JavaScript Weekly - Issue 469, May 15, 2025 | LibHunt
Awesome JavaScript Weekly - Issue 469, May 15, 2025 | LibHunt
AI 摘要:本期 Awesome JavaScript Weekly 涵盖了 JavaScript 生态的最新动态,包括语言特性(如显式资源管理)、工具更新(如 Lume 3 发布)、技术实践(如 HTTP Range 请求的视频服务))。
1. 技术文章与更新
• Hyper-Typing:过度类型化 #typescript
• JavaScript's New Superpower: Explicit Resource Management:探讨 JavaScript 新增的显式资源管理特性及其优势。
• Serving Video with HTTP Range Requests:介绍如何利用 HTTP Range 请求实现高效视频流传输。
• How V8 JavaScript Engine Works Behind the Scenes:深度解析 V8 引擎的内部工作原理。
• Converting values to strings in JavaScript has pitfalls:讨论 JavaScript 中值转换为字符串的常见陷阱。
• Teaching Coding with JavaScript and P5.js:使用 JavaScript 和 P5.js 进行编程教学的经验分享。
• Joys and sorrows of designing a language:语言设计过程中的挑战与收获。
2. 工具与框架发布
• Lume 3 was released:静态站点生成器 Lume 的第三版发布。
• Real-time Github Analytics with ClickHouse, Redpanda:结合 ClickHouse 和 Redpanda 实现实时 GitHub 数据分析的方案。
• deebo-prototype:自主调试代理 MCP 服务器。
• strudel:基于 Web 的算法音乐实时编码环境,移植自 TidalCycles。
• react-bits:开源动画 React 组件库,支持高度定制化。