Skip to content
This repository

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP

LambdaMOO with multiple inheritance, anonymous objects, HTTP, JSON <-> MOO translation, better crypto, a map datatype and a RESTful interface.

Octocat-spinner-32 executables Added exec tests. August 15, 2011
Octocat-spinner-32 files Ensure we have a files/ directory. July 22, 2012
Octocat-spinner-32 nettle Added nettle cryptographic functions. November 01, 2013
Octocat-spinner-32 test Tweak test. February 09, 2014
Octocat-spinner-32 .indent.pro GNU Indent normalization March 03, 1997
Octocat-spinner-32 AddingNewMOOTypes.txt Updated the docs to reflect the current state of the server. December 16, 2011
Octocat-spinner-32 CONTRIBUTING Cleanup. February 17, 2014
Octocat-spinner-32 ChangeLog-YAJL.txt Added the YAJL changelog. June 24, 2012
Octocat-spinner-32 ChangeLog-fileio.txt Updated the documentation. August 04, 2011
Octocat-spinner-32 ChangeLog.txt first 1.8.4 update April 23, 2010
Octocat-spinner-32 FileioDocs.txt Updated the documentation. August 04, 2011
Octocat-spinner-32 GNUmakefile Support for version_hook and version_src.h April 22, 2010
Octocat-spinner-32 Gemfile Upgraded the parslet parsing library. February 08, 2012
Octocat-spinner-32 Gemfile.lock Upgraded the parslet parsing library. February 08, 2012
Octocat-spinner-32 HACKING HACKING April 23, 2010
Octocat-spinner-32 MOOCodeSequences.txt Stripped RCS comments. November 28, 2013
Octocat-spinner-32 Makefile.in Added linenoise. February 03, 2014
Octocat-spinner-32 Minimal.db Improve the security suggestions. May 13, 2013
Octocat-spinner-32 ProgrammersManual.texinfo Bumped the version. February 17, 2014
Octocat-spinner-32 README Updated the README. February 17, 2014
Octocat-spinner-32 README.Minimal Improve the security suggestions. May 13, 2013
Octocat-spinner-32 README.YAJL Added the YAJL library (v 1.0.12). June 12, 2011
Octocat-spinner-32 README.fileio Initial commit of the FileIO patch. July 26, 2011
Octocat-spinner-32 README.lambdamoo Updated the documentation for this release. May 31, 2011
Octocat-spinner-32 README.rX More doc tweaking, really warn about BYTECODE_REDUCE_REF. January 11, 2000
Octocat-spinner-32 README.sosemanuk Added SOSEMANUK stream cipher. November 24, 2013
Octocat-spinner-32 Test.db Added tests. Lots and lots of tests. December 07, 2012
Octocat-spinner-32 Testing.txt Added documentation on testing. July 22, 2012
Octocat-spinner-32 acinclude.m4 Added autoconf support for detecting /dev/random. November 17, 2013
Octocat-spinner-32 aclocal.m4 Added support for BCrypt encryption and salt generation. November 17, 2013
Octocat-spinner-32 ast.cc Added support for bitwise operators. February 03, 2014
Octocat-spinner-32 ast.h Added support for bitwise operators. February 03, 2014
Octocat-spinner-32 base64.cc Re-enable limits. February 09, 2014
Octocat-spinner-32 base64.h Cleaned up warnings. February 12, 2012
Octocat-spinner-32 bf_register.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 client_bsd.c Stripped RCS comments. November 28, 2013
Octocat-spinner-32 client_sysv.c Stripped RCS comments. November 28, 2013
Octocat-spinner-32 code_gen.cc Added support for bitwise operators. February 03, 2014
Octocat-spinner-32 code_gen.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 collection.cc The great renaming. June 19, 2013
Octocat-spinner-32 collection.h Map in/is_member now behaves more like list in/is_member. July 19, 2011
Octocat-spinner-32 config.h.in Stripped RCS comments. November 28, 2013
Octocat-spinner-32 configure Regenerate configure script. January 26, 2014
Octocat-spinner-32 configure.ac Prefer `waitpid()'. January 26, 2014
Octocat-spinner-32 crypt_blowfish.c Fixed spelling error. November 17, 2013
Octocat-spinner-32 crypt_gensalt.c Added support for BCrypt encryption and salt generation. November 17, 2013
Octocat-spinner-32 crypto.cc Added binary string support to hash and hmac builtins. January 31, 2014
Octocat-spinner-32 crypto.h Added support for BCrypt encryption and salt generation. November 17, 2013
Octocat-spinner-32 db.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 db_file.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 db_io.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 db_io.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 db_objects.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 db_private.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 db_properties.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 db_tune.h Merge UNSAFE_OPTS (r5) after extensive testing. July 07, 1997
Octocat-spinner-32 db_verbs.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 decompile.cc Added support for bitwise operators. February 03, 2014
Octocat-spinner-32 decompile.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 disassemble.cc Added support for bitwise operators. February 03, 2014
Octocat-spinner-32 disassemble.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 eval_env.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 eval_env.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 eval_vm.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 eval_vm.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 exec.cc Added casts. June 19, 2013
Octocat-spinner-32 exec.h Moved the exec constants into options.h. April 26, 2013
Octocat-spinner-32 execute.cc Added support for bitwise operators. February 03, 2014
Octocat-spinner-32 execute.h Added colorized logging. February 03, 2014
Octocat-spinner-32 extensions.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 fileio.cc Added offset support to `index()' and `rindex()' builtins. January 26, 2014
Octocat-spinner-32 fileio.h Integrated FileIO subsystem. April 26, 2013
Octocat-spinner-32 functions.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 functions.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 garbage.cc Describe "finalization" better. January 25, 2014
Octocat-spinner-32 garbage.h Added support for cyclic garbage collection. December 07, 2012
Octocat-spinner-32 http_parser.c Modify the HTTP error messages. September 03, 2011
Octocat-spinner-32 http_parser.h The Node HTTP parsing library. September 03, 2011
Octocat-spinner-32 install-sh Upgraded to Autoconf 2. June 17, 2013
Octocat-spinner-32 json.cc Generalize parsing of JSON numbers. October 28, 2013
Octocat-spinner-32 json.h Added YAJL/JSON integration. June 12, 2011
Octocat-spinner-32 keywords.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 keywords.gperf Stripped RCS comments. November 28, 2013
Octocat-spinner-32 keywords.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 linenoise.c Added linenoise. February 03, 2014
Octocat-spinner-32 linenoise.h Added linenoise. February 03, 2014
Octocat-spinner-32 list.cc Added `strtr()' builtin. January 26, 2014
Octocat-spinner-32 list.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 log.cc Added colorized logging. February 03, 2014
Octocat-spinner-32 log.h Added colorized logging. February 03, 2014
Octocat-spinner-32 map.cc Fixed initialization. June 22, 2013
Octocat-spinner-32 map.h Fixed (mis)use of the `new' keyword. June 18, 2013
Octocat-spinner-32 match.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 match.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-ctype.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-fcntl.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-in.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-inet.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-ioctl.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-math.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-poll.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-signal.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-socket.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-stat.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-stdarg.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-stdio.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-stdlib.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-string.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-stropts.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-sys-time.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-time.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-tiuser.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-types.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-unistd.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 my-wait.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 name_lookup.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 name_lookup.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 net_bsd_lcl.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 net_bsd_tcp.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 net_mp_fake.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 net_mp_poll.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 net_mp_selct.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 net_mplex.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 net_mplex.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 net_multi.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 net_multi.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 net_proto.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 net_proto.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 net_single.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 net_sysv_lcl.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 net_sysv_tcp.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 net_tcp.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 network.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 network.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 numbers.cc Extend `random_bytes()' limit and test. November 28, 2013
Octocat-spinner-32 numbers.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 objects.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 opcode.h Added support for bitwise operators. February 03, 2014
Octocat-spinner-32 options.h Added colorized logging. February 03, 2014
Octocat-spinner-32 parse_cmd.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 parse_cmd.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 parser.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 parser.y The parser now handles the index/range case as expected. February 06, 2014
Octocat-spinner-32 pattern.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 pattern.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 program.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 program.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 property.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 quota.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 quota.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 random.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 regexpr.c Stripped RCS comments. November 28, 2013
Octocat-spinner-32 regexpr.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 restart Stripped RCS comments. November 28, 2013
Octocat-spinner-32 restart.sh Stripped RCS comments. November 28, 2013
Octocat-spinner-32 server.cc Enabled linenoise in emergency mode. February 03, 2014
Octocat-spinner-32 server.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 sosemanuk.c Added SOSEMANUK stream cipher. November 24, 2013
Octocat-spinner-32 sosemanuk.h Integrated SOSEMANUK into random number generation. November 28, 2013
Octocat-spinner-32 storage.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 storage.h Moved the definition. February 09, 2014
Octocat-spinner-32 str_intern.cc Added casts. June 19, 2013
Octocat-spinner-32 str_intern.h Initial string interning during db load. February 19, 1998
Octocat-spinner-32 streams.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 streams.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 structures.h Added support for bitwise operators. February 03, 2014
Octocat-spinner-32 sym_table.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 sym_table.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 system.cc The great renaming. June 19, 2013
Octocat-spinner-32 system.h Integrated System subsystem. April 26, 2013
Octocat-spinner-32 t2hinit.pl Stripped RCS comments. November 28, 2013
Octocat-spinner-32 tasks.cc Add dynamic `player_huh' server option. December 31, 2013
Octocat-spinner-32 tasks.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 test.yml Added testing framework and basic object/verb/property tests. May 30, 2011
Octocat-spinner-32 texinfo.tex Added support files necessary to generate the documentation. October 08, 2011
Octocat-spinner-32 timers.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 timers.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 tokens.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 unparse.cc Added support for bitwise operators. February 03, 2014
Octocat-spinner-32 unparse.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 utils.cc Added `strtr()' builtin. January 26, 2014
Octocat-spinner-32 utils.h Added `strtr()' builtin. January 26, 2014
Octocat-spinner-32 verbs.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 verbs.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 version.cc Stripped RCS comments. November 28, 2013
Octocat-spinner-32 version.h Stripped RCS comments. November 28, 2013
Octocat-spinner-32 version_opt_gen.pl Inspect value of `PLAYER_HUH' option. December 31, 2013
Octocat-spinner-32 version_options.h Inspect value of `PLAYER_HUH' option. December 31, 2013
Octocat-spinner-32 version_src.txt HACKING April 23, 2010
Octocat-spinner-32 x86.S Fixed to work on ARM. Also works on x86 targets. April 15, 2014
Octocat-spinner-32 xtrapbits.h Added xtrapbits.h to get common bit array operations. April 21, 2012
Octocat-spinner-32 yajl.c Added the YAJL library (v 1.0.12). June 12, 2011
Octocat-spinner-32 yajl_alloc.c Added the YAJL library (v 1.0.12). June 12, 2011
Octocat-spinner-32 yajl_alloc.h Added the YAJL library (v 1.0.12). June 12, 2011
Octocat-spinner-32 yajl_buf.c Added the YAJL library (v 1.0.12). June 12, 2011
Octocat-spinner-32 yajl_buf.h Added the YAJL library (v 1.0.12). June 12, 2011
Octocat-spinner-32 yajl_bytestack.h Added the YAJL library (v 1.0.12). June 12, 2011
Octocat-spinner-32 yajl_common.h Added the YAJL library (v 1.0.12). June 12, 2011
Octocat-spinner-32 yajl_encode.c Re-added support for Unicode escapes back into JSON parsing. This gen… November 29, 2012
Octocat-spinner-32 yajl_encode.h Added the YAJL library (v 1.0.12). June 12, 2011
Octocat-spinner-32 yajl_gen.c Format JSON and MOO floating-point numbers consistently. October 28, 2013
Octocat-spinner-32 yajl_gen.h Fixed some missed headers. June 13, 2011
Octocat-spinner-32 yajl_lex.c Added the YAJL library (v 1.0.12). June 12, 2011
Octocat-spinner-32 yajl_lex.h Added the YAJL library (v 1.0.12). June 12, 2011
Octocat-spinner-32 yajl_parse.h Parse long JSON numbers into MOO floating-point numbers. October 28, 2013
Octocat-spinner-32 yajl_parser.c Parse long JSON numbers into MOO floating-point numbers. October 28, 2013
Octocat-spinner-32 yajl_parser.h Added the YAJL library (v 1.0.12). June 12, 2011
Octocat-spinner-32 yajl_version.c Added the YAJL library (v 1.0.12). June 12, 2011
Octocat-spinner-32 yajl_version.h Added the YAJL library (v 1.0.12). June 12, 2011
README
See `README.lambdamoo' for general information on LambdaMOO.

More information on Stunt is available here: http://stunt.io/.  If you
want to get up and running quickly, consider starting with Improvise,
the Stunt starter kit: https://github.com/toddsundsted/improvise.

This is Release 10-wip of the Stunt extensions to the LambdaMOO
server.  It is based on the latest "1.8.3+" version from SourceForge.
Read the very important WARNING below before running this on your
existing database!!!

Release 10 is based on a "rewrite" of Stunt in C++ (the word "rewrite"
here means that I made the minimal necessary syntactical and structural
changes to get the project to compile on a modern C++ compiler) (shout
out to Steve Wainstead who paved the road here).  This makes way for
major improvements down the road.  Release 10 also includes many
smaller features noted below.

Stunt includes the following functionality not found in the main
server:

1)  Multiple-Inheritance
    `create()' now takes either an object number or a list of object
    numbers in the first argument position.  Two new built-ins,
    `parents()' and `chparents()', manipulate an object's parents.
    The built-ins `parent()' and `chparent()' exist for backward
    compatibility -- when an object has multiple parents these
    built-ins operate on the first parent.

