Releases: Samsung/escargot
Releases · Samsung/escargot
Escargot 4.2.0
Release Note v4.2.0
- Fully support ECMAScript 2024
- Update Yarr module based on WebKitGTK 2.44.2
- Fix misc bugs/issues
- Support macOS build on arm64 (M1)
Language Specification (ECMAScript 2024)
Escargot implements full of ECMAScript 2024 except a few minor features.
- Not Supported Features
- RegExp lookbehind assertions
Multi-Platform Build
OS | Architecture |
---|---|
Ubuntu | x86/x64/arm/aarch64 |
macOS | x64/aarch64 |
Windows | x86/x64 |
Android | x86/x64/arm/aarch64 |
Escargot 4.1.1
Release Note v4.1.1
- Fully support ECMAScript 2023
- Fix misc bugs/omitted functions
- Update TCO debug mode
Escargot 4.1.0
Release Note v4.1.0
- Update WebAssembly engine
- Apply several optimizations for performance improvement
- Fix misc bugs/issues
- Add a build option
ESCARGOT_USE_EXTENDED_API
to enable non-standard features such as Template, Error Callback used by specific third-parties.
WebAssembly
- Using Walrus engine linked by wasm-c-api
- Walrus supports interpreter and JITC mode both
- Walrus JITC employs sljit as backend compiler
Optimization
- Advanced Inline Caching: broaden the target range of object's property access cases
- Tail Call Optimization (TCO): apply general TCO approach and specialized TCO for recursive tail calls.
Escargot 4.0.0
Release Note v4.0.0
- Support ECMAScript2022
- Enable WebAssembly
- Support multi platform build
- Several optimizations for memory and performance updated
- Fixed major/minor bugs
Language Specification (ECMAScript 2022)
Escargot implements full of ECMAScript 2022 except a few minor features.
- Not Supported Features
- RegExp lookbehind assertions
WebAssembly
- Using wabt engine linked by wasm-c-api
- Support WebAssembly Core Specification Release 1.0 (https://www.w3.org/TR/wasm-core-1/)
- Support WebAssembly JavaScript Interface 1.0 (https://www.w3.org/TR/wasm-js-api-1/)
Multi-Platform Build
OS | Architecture |
---|---|
Ubuntu | x86/x64/arm/aarch64 |
macOS | x64 |
Windows | x86 |
Android | x86/x64/arm/aarch64 |
Escargot 3.0.0
Release Note v3.0.0
- Escargot now fully supports ES10
- Debugger core features updated
- Several optimizations for memory and performance updated
- Fixed major/minor bugs
Language Specification (ECMAScript 2019)
Escargot implements full of ECMAScript 2019 except a few minor features.
- Not Supported Features
- Shared-Memory
- Atomics
- RegExp lookbehind assertions
Debugger Implementation
- Breakpoint management
- Execution control
- Getting debug info(backtrace, variable)
- Debugger script tools
Enhancements
- Source code compression
- Lazy AtomicString initialization
- Improve performance of property map
- Improve Vector extension logic
Escargot 2.0.0
Release Note v2.0.0
- Escargot now fully supports ES6.0.
- Several optimizations for memory and performance updated.
- Fixed major/minor bugs
Language Specification (ECMAScript 2015)
Escargot implements full of ECMAScript 6.0.
Enhancements
- Parsing Optimization (over 50% parsing performance improvement)
- Revise Public API
- Update Submodules (Yarr, GC) to the latest version
Escargot 1.0.0
Release Note v1.0.0
Escargot is a memory optimized JavaScript engine for mid-range devices such as mobile phone, tablet and TV. This is the first stable release of Escargot.
Language Specification (ECMAScript)
Escargot implements full of ECMAScript 5.1 and part of ECMAScript 6.0.
ES5.1
ES5 specification is fully supported with Escargot.
ES6.0
supported
Object type | Implemented Feature | Property Type | Note |
---|---|---|---|
TypedArray Objects | TypedArray () | constructor | Currently it works expectedly only with arraylength less than 210000000 |
TypedArray (length) | constructor | ||
TypedArray (buffer [, byteOffset [, length]]) | constructor | ||
TypedArray.prototype.indexOf (searchElement [, fromIndex]) | method | ||
TypedArray.prototype.lastIndexOf (searchElement [, fromIndex]) | method | ||
TypedArray.prototype.set (array [, offset]) | method | ||
TypedArray.prototype.set (typedArray [, offset]) | method | ||
TypedArray.prototype.subarray ([begin [, end]]) | method | ||
TypedArray.BYTES_PER_ELEMENT | data property | ||
TypedArray.prototype.BYTES_PER_ELEMENT | data property | ||
TypedArray.prototype.constructor | data property | ||
TypedArray.prototype.copyWithin (target, start [, end]) | method | ||
TypedArray.prototype.every (callbackfn [, thisArg]) | method | ||
getter of TypedArray.prototype.byteLength | accessor property | ||
getter of TypedArray.prototype.byteOffset | accessor property | ||
getter of TypedArray.prototype.length | accessor property | ||
getter of TypedArray.prototype.buffer | accessor property | ||
ArrayBuffer Objects | ArrayBuffer (length) | constructor | |
ArrayBuffer.isView (arg) | function | ||
getter of ArrayBuffer.prototype.byteLength | accessor property | ||
ArrayBuffer.prototype.constructor | data property | ||
ArrayBuffer.prototype.slice (start, end) | method | ||
DataView Objects | DataView (buffer [, byteOffset [, byteLength]]) | constructor | |
getter of DataView.prototype.buffer | accessor property | ||
getter of DataView.prototype.byteLength | accessor property | ||
getter of DataView.prototype.byteOffset | accessor property | ||
DataView.prototype.constructor | data property | ||
DataView.prototype.[get | set][Float32 | Float64 | Int8 | Int16 | Int32 | Uint8 | Uint16 | Uint32] (byteOffset [, littleEndian)) | method | ||
Promise Objects | Promise (executor) | constructor | |
Promise.all (iterable) | function | ||
Promise.race (iterable) | function | ||
Promise.reject (r) | function | ||
Promise.resolve (x) | function | ||
Promise.prototype.catch (onRejected) | method | ||
Promise.prototype.then (onFulfilled, onRejected) | method |
Modules
- Parser (based on esprima) : translate the source code into AST nodes
- ByteCodeGenerator : generate register-based bytecode
- Interpreter : interpret the bytecode sequentially
- GC (based on Boehm-Demers-Weiser GC) : automatically free memory