-*- org -*-

* compiler
** DONE ast rewrite
   - State "DONE"       [2009-04-09 Thu 14:32]
** DONE call/cc support
   - State "DONE"       [2009-04-09 Thu 14:36]
** DONE exceptions
   - State "DONE"       [2009-04-09 Thu 14:45]
** TODO native x86 backend
   API redesign in preparation complete, initial
   tests on native factorial and closures working.
** TODO fasl/image files
   sexp_copy_context() can form the basis for images,
   FASL for arbitrary modules will need additional
   help with resolving external references.
** DONE shared stack on EVAL
   - State "DONE"       [2009-12-26 Sat 08:22]

* compiler optimizations
** DONE constant folding
   - State "DONE"       [2009-12-16 Wed 23:25]
** DONE simplification pass, dead-code elimination
   - State "DONE"       [2009-12-18 Fri 14:14]
   This is important in particular for the output generated by
   syntax-rules.
** TODO lambda lift
   The current closure representation is not very efficient, so this
   would help a lot.
** TODO inlining (and disabling primitive inlining)
   Being able to redefine procedures is important though.
** TODO unsafe operations
   Possibly, don't want to make things too complicated or unstable.
** TODO plugin infrastructure
** DONE type inference with warnings
   - State "DONE"       from "TODO"       [2010-09-21 Tue 23:18]
*** TODO structured type inference
*** TODO infer error branches
*** TODO elide type checks from type information

* macros
** DONE hygiene
   - State "DONE"       [2009-04-09 Thu 14:41]
** DONE hygienic nested let-syntax
   - State "DONE"       [2009-12-08 Tue 14:41]
** DONE macroexpand utility
   - State "DONE"       [2009-12-08 Tue 14:41]
** DONE SRFI-46 basic syntax-rules extensions
   - State "DONE"       [2009-12-26 Sat 07:59]
** DONE (... ...) support
   - State "DONE"       [2009-12-26 Sat 02:06]
** TODO compiler macros
** TODO syntax-rules common pattern reduction
** TODO syntax-rules loop optimization

* garbage collection
** DONE precise gc rewrite
   - State "DONE"       [2009-06-22 Mon 14:27]
** DONE fix heap growing
   - State "DONE"       [2009-06-22 Mon 14:29]
** DONE separate gc heaps
   - State "DONE"       [2009-12-08 Tue 14:29]
** DONE add finalizers
   - State "DONE"       [2009-12-08 Tue 14:29]
** DONE support weak references
   - State "DONE"       from "TODO"       [2010-09-21 Tue 23:16]
*** TODO support proper weak key-value references

* runtime
** DONE bignums
   - State "DONE"       [2009-07-07 Tue 14:42]
** DONE unicode
   - State "DONE"       from "TODO"       [2010-07-11 Sun 23:58]
   Supported with UTF-8 strings, string-ref is O(n) and
   string-set! may need to reallocate the whole string.
   string-cursor-ref can be used for O(1) string access.
** DONE threads
   - State "DONE"       from "TODO"       [2010-07-11 Sun 15:31]
   VM now supports an optional hook for green threads,
   and a SRFI-18 interface is provided as a separate module.
   I/O operations will currently block all threads though,
   this needs to be addressed.
*** DONE thread-local parameters
    CLOSED: [2010-12-06 Mon 21:52]
*** TODO efficient priority queues
** DONE virtual ports
   - State "DONE"       [2010-01-02 Sat 20:12]
** DONE dynamic-wind
   - State "DONE"       [2009-12-26 Sat 01:51]
   Adapted a version from Scheme48.
** DONE recursive disasm
   - State "DONE"       [2009-12-18 Fri 14:15]

* FFI
** DONE libdl support
   - State "DONE"       [2009-12-08 Tue 14:45]
** DONE opcode generation interface
   - State "DONE"       [2009-11-15 Sun 14:45]
** DONE stub generator
   - State "DONE"       [2009-12-26 Sat 01:50]
*** DONE define-c-struct
    - State "DONE"       [2009-11-29 Sun 14:48]
*** DONE define-c
    - State "DONE"       [2009-11-29 Sun 14:48]
*** DONE array return types
    - State "DONE"       [2009-12-26 Sat 01:49]
*** DONE pre-buffered string types (like getcwd)
    - State "DONE"       [2009-12-26 Sat 01:49]

* module system
** DONE scheme48-like config language
   - State "DONE"       [2009-10-13 Tue 14:38]
** DONE shared library includes
   - State "DONE"       [2009-12-08 Tue 14:39]
** DONE only/except/rename/prefix modifiers
   - State "DONE"       [2009-12-16 Wed 18:57]
** TODO scheme-complete.el support
** DONE access individual modules from repl
   - State "DONE"       [2009-12-26 Sat 01:49]

* core modules
** DONE SRFI-0 cond-expand
   - State "DONE"       [2009-12-16 Wed 20:12]
** DONE SRFI-9 define-record-type
   - State "DONE"       [2009-12-08 Tue 14:50]
** DONE SRFI-69 hash-tables
   - State "DONE"       [2009-11-15 Sun 14:50]
** DONE match library
   - State "DONE"       [2009-12-08 Tue 14:54]
** DONE loop library
   - State "DONE"       [2009-12-08 Tue 14:54]
** TODO network interface
** DONE posix interface
   - State "DONE"       from "TODO"       [2010-07-11 Sun 15:36]
   Splitting this into several parts.
*** DONE filesystem interface
    - State "DONE"       [2009-12-26 Sat 01:50]
*** DONE process interface
    - State "DONE"       [2009-12-26 Sat 01:50]
*** DONE time interface
    - State "DONE"       [2009-12-26 Sat 01:50]
*** DONE host system interface
    - State "DONE"       [2010-01-02 Sat 20:12]
** DONE pathname library
   - State "DONE"       [2009-12-16 Wed 18:58]
** DONE uri library
   - State "DONE"       [2009-12-16 Wed 18:58]
** TODO http library
** TODO show (formatting) library
** TODO zip library
** TODO tar library
** TODO md5sum library

* ports
** DONE basic mingw support
   - State "DONE"       [2009-06-22 Mon 14:36]
** DONE Plan 9 support
   - State "DONE"       [2009-08-10 Mon 14:37]
** DONE 64-bit support
   - State "DONE"       [2009-11-01 Sun 14:37]
** TODO iPhone support
** TODO bare-metal support

* miscellaneous
** TODO overall cleanup
** TODO user documentation
** TODO thorough source documentation
** TODO full test suite for libraries

* distribution
** TODO packaging format
** TODO code repository with fetch+install tool
** TODO translator to/from other implementations