2)  Anonymous objects
    Objects without an assigned object number that are accessible via
    an unforgeable references, and which are automatically garbage
    collected when no longer reachable.

3)  Task Local Storage
    The built-ins `task_local()' and `set_task_local()' retrieve/store
    a task local value.  The value is automatically freed when the
    task finishes.

4)  Map Datatype
    The server includes a native map datatype based on a binary search
    tree (specifically, a red-black tree).  The implementation allows
    in-order traversal, efficient lookup/insertion/deletion, and
    supports existing MOO datatypes as values (keys may not be lists or
    maps).  Index, range, and looping operations on lists and strings
    also work on maps.

5)  JSON Parsing/Generation
    The built-ins `parse_json()' and `generate_json()' transform MOO
    datatypes from/to JSON.

6)  New Built-in Cryptographic Operations
    The new cryptographic operations include SHA-1 and SHA-256 hashes.
    The existing MD5 hash algorithm is broken from a cryptographic
    standpoint, as is SHA-1 -- both are included for interoperability
    with existing applications (both are still popular) but the default
    for `string_hash()'/`binary_hash()'/`value_hash()' is now SHA-256.
    Stunt also includes the HMAC-SHA-1 and HMAC-SHA-256 algorithms for
    generating secure, hash-based message authentication codes.
    `crypt()' has been upgraded to support Bcrypt hashed passwords.
    The random number subsystem is now based on the SOSEMANUK cipher
    and seeds itself from `/dev/random'.

