MOO-cows Mailing List Archive
[Prev][Next][Index][Thread]
ALPHA-TEST release of LambdaMOO version 1.8.0alpha5
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.)
-------------------------------------------------------------------------------
Follow-Ups:
Home |
Subject Index |
Thread Index