Skip to content
This repository was archived by the owner on Mar 23, 2026. It is now read-only.

Latest commit

 

History

History
63 lines (62 loc) · 3.06 KB

File metadata and controls

63 lines (62 loc) · 3.06 KB

Roadmap:

  1. Fix duplicate constant storage in bytecode.
  2. NaN boxing (cancelled)
  3. Refactor VM to use TCO?
  4. Add || or && operator support.
  5. Add else statement support.
  6. Add while statement support.
  7. Add support for undefined variable declarations.
  8. Add static-size & heap strings with interning.
  9. Add simple data objects.
  10. Add custom natives: console, clock objects!
  11. Add larger strings under ObjectBase<Value>, StringBase for string literals.
  12. Make banana.js work.
  13. Add anonymous functions as expressions.
  14. Add support for this in functions & objects.
  15. Add Arrays:
  16. Add mark and sweep GC.
  17. Add break and continue.
  18. Parse function decls differently: function name() {} is like var name = function() {...}.
  19. Hoist var decls per scope.
  20. Add support for scoped symbol resolution in bytecode generation. - FIX GC to track DEAD CAPTURE OBJECTS!!
  21. Add support for Property Descriptors.
  22. Add an Object.method API:
  23. Update Object and Array built-ins to be more conformant:
  24. Add typeof and void operators.
  25. Add implicit ret opcode on omitted returns- it yields a this reference on ctor-mode calls, discarding any regular expr result.
  26. Add array.length with side-effects!
  27. Make String a constructor function & add some methods.
  28. Refactor bytecode gen to Dep. Inj. modules for generating each expr / stmt.
  29. Add prefix increment & decrement operator.
  30. Support Polyfills.
  31. Add exceptions (see codegen.md).
  32. Add for loops.
  33. Function.prototype should be a dud function (return undefined & length = 0).
  34. Improve operations for objects: - DELAYED: Improve as_string method of object-base... Pretty print object literal / [object <class name> ... ]
  35. Add x instanceof y operator.
  36. Add rest parameters by ES6.
  37. Add delete operator.
  38. Add postfix ++ and -- operators.
  39. Add more statement support:
  • Empty statement
  • return; semantics
  • do {} while (cond); semantics
  • Allow any statement in if/else, while, for...
  1. Add whitespace escapes and hex ASCII escapes in string literals.

Ongoing:

  1. Improve runtime errors: WIP
    • ReferenceError on bad property accesses.
    • SyntaxError on bad syntax evaluation / Function ctor calls.
  2. Add __proto__ AKA [[prototype]] support:
    • Add __proto__ to parsing.
    • Add __proto__ support to bytecode & compiler.
    • Add __proto__ support to Value & VM.
    • Add __proto__ test cases.
  3. Add more support for built-in methods:
    • String methods: concat, split
    • Object methods: keys, seal, isFrozen, isSealed, isConfigurable, hasOwnProperty
    • Date methods: instance getters & setters, toString?? toDateString??
    • Math methods: E, LOG, PI constants, pow, cos, sin, tan, log, logn, floor, ceil
    • Array methods: some, reduce, shift, unshift, splice, sort