Newsletter 3 (Firefox 74-75)

栏目: IT技术 · 发布时间: 5年前

内容简介:Theprevious newsletter introduced Visage, aThe team is making goodProgress on

JavaScript

:trophy: New contributors

:gift: New features

  • Yulia implemented the optional chaining (?.) operator (Firefox 74)
  • André implemented public static class fields (Firefox 75)
  • André implemented the Intl.Locale proposal (Firefox 75)

:monkey: SmooshMonkey

Theprevious newsletter introduced Visage, a new JavaScript frontend we’re working on that’s written in Rust. Visage has since been renamed to SmooshMonkey, a name that’s known and well accepted by the JavaScript community (#SmooshGate). After a dinner and discussions with project members, it got authoritatively renamed by speaking about it at the All-Hands.

The team is making good progress :

  • SmooshMonkey has been integrated in Gecko behind a configure flag and a runtime flag.
  • Passes 100% of SpiderMonkey tests (falling back on SpiderMonkey’s current parser for non-implemented features).
  • Added stats about the project using Github CI.
  • The bytecode emitter has been improved to prevent generating bytecode which might have undefined behaviour.
  • There’s a new parser generator to support context-dependent aspects of the JavaScript grammar instead of exploding the number of states of the equivalent context-free grammar.

:sparkle: Stencil

Progress on Project Stencil is continuing. Huge thanks to André for helping knock three blocking bugs off in quick succession!

Matthew landed many patches to clean up our compilation management data structures. He also added a SourceExtent structure to store source information and changed the frontend to always defer supported GC allocations.

Kannan is working on removing GC atom allocation from the frontend. The frontend uses atoms in many places and to make the frontend GC-free we need a different strategy for that.

Caroline is working at cleaning up the flags used throughout the frontend, to unify BaseScript::ImmutableFlags , CompileOptions , and FunctionBox flags into one representation.

:books: JSScript/LazyScript unification

The JSScript/LazyScript unification is nearing completion. Ted has landed patches for Firefox 75 to use the same GC TraceKind for LazyScript and JSScript and after that was able to merge the GC arenas. The is-lazy state has been moved from JSFunction to BaseScript.

The next big step is delazifying/relazifying scripts in place so that we never have to keep both a JSScript and a LazyScript for a function.

WarpBuilder

Ion, our optimizing JIT, currently relies on a global Type Inference (TI) mechanism. Ion and TI have a number of shortcomings so we’re experimenting with a much simpler MIR builder for Ion that’s based on Baseline ICs (CacheIR) instead of TI. If this works out it will let us delete some of our most complicated code, allow us to do more work off-thread, and result in memory usage reductions and performance improvements across the engine.

The past weeks Jan landed patches preparing for this and added a very primitive WarpBuilder implementation that’s able to build MIR off-thread. He’s now adding support for more bytecode instructions.

:fast_forward: Regular expression engine update

Iain is working on upstreaming some changes to v8 to improve case-insensitive match support. He also started posting patches to implement shim definitions to make the code work in SpiderMonkey.

JIT optimizations for classes and spread calls

André added Ion support for derived class constructors. He then made it possible for Ion to inline class constructors. He also added Ion support for spread-new and spread-super calls.

:pencil2: Miscellaneous

WebAssembly

  • Ryan added support for using Cranelift when reference types are enabled . Reference types allow WebAssembly to pass JavaScript values as function arguments and return values, to store them in local variables, and to load and store them intables. Cranelift can now emit annotations that inform the JavaScript garbage collector of value locations, so that the GC can trace and relocate object pointers.
  • Andy from Igalia added support for functions that return multiple values to the WebAssembly baseline compiler ; when the corresponding implementation lands in the optimizing compiler (Firefox 76), the feature will finally be able to ride the train out of Nightly.
  • Work is ongoing to replace Cranelift’s instruction selection mechanism as well as register allocation. We can now compile basic wasm programs with either Wasmtime or Spidermonkey using Cranelift’s new pipeline.
  • We also bid a fond farewell to the #wasm IRC channel; you can now find the SpiderMonkey WebAssembly team over on chat.mozilla.org’s WebAssembly room .

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

成为乔布斯

成为乔布斯

[美] 布伦特·施兰德、[美] 里克·特策利 / 陶亮 / 中信出版集团 / 2016-10 / 69.00元

本书描绘了一位多姿多彩的人物将与生俱来的激情与成熟的管理方式相结合,打造出史上最有价值、最受消费者追捧的公司,这本书将彻底改变我们看待乔布斯的方式。 本书推翻了关于史蒂夫·乔布斯的传说和陈词滥调,比如他是天才和混蛋的结合体,暴躁易怒、自私自利,怠慢朋友与家人。本书揭示了这位苹果联合创始人和CEO的家庭生活与职业生涯,并回答了一个关键问题:为什么如此轻狂傲慢、以至于被赶出苹果的年轻人能成为史上......一起来看看 《成为乔布斯》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

html转js在线工具
html转js在线工具

html转js在线工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具