Skip to content

HTTPS clone URL

Subversion checkout URL

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

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.