Skip to content

Files

Latest commit

 

History

History
70 lines (54 loc) · 2.8 KB

TODO.md

File metadata and controls

70 lines (54 loc) · 2.8 KB

Todo

Last update: 2020-05-01

Compiler

  • Manage source locations in compiler and generated code and include source locations in error messages
  • Optimize letrec; only use variables if bindings are mutable or if there is a forward reference.
  • Figure out that references to define, define-values, unquote, etc. are referring to the right syntax/definitions; right now, there are checks only for the definition to happen at the top-level in an immutable fashion
  • Treat define-values like define in compiler (wrt. internal definitions)
  • #; comments (datum comments) not correctly working
  • Optimization/checkpointing framework
  • Use values instead of variables for all immutable bindings (do this by compiling forms with bindings twice, if the first run shows that a binding is mutable)
  • Support (define ...) in control flow special forms
  • Refactor creation of compiler; checkpointer needs to be always passed explicitly
  • Support compiled system functions
  • Support tail patterns in syntax-rules
  • Within library definitions, support: include, include-ci, include-library-declarations, cond-expand
  • Support define-values
  • Support cond-expand
  • Support include-ci
  • Support features mechanism
  • Fix bug preventing to nest definitions three or more times

Runtime

  • Go through procedures that call back into the VM to check that all expressions are tracked by the managed object pool
  • Redesign error data model
  • Profile virtual machine
  • Implement new primitive procedure type that returns closures for execution instead of results
  • Evaluate what it takes to support call/cc
  • Implement full support for call/cc
  • Implement full support for dynamic-wind
  • Register parameter hash map (incl. mutable parts of the data structure, if needed) such that it's managed by the managed object pool

Library

  • Reimplement records: to improve performance, to use make-type, to make them extensible
  • Record type checks when record accessors are called
  • Implement text + binary ports based on the R7RS standard
  • Implement bytevector library based on the R7RS standard
  • Implement hash table library based on the R6RS standard
  • Implement record library based on the R7RS standard
  • Implement delay-force; provide full support for R7RS delayed evaluation primitives
  • Implement libraries based on the R7RS standard
  • Support mutable strings

Tests

  • Build regression testing framework
  • Add simple regression tests
  • Add unit tests

Documentation

  • Document architecture of framework
  • Document components of virtual machine
  • Document bytecode instructions
  • Document supported Scheme procedures and special forms