packages feed

EtaMOO-0.3.0.0: TODO

-*- Outline -*-

* § 3 The Built-in Command Parser
** hold-input connection option
** .program built-in command
** L.do_command() suspending?
   - re-examine all possible results
* § 4 The MOO Programming Language
** § 4.4 Built-in Functions
*** § 4.4.4 Operations on Network Connections
**** open_network_connection()
**** hold-input
*** § 4.4.8 Server Statistics and Miscellaneous Information
**** verb_cache_stats()
**** log_cache_stats()
* § 5 Server Commands and Database Assumptions
** § 5.1 Command Lines That Receive Special Treatment
*** § 5.1.5 The .program Command
**** .program
** § 5.2 Server Assumptions About the Database
*** § 5.2.2 Server Messages Set in the Database
**** server_full_msg
**** timeout_msg
*** § 5.2.6 Player Input Handlers
**** $do_command uncaught exceptions

* Other
** Gather constants into a single location?
   - oob prefix, default port, etc.
   - merge MOO.Database.LambdaMOO.default_max_stack_depth
** queue_info() includes owner of current task?
** recycle() object which is a target of a listening point
** PREFIX/SUFFIX on empty input line, uncaught exception
** Handle 'read' parsing errors
** Revisit read() invariant
** Enhance version number with git commit info
** Unicode strings in database file
** Close stdin/stdout

* Before v1.0
** Fix read() and OOB
** Emergency Wizard Mode
** L.server_options.connect_timeout
** Top-level Haskell exception handling
** open_network_connection()
** hold-input
** Trap ^C interrupts

* For v2.0 or later
** General Unicode support
** TLS connection option
** Buffer outgoing data into larger chunks
** Task time limits?
** Optimize MOO AST for compilation
   - Bind built-in functions directly to implementations
** Alternative input languages?
** JIT compilation to LLVM?
** Read and write queued tasks
** Intern strings on parsing and database load
** Rewrite database reading using Attoparsec
** Rewrite parser using Happy
** Rewrite regexp translator using Writer monad
** MOO string and list size limits?
** .program
** Release unused memory upon storing property values
** $server_options.{max_list_concat,max_string_concat}
** $server_options.max_concat_catchable
   - to govern whether violating new size limits causes out-of-seconds or
     E_QUOTA error
** LM-compatible bytecode generation and decompilation
** Use PCRE 16-bit library (libpcre16)
** Avoid space leaks on loop variables