Releases: raleksandar/numenor
Releases · raleksandar/numenor
v0.0.7 - Parselet context
Parser.parseletContext
API is introduced.
Parslet context is an opaque value which is passed down to every parslet as the last argument.
V0.0.6 - Custom object/array prototypes
- The monolithic lexer is now split into a multiple reusable scanners
StackPush
was erroneously being marked as the constant expression if its value was constantObjectPrototype
andArrayPrototype
compiler options introducedObjectPrototype
is used for the objects created via object literals (i.e.Object.create(ObjectPrototype)
)ArrayPrototype
is used when traversing the prototype of an array value (withNoProtoAccess: false
)- default
ArrayPrototype
with the following methods is provided:concat
,every
,filter
,find
,findIndex
,forEach
,includes
,indexOf
,join
,lastIndexOf
,map
,reduce
,reduceRight
,slice
,some
,toString
(i.e. all the standard non-mutating methods fromArray.prototype
, with polyfills for less-supported ones)
EnforceMarshalling
compiler options is introduced which, when set, forces the array values which exit the evaluator (either as an argument to a function or as the expression return value) to haveArrayPrototype
set as their prototype (this is avoided during expression evaluation asObject.setPrototypeOf
can be expensive)
v0.0.5 - CTFE + NoProtoAccess
This release brings following features and improvements:
- support for compile-time constants
- support for compile-time function evaluation (CTFE) - if a function itself is a "constant" (it is provided in
CompilerOptions.Constants
) and all of the arguments passed to it are constant expressions it will be evaluated at compile-time - support for
CompilerOptions.NoProtoAccess
which disallows traversing of prototype chain when using member access, computed member access, orin
expressions (NoProtoAccess
defaults totrue
) - access to
__proto__
in any context is disallowed and will throwTypeError
(regardless of compiler options) - constant folding is improved, compiler will create fewer wrapper functions
- functions are now invoked using correct
thisArg
(i.e.a.b.f(x)
is evaluated asa.b.f.call(a.b, f)
which was always the expected behavior but wasn't working until now)
v0.0.4 - Mutating accessor (inc/dec) operators
This release introduces post- and pre-increment/decrement operators
v0.0.3 - Null-conditional/-coalesce operators
This release includes bugfixes which make null-conditional (?.
) and null-coalesce (??
) operators work again.
v0.0.2 - First public release
Still not tested enough and API may change, so don't use this yet! :)