[MOO-Discuss] [ANN] GammaMOO 1.8.3+gamma0
Status: Planning
Brought to you by:
luke-jr
|
From: Luke-Jr <lu...@da...> - 2012-03-08 02:38:33
|
GammaMOO 1.8.3+gamma0 has been released. It can be downloaded from: http://luke.dashjr.org/programs/gammamoo/ NOTE: This is a rewrite of the GammaMOO patchset, not based on earlier GammaMOO code/releases. It is in many ways NOT backward compatible, and extra precaution should be taken if one wishes to upgrade from the older GammaMOO codebase. ChangeLog since LambdaMOO 1.8.3: Version 1.8.3+gamma0, in progress -- Fix FOR statement infinite loop when $maxint is the upper limit. -- Fix random($maxint) to return in correct range. -- Fix memory leak in flush_input. -- Fix memory leak in run_interpreter/save_handler_info in the case where FINALLY returns/breaks/suspends. -- Fix random(m) to be uniformly distributed for m!=2^k to allow for m > RAND_MAX -- Refactored bf_listinsert/bf_listappend to reduce refcounts -- The disassemble() built-in function will now properly disassemble all possible literal values. Formerly, FLOAT literals were not properly disassembled. -- Trapped various error conditions formerly ignored. -- Fixed null pointer dereference when trying to dump an uninitialized command history. -- Whenever the player flag is cleared on an object, or an object with the player flag set is recycled, the server will now output a traceback to the log. -- Enabled keepalive on TCP connections. **** Changes relevant to programmers / wizards: -- server_version() now takes an argument so that information about the server build can be available in-db. -- $server_options.protect_<prop> now prevents non-wizard *writes* and must be followed by load_server_options() to take effect -- New $server_options .max_list_concat and .max_string_concat to limit the size of user-constructed lists and strings -- New $server_option .max_concat_catchable to govern whether violating new size limits causes out-of-seconds or E_QUOTA error -- Setting binary mode immediately flushes the connection's buffer, if any -- $match_object() is called to lookup dobj and iobj (one at a time). If it returns an OBJ type, the return value is used. Otherwise, the old internal matching is used. ********** Before upgrading an existing LambdaCore-based MOO to use this ** NOTE ** version of the server, you should probably add at least a dummy ********** $match_object verb (no code needed to get the old behaviour). -- Call $do_null_command() when there is a null input from a player -- $handle_uncaught_error() and $handle_task_timeout() are now called with an additional argument, containing the full command entered that triggered the exception. ********** Before upgrading an existing LambdaCore-based MOO to use this ** NOTE ** version of the server, you might need to edit your core verbs ********** to at least ignore the new argument. Scattered assignments without a dummy "extra arguments" catchall at the end will throw E_ARGS! -- random() now accepts either one or two arguments. If two, the first is treated as the minimum random number and the second as the maximum. -- Wizards can create "network" connections entirely within the MOO using new builtin functions: create_connection(OBJ destination-object[, INT print- messages]) and create_connection_from(OBJ source-object, OBJ destination-object[, INT print-messages]) -- Added new support for in-db definitions of "builtin" functions. Unrecognized functions are checked for an implementation as $bf__FUNCNAME They behave the same as C builtins, except: -- there is an additional protect_core_function/bf_core_function check pair -- it's possible to bypass the usual $bf_FUNCNAME by calling them directly -- load_server_options() is not required before their protect_FUNCNAME property takes effect -- Added support for scattering in `for' statements. -- Added support for bitshift and bitwise operators: X << Y Bitshift left operation X >> Y Bitshift right operation X &. Y Bitwise AND operation X |. Y Bitwise OR operation X ^. Y Bitwise XOR operation ~X Bitwise NOT operation -- The File I/O extension has been merged (disabled by default). See FileioDocs.txt for details, and options.h to enable it. -- Added support for the File I/O Logger, a special limited mode for append-once logging. -- If the server is built with libgcrypt support, the builtin hashing functions (binary_hash, string_hash, and value_hash) accept an optional second argument, a string specifying which hash algorithm to use. For compatibility, the default algorithm is MD5 (please note that MD5 is not cryptographically secure). **** Changes significant to people compiling and running the server: -- Source/build information that is compiled into the server now comes from version_src.h. Purpose and format of this file is now described in version_src.txt. -- New GNUmakefile invokes optional ./version_hook which can be linked to any script that will generate a version_src.h file from source control information as appropriate. (You can also have a static version_src.h file that #defines the VERSION_* macros.) -- IGNORE_PROP_PROTECTED deprecated since no longer necessary -- New options DEFAULT_MAX_LIST_CONCAT, DEFAULT_MAX_STRING_CONCAT, MIN_LIST_CONCAT_LIMIT, MIN_STRING_CONCAT_LIMIT to set defaults and lower bounds for .max_list_concat and .max_string_concat -- Specific property names can be reserved, preventing them from being used by new or renamed properties. By default, the "class" property is blocked to ensure future WAIF compatibility. -- The `restart' and `restart.sh' scripts have been modified to use gzip instead of the old `compress' program. -- The server can be (and is by default, if available) linked against libgcrypt for more hashing algorithms. Pass --without-libgcrypt to configure if you want the old MD5-only hash functions. **** Changes relevant to server hackers: -- Added HACKING as an index to the various server-hacking documentation files scattered about the source directory. (do we need a doc directory?) -- If you add or remove #defines from options.h, you should update version_opt_gen.pl accordingly and rerun it to generate a new version_options.h, which then populates the group returned by server_version("options"). -- Some prep work for 64-bit MOO currently isolated in numbers.c (will need autoconf update to work properly) -- server_flag_option() now takes an explicit default argument -- Rename load_server_protect_flags() to load_server_protect_function_flags() -- make_abort_pack(ABORT_KILL) replaces make_kill_pack() builtin functions can now cause other kinds of aborts -- Added caching regime for server options other than .protect_<function> -- List/string API changes (prep for raising stream exceptions) raw_bytes_to_binary -> stream_add_raw_bytes_to_binary strsub -> stream_add_strsub value_to_literal -> unparse_value list2str -> stream_add_tostr -- New stream exception API to catch malloc failures -- Makefile now uses gperf (3.0.1+) to generate keywords.c -- configure script is now generated with autoconf 2.13 or 2.5x+ |