-
-
Notifications
You must be signed in to change notification settings - Fork 670
Status and Roadmap
Max Graey 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 | ✓ | No closures yet |
fill | ✓ | |
filter | ✓ | No closures yet |
find | ||
findIndex | ✓ | No closures yet |
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 | ||
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] |
1 AssemblyScript-specific
2 Filler implementation present