Mercurial > hg > xemacs-beta
diff CHANGES-beta @ 5197:ce8ffb95bbe3
finish up CHANGES-beta -- all changes thru Apr 9, 2010
-------------------- ChangeLog entries follow: --------------------
ChangeLog addition:
2010-04-09 Ben Wing <ben@xemacs.org>
* CHANGES-beta:
Update with my changes to the trunk since the release of 21.5.29
in 2009 up through April 9, 2010.
author | Ben Wing <ben@xemacs.org> |
---|---|
date | Fri, 09 Apr 2010 02:33:11 -0500 |
parents | e785e579b084 |
children | 317ebaee6e4f |
line wrap: on
line diff
--- a/CHANGES-beta Tue Apr 06 23:29:35 2010 -0500 +++ b/CHANGES-beta Fri Apr 09 02:33:11 2010 -0500 @@ -2,26 +2,50 @@ by Ben Wing: -debugging: +Debugging (Lisp level): -- make objects consistently print a UID, with a separate number space per object type -- add variable `debug-soe' for debugging stack-of-extents code in extents.c +-- add variable debug-regexps for debugging regexp code, takes list of areas + to show info about -- correctly note pdumped objects in memory-usage stats returned by `garbage-collect' and `object-memory-usage-stats'. -- make VDB debugging functions (e.g. `test-segfault', which causes an immediate crash!) conditional on `--with-debug' -- rename `debug-xemacs-searches' -> `debug-searches' +-- rename `xft-debug-level' -> `debug-xft' +-- rename `debug-x-objects' -> `debug-x-fonts' -- Turn on "compiled-function annotation hack" so that compiled-function objects print the function they are assigned to -- Resurrect byte-metering code when --with-debug; enable with variables `byte-code-meter', `byte-metering-on' -- Add more checks for invalid byte code; when a byte-code-related crash occurs, output the last 100 instructions processed - -documentation: +-- Improved memory-usage mechanism -- removal of `*-memory-usage' in favor + of generalized `object-memory-usage'; `show-memory-usage' and + `show-object-memory-usage-stats' show, in addition to regular object usage, + associated non-Lisp usage as well as ancillary Lisp object usage; + `garbage-collect' and `object-memory-usage-stats' return information on + storage overhead, associated non-Lisp usage and ancillary Lisp usage + +Lisp documentation: -- fix to `previous/next-single[-char]-property-change' +-- Document the keywords to the various sequence/list functions: + reduce, fill, replace, remove*, remove-if, remove-if-not, delete*, + delete-if, delete-if-not, remove-duplicates, delete-duplicates, + substitute, substitute-if, substitute-if-not, nsubstitute, + nsubstitute-if, nsubstitute-if-not, find, find-if, find-if-not, + position, position-if, position-if-not, count, count-if, count-if-not, + mismatch, search, sort*, stable-sort, merge, member*, member-if, + member-if-not, assoc*, assoc-if, assoc-if-not, rassoc*, rassoc-if, + rassoc-if-not, union, nunion, intersection, nintersection, + set-difference, nset-difference, set-exclusive-or, nset-exclusive-or, + subsetp, subst-if, subst-if-not, nsubst, nsubst-if, nsubst-if-not, + sublis, nsublis, tree-equal, cl-tree-equal-rec, pushnew, adjoin, subst +-- fix so that Common-Lisp argument lists get properly displayed in + function documentation Lisp API: @@ -38,56 +62,300 @@ -- In `scan-lists' and friends, when an error occurs, return a `scan-error' along with two arguments specifying the range in which the error occurred, for GNU compatibility - -Internals: +-- Functions for dealing with conditional compilation of code depending on + presence or absence of features: + -- error-unless-tests-match -- signal an error unless a test expression + matches when file is compiled and loaded + -- byte-compile-file-being-compiled -- return name of file being + byte-compiled + -- compiled-if, compiled-when -- like `if' or `when' but test is evaluated + at compile time +-- Functions for doing stable set operations + -- stable-union, stable-intersection + +Internals: Lisp objects -- reduce lcrecord header size from 3 words to 2 -- major change to the way Lisp objects are defined and declared; introduce a cleaner surface-layer API that eliminates references to "lrecords" and "lcrecords", and uses "frob-block object" in place of "basic object"/ - "simple object"/etc. + "simple object"/etc.: + + Renamed: + + ALLOC_LCRECORD_TYPE -> ALLOC_NORMAL_LISP_OBJECT (returns a Lisp object + rather than a pointer) + ALLOCATE_FIXED_TYPE_AND_SET_IMPL -> ALLOC_FROB_BLOCK_LISP_OBJECT + BASIC_ALLOC_LCRECORD -> ALLOC_SIZED_LISP_OBJECT + DEFINE_LRECORD_IMPLEMENTATION -> DEFINE_*_LISP_OBJECT + DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION -> DEFINE_*SIZABLE_*LISP_OBJECT + DEFINE_LRECORD_*IMPLEMENTATION_WITH_PROPS -> DEFINE_*LISP_OBJECT, and + use OBJECT_HAS_METHOD() for the getprop, etc. methods + DEFINE_BASIC_LRECORD_IMPLEMENTATION -> DEFINE_*FROB_BLOCK_LISP_OBJECT + DEFINE_DUMPABLE_*/DEFINE_NODUMP_* instead of a 0 or 1 dumpable flag + DEFINE_*INTERNAL_* for "internal" Lisp objects (shouldn't escape + to Lisp) + DEFINE_EXTERNAL_* -> DEFINE_MODULE_* + MAKE_LRECORD_IMPLEMENTATION -> MAKE_LISP_OBJECT + MAKE_EXTERNAL_LRECORD_IMPLEMENTATION -> MAKE_MODULE_LISP_OBJECT + DECLARE_LRECORD -> DECLARE_LISP_OBJECT + INIT_LRECORD_IMPLEMENTATION -> INIT_LISP_OBJECT + LCRECORD_HEADER -> NORMAL_LISP_OBJECT_HEADER + alloc_lrecord -> alloc_sized_lrecord (since it takes a size) + printing_unreadable_object -> printing_unreadable_object_fmt + printing_unreadable_lcrecord -> printing_unreadable_lisp_object + + New: + + lisp_object_storage_size() -- storage used for Lisp object including + overhead + LISP_OBJECT_UID() -- UID of Lisp object + zero_sized_lisp_object() -- zero out a Lisp object of variable size + zero_nonsized_lisp_object() -- zero out a Lisp object of fixed size + free_normal_lisp_object() -- free a non-frob-block Lisp object + LISP_OBJECT_FROB_BLOCK_P() -- return whether a Lisp object is a + frob-block object + IF_OLD_GC, IF_NEW_GC -- simplify declaration of Lisp objects w.r.t. NEW-GC + when a finalizer may exist in one but not the + other + + Eliminated: + + free_lrecord() + FREE_LISP_OBJECT(): + Use free_normal_lisp_object() + + old_zero_lcrecord() + old_zero_sized_lcrecord() + ZERO_LISP_OBJECT() + zero_lrecord(): + Use zero_sized_lisp_object(), zero_nonsized_lisp_object() + + copy_lrecord() + copy_sized_lrecord() + old_copy_lcrecord() + old_copy_sized_lcrecord() + COPY_SIZED_LISP_OBJECT() + COPY_SIZED_LCRECORD() + COPY_LISP_OBJECT(): + Use copy_lisp_object() + + LISP_OBJECT_STORAGE_SIZE(): + Use lisp_object_storage_size() + -- new disksave method for Lisp objects, separated out from the finalize method +-- new, non-static way of initializing Lisp object methods; used for disksave, + getprop, putprop, remprop, object_plist, various memory-usage methods: + OBJECT_HAS_METHOD(), OBJECT_HAS_PROPERTY(), etc. -- Lisp objects now must specify a print method; use either internal_object_printer() or external_object_printer() as a default -- equal method for Lisp objects has new `foldcase' param, to implement case-folding comparison ala `equalp' --- various changes to frame-geometry macros in frame-impl.h, gutter.h, etc., - and frame-sizing code in frame.c --- Major rewrite, updated documentation to dynarr functions and macros --- Major updates to internals manual and long comments in C files: - frame geometry, specifier authors, MS-Windows compilation flags, xlike - mechanism, ... +-- Each type of Lisp object has separate UID space +-- Redo and generalize memory-usage mechanism, add memory-usage methods for + various objects; the following objects now have memory-usage methods: + buffers, case tables, hash tables, frames, charsets, scrollbar instances, + specifiers, windows, window mirrors -- Rename LISP_TO_VOID -> STORE_LISP_IN_VOID, VOID_TO_LISP -> GET_LISP_FROM_VOID; add STORE_VOID_IN_LISP, GET_VOID_FROM_LISP +-- Other renames: + XD_LISP_OBJECT_BLOCK_PTR -> XD_INLINE_LISP_OBJECT_BLOCK_PTR +-- Other new functions and macros: + lisp_object_memory_usage() -- memory usage of Lisp object, including + associated non-Lisp usage and ancillary Lisp + usage + tree_memory_usage() -- memory usage of a tree of conses and/or vectors + SAFE_LIST_LOOP_* -- loop over a possibly invalid list without signalling + an error + listn() -- variable-argument list creation, number of arguments specified + listu() -- variable-argument list creation, terminated with Qunbound + +-- Make the first lrecord type have value 1 not 0 so that attempts to + interpret 0'd memory as a Lisp object will fail more obviously + +Internals: Arrays and Tables + +-- Major rewrite, updated documentation to dynarr functions and macros + + Rename: + + Dynarr_add_lisp_string -> Dynarr_add_ext_lisp_string + Dynarr_set_length -> Dynarr_set_lengthr ("restricted") + Dynarr_increment -> Dynarr_incrementr + Dynarr_resize_if -> Dynarr_resize_to_add + + New functions: + + Dynarr_elsize = dy->elsize_ + Dynarr_set_length(): Set length, resizing as necessary + Dynarr_set_length_and_zero(): Set length, resizing as necessary, + zeroing out new elements + Dynarr_increase_length(), Dynarr_increase_length_and_zero(): + Optimization of Dynarr_set_length(), Dynarr_set_length_and_zero() + when size is known to increase + Dynarr_resize_to_fit(): Resize as necessary to fit a given length. + Dynarr_set(): Set element at a given position, increasing length + as necessary and setting any newly created positions to 0 + ERROR_CHECK_DYNARR, dynarr_checking_assert() + +-- Extracted and generalized gap array code from extents.c to array.c +-- Rewrite range tables to use gap arrays; redo put_range_table() so it's + O(log n) when adding a localized range + +Internals: Misc + +-- Collect allocation-statistics code in one place +-- if (...) ABORT (); --> assert (); +-- various changes to frame-geometry macros in frame-impl.h, gutter.h, etc., + and frame-sizing code in frame.c: + -- TOP_BORDER, BOTTOM_BORDER, etc. -> TOP_EDGE, BOTTOM_EDGE, etc. + -- GUTTER_POS_LOOP -> EDGE_POS_LOOP + -- hardcoded use of '4' -> NUM_EDGES + -- default_face_height_and_width -> default_face_width_and_height, with + arguments reversed + -- width/height arguments reversed in the following, to put width first: + -- default_face_font_info + -- default_face_height_and_width (see above) + -- check_frame_size + -- frame_size_valid_p (made into a static function) + -- change_frame_size and + -- change_frame_size_1 + -- FRAME_BORDER_* -> FRAME_INTERNAL_BORDER_* + -- new FRAME_INTERNAL_BORDER_SIZE(), FRAME_REAL_TOOLBAR_BOUNDS() + -- pixel_to_char_size -> pixel_to_frame_unit_size + -- char_to_pixel_size -> frame_unit_to_pixel_size + -- pixel_to_real_char_size -> pixel_to_char_size + -- char_to_real_pixel_size -> char_to_pixel_size + -- Eliminate old round_size_to_char, because it didn't really + do anything differently from round_size_to_real_char() + -- round_size_to_real_char -> round_size_to_char; any places that + called the old round_size_to_char should just call the new one. +-- Major updates to internals manual and long comments in C files: + frame geometry, specifier authors, MS-Windows compilation flags, xlike + mechanism, magic symbols, lrecords, NEW-GC, dynarrs, ... +-- Major reworking of DFC macros e.g. EXTERNAL_TO_C_STRING renamed to + EXTERNAL_TO_ITEXT; make them return their values when possible rather + than storing into a named variable: + + EXTERNAL_TO_C_STRING -> EXTERNAL_TO_ITEXT + EXTERNAL_TO_C_STRING_MALLOC -> EXTERNAL_TO_ITEXT_MALLOC + SIZED_EXTERNAL_TO_C_STRING -> SIZED_EXTERNAL_TO_ITEXT + SIZED_EXTERNAL_TO_C_STRING_MALLOC -> SIZED_EXTERNAL_TO_ITEXT_MALLOC + C_STRING_TO_EXTERNAL -> ITEXT_TO_EXTERNAL + C_STRING_TO_EXTERNAL_MALLOC -> ITEXT_TO_EXTERNAL_MALLOC + LISP_STRING_TO_EXTERNAL + LISP_STRING_TO_EXTERNAL_MALLOC + LISP_STRING_TO_TSTR + C_STRING_TO_TSTR -> ITEXT_TO_TSTR + TSTR_TO_C_STRING -> TSTR_TO_ITEXT + + The following four still return their values through parameters, + since they have more than one value to return: + + C_STRING_TO_SIZED_EXTERNAL -> ITEXT_TO_SIZED_EXTERNAL + LISP_STRING_TO_SIZED_EXTERNAL + C_STRING_TO_SIZED_EXTERNAL_MALLOC -> ITEXT_TO_SIZED_EXTERNAL_MALLOC + LISP_STRING_TO_SIZED_EXTERNAL_MALLOC + +-- Eliminate unused second argument to xfree() +-- Whenever xfree() a structure field, set the field to 0 afterwards, to + protect against double free or possible attempt to interpret the field + later on +-- Move `equalp' to C +-- Rename `enum font_specifier_matchspec_stages': + initial -> STAGE_INITIAL + final -> STAGE_FINAL + impossible -> NUM_MATCHSPEC_STAGES +-- Rename: + PROCESSING_X_CODE -> THIS_IS_X + PROCESSING_GTK_CODE -> THIS_IS_GTK +-- Rename: + write_c_string -> write_cistring + build_intstring -> build_istring + build_string -> build_cistring + build_ext_string -> build_extstring + make_ext_string -> make_extstring + buffer_insert_c_string -> buffer_insert_ascstring + intern_int -> intern_istring +-- Lots of cleanup of (not-yet-working) message translation code +-- Lots of Mule-izing: + -- change raw `char *' to some characterized type to indicate the + semantics properly + -- change all occurrences of Qnative to some more specific encoding + -- create new encodings: + -- Qtime_function_encoding + Qtime_zone_encoding + Quser_name_encoding + Qerror_message_encoding + Qjpeg_error_message_encoding + Qtooltalk_encoding + Qgtk_encoding + Qx_error_message_encoding +-- Major unification of X and GTK redisplay code into "xlike" code, creation + of "xlike" mechanism +-- Rename: + LOCAL_TO_WIN32_FILE_FORMAT -> LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN + WIN32_TO_LOCAL_FILE_FORMAT -> INTERNAL_MSWIN_TO_LOCAL_FILE_FORMAT + LOCAL_FILE_FORMAT_TO_TSTR -> LISP_LOCAL_FILE_FORMAT_TO_TSTR. + LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR -> LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR + Create new LOCAL_FILE_FORMAT_TO_TSTR +-- Redo the code in code-init.el that initializes coding-system defaults +-- separate HAVE_XFT into HAVE_XFT and USE_XFT, to facilitate compiling + simultaneously with X and GTK + +File Additions, Deletions, Renames, etc. + -- Convert various source files to UTF-8 -- File renames: select-common.h -> select-xlike-inc.c xgccache.{ch} -> gccache-x.{ch} toolbar-common.{ch} -> toolbar-xlike.{ch} + objects*.{ch} -> fontcolor*.{ch} + dynarr.c -> array.c -- New files: bytecode-ops.h sysgtk.h, sysgdkx.h keymap-buttons.h, keymap-slots.h -- Deleted files: event-gtk.h --- Major reworking of DFC macros e.g. EXTERNAL_TO_C_STRING renamed to - EXTERNAL_TO_ITEXT; make them return their values when possible rather - than storing into a named variable --- Eliminate unused second argument to xfree() --- separate HAVE_XFT into HAVE_XFT and USE_XFT, to facilitate compiling - simultaneously with X and GTK --- Move `equalp' to C - -Testing: - --- Move test-harness.el to Lisp directory +-- File moves: + moved test-harness.el to Lisp directory + moved etc/gdbinit.in to src/.gdbinit.in.in + +Internals: Debugging + +-- New function debug_out_lisp() -- printf-like formatting for Lisp objects, + debug output +-- Expand the KKCC backtrace mechanism -- new functions: + kkcc_short_backtrace() + kkcc_short_backtrace_full() + kkcc_detailed_backtrace() + kkcc_detailed_backtrace_full() +-- Make print code even more careful about checking for bad memory, + bad object types, circular objects, etc. +-- When --with-debug, set `debug-on-error' so we get an abort to debugger + upon Lisp error Building: -- Fix `--quick-build' so full rebuilds don't happen when changes are made to files like lisp.h, config.h that are included by all C files -- Fix C++ build on Cygwin when configured with --have-database +-- Always insert a coding-system cookie in autoload files, fixing problems + when default coding system is UTF-8, as under Cygwin +-- Redo compile warning system, turn on a number of warnings that had + mistakenly gotten turned off +-- Fix so that builds properly under gcc v4, g++ v4 +-- Make `--with-error-checking' be the same as `--with-error-checking=all' +-- Expand documentation of `--with-debug' +-- Use -export-all-symbols instead of broken -export-dynamic on Cygwin/MinGW +-- Add fix-perms target to correct permissions on executable/non-exec files +-- rename all instances of --enable-FOO to --with-FOO. +-- Fix make-mswin-unicode.pl so that it can work with Cygwin w32api headers + as well as actual VC++ headers +-- make-msgfile.lex: Long documentation on what should be done if we ever want + message translation to work. User-Visible Bug Fixes: @@ -104,6 +372,11 @@ -- Fix a crash in frame creation due to lack of call to reset_glyph_cachels() -- Fix long-standing bug: searching for Control-1 chars didn't work -- Turn on `load-ignore-out-of-date-elc-files' by default +-- Fix crash in event-TTY code when reading an event non-interactively +-- Use UTF-8 consistently as encoding default under Cygwin 1.7 +-- Fix broken code in computing fastmap for [^...] regexps under Mule +-- Fix display-table entries for error-octet characters so they display + as originally intended by Aidan Kehoe: