Skip to content

Releases: AssemblyScript/assemblyscript

v0.10.0

15 May 00:18
Compare
Choose a tag to compare

Breaking changes

  • Added a seed import (along abort and trace) 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

12 Mar 00:26
Compare
Choose a tag to compare

Relevant fixes

  • Fixed an unintended breaking compiler API change (affecting users of transforms).

v0.9.3

11 Mar 00:37
Compare
Choose a tag to compare

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

15 Feb 10:31
Compare
Choose a tag to compare

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 and Set#add with the spec, returning this
  • Fixed WASI import scheme to be wasi_snapshot_preview1

v0.9.1

30 Jan 00:38
Compare
Choose a tag to compare

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

26 Jan 00:20
Compare
Choose a tag to compare

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 and pow 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

18 Nov 06:57
Compare
Choose a tag to compare
  • Reduced release dependencies to a minimum: binaryen and long
  • 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

08 Nov 05:05
Compare
Choose a tag to compare

Due to popular demand, this marks our first release of the standalone (non-prototype) compiler on npm.

Pre-runtime

05 Jun 21:13
Compare
Choose a tag to compare

This is the state before the new runtime functionality landed.