-*- 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