Releases: AssemblyScript/assemblyscript
Releases · AssemblyScript/assemblyscript
v0.10.0
Breaking changes
- Added a
seed
import (alongabort
andtrace
) for seeding the random number generator - Arrays no longer inherit from ArrayBufferView, but are now distinct
- The loader API now more closely aligns with the WebAssembly API
- Various compiler API changes (i.e. decoupled the parser from the program)
- Classes initialized from object literals can no longer define a constructor
- Moved examples from the main repo to their own repo
- Modules now become validated by default (disable with
--noValidate
,--validate
is gone) - Reworked memory options (added
--noExportMemory
,--initialMemory
,--maximumMemory
, with--sharedMemory
now being a boolean flag) - Renamed the
--asmjsFile
command line option to--jsFile
(alias:-j
)
Improvements
- Simplified WASI integration via
import "wasi"
(implements abort, trace, seed) - Implemented virtual overloading and interfaces (consider this minimal viable)
- Reworked optimization pass pipeline / more aggressive inlining
- Added support for Binaryen's
lowMemoryUnused
feature - Added
--lowMemoryLimit
option for embedded scenarios with less than one page of memory - Added support for
StaticArray
to the loader - Non-MVP types are now always present to aid conditional compilation (i.e. same source, with and without SIMD)
- Added
Array<T>#flat
- Updated stdlib to Unicode 13.0.0
- Added a
--yes
option to asinit to accept all prompts - Added
memory.data
to explicitly create static memory segments - Expose
setArgumentsLength
(for varargs calls) only when required - Added
v128.pmin<T>
,v128.pmax<T>
,v128.abs<T>
,v128.bitmask<T>
incl. their respective inline-assembler variants
Relevant fixes
- Fixed column numbers in diagnostics being off by one
- Made
asc
respect absolute output paths - Fixed various issues with object literal compilation
- Fixed WASI struct sizes to match the specification
- Fixed default export issues
v0.9.4
v0.9.3
New features
- Added
StaticArray<T>
, a more efficient array variant - Added support for context dependent sigma symbols to
String#toLowerCase
- Refactored the compiler so it can compile itself (binary is not yet runnable)
- Added
afterInitialize
transform hook - Updated Binaryen to latest
Relevant fixes
- Fixed various code generation, type propagation and resolver issues
v0.9.2
New features
- Added a
--tableBase
CLI option (like--memoryBase
, but for tables) - Added support for
x instanceof GenericClass
- Updated Binaryen to latest
Relevant fixes
- Fixed
null
related edge cases when inferring array literals - Fixed several code generation issues
- Aligned
Map#set
andSet#add
with the spec, returningthis
- Fixed WASI import scheme to be
wasi_snapshot_preview1
v0.9.1
Relevant fixes
- Reverted exclusive use of the mutable
__argumentsLength
global introduced in 0.9.0 due to compatibility concerns with node < 12 and Safari. Exporting a__setArgumentsLength
helper function for now. The loader has been updated to recognize both.
New features
- Updated Binaryen to latest. Might be relevant for users of transforms, where the exact same version is required.
- Command line options have been divided into categories to be easier to grasp, and documentation updated accordingly.
v0.9.0
Breaking changes
- The explicit start function generated with
--explicitStart
has been renamed to_start
(was__start
) to match WASI. - The
__setargc
helper to set the number of arguments to a varargs call has been removed and replaced with an exported mutable global__argumentsLength
. The loader has been updated accordingly. - For consistency, the loader's
__getInt8Array
etc. functions now copy, and new__getInt8ArrayView
functions with the old behavior have been introduced. - The
call_indirect
builtin has been removed due to expected problems with closures. - Distribution files are now being built with
ES2016
as the target, exposing ES classes instead of ES5 prototypes.
New features
- Binaryen has AssemblyScript-specific optimization passes now targeting reference counting.
- Optimization pass order is no longer inherited from Binaryen but has been customized to account for AS specifics.
- Tables can now be exported using the
--exportTable
flag. - The implementations of the Math functions
exp
,exp2
,log
,log2
andpow
have been replaced with faster variants. - New standard library functions:
String#toUpperCase
,String#toLowerCase
,String#localeCompare
.TypedArray#set
- The stub runtime now exports the
__reset
helper to clear the heap externally. - Added support for the SIMD
avgr_u
family of instructions. - Updated the WASI implementation to
wasi_snapshot
(preview1). - The type of an array literal can now be inferred from its contents.
- The compiler can now detect if the entire program is acyclic (no cyclic classes), omitting unnecessary parts of the GC in this case.
And, of course, lots of fixes.
v0.8.1
- Reduced release dependencies to a minimum:
binaryen
andlong
- Added support for the SIMD
min_s
,max_s
,dot_i16x8_s
family of instructions - Fixed validation error on closure usage, now emits a proper diagnostic instead
- Fixed issues with scoped
anyref
typed locals - Fixed definition of
TypedArray.wrap
- Added support for node-like resolution of compiler transforms
- Fixed out of bound issues on
Array[index]
sets - Updated math implementation to match latest musl fixes
- Removed unnecessary / broken loader dependencies
v0.8.0
Pre-runtime
This is the state before the new runtime functionality landed.