Coder Social home page Coder Social logo

xythian / etamoo Goto Github PK

View Code? Open in Web Editor NEW

This project forked from verement/etamoo

0.0 2.0 0.0 1.25 MB

A new implementation of the LambdaMOO server

Home Page: http://verement.github.io/etamoo

License: BSD 3-Clause "New" or "Revised" License

Makefile 0.42% Haskell 98.62% C 0.97%

etamoo's Introduction

Important!

This is experimental and (currently) incomplete software. It is not yet fully usable, although with further development it is hoped that it soon will be.

At present, the code will load a database and listen for network connections. You can connect using telnet or your favorite MUD client and interact with the MOO environment, however no changes to the database will be saved, and a few other features have also yet to be implemented.

About

EtaMOO is a new implementation of the LambdaMOO server written in Haskell.

LambdaMOO is a network-accessible, multi-user, programmable, interactive system well-suited to the construction of text-based adventure games, conferencing systems, and other collaborative software.

EtaMOO differs from LambdaMOO in a few significant ways:

  • EtaMOO is multi-threaded. MOO tasks run concurrently, producing network output and changes to the database in isolated transactions that are committed only when not in conflict with any other transaction. (In cases of conflict, transactions are automatically retried.) Separate threads are also used for network connection management, so for example name lookups do not block the entire server.

  • EtaMOO is Unicode-aware, and will eventually include support for Unicode MOO strings via compile-time build option.

  • EtaMOO supports 64-bit MOO integers via compile-time build option.

  • EtaMOO natively supports string-key association lists with efficient lookup and update operations; the list index syntax has been extended to allow alist[key] and alist[key] = value for string *key*s whenever alist is a well-formed association list.

  • EtaMOO supports several additional hashing algorithms besides MD5, including SHA-1, SHA-2, and RIPEMD-160, via optional argument to string_hash(), binary_hash(), and value_hash(). Hashes may also optionally be returned as binary strings.

  • EtaMOO internally handles binary strings in an efficient manner, and only translates to and from the special MOO binary string syntax upon demand. For example, passing a binary string read from the network directly to decode_binary() does not suffer a round trip through the binary string representation.

  • EtaMOO supports fractional second delays in suspend() and fork.

  • EtaMOO supports IPv6.

The implementation of EtaMOO otherwise closely follows the specifications of the LambdaMOO Programmer's Manual, and should be compatible with most LambdaMOO databases as of about version 1.8.3 of the LambdaMOO server code.

Installing

EtaMOO is built with Cabal, the Haskell package manager. In the simplest case, running:

cabal install EtaMOO

should automatically download, build, and install the etamoo executable after doing the same for all of its Haskell dependencies.

Cabal itself is part of the Haskell Platform which is available for many distributions and platforms.

There are a few options you can give to cabal install to customize your build:

Option Feature
-j Build in parallel using multiple processors
-f llvm Use GHC's LLVM backend to compile the code
-f 64bit Enable 64-bit MOO integers

EtaMOO has non-Haskell dependencies on two external libraries: libpcre (with UTF-8 support enabled) for regular expression matching, and, possibly, libcrypt (often part of the standard libraries) for the MOO crypt() built-in function. You should ensure you have these available before installing EtaMOO (e.g. on Debian-derived systems, sudo apt-get install libpcre3-dev).

Hacking

Documentation is available for the various types, data structures, and functions used internally by EtaMOO.

etamoo's People

Contributors

verement avatar

Watchers

xythian avatar James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.