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