Make ast's mutate-last take an options object rather than the include-noops bool, add support for mutating Return. Mutate the last node to assign GLOBAL._ rather than setting manually in the repl, making it work properly in situations where the sandbox isn't controlled (as in gjs).
Prefix ast, translator, and prelude with js, to allow for other language targets eventually.
Add generic support to the parser, which has special handling for Array<X> (same as [X]), and otherwise ignores the generic arguments, so "as Something<X>" turns into "as Something" for now.
Add returnif and returnunless, which act like return? except that instead of returning on an existential check, it checks for truthiness/falsiness.
Add generic support to the types system. Currently the ArrayType and FunctionType are still separate.
Remove the ArrayType special handling from the types system, now it's just a GenericType.
Remove the FunctionType from the types system, instead replaced with GenericType where the return type is the first generic argument.
When creating a function or array generic type, it checks the cache of the generic argument first.
Add better support for generic types in the parser.
Initial support for generic classes. Currently #(x as T) where T is a generic parameter doesn't work properly for value types, but doing x instanceof T yourself does.
Add operators is-boolean!, is-string!, is-number!, is-function!, is-undefined!, and is-null!, which turn into a typeof check. Also make instanceof operator use these if it detects a specific class to check on (at compile time).
Add a macro that is executed every time a function literal is seen, which is used to handle destructuring, this-assignment, and default values rather than making the translator do that.
Make spread parameter handling happen in the prelude rather than the translator.
Make StopIteration and GLOBAL helpers with better handling in the translator.
Allow for <<< extension where the extension literal object has property/get/set-style properties.
Add shims for WeakMap (leaky), Map, and Set. It is recommended to use a native implementation or a proper shim instead.
Add literal syntaxes for Map and Set. Set: %[one, two, three]. Map: %{ [a]: value, [b]: value }.
Add some more tests for generic classes.
Defining a generic class now produces a usable class as the non-generic version, e.g. given Class<T>, Class can be instantiated and refers to Class<null>, which means any possible value. Class<T> is not a subclass of Class or Class<null>. Also, something like Dict<String, null> allows for a specific type in one argument and any type in another argument.
Add information about generics to index.html