# ALPHA-TEST release of LambdaMOO version 1.8.0alpha5

Pavel Curtis (pavel@parc.xerox.com)
Thu, 11 Jan 1996 00:07:16 PST

- Messages sorted by:[ date ][ thread ][ subject ][ author ]

    I have made one more in a long line of *alpha-test* releases of version 1.8.0
    of the LambdaMOO server in the usual place:

    	ftp://ftp.parc.xerox.com/pub/MOO/LambdaMOO-1.8.0alpha5.tar.Z

    This is still an ALPHA TEST release of the server and, although it's almost
    certainly a great deal more stable than previous alpha releases, there are
    almost certainly some more server-crashing, database-losing bugs remaining, so
    please DO NOT USE THIS RELEASE IN A PRODUCTION SETTING!

    Please continue to send your bug reports to the main MOO-Cows mailing list.
    I still expect to make at least one more test release before the final,
    production-approved one.

    Here's the ChangeLog.txt entry for this release:
    -------------------------------------------------------------------------------
    Version 1.8.0alpha5, 11 January 1996
    -- Removed test that caused commands from disconnected users to be discarded.
       (Thanks to Nate Massey for asking the question that led to this.)
    -- If $do_command() returns false without suspending (signalling that the
       server should carry on with its normal command parsing and dispatch), the
       resulting input task will have the same task_id() value as the $do_command()
       task did.  (Thanks to Nate Massey for the suggestion.)
    -- Added configuration code to cope with the C function crypt() not existing;
       in such a case, the crypt() built-in function simply returns the first
       argument, unchanged.  (Thanks again to Nate Massey for the suggestion.)
    -- Fixed bogus-memory freeing bug in add_verb().  (Thanks to Mark Blanchard for
       reporting this and to Purify for finding it.)
    -- Fixed missing declaration of strlen() in parser.y.  (Thanks again to Mark
       Blanchard for the report.)
    -- Fixed bug where the wrong permissions are used by built-in functions who ask
       after they've already called some MOO function.  (Thanks to Brian Buchanan
       for finding this.)
    -- Added new built-in function `buffered_output_length([CONN])', where CONN is
       an active connection and the result is the number of bytes currently
       buffered up for output.  If CONN is not provided, this returns the maximum
       number of bytes that will be buffered up for output on any connection.
       (Thanks to Martian for the impetus for this and to Gustavo Glusman and Jaime
       Prilusky for inspiration on the interface.)
    -- Made it easier for server code to get the result of a suspended task, by
       adding an `result' argument to resume_from_previous_vm().  (Thanks to Jin-su
       Ahn for pointing out this irregularity in the code.)
    -- Fixed problem with non-flushing notify() calls when the string to be output
       is larger than MAX_QUEUED_OUTPUT; this always failed, even when there wasn't
       any other output in the buffer.  Now, if the buffer is currently empty, any
       line of output, no matter how large, will be accepted.
    -- Added facility for doing fully-general binary I/O on connections.  If you
       call `set_connection_option(CONN, "binary", 1)', then both input from and
       output to that connection can contain arbitrary bytes.  On input, any byte
       that isn't an ASCII printing character, the space character, or the TAB
       character will be represented as the four-character substring "~NNN", where
       NNN is the octal representation of the byte; the input character `~' is
       represented by the two-character substring "~~".  Call this representation
       of bytes "binary strings".  Input from a connection in binary mode is *not*
       broken into lines at all; it is delivered to either the read() function or
       the built-in command parser in whatever size chunks come back from the
       operating system.  For output to a connection in binary mode, the second
       argument to `notify()' must be a binary string; if it is malformed, E_INVARG
       is raised.  Of course, the call `set_connection_option(CONN, "binary", 0)'
       sets the connection back into the normal MOO I/O mode.
    -- For convenience in manipulating binary strings, two new built-in functions
       are provided:
    	decode_binary(BIN_STRING [, FULLY]) => LIST
    	    Returns a list of strings and/or numbers representing the bytes in
    	    BIN_STRING in order.  If FULLY is false or omitted, the list
    	    contains a number only for each non-printing, non-space, non-tab
    	    byte; all other characters are grouped into the longest possible
    	    contiguous substrings.  If FULLY is provided and true, the list
    	    contains only numbers, one for each byte represented in BIN_STRING.
    	    Raises E_INVARG if BIN_STRING is malformed.
    	    Examples:
    		decode_binary("foo") => {"foo"}
    		decode_binary("~~foo") => {"~foo"}
    		decode_binary("foo~015~012") => {"foo", 10, 13}
    		decode_binary("foo~012bar~012baz")
    						=> {"foo", 10, "bar", 10, "baz}
    		decode_binary("foo~015~012", 1) => {102, 111, 111, 13, 10}
    	encode_binary(@ARGS) => BIN_STRING
    	    ARGS must be a list of numbers between 0 and 255, strings, and
    	    lists of this same form.  Translates each number and string in turn
    	    into its binary string equivalent, returning the concatenation of
    	    all these substrings into a single binary string.
    	    Examples:
    		encode_binary("~foo") => "~~foo"
    		encode_binary({"foo", 13, 10}, {"bar", 13, 10})
    					=> "foo~015~012bar~015~012"
    		encode_binary("foo", 13, 10, "bar", 13, 10)
    					=> "foo~015~012bar~015~012"
    -- Fixed two places missed in a change made in 1.7.9alpha1;
       $user_disconnected() is now called for un-logged-in connections that either
       time out or are the target of a call to boot_player().  (Thanks to Brian
       Buchanan for pointing out the discrepancy.)
    -- Fixed memory-smash bug in the renumber() built-in function.  (Thanks again
       to Brian Buchanan for reporting this and to Purify for making it easy to
       find the problem.)
    -------------------------------------------------------------------------------