Skip to content

Status and Roadmap

Max Graey edited this page Nov 11, 2018 · 167 revisions

Current state of development is tracked in GitHub projects.

High level status

  • Most of TypeScript's AOT-compatible syntax is supported
  • Manual memory management is in but GC remains to do
  • Classes are still wonky when it comes to the details
  • Standard library is very basic and needs a lot of work
  • No exception support yet, waiting for WebAssembly/exception-handling to land
  • We need more tests (pretty sure this will remain here)

High level goals

  • Get a memory manager and GC combo up and running
    • Memory manager
    • GC
  • Get a standard library up that "just works" (where AOT-compatible)
  • Improve linking, e.g. with C, based on what's supported by common tools
  • Compile the AssemblyScript compiler to WebAssembly using itself
  • Provide tools to automatically generate glue code and definitions

And, of course, keep up with the state of WebAssembly, most notably at this point:

Proposal Phase Status
Sign Extension Operations implementation --feature sign-extension
Mutable Globals implementation --feature mutable-global
Non-trapping float-to-int Conversions implementation
Reference Types implementation
Multi-value implementation
Bulk Memory Operations implementation
Exception handling proposal
Host Bindings proposal
Threads proposal
GC proposal

Standard library compatibility

Feature Notes
Globals
NaN
Infinity
isFinite
isInteger
isNaN
isSafeInteger
parseFloat Naive implementation
parseInt
decoreURI
decoreURIComponent
encoreURI
encodeURIComponent
Number There is no Number object in AssemblyScript, but one for each type instead.
EPSILON
MIN_VALUE
MAX_VALUE
MIN_SAFE_INTEGER
MAX_SAFE_INTEGER
NaN
NEGATIVE_INFINITY
POSITIVE_INFINITY
toExponential
toFixed
toLocaleString
toPrecision
toString
Array
length
from
isArray
of
concat
copyWithin
entries
every No closures yet
fill
filter No closures yet
find
findIndex
flat
flatMap
forEach No closures yet
includes
indexOf
join
keys
lastIndexOf
map No closures yet
pop
push
reduce No closures yet
reduceRight No closures yet
reverse
shift
slice
some No closures yet
sort
splice
toLocaleString
toString
unshift
values
TypedArray
BYTES_PER_ELEMENT
buffer
byteLength
byteOffset
length
from
of
copyWithin
entries
every
fill
filter
find
findIndex
forEach
includes
indexOf
join
keys
lastIndexOf
map
reduce
reduceRight
reverse
set
slice
some
sort
subarray
toLocaleString
toString
values
ArrayBuffer
byteLength
isView
slice
transfer
toString
DataView
buffer
byteLength
byteOffset
getInt8
getUint8
getInt16
getUint16
getInt32
getUint32
getInt64 AssemblyScript specific
getUint64 AssemblyScript specific
getFloat32
getFloat64
setInt8
setUint8
setInt16
setUint16
setInt32
setUint32
setInt64 AssemblyScript specific
setUint64 AssemblyScript specific
setFloat32
setFloat64
toString
String
length
fromCharCode
fromCharCodes AssemblyScript specific
fromCodePoint
fromCodePoints AssemblyScript specific
charAt
charCodeAt
concat
endsWith
includes
indexOf
lastIndexOf
localeCompare
match
normalize
padEnd
padStart
repeat
replace
search
slice
split
startsWith
substr
substring
toLocaleLowerCase
toLocaleUpperCase
toLowerCase
toUpperCase
toString
trim
trimLeft/trimStart
trimRight/trimEnd
[Symbol.iterator]
raw
Symbol
for
keyFor
Math This also applies to specific Mathf (single float point) version of Math
E
LN10
LN2
LOG10E
LOG2E
PI
SQRT1_2
SQRT2
abs
acos
acosh
asin
asinh
atan
atan2
atanh
cbrt
ceil
clz32
cos
cosh
exp
expm1
floor
fround
hypot
imul
log
log10
log1p
log2
max
min
pow
random
round
sign
sin
sinh
sqrt
tan
tanh
trunc

Map

  • #size
  • #clear()
  • #delete()
  • #entries()
  • #forEach()
  • #get()
  • #has()
  • #set()
  • #keys()
  • #values()
  • #toString()
  • #[Symbol.iterator]()

Set

  • #size
  • #add()
  • #clear()
  • #delete()
  • #entries()
  • #forEach()
  • #has()
  • #values()
  • #toString()
  • #[Symbol.iterator]()

WeakMap

  • #delete()
  • #get()
  • #has()
  • #set()
  • #toString()

WeakSet

  • #add()
  • #delete()
  • #has()
  • #toString()

console

  • assert()
  • clear()
  • count()
  • dir()
  • error()
  • group()
  • groupCollapsed()
  • groupEnd()
  • info()
  • log()
  • table()
  • time()
  • timeEnd()
  • trace()
  • warn()

JSON

  • parse()
  • stringify()

Object

  • is()
  • keys()
  • assign()
  • create()
  • entries()
  • getOwnPropertyNames()
  • getOwnPropertySymbols()
  • #toString()

Date

  • UTC
  • now()
  • parse()
  • #getDate()
  • #getDay()
  • #getFullYear()
  • #getHours()
  • #getMilliseconds()
  • #getMinutes()
  • #getMonth()
  • #getSeconds()
  • #getTime()
  • #getTimezoneOffset()
  • #getUTCDate()
  • #getUTCDay()
  • #getUTCFullYear()
  • #getUTCHours()
  • #getUTCMilliseconds()
  • #getUTCMinutes()
  • #getUTCMonth()
  • #getUTCSeconds()
  • #setDate()
  • #setFullYear()
  • #setHours()
  • #setMilliseconds()
  • #setMinutes()
  • #setMonth()
  • #setSeconds()
  • #setTime()
  • #setUTCDate()
  • #setUTCFullYear()
  • #setUTCHours()
  • #setUTCMilliseconds()
  • #setUTCMinutes()
  • #setUTCMonth()
  • #setUTCSeconds()
  • #toDateString()
  • #toISOString()
  • #toJSON()
  • #toLocaleDateString()
  • #toLocaleString()
  • #toLocaleTimeString()
  • #toString()
  • #toTimeString()
  • #toUTCString()

Error/RangeError/TypeError

  • #message
  • #stack
  • #toString()

Promise

  • all()
  • race()
  • reject()
  • resolve()
  • #catch()
  • #finally()
  • #then()

RegExp

  • $1-$9
  • input ($_)
  • lastMatch ($&)
  • lastParen ($+)
  • lastIndex
  • leftContext ($`)
  • rightContext ($')
  • #flags
  • #global
  • #ignoreCase
  • #multiline
  • #source
  • #sticky
  • #unicode
  • #exec()
  • #test()
  • #toSource()
  • #toString()
  • #[Symbol.replace]()
  • #[Symbol.search]()
  • #[Symbol.split]()

BigInt

1 AssemblyScript-specific
2 Filler implementation present

 

Clone this wiki locally