7)  Built-in Base64 Encoding/Decoding
    The built-ins `encode_base64()' and `decode_base64()' encode and
    decode Base64-encoded strings.

8)  An Improved FileIO Patch
    The 1.5p1 patch that is in wide circulation has flaws, including two
    server crashing bugs.  This patch fixes those bugs/flaws without
    changing the API.

9)  Secure Suspending Process Exec
    The exec functionality adds an `exec()' built-in which securely
    forks/execs an external executable.  It doesn't use the `system()'
    call, which is hard to secure and which blocks the server.
    `exec()' takes two parameters, a list of strings comprising the
    program and its arguments, and a MOO binary string that is sent to
    stdin.  It suspends the current task so the server can continue
    serving other tasks, and eventually returns the process termination
    code, stdout, and stderr in a list.

10) Verb Calls on Primitive Types
    The server supports verbs calls on primitive types (numbers,
    strings, etc.) so calls like `"foo bar":split()' can be
    implemented and work as expected (they were always syntactically
    correct but resulted in an E_TYPE error).  Verbs are implemented
    on prototype object delegates ($int_proto, $float_proto,
    $str_proto, etc.).  The server transparently invokes the correct
    verb on the appropriate prototype -- the primitive value is the
    value of `this'.

11) In Server HTTP Parsing
    The server uses the excellent Node HTTP parsing library to
    natively parse HTTP requests and responses into key/value pairs in
    a map datatype.  The parser handles corner cases correctly and
    supports things like HTTP upgrade (for using WebSockets, for
    example).  It's also much much faster than parsers implemented in
    MOO code.

12) Colorized Logging and Line Editing
    The server writes colorized output to the log when attached to a
    console.  The `server_log()' built-in allows colorized output from
    within the server.  And line editing is supported in emergency
    wizard mode.

13) Bitwise Operators
    The server supports bitwise and (&.), or (|.), xor (^.), logical
    (not arithmetic) right-shift (<<), logical left-shift (>>), and
    complement (~) operators.

14) Testing Framework
    The server includes a unit testing framework based on Ruby's
    Test-Unit.  It includes a Parslet parser (two, actually) for
    turning moo-code values into Ruby values, which makes writing
    tests much easier.  The new code is covered very well by the
    existing tests.

WARNING: This server changes the database format in a non-backward
compatible way in order to persist multiple-parent relationships.  The
server will automatically upgrade version 4 databases, however THERE
IS NO WAY BACK!

Use Github and the Github issue system for feedback and bugs!  See
CONTRIBUTING for details on how to contribute.

Todd
Something went wrong with that request. Please try again.