comparison etc/NEWS @ 380:8626e4521993 r21-2-5

Import from CVS: tag r21-2-5
author cvs
date Mon, 13 Aug 2007 11:07:10 +0200
parents d883f39b8495
children bbff43aa5eb7
comparison
equal deleted inserted replaced
379:76b7d63099ad 380:8626e4521993
7 primarily about the changes in recent XEmacs versions and its release 7 primarily about the changes in recent XEmacs versions and its release
8 history. 8 history.
9 9
10 Use `C-c C-f' to move to the next equal level of outline, and 10 Use `C-c C-f' to move to the next equal level of outline, and
11 `C-c C-b' to move to previous equal level. `C-h m' will give more 11 `C-c C-b' to move to previous equal level. `C-h m' will give more
12 info about the Outline mode. Many commands are also available through 12 info about the Outline mode. Many commands are also available through
13 the menubar. 13 the menubar.
14 14
15 Users who would like to know which capabilities have been introduced 15 Users who would like to know which capabilities have been introduced
16 in each release should look at the appropriate section of this file. 16 in each release should look at the appropriate section of this file.
17 Starting with version 20.0, XEmacs includes ChangeLogs, which can be 17 Starting with version 20.0, XEmacs includes ChangeLogs, which can be
52 its base buffer. It returns nil when given an ordinary buffer (not 52 its base buffer. It returns nil when given an ordinary buffer (not
53 indirect). `buffer-indirect-children' returns a list of the indirect 53 indirect). `buffer-indirect-children' returns a list of the indirect
54 children of a base buffer. 54 children of a base buffer.
55 55
56 56
57 * Lisp and internal changes in XEmacs 21.0 57 * Lisp and internal changes in XEmacs 21.2
58 ========================================== 58 ==========================================
59 59
60 ** Functions for decoding base64 encoding are now available; see 60 ** Functions for decoding base64 encoding are now available; see
61 `base64-encode-region', `base64-encode-string', `base64-decode-region' 61 `base64-encode-region', `base64-encode-string', `base64-decode-region'
62 and `base64-decode-string'. 62 and `base64-decode-string'.
63
64 ** Many basic lisp operations are now faster.
65 This is especially the case when running a Mule-enabled XEmacs.
66
67 A general overhaul of the lisp engine should produce a speedup of 1.4
68 in a Latin-1 XEmacs, and 2.1 in a Mule XEmacs. These numbers were
69 obtained running (byte-compile "simple.el"), which should be a pretty
70 typical test of `pure' lisp.
71
72 Lisp hash tables have been re-implemented. The Common Lisp style hash
73 table interface has been made standard, and moved from cl.el into fast
74 C code (See the section on hash tables in the XEmacs Lisp Reference).
75 A speedup factor of 3 can be expected with code that makes intensive
76 use of hash tables.
77
78 The garbage collector has been tuned, leading to a speedup of 1.16.
79
80 The family of functions that iterate over lists, like `memq', and
81 `rassq', have been made a little faster (typically 1.3).
82
83 Lisp function calls are faster, by approximately a factor of two.
84 However, defining inline functions (via defsubst) still make sense.
85
86 And finally, a few functions have had dramatic performance
87 improvements. For example, (last long-list) is now 30 times faster.
88
89 Of course, your mileage will vary.
90
91 Many operations do not see any improvement. Surprisingly, running
92 (font-lock-refontify-buffer) does not use the Lisp engine much at all.
93 Speeding up your favorite slow operation is an excellent project to
94 improve XEmacs. Don't forget to profile!
95
96 ** XEmacs finally has an automated test suite!
97 Although this is not yet very sophisticated, it is already responsible
98 for several important bug fixes in XEmacs. To try it out, simply use
99 the makefile target `make check' after building XEmacs.
100
101 ** New hash table implementation
102 As was pointed out above, the standard interface to hash tables is now
103 the Common Lisp interface, as described in Common Lisp, the Language
104 (CLtL2, by Steele). The older interface (functions with names
105 containing the phrase `hashtable') will continue to work, but the
106 preferred interface now has names containing the phrase `hash-table'.
107
108 Here's the executive overview: create hash tables using
109 make-hash-table, and use gethash, puthash, remhash, maphash and
110 clrhash to manipulate entries in the hash table. See the (updated)
111 Lisp Reference Manual for details.
112
113 ** Lisp code handles circular lists much more robustly.
114 Many basic lisp functions used to loop forever when given a circular
115 list. Now this is more likely to trigger a `circular-list' error.
116 Printing a circular list now results in something like this:
117
118 (progn (setq x (cons 'foo 'foo)) (setcdr x x) x)
119 ==> (foo ... <circular list>)
120
121 An extra bonus is that checking for circularities is not just
122 friendlier, but actually faster than checking for quit.
63 123
64 124
65 * Changes in XEmacs 21.0 125 * Changes in XEmacs 21.0
66 ======================== 126 ========================
67 127
109 and then through inexact matches, as one would expect. 169 and then through inexact matches, as one would expect.
110 170
111 ** The new variable `user-full-name' can be used to customize one's 171 ** The new variable `user-full-name' can be used to customize one's
112 name when using the Emacs mail and news reading facilities. 172 name when using the Emacs mail and news reading facilities.
113 173
114 Normally, `user-full-name' is a function that returns the full name of 174 Normally, `user-full-name' is a function that returns the full name of
115 a user or UID, as specified by the system -- for instance, 175 a user or UID, as specified by the system -- for instance,
116 (user-full-name "root") returns something like "Super-User". However, 176 (user-full-name "root") returns something like "Super-User". However,
117 when the function is called without arguments, it will return the 177 when the function is called without arguments, it will return the
118 value of the `user-full-name' variable. The `user-full-name' variable 178 value of the `user-full-name' variable. The `user-full-name' variable
119 is initialized using the environment variable NAME and (failing that) 179 is initialized using the environment variable NAME and (failing that)
120 the user's system name. 180 the user's system name.
121 181
122 The behaviour of the `user-full-name' function with an argument 182 The behavior of the `user-full-name' function with an argument
123 specified is unchanged. 183 specified is unchanged.
124 184
125 ** The new command `M-x customize-changed-options' lets you customize 185 ** The new command `M-x customize-changed-options' lets you customize
126 all the options whose default values have changed in recent Emacs 186 all the options whose default values have changed in recent Emacs
127 versions. You specify a previous Emacs version number as argument, 187 versions. You specify a previous Emacs version number as argument,
276 336
277 *** `M-RET' is a new Message command for breaking cited text. 337 *** `M-RET' is a new Message command for breaking cited text.
278 338
279 *** \\1-expressions are now valid in `nnmail-split-methods'. 339 *** \\1-expressions are now valid in `nnmail-split-methods'.
280 340
281 *** The `custom-face-lookup' function has been removed. 341 *** The `custom-face-lookup' function has been removed.
282 If you used this function in your initialization files, you must 342 If you used this function in your initialization files, you must
283 rewrite them to use `face-spec-set' instead. 343 rewrite them to use `face-spec-set' instead.
284 344
285 *** Cancelling now uses the current select method. Symbolic prefix 345 *** Cancelling now uses the current select method. Symbolic prefix
286 `a' forces normal posting method. 346 `a' forces normal posting method.
326 386
327 ** The `dir' files are no longer essential for functioning of the Info 387 ** The `dir' files are no longer essential for functioning of the Info
328 subsystem. If the `dir' file does not exist in an Info directory, the 388 subsystem. If the `dir' file does not exist in an Info directory, the
329 relevant information will be generated on-the-fly. 389 relevant information will be generated on-the-fly.
330 390
331 This behaviour can be customized, look for `Info-auto-generate-directory' 391 This behavior can be customized, look for `Info-auto-generate-directory'
332 and `Info-save-auto-generated-dir' in the `info' customization group. 392 and `Info-save-auto-generated-dir' in the `info' customization group.
333 393
334 394
335 * Lisp and internal changes in XEmacs 21.0 395 * Lisp and internal changes in XEmacs 21.0
336 ========================================== 396 ==========================================
366 off using the `vertical-divider-always-visible-p' specifier. When 426 off using the `vertical-divider-always-visible-p' specifier. When
367 this is set to nil, the vertical dividers between windows are shown 427 this is set to nil, the vertical dividers between windows are shown
368 only when needed, and they are not draggable. 428 only when needed, and they are not draggable.
369 429
370 Other properties of the vertical dividers may be controlled using 430 Other properties of the vertical dividers may be controlled using
371 `vertical-divider-shadow-thickness', `vertical-divider-line-width' and 431 `vertical-divider-shadow-thickness', `vertical-divider-line-width' and
372 `vertical-divider-spacing' specifiers, which see. 432 `vertical-divider-spacing' specifiers, which see.
373 433
374 ** Frame focus management changes. 434 ** Frame focus management changes.
375 435
376 *** When the variable focus-follows-mouse is non-nil, `select-frame' 436 *** When the variable focus-follows-mouse is non-nil, `select-frame'
438 #<hashtable size 2/13 data (key1 value1 key2 value2) 0x874d> 498 #<hashtable size 2/13 data (key1 value1 key2 value2) 0x874d>
439 499
440 ** It is now possible to build XEmacs with LDAP support. 500 ** It is now possible to build XEmacs with LDAP support.
441 You will need to install a LDAP library first. The following have 501 You will need to install a LDAP library first. The following have
442 been tested: 502 been tested:
443 - LDAP 3.3 from the University of Michigan 503 - LDAP 3.3 from the University of Michigan
444 (get it from <URL:http://www.umich.edu/~dirsvcs/ldap/>) 504 (get it from <URL:http://www.umich.edu/~dirsvcs/ldap/>)
445 - LDAP SDK 1.0 from Netscape Corp. 505 - LDAP SDK 1.0 from Netscape Corp.
446 (get it from <URL:http://developer.netscape.com/>) 506 (get it from <URL:http://developer.netscape.com/>)
447 507
448 ** When profiling is in effect, a call-count of all recorded functions 508 ** When profiling is in effect, a call-count of all recorded functions