Please test Release Candidate 2 of XEmacs 21.4.10
=================================================
There are only a few specialized changes from RC1. If they are not
relevant to your usage, there is no need to build RC2. Continue
testing RC1.
Report your builds via M-x build-report and any bugs or interesting
behavior (including improvements ;-) via M-x report-emacs-bug.
o The notable fix is for the XEmacs processes that used to linger
after logging out from gdm (and some other session managers),
consuming 100% of CPU. Test reports here would be appreciated.
o Other changes are detailed below.
Test reports on Candidate 1:
o Some users have reported substantial speedups with the changes to
the code handling syntax-table text properties. I'd still like to
hear reports from *** cperl-mode *** users, as the group most
likely to be adversely affected.
o There are reports of problems _on Windows_ with `file-truename'
(native Windows builds), or if `directory-sep-char' is explicitly
set to `/'. These often seem to manifest using dired and file name
completion. They are believed to be unrelated to the changes
between 21.4.9 and 21.4.10. More information about these problems
would be very helpful.
*** Note ***
Due to a glitch in my release script that I inadvertantly fixed, the
prerelease location has returned to
ftp://ftp.xemacs.org/pub/xemacs/xemacs-21.4/pretest/
(it was .../tmp/ for Candidate 1). The rc1 versions are still
available, and have been moved there for consistency. The tag for
checkout from CVS is `r21-4-10rc2'.
Brief list of changes Candidate 1 -> Candidate 2
------------------------------------------------
-- Fix: (X11) CPU-eating XEmacs process at gdm logout -- Ben Sigelman
-- Fix: Freeze in certain modal dialogs -- Andy Piper
-- Fix: (MS Windows) Handle leak -- Mike Alexander
-- Fix: (Unix) Subprocess problems -- Mike Sperber, Stephen Turnbull
-- Fix: (X11) Crash in external widget -- I. N. Golubev
-- Update: Package sites and Texi docs -- Ville Skyttä
Change Logs
-----------
lisp/ChangeLog:
2002-09-22 Ville Skyttä <ville.skytta(a)xemacs.org>
* package-get.el (package-get-download-sites): Bring sites list
up to date, prefer
xx.xemacs.org addresses.
2002-09-27 Andy Piper <andy(a)xemacs.org>
* dialog.el (make-dialog-box): for general dialogs only
delete-frame-hook will be run.
man/ChangeLog:
2002-09-22 Ville Skyttä <ville.skytta(a)xemacs.org>
* xemacs/packages.texi (Available Packages): Add fortran-modes,
perl-modes, psgml-dtds, python-modes and ruby-modes.
Some consistency tweaks.
src/ChangeLog:
2002-08-30 Mike Alexander <mta(a)arbortext.com>
* event-msw.c (winsock_closer): Use closesocket, not CloseHandle
to close a socket.
2002-10-03 Stephen J. Turnbull <stephen(a)xemacs.org>
* callproc.c (child_setup): 21.4 doesn't have retry_close.
2002-09-20 Mike Sperber <mike(a)xemacs.org>
(This partially gets back my patch from 2002-07-20 without the
bug.)
* callproc.c (child_setup): Remove Ben's comment noting confusion
over the file descriptors >= 3: close_process_descs() doesn't
close those. Fix fd range to go up to MAXDESC-1 instead of 64.
* process-unix.c (unix_create_process): Call
begin_dont_check_for_quit to inhibit unwanted interaction (and
thus breaking of X event synchronicity) in the child.
2002-09-26 Golubev I. N. <gin(a)mo.msk.ru>
* frame-x.c (x_delete_frame): do not call XtDisplay on a destroyed
widget.
2002-08-20 Ben Sigelman <bhsigelm(a)cs.brown.edu>
* event-Xt.c (drain_X_queue): loop over while(XEventsQueued())
instead of while(XtAppPending()&XtIMXEvent). Upon a gdm logout,
the xemacs process did not exit, but looped infinitely here. This
fixes that problem.
Release notes from Candidate 1
==============================
Besides the main issue (syntax optimizations affecting fontlock,
indentation, movement, and cperl mode), there are a fair number of
dialog fixes. If you're not using the most recent Windows version
(which already has the fixes), you may want to check these out.
Of special interest: java-mode, cperl-mode, font-lock, indentation
-------------------------------------------------------------------
It is important to test RC1 (this candidate) or Release Candidate 2
(there will most likely be an RC2 because there are some important
patches pending) because it contains much work on the syntax cache
code, which is responsible for seriously degraded performance.
This is especially noticable in large (> 2000 line) Java files (on a
PIII 650MHz class machine, YMMV).
There are three main issues to watch for.
o Compare font-lock and indenting performance at the end of large
Java files when using RC1 against earlier 21.4 releases.
You should see a large speedup in RC1 with `lookup-syntax-properties'
set to nil (now the default). There may be speedups in other modes,
but java-mode seems to be the worst. If performance still seems
unacceptable, please let us know. Also, if some large files seem to
have acceptable performance at the end, but others are unacceptable,
that is important information. The performance problem depends on the
buffer position; for me, it's only perceptible thousands of lines from
the beginning of the buffer.
o Watch for bugs in font-locking, indentation, and syntax-based
movement (forward-comment, forward-sexp, forward-word, etc).
To optimize the syntax lookups (ie, `lookup-syntax-properties'
set to t), a fair amount of surgery was done on src/syntax.c. I have
done my best to avoid changing semantics, but the code is very
unclear. Bugs may have been introduced.
o cperl users must set `lookup-syntax-properties' to t.
Because this performance problem affects everyone, we have changed the
default of the Lisp variable `lookup-syntax-properties' to nil. This
means that modes that depend on looking up `syntax-table' text
properties will not work properly unless you set the variable to t.
The only mode I know of that this affects is cperl mode.
We will be discussing with the cperl maintainers how best to minimize
inconvenience here, but for RC1, cperl users will have to turn on
`lookup-syntax-properties' via customize-variable or in their init
files. Mode maintainers: on Alan Mackenzie's recommendation, we have
aliased parse-sexp-lookup-properties to lookup-syntax-properties.
This alias will also be put into the XEmacs 21.5 tree.
Other issues:
-------------
o Test failures will occur in "make check".
Please note that in "make check" 6 regexp tests will fail. This is
due to a variance between the ways "\<" and "\b" are implemented;
the
latter is buggy. This is unrelated to the syntax table changes. It
will (I expect) be fixed for RC2.
How to get the Release Candidate
================================
***** Check out from anonymous CVS with
cvs -d :pserver:cvs@cvs.xemacs.org:/pack/xemacscvs checkout -r r21-4-10rc1
_or_
cvs -d :pserver:cvs@cvs.xemacs.org:/pack/xemacscvs checkout -r candidate-21-4
If you haven't done so already, do a cvs login with password "cvs".
Of course, if you already have a checked-out XEmacs tree you can use
"cvs update" with the same CVSROOT and -r flags.
***** By FTP from
ftp://ftp.xemacs.org/pub/xemacs/xemacs-21.4/pretest/xemacs-21.4.10.tar.gz
***** Patch up from XEmacs 21.4.9 with
ftp://ftp.xemacs.org/pub/xemacs/xemacs-21.4/pretest/xemacs-21.4.9-21.4.10...
------------------------------------------------------------------------
Brief summary of Changes to 21.4.10 "Military Intelligence"
-- (**) Default lookup-syntax-properties to nil -- Andy Piper, Stephen Turnbull
-- Fix: revert-buffer bugs -- Andy Piper
-- Fix: Ugly dialog layouts -- Andy Piper
-- Fix: "Stale match data" bug -- Stephen Turnbull
-- Fix: Code typos -- Stephen Turnbull
-- Improve: FontSet defaults -- Ville Skyttä, Stephen Turnbull
-- Improve: Optimize update_syntax_cache -- Stephen Turnbull
-- Improve: GNU synchs: parse-sexp-lookup-properties -- Alan Mackenzie,
Stephen Turnbull
-- Docs: New PROBLEMs -- Stephen Turnbull
-- Docs: New oxymorons -- Stephen Turnbull
-- Docs: New configure.usage -- Stephen Turnbull
-- Docs: Update manuals on syntax functions -- Stephen Turnbull
-- Docs: Typo fixes -- Jerry James, Ville Skyttä, Stephen Turnbull
-- Improve: (Build) New regression tests -- Stephen Turnbull
-------- ChangeLog entries from ChangeLog --------
2002-09-28 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.4.10 "Military Intelligence" is released.
2002-09-27 Stephen J. Turnbull <stephen(a)xemacs.org>
* PROBLEMS (Running, General): Missing charset in FontSet warnings.
* Emacs.ad: Add charsets to *menubar*FontSet and *popup*FontSet.
2002-08-29 Ville Skyttä <ville.skytta(a)xemacs.org>
* Emacs.ad: Add *menubar*FontSet and *popup*FontSet entries,
(self-)obtained from Red Hat.
2002-09-25 Stephen J. Turnbull <stephen(a)xemacs.org>
* etc/OXYMORONS: A couple new ones.
2002-09-03 Stephen J. Turnbull <stephen(a)xemacs.org>
* configure.usage: Complete rewrite and reorganization.
-------- ChangeLog entries from lib-src/ChangeLog --------
2002-09-28 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.4.10 "Military Intelligence" is released.
-------- ChangeLog entries from lisp/ChangeLog --------
2002-09-28 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.4.10 "Military Intelligence" is released.
2002-09-28 Stephen J. Turnbull <stephen(a)xemacs.org>
* font-lock.el (font-lock-fontify-syntactically-region): Add
comment about lookup-syntax-properties, document LOUDLY as unused.
2002-08-26 Andy Piper <andy(a)xemacs.org>
* gutter-items.el (set-progress-feedback-instantiator): Fix bad
merge.
2002-09-02 Ville Skyttä <ville.skytta(a)xemacs.org>
* bytecomp-runtime.el (make-obsolete): Docstring argument nit.
(make-obsolete-variable): Ditto.
(make-compatible): Ditto.
(make-compatible-variable): Ditto.
2002-09-16 Stephen J. Turnbull <stephen(a)xemacs.org>
* obsolete.el (parse-sexp-lookup-properties): new compatible alias
for `lookup-syntax-properties'. RFE from Alan Mackenzie.
2002-08-28 Andy Piper <andy(a)xemacs.org>
* files.el (revert-buffer): propagate revert-without-query-status.
2002-06-03 Andy Piper <andy(a)xemacs.org>
* dialog-items.el (make-search-dialog): align various subcontrols
in visually pleasing ways, allow frame to autosize to the dialog
size.
* dialog.el (make-dialog-box): add a border inside the frame. Add
:autosize property, if t then reset the frame size appropriately
before the frame is mapped.
* gutter-items.el (set-progress-feedback-instantiator): align
various subcontrols.
* gutter-items.el (set-progress-abort-instantiator): ditto.
-------- ChangeLog entries from lwlib/ChangeLog --------
2002-09-28 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.4.10 "Military Intelligence" is released.
-------- ChangeLog entries from man/ChangeLog --------
2002-09-28 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.4.10 "Military Intelligence" is released.
2002-09-20 Stephen J. Turnbull <stephen(a)xemacs.org>
* internals/internals.texi (Techniques for XEmacs Developers):
More performance optimization hints.
(Modules for Other Aspects of the Lisp Interpreter and Object System):
Describe syntax code internals.
* lispref/syntax.texi (Syntax Basics): XEmacs "20" -> "20 and
later".
(Syntax Class Table): Deprecate SPC as whitespace designator.
(Syntax Flags): Rewrite for `8-bit' comment syntax flags.
-------- ChangeLog entries from netinstall/ChangeLog --------
2002-09-28 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.4.10 "Military Intelligence" is released.
-------- ChangeLog entries from nt/ChangeLog --------
2002-09-28 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.4.10 "Military Intelligence" is released.
-------- ChangeLog entries from src/ChangeLog --------
2002-09-28 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.4.10 "Military Intelligence" is released.
2002-09-28 Stephen J. Turnbull <stephen(a)xemacs.org>
* font-lock.c (SYNTAX_START_STYLE, SYNTAX_END_STYLE): Quiet GCC.
(find_context): Improve comments.
* regex.c (re_compile_fastmap): Gratuitous #ifdef comment fixes.
(re_match_2): An XCHAR_TABLE operation was missing.
Many of the following changes were inspired by Andy Piper's (now
obsolete) patch to make syntax-table text property lookup optional.
[Documentation]
* syntax.h (top level): Document semantics of syntax flags.
* syntax.c (comstr_start, Fforward_comment): Improve comments.
* syntax.c, syntax.h (top level): Document syntax cache better in
comments.
[Instrument syntax caching (temporary change)]
* syntax.h (enum syntax_cache_statistics_functions, struct
syntax_cache_statistics, SCS_STATISTICS_SET_FUNCTION,
SYNTAX_CACHE_STATISTICS_COUNT_INIT): New types and macros.
* syntax.c (scan_words, Fforward_comment, scan_lists,
Fbackward_prefix_characters):
* font-lock.c (find_context):
Use them to instrument syntax caching.
* syntax.c (struct syntax_cache_statistics, scs_statistics,
syntax_cache_statistics_function_names): New type and variables.
* syntax.c (update_syntax_cache): Update and report statistics.
[Major syntax cache optimizations]
syntax.c (lookup_syntax_properties): Default off.
* syntax.h (UPDATE_SYNTAX_INTERNAL): New, implements UPDATE_SYNTAX*.
* syntax.c (update_syntax_cache):
Move init test from update_syntax_cache to UPDATE_SYNTAX_INTERNAL.
[Minor syntax cache optimizations and code clarifications]
* syntax.h (SYNTAX_COMMENT_BITS, SYNTAX_START_P, SYNTAX_END_P,
SYNTAX_STYLES_MATCH_START_P, SYNTAX_STYLES_MATCH_1CHAR_P,
SYNTAX_STYLES_MATCH_END_P, STYLE_FOUND_1CHAR_P, STYLE_FOUND_P,
SYNTAX_COMMENT_MASK_END, SYNTAX_COMMENT_MASK_START,
SYNTAX_COMMENT_1CHAR_MASK): Remove redundant argument `table'.
(Code clarification.)
* syntax.c (scan_words, find_end_of_comment, scan_sexps_forward,
scan_lists): Compute code from syncode, use Boolean macros instead
of redundant masking operations. (Code clarification; any decent
compiler can do this optimization.)
* syntax.c (scan_lists): Rearrange switches (case Sstring_fence)
for clarity.
* syntax.h, syntax.c (NEXT_SINGLE_PROPERTY_CHANGE,
PREVIOUS_SINGLE_PROPERTY_CHANGE, update_syntax_cache): Conditionally
use F*_single_property_change instead of F*_extent_change.
Currently F*_single_property_change is _much_ less efficient.
* dired.c (Fdirectory_files): Qt not valid in syntax_cache.object.
* syntax.h (SETUP_SYNTAX_CACHE_FOR_OBJECT): Initialize
syntax_cache.object properly, don't leave Qt or Qnil.
(SYNTAX_CACHE_BYTE_TO_CHAR): Use SETUP_SYNTAX_CACHE_FOR_OBJECT.
* syntax.c (update_syntax_cache): Use BUFFERP and STRINGP, not
tests for Qt or Qnil.
2002-09-21 Stephen J. Turnbull <stephen(a)xemacs.org>
* redisplay.c (point_in_line_start_cache):
* extents.c (print_extent_1):
Fix warnings.
* extents.c (Fset_extent_property): Document `syntax-table' property.
* extents.h (Fnext_single_property_change): EXFUN it.
2002-09-09 Stephen J. Turnbull <stephen(a)xemacs.org>
* search.c (clear_unused_search_regs): New static function.
(search_buffer):
(simple_search):
(boyer_moore):
Use it. Fixes "stale match data" bug reported by Martin Stjernholm.
Minor clarifications in comments.
* regex.c (re_match_2_internal): Ensure no stale submatches.
2002-09-09 Stephen J. Turnbull <stephen(a)xemacs.org>
* event-Xt.c (enqueue_focus_event): Add missing prototype.
2002-08-29 Jerry James <james(a)xemacs.org>
* lisp.h: structrures -> structures.
2002-06-03 Andy Piper <andy(a)xemacs.org>
* frame.c (frame_conversion_internal): add conversion appropriate
for setting frame dimensions in pixels.
* console.h (struct console_methods): add device-specific widget
layout functions.
* emacs.c (main_1): initialize glyph vars.
* event-Xt.c (handle_focus_event_1): call handle_focus_event_2
(handle_focus_event_2): new function. Allow focus to
be set to a particular window and widget.
(enqueue_focus_event): new function. Create a
synthetic focus event.
(emacs_Xt_handle_magic_event): call
handle_focus_event_2.
* frame.c (Fset_frame_pixel_height): new function. Allow
pixel-based sizing. Does the right thing on character-oriented
displays.
(Fset_frame_pixel_width): ditto.
(Fset_frame_pixel_size): ditto.
(syms_of_frame): declare.
* general-slots.h: add :vertically-justify and
:horizontally-justify.
* glyphs-msw.c (xbm_create_bitmap_from_data): warning fix.
(mswindows_widget_border_width): new function.
(mswindows_combo_box_instantiate): set border widths.
(console_type_create_glyphs_mswindows): declare.
* glyphs-widget.c:
(check_valid_justification): allow vertical and horizontal
justification.
(widget_border_width): new function. Call device methods.
(widget_instance_border_width): ditto.
(logical_unit_height): new function. Determine the height of a
logical-unit. Logical units are intended to provide grid-like
layout for subcontrols in a layout. If the layout is
:vertically-justify top then subcontrols will be positioned on
logical-unit boundaries, thus allowing adjacent subcontrols to
line up.
(widget_logical_unit_height): ditto for widgets.
(redisplay_widget): misc cleanup.
(widget_spacing): new function. Call device specific
methods. Intended to be the default gap between adjacent widgets.
(widget_query_geometry): use new spacing functions to determine
appropriate geometry.
(initialize_widget_image_instance): initialize horizontal and
vertical justification.
(widget_instantiate): use logica-units where appropriate for
sizing large widgets.
(button_query_geometry): use widget_instance_border_width.
(tree_view_query_geometry): ditto.
(tab_control_query_geometry): ditto.
(edit_field_query_geometry): new function.
(layout_update): pick up :justify, :horizontally-justify and
:vertically-justify none of which worked previously. :justify is
used as a fallback for both horizontal and vertical justification.
(layout_query_geometry): use logical units to size appropriately.
(layout_layout): ditto.
(Fwidget_logical_to_character_width): new function. Allow users to
convert from logical units to characters so that frame sizes can
be set appropriately.
(Fwidget_logical_to_character_height): ditto.
(syms_of_glyphs_widget): declare.
(image_instantiator_edit_fields): add edit_field_query_geometry.
(VALID_LAYOUT_KEYWORDS): declare :vertically-justify and
:horizontally-justify.
(specifier_vars_of_glyphs_widget): new function. Declare
Vwidget_border_width which is not yet used.
* glyphs-x.c (x_map_subwindow): enqueue appropriate focus events.
(x_widget_border_width): new function.
(x_widget_instantiate): create a sensible name for widgets.
(console_type_create_glyphs_x): declare x_widget_border_width.
* glyphs.h (DEFAULT_WIDGET_BORDER_WIDTH): new macro.
(struct Lisp_Image_Instance): add :vertically-justify and
:horizontally-justify.
(LAYOUT_JUSTIFY_TOP): new.
(IMAGE_INSTANCE_SUBWINDOW_H_JUSTIFY): new.
(ROUND_UP): new macro. Round argument up to next integral
interval.
* redisplay-output.c (redisplay_output_layout): misc formatting.
* symsinit.h: declare specifier_vars_of_glyphs_widget.
-------- ChangeLog entries from tests/ChangeLog --------
2002-09-28 Stephen J. Turnbull <stephen(a)xemacs.org>
* XEmacs 21.4.10 "Military Intelligence" is released.
2002-09-12 Stephen J. Turnbull <stephen(a)xemacs.org>
* automated/regexp-tests.el: Add word-boundary regexp tests.
2002-09-09 Stephen J. Turnbull <stephen(a)xemacs.org>
* automated/regexp-tests.el: Add test for stale subexpr match-data.
Thanks to Martin Stjernholm for the report.
* automated/syntax-tests.el: Conditionalize syntax-table property
tests on feature. Enable feature if present.
--
Institute of Policy and Planning Sciences
http://turnbull.sk.tsukuba.ac.jp
University of Tsukuba Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
My nostalgia for Icon makes me forget about any of the bad things. I don't
have much nostalgia for Perl, so its faults I remember. Scott Gilbert c.l.py
--
Institute of Policy and Planning Sciences
http://turnbull.sk.tsukuba.ac.jp
University of Tsukuba Tennodai 1-1-1 Tsukuba 305-8573 JAPAN
My nostalgia for Icon makes me forget about any of the bad things. I don't
have much nostalgia for Perl, so its faults I remember. Scott Gilbert c.l.py