comparison 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
comparison
equal deleted inserted replaced
5193:41ac827cb71b 5197:ce8ffb95bbe3
1 to XEmacs 21.5.30 "harblegarble" 1 to XEmacs 21.5.30 "harblegarble"
2 2
3 by Ben Wing: 3 by Ben Wing:
4 4
5 debugging: 5 Debugging (Lisp level):
6 6
7 -- make objects consistently print a UID, with a separate number space per 7 -- make objects consistently print a UID, with a separate number space per
8 object type 8 object type
9 -- add variable `debug-soe' for debugging stack-of-extents code in extents.c 9 -- add variable `debug-soe' for debugging stack-of-extents code in extents.c
10 -- add variable debug-regexps for debugging regexp code, takes list of areas
11 to show info about
10 -- correctly note pdumped objects in memory-usage stats returned by 12 -- correctly note pdumped objects in memory-usage stats returned by
11 `garbage-collect' and `object-memory-usage-stats'. 13 `garbage-collect' and `object-memory-usage-stats'.
12 -- make VDB debugging functions (e.g. `test-segfault', which causes an 14 -- make VDB debugging functions (e.g. `test-segfault', which causes an
13 immediate crash!) conditional on `--with-debug' 15 immediate crash!) conditional on `--with-debug'
14 -- rename `debug-xemacs-searches' -> `debug-searches' 16 -- rename `debug-xemacs-searches' -> `debug-searches'
17 -- rename `xft-debug-level' -> `debug-xft'
18 -- rename `debug-x-objects' -> `debug-x-fonts'
15 -- Turn on "compiled-function annotation hack" so that compiled-function 19 -- Turn on "compiled-function annotation hack" so that compiled-function
16 objects print the function they are assigned to 20 objects print the function they are assigned to
17 -- Resurrect byte-metering code when --with-debug; enable with variables 21 -- Resurrect byte-metering code when --with-debug; enable with variables
18 `byte-code-meter', `byte-metering-on' 22 `byte-code-meter', `byte-metering-on'
19 -- Add more checks for invalid byte code; when a byte-code-related crash 23 -- Add more checks for invalid byte code; when a byte-code-related crash
20 occurs, output the last 100 instructions processed 24 occurs, output the last 100 instructions processed
21 25 -- Improved memory-usage mechanism -- removal of `*-memory-usage' in favor
22 documentation: 26 of generalized `object-memory-usage'; `show-memory-usage' and
27 `show-object-memory-usage-stats' show, in addition to regular object usage,
28 associated non-Lisp usage as well as ancillary Lisp object usage;
29 `garbage-collect' and `object-memory-usage-stats' return information on
30 storage overhead, associated non-Lisp usage and ancillary Lisp usage
31
32 Lisp documentation:
23 33
24 -- fix to `previous/next-single[-char]-property-change' 34 -- fix to `previous/next-single[-char]-property-change'
35 -- Document the keywords to the various sequence/list functions:
36 reduce, fill, replace, remove*, remove-if, remove-if-not, delete*,
37 delete-if, delete-if-not, remove-duplicates, delete-duplicates,
38 substitute, substitute-if, substitute-if-not, nsubstitute,
39 nsubstitute-if, nsubstitute-if-not, find, find-if, find-if-not,
40 position, position-if, position-if-not, count, count-if, count-if-not,
41 mismatch, search, sort*, stable-sort, merge, member*, member-if,
42 member-if-not, assoc*, assoc-if, assoc-if-not, rassoc*, rassoc-if,
43 rassoc-if-not, union, nunion, intersection, nintersection,
44 set-difference, nset-difference, set-exclusive-or, nset-exclusive-or,
45 subsetp, subst-if, subst-if-not, nsubst, nsubst-if, nsubst-if-not,
46 sublis, nsublis, tree-equal, cl-tree-equal-rec, pushnew, adjoin, subst
47 -- fix so that Common-Lisp argument lists get properly displayed in
48 function documentation
25 49
26 Lisp API: 50 Lisp API:
27 51
28 -- `set-frame-displayable-pixel-height' and friends had bugs in them, esp. 52 -- `set-frame-displayable-pixel-height' and friends had bugs in them, esp.
29 on MS Windows, where they didn't work; fixed 53 on MS Windows, where they didn't work; fixed
36 they always work even in the presence of complex case mappings (other 60 they always work even in the presence of complex case mappings (other
37 than just upper -> lower and lower -> upper) 61 than just upper -> lower and lower -> upper)
38 -- In `scan-lists' and friends, when an error occurs, return a `scan-error' 62 -- In `scan-lists' and friends, when an error occurs, return a `scan-error'
39 along with two arguments specifying the range in which the error occurred, 63 along with two arguments specifying the range in which the error occurred,
40 for GNU compatibility 64 for GNU compatibility
41 65 -- Functions for dealing with conditional compilation of code depending on
42 Internals: 66 presence or absence of features:
67 -- error-unless-tests-match -- signal an error unless a test expression
68 matches when file is compiled and loaded
69 -- byte-compile-file-being-compiled -- return name of file being
70 byte-compiled
71 -- compiled-if, compiled-when -- like `if' or `when' but test is evaluated
72 at compile time
73 -- Functions for doing stable set operations
74 -- stable-union, stable-intersection
75
76 Internals: Lisp objects
43 77
44 -- reduce lcrecord header size from 3 words to 2 78 -- reduce lcrecord header size from 3 words to 2
45 -- major change to the way Lisp objects are defined and declared; introduce 79 -- major change to the way Lisp objects are defined and declared; introduce
46 a cleaner surface-layer API that eliminates references to "lrecords" and 80 a cleaner surface-layer API that eliminates references to "lrecords" and
47 "lcrecords", and uses "frob-block object" in place of "basic object"/ 81 "lcrecords", and uses "frob-block object" in place of "basic object"/
48 "simple object"/etc. 82 "simple object"/etc.:
83
84 Renamed:
85
86 ALLOC_LCRECORD_TYPE -> ALLOC_NORMAL_LISP_OBJECT (returns a Lisp object
87 rather than a pointer)
88 ALLOCATE_FIXED_TYPE_AND_SET_IMPL -> ALLOC_FROB_BLOCK_LISP_OBJECT
89 BASIC_ALLOC_LCRECORD -> ALLOC_SIZED_LISP_OBJECT
90 DEFINE_LRECORD_IMPLEMENTATION -> DEFINE_*_LISP_OBJECT
91 DEFINE_LRECORD_SEQUENCE_IMPLEMENTATION -> DEFINE_*SIZABLE_*LISP_OBJECT
92 DEFINE_LRECORD_*IMPLEMENTATION_WITH_PROPS -> DEFINE_*LISP_OBJECT, and
93 use OBJECT_HAS_METHOD() for the getprop, etc. methods
94 DEFINE_BASIC_LRECORD_IMPLEMENTATION -> DEFINE_*FROB_BLOCK_LISP_OBJECT
95 DEFINE_DUMPABLE_*/DEFINE_NODUMP_* instead of a 0 or 1 dumpable flag
96 DEFINE_*INTERNAL_* for "internal" Lisp objects (shouldn't escape
97 to Lisp)
98 DEFINE_EXTERNAL_* -> DEFINE_MODULE_*
99 MAKE_LRECORD_IMPLEMENTATION -> MAKE_LISP_OBJECT
100 MAKE_EXTERNAL_LRECORD_IMPLEMENTATION -> MAKE_MODULE_LISP_OBJECT
101 DECLARE_LRECORD -> DECLARE_LISP_OBJECT
102 INIT_LRECORD_IMPLEMENTATION -> INIT_LISP_OBJECT
103 LCRECORD_HEADER -> NORMAL_LISP_OBJECT_HEADER
104 alloc_lrecord -> alloc_sized_lrecord (since it takes a size)
105 printing_unreadable_object -> printing_unreadable_object_fmt
106 printing_unreadable_lcrecord -> printing_unreadable_lisp_object
107
108 New:
109
110 lisp_object_storage_size() -- storage used for Lisp object including
111 overhead
112 LISP_OBJECT_UID() -- UID of Lisp object
113 zero_sized_lisp_object() -- zero out a Lisp object of variable size
114 zero_nonsized_lisp_object() -- zero out a Lisp object of fixed size
115 free_normal_lisp_object() -- free a non-frob-block Lisp object
116 LISP_OBJECT_FROB_BLOCK_P() -- return whether a Lisp object is a
117 frob-block object
118 IF_OLD_GC, IF_NEW_GC -- simplify declaration of Lisp objects w.r.t. NEW-GC
119 when a finalizer may exist in one but not the
120 other
121
122 Eliminated:
123
124 free_lrecord()
125 FREE_LISP_OBJECT():
126 Use free_normal_lisp_object()
127
128 old_zero_lcrecord()
129 old_zero_sized_lcrecord()
130 ZERO_LISP_OBJECT()
131 zero_lrecord():
132 Use zero_sized_lisp_object(), zero_nonsized_lisp_object()
133
134 copy_lrecord()
135 copy_sized_lrecord()
136 old_copy_lcrecord()
137 old_copy_sized_lcrecord()
138 COPY_SIZED_LISP_OBJECT()
139 COPY_SIZED_LCRECORD()
140 COPY_LISP_OBJECT():
141 Use copy_lisp_object()
142
143 LISP_OBJECT_STORAGE_SIZE():
144 Use lisp_object_storage_size()
145
49 -- new disksave method for Lisp objects, separated out from the finalize method 146 -- new disksave method for Lisp objects, separated out from the finalize method
147 -- new, non-static way of initializing Lisp object methods; used for disksave,
148 getprop, putprop, remprop, object_plist, various memory-usage methods:
149 OBJECT_HAS_METHOD(), OBJECT_HAS_PROPERTY(), etc.
50 -- Lisp objects now must specify a print method; use either 150 -- Lisp objects now must specify a print method; use either
51 internal_object_printer() or external_object_printer() as a default 151 internal_object_printer() or external_object_printer() as a default
52 -- equal method for Lisp objects has new `foldcase' param, to implement 152 -- equal method for Lisp objects has new `foldcase' param, to implement
53 case-folding comparison ala `equalp' 153 case-folding comparison ala `equalp'
54 -- various changes to frame-geometry macros in frame-impl.h, gutter.h, etc., 154 -- Each type of Lisp object has separate UID space
55 and frame-sizing code in frame.c 155 -- Redo and generalize memory-usage mechanism, add memory-usage methods for
56 -- Major rewrite, updated documentation to dynarr functions and macros 156 various objects; the following objects now have memory-usage methods:
57 -- Major updates to internals manual and long comments in C files: 157 buffers, case tables, hash tables, frames, charsets, scrollbar instances,
58 frame geometry, specifier authors, MS-Windows compilation flags, xlike 158 specifiers, windows, window mirrors
59 mechanism, ...
60 -- Rename LISP_TO_VOID -> STORE_LISP_IN_VOID, 159 -- Rename LISP_TO_VOID -> STORE_LISP_IN_VOID,
61 VOID_TO_LISP -> GET_LISP_FROM_VOID; add STORE_VOID_IN_LISP, 160 VOID_TO_LISP -> GET_LISP_FROM_VOID; add STORE_VOID_IN_LISP,
62 GET_VOID_FROM_LISP 161 GET_VOID_FROM_LISP
162 -- Other renames:
163 XD_LISP_OBJECT_BLOCK_PTR -> XD_INLINE_LISP_OBJECT_BLOCK_PTR
164 -- Other new functions and macros:
165 lisp_object_memory_usage() -- memory usage of Lisp object, including
166 associated non-Lisp usage and ancillary Lisp
167 usage
168 tree_memory_usage() -- memory usage of a tree of conses and/or vectors
169 SAFE_LIST_LOOP_* -- loop over a possibly invalid list without signalling
170 an error
171 listn() -- variable-argument list creation, number of arguments specified
172 listu() -- variable-argument list creation, terminated with Qunbound
173
174 -- Make the first lrecord type have value 1 not 0 so that attempts to
175 interpret 0'd memory as a Lisp object will fail more obviously
176
177 Internals: Arrays and Tables
178
179 -- Major rewrite, updated documentation to dynarr functions and macros
180
181 Rename:
182
183 Dynarr_add_lisp_string -> Dynarr_add_ext_lisp_string
184 Dynarr_set_length -> Dynarr_set_lengthr ("restricted")
185 Dynarr_increment -> Dynarr_incrementr
186 Dynarr_resize_if -> Dynarr_resize_to_add
187
188 New functions:
189
190 Dynarr_elsize = dy->elsize_
191 Dynarr_set_length(): Set length, resizing as necessary
192 Dynarr_set_length_and_zero(): Set length, resizing as necessary,
193 zeroing out new elements
194 Dynarr_increase_length(), Dynarr_increase_length_and_zero():
195 Optimization of Dynarr_set_length(), Dynarr_set_length_and_zero()
196 when size is known to increase
197 Dynarr_resize_to_fit(): Resize as necessary to fit a given length.
198 Dynarr_set(): Set element at a given position, increasing length
199 as necessary and setting any newly created positions to 0
200 ERROR_CHECK_DYNARR, dynarr_checking_assert()
201
202 -- Extracted and generalized gap array code from extents.c to array.c
203 -- Rewrite range tables to use gap arrays; redo put_range_table() so it's
204 O(log n) when adding a localized range
205
206 Internals: Misc
207
208 -- Collect allocation-statistics code in one place
209 -- if (...) ABORT (); --> assert ();
210 -- various changes to frame-geometry macros in frame-impl.h, gutter.h, etc.,
211 and frame-sizing code in frame.c:
212 -- TOP_BORDER, BOTTOM_BORDER, etc. -> TOP_EDGE, BOTTOM_EDGE, etc.
213 -- GUTTER_POS_LOOP -> EDGE_POS_LOOP
214 -- hardcoded use of '4' -> NUM_EDGES
215 -- default_face_height_and_width -> default_face_width_and_height, with
216 arguments reversed
217 -- width/height arguments reversed in the following, to put width first:
218 -- default_face_font_info
219 -- default_face_height_and_width (see above)
220 -- check_frame_size
221 -- frame_size_valid_p (made into a static function)
222 -- change_frame_size and
223 -- change_frame_size_1
224 -- FRAME_BORDER_* -> FRAME_INTERNAL_BORDER_*
225 -- new FRAME_INTERNAL_BORDER_SIZE(), FRAME_REAL_TOOLBAR_BOUNDS()
226 -- pixel_to_char_size -> pixel_to_frame_unit_size
227 -- char_to_pixel_size -> frame_unit_to_pixel_size
228 -- pixel_to_real_char_size -> pixel_to_char_size
229 -- char_to_real_pixel_size -> char_to_pixel_size
230 -- Eliminate old round_size_to_char, because it didn't really
231 do anything differently from round_size_to_real_char()
232 -- round_size_to_real_char -> round_size_to_char; any places that
233 called the old round_size_to_char should just call the new one.
234 -- Major updates to internals manual and long comments in C files:
235 frame geometry, specifier authors, MS-Windows compilation flags, xlike
236 mechanism, magic symbols, lrecords, NEW-GC, dynarrs, ...
237 -- Major reworking of DFC macros e.g. EXTERNAL_TO_C_STRING renamed to
238 EXTERNAL_TO_ITEXT; make them return their values when possible rather
239 than storing into a named variable:
240
241 EXTERNAL_TO_C_STRING -> EXTERNAL_TO_ITEXT
242 EXTERNAL_TO_C_STRING_MALLOC -> EXTERNAL_TO_ITEXT_MALLOC
243 SIZED_EXTERNAL_TO_C_STRING -> SIZED_EXTERNAL_TO_ITEXT
244 SIZED_EXTERNAL_TO_C_STRING_MALLOC -> SIZED_EXTERNAL_TO_ITEXT_MALLOC
245 C_STRING_TO_EXTERNAL -> ITEXT_TO_EXTERNAL
246 C_STRING_TO_EXTERNAL_MALLOC -> ITEXT_TO_EXTERNAL_MALLOC
247 LISP_STRING_TO_EXTERNAL
248 LISP_STRING_TO_EXTERNAL_MALLOC
249 LISP_STRING_TO_TSTR
250 C_STRING_TO_TSTR -> ITEXT_TO_TSTR
251 TSTR_TO_C_STRING -> TSTR_TO_ITEXT
252
253 The following four still return their values through parameters,
254 since they have more than one value to return:
255
256 C_STRING_TO_SIZED_EXTERNAL -> ITEXT_TO_SIZED_EXTERNAL
257 LISP_STRING_TO_SIZED_EXTERNAL
258 C_STRING_TO_SIZED_EXTERNAL_MALLOC -> ITEXT_TO_SIZED_EXTERNAL_MALLOC
259 LISP_STRING_TO_SIZED_EXTERNAL_MALLOC
260
261 -- Eliminate unused second argument to xfree()
262 -- Whenever xfree() a structure field, set the field to 0 afterwards, to
263 protect against double free or possible attempt to interpret the field
264 later on
265 -- Move `equalp' to C
266 -- Rename `enum font_specifier_matchspec_stages':
267 initial -> STAGE_INITIAL
268 final -> STAGE_FINAL
269 impossible -> NUM_MATCHSPEC_STAGES
270 -- Rename:
271 PROCESSING_X_CODE -> THIS_IS_X
272 PROCESSING_GTK_CODE -> THIS_IS_GTK
273 -- Rename:
274 write_c_string -> write_cistring
275 build_intstring -> build_istring
276 build_string -> build_cistring
277 build_ext_string -> build_extstring
278 make_ext_string -> make_extstring
279 buffer_insert_c_string -> buffer_insert_ascstring
280 intern_int -> intern_istring
281 -- Lots of cleanup of (not-yet-working) message translation code
282 -- Lots of Mule-izing:
283 -- change raw `char *' to some characterized type to indicate the
284 semantics properly
285 -- change all occurrences of Qnative to some more specific encoding
286 -- create new encodings:
287 -- Qtime_function_encoding
288 Qtime_zone_encoding
289 Quser_name_encoding
290 Qerror_message_encoding
291 Qjpeg_error_message_encoding
292 Qtooltalk_encoding
293 Qgtk_encoding
294 Qx_error_message_encoding
295 -- Major unification of X and GTK redisplay code into "xlike" code, creation
296 of "xlike" mechanism
297 -- Rename:
298 LOCAL_TO_WIN32_FILE_FORMAT -> LOCAL_FILE_FORMAT_TO_INTERNAL_MSWIN
299 WIN32_TO_LOCAL_FILE_FORMAT -> INTERNAL_MSWIN_TO_LOCAL_FILE_FORMAT
300 LOCAL_FILE_FORMAT_TO_TSTR -> LISP_LOCAL_FILE_FORMAT_TO_TSTR.
301 LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR -> LISP_LOCAL_FILE_FORMAT_MAYBE_URL_TO_TSTR
302 Create new LOCAL_FILE_FORMAT_TO_TSTR
303 -- Redo the code in code-init.el that initializes coding-system defaults
304 -- separate HAVE_XFT into HAVE_XFT and USE_XFT, to facilitate compiling
305 simultaneously with X and GTK
306
307 File Additions, Deletions, Renames, etc.
308
63 -- Convert various source files to UTF-8 309 -- Convert various source files to UTF-8
64 -- File renames: 310 -- File renames:
65 select-common.h -> select-xlike-inc.c 311 select-common.h -> select-xlike-inc.c
66 xgccache.{ch} -> gccache-x.{ch} 312 xgccache.{ch} -> gccache-x.{ch}
67 toolbar-common.{ch} -> toolbar-xlike.{ch} 313 toolbar-common.{ch} -> toolbar-xlike.{ch}
314 objects*.{ch} -> fontcolor*.{ch}
315 dynarr.c -> array.c
68 -- New files: 316 -- New files:
69 bytecode-ops.h 317 bytecode-ops.h
70 sysgtk.h, sysgdkx.h 318 sysgtk.h, sysgdkx.h
71 keymap-buttons.h, keymap-slots.h 319 keymap-buttons.h, keymap-slots.h
72 -- Deleted files: 320 -- Deleted files:
73 event-gtk.h 321 event-gtk.h
74 -- Major reworking of DFC macros e.g. EXTERNAL_TO_C_STRING renamed to 322 -- File moves:
75 EXTERNAL_TO_ITEXT; make them return their values when possible rather 323 moved test-harness.el to Lisp directory
76 than storing into a named variable 324 moved etc/gdbinit.in to src/.gdbinit.in.in
77 -- Eliminate unused second argument to xfree() 325
78 -- separate HAVE_XFT into HAVE_XFT and USE_XFT, to facilitate compiling 326 Internals: Debugging
79 simultaneously with X and GTK 327
80 -- Move `equalp' to C 328 -- New function debug_out_lisp() -- printf-like formatting for Lisp objects,
81 329 debug output
82 Testing: 330 -- Expand the KKCC backtrace mechanism -- new functions:
83 331 kkcc_short_backtrace()
84 -- Move test-harness.el to Lisp directory 332 kkcc_short_backtrace_full()
333 kkcc_detailed_backtrace()
334 kkcc_detailed_backtrace_full()
335 -- Make print code even more careful about checking for bad memory,
336 bad object types, circular objects, etc.
337 -- When --with-debug, set `debug-on-error' so we get an abort to debugger
338 upon Lisp error
85 339
86 Building: 340 Building:
87 341
88 -- Fix `--quick-build' so full rebuilds don't happen when changes are made 342 -- Fix `--quick-build' so full rebuilds don't happen when changes are made
89 to files like lisp.h, config.h that are included by all C files 343 to files like lisp.h, config.h that are included by all C files
90 -- Fix C++ build on Cygwin when configured with --have-database 344 -- Fix C++ build on Cygwin when configured with --have-database
345 -- Always insert a coding-system cookie in autoload files, fixing problems
346 when default coding system is UTF-8, as under Cygwin
347 -- Redo compile warning system, turn on a number of warnings that had
348 mistakenly gotten turned off
349 -- Fix so that builds properly under gcc v4, g++ v4
350 -- Make `--with-error-checking' be the same as `--with-error-checking=all'
351 -- Expand documentation of `--with-debug'
352 -- Use -export-all-symbols instead of broken -export-dynamic on Cygwin/MinGW
353 -- Add fix-perms target to correct permissions on executable/non-exec files
354 -- rename all instances of --enable-FOO to --with-FOO.
355 -- Fix make-mswin-unicode.pl so that it can work with Cygwin w32api headers
356 as well as actual VC++ headers
357 -- make-msgfile.lex: Long documentation on what should be done if we ever want
358 message translation to work.
91 359
92 User-Visible Bug Fixes: 360 User-Visible Bug Fixes:
93 361
94 -- `escape-quoted' was failing to add escape quoting to Control-1 characters; 362 -- `escape-quoted' was failing to add escape quoting to Control-1 characters;
95 many potential byte-code-related crashes may have resulted from the old 363 many potential byte-code-related crashes may have resulted from the old
102 -- File-locking code now names lock files .#FN# instead of .#FN, to avoid 370 -- File-locking code now names lock files .#FN# instead of .#FN, to avoid
103 problems with programs that e.g. try to process all .c or .h files 371 problems with programs that e.g. try to process all .c or .h files
104 -- Fix a crash in frame creation due to lack of call to reset_glyph_cachels() 372 -- Fix a crash in frame creation due to lack of call to reset_glyph_cachels()
105 -- Fix long-standing bug: searching for Control-1 chars didn't work 373 -- Fix long-standing bug: searching for Control-1 chars didn't work
106 -- Turn on `load-ignore-out-of-date-elc-files' by default 374 -- Turn on `load-ignore-out-of-date-elc-files' by default
375 -- Fix crash in event-TTY code when reading an event non-interactively
376 -- Use UTF-8 consistently as encoding default under Cygwin 1.7
377 -- Fix broken code in computing fastmap for [^...] regexps under Mule
378 -- Fix display-table entries for error-octet characters so they display
379 as originally intended
107 380
108 by Aidan Kehoe: 381 by Aidan Kehoe:
109 382
110 Documentation: 383 Documentation:
111 384