A NaN-boxing VM for FunctionalScript implemented in Rust. See todo/fjs-nanvm-integration.md and nanvm-lib/todo/ for design notes.
JS Operator Implementation Status
Operators on Any<A> (the top-level VM value type).
Operator
Description
Any<A>
Notes
+
Addition / concat
[x]
any/add.rs — delegates to Unpacked; handles number, string, bigint
-
Subtraction
[ ]
Sub for BigInt exists; no Any-level impl
*
Multiplication
[x]
impls/mul.rs → Numeric * Numeric
/
Division
[ ]
%
Remainder
[ ]
**
Exponentiation
[ ]
Operator
Description
Any<A>
Notes
-
Unary minus
[x]
any/neg.rs — Neg for Any<A>
+
Unary plus
[x]
Any::unary_plus() method (coerces to number)
!
Logical NOT
[ ]
~
Bitwise NOT
[ ]
typeof
Type of
[ ]
Operator
Description
Any<A>
Notes
===
Strict equality
[x]
any/partial_eq.rs — PartialEq for Any<A>
!==
Strict inequality
[x]
Provided by PartialEq
<
Less than
[ ]
PartialOrd for BigInt exists; no Any-level impl
<=
Less than or equal
[ ]
>
Greater than
[ ]
>=
Greater or equal
[ ]
Operator
Description
Any<A>
Notes
&
AND
[ ]
|
OR
[ ]
^
XOR
[ ]
<<
Left shift
[ ]
Shl for BigInt exists; no Any-level impl
>>
Signed right shift
[ ]
Shr for BigInt exists; no Any-level impl
>>>
Unsigned right shift
[ ]
Operator
Description
Any<A>
Notes
&&
Logical AND
[ ]
||
Logical OR
[ ]
??
Nullish coalescing
[ ]
Nullish type exists
Operator
Description
Any<A>
Notes
?:
Conditional
[ ]
. / []
Member access
[ ]
in
Property check
[ ]
instanceof
Instance check
[ ]