-
-
Notifications
You must be signed in to change notification settings - Fork 670
Status and Roadmap
Daniel Wirtz edited this page Nov 11, 2018
·
167 revisions
Current state of development is tracked in GitHub projects.
- 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)
- 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 |
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 | ✓ | |
fill | ✓ | |
filter | ✓ | |
find | ||
findIndex | ✓ | |
flat | ||
flatMap | ||
forEach | ✓ | No closures yet |
includes | ✓ | |
indexOf | ✓ | |
join | ✓ | |
keys | ||
lastIndexOf | ✓ | |
map | ✓ | No closures yet |
pop | ✓ | |
push | ✓ | |
reduce | ✓ | |
reduceRight | ✓ | |
reverse | ✓ | |
shift | ✓ | |
slice | ✓ | |
some | ✓ | |
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 |
- #byteLength
- isView()
- #slice()
- #transfer()
- #toString()
- #buffer
- #byteLength
- #byteOffset
- #getInt8()
- #getUint8()
- #getInt16()
- #getUint16()
- #getInt32()
- #getUint32()
- #getInt64() 1
- #getUint64() 1
- #getFloat32()
- #getFloat64()
- #setInt8()
- #setUint8()
- #setInt16()
- #setUint16()
- #setInt32()
- #setUint32()
- #setInt64() 1
- #setUint64() 1
- #setFloat32()
- #setFloat64()
- #toString()
- #length
- fromCharCode()
- fromCharCodes() 1
- fromCodePoint()
- fromCodePoints() 1
- #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()
- #for()
- #keyFor()
- 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()
- #size
- #clear()
- #delete()
- #entries()
- #forEach()
- #get()
- #has()
- #set()
- #keys()
- #values()
- #toString()
- #
[Symbol.iterator]
()
- #size
- #add()
- #clear()
- #delete()
- #entries()
- #forEach()
- #has()
- #values()
- #toString()
- #
[Symbol.iterator]
()
- #delete()
- #get()
- #has()
- #set()
- #toString()
- #add()
- #delete()
- #has()
- #toString()
- assert()
- clear()
- count()
- dir()
- error()
- group()
- groupCollapsed()
- groupEnd()
- info()
- log()
- table()
- time()
- timeEnd()
- trace()
- warn()
- parse()
- stringify()
- is()
- keys()
- assign()
- create()
- entries()
- getOwnPropertyNames()
- getOwnPropertySymbols()
- #toString()
- 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()
- #message
- #stack
- #toString()
- all()
- race()
- reject()
- resolve()
- #catch()
- #finally()
- #then()
- $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]
()
1 AssemblyScript-specific
2 Filler implementation present