[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

improved version of CLX available

An improved version of X11.R3 CLX is available via public ftp on:

ucbarpa (,

in ~ftp/pub/clx.tar.Z

This version of CLX is essentially Release 3 with all the reported
bugs fixed.  There are also many enhancements specific to Franz
Allegro Common Lisp, including a large speedup and integration with
the Pitman condition system.  All of the Allegro specific changes are #+excl
or #+allegro.  This version (the April Fools Day CLX?) should be completely
compatible with the R3 version, minus the bugs and race conditions.

The complete list of changes is at the end of this message.  One known
fix that didn't make it in was Judy Anderson's patch for Lucid 3.0.  The
diff listings provided with that patch were from release 2.
(I would appreciate it if someone can provides diffs from R3)

	-- John Irwin, jdi%franz.uucp@ucbarpa.berkeley.edu

------ the file NEWCHANGES ------

This file contains a full list of the differences between X11.R3 CLX and this
version.  Effort was made to ensure that this version is completely compatible
with the R3 version; thus this version should compile and run on the same set
of Lisps as the R3 version.  Some of the changes in this version are specific
to Allegro Common Lisp, but these changes are #+allegro or #+excl.

General changes, applicable to all ports:

	LaMott's fix to unset display-waiting-reply-p correctly.  My fix to
	make sure it isn't unset before its time.
		-- buffer.l:	read-sequence-string
		-- bufmac.l:	reading-buffer-reply
		-- input.l:	wait-for-reply

	LaMott's unexporting of display-version-number, display-squish,
	font-min-bounds, and font-max-bounds.  Also removal of first two
	from display defstruct.  New exporting of char->card8 and card8->char.
	Bad declaration in keycode->character fixed.  Unused argument in
	put-image removed.
		-- clx.l:	export list
				display defstruct
		-- dependent.l: export list
		-- translate.l:	keycode->character
		-- image.l:	put-image

	Judy Anderson's fix to radians->int16 -- argument was declared as
	float but sometimes the fixnum 0 was passed.  Modified by me to
	be more optimal on a greater number of CL implementations.
		-- dependent.l :radians->int16

	Error handling revamped by LaMott and me.  New macro catching-errors
	is like with-display, but also guarantees any server errors occuring
	as a result of requests sent while inside the macro will be reported
	in the current process.  Report-error rewritten to discard or preserve
	replies correctly.  With-display rewritten to allow wait-for-event to
	know when errors should be "forwarded" to another process which is
	interested in them.  Wait-for-event now forwards errors to process
	waiting for a reply (if any).
		-- display.l:	export list
				catching-errors (new function)
		-- input.l:	wait-for-event
	LaMott's fix to make font accessors work correctly when font-min-char
	is not 0
		-- fonts.l:	def-char-info-accessors

	Bill Chile's fix to make draw-arcs terminate correctly.
		-- graphics.l:	draw-arcs

	Fix to set display-dead before giving the server-disconnect error,
	instead of after.  (Since the error function probably won't return)
		-- input.l:	wait-for-event
	Added new slots to normal-hints structure to make it more ICCCM
	compliant.  base-width, base-height, and win-gravity.
		-- manager.l:	export list
				wm-size-hints defstruct

	Send-event fixed to increment the buffer offset by the correct
	amount.  (It didn't work at all before)
		-- requests.l:	send-event

	H. Kawabe's fix to print-resource, which  didn't always print to
	the correct stream.  New initialize-resource-database function added.
	(It isn't called or exported, just sample code.)
		-- resource.l:	print-resource
				initialize-resource-database (new function)

	Brain damaged code in keysym-shift-p caused the shift bit to be
	inverted when a control character was input.  LaMott says this is
	the right behaviour for a lisp machine, but it isn't for a Lisp
	that supports multicase, as Allegro does.  I #+lispm'ed the offending
		-- translate.l:	keysym-shift-p

	Lamott's speed up of image functions copy-pixarray-row-1 and
	read-bitmap-file.  Fixed write-bitmap-file to work with images
	with scanline pad != 32.
		-- image.l:	copy-pixarray-row-1

	Put-image-z enhanced to be able to send image larger than the server
	can accept in one shot.  Write-bitmap-file optimized.
		-- image.l:	put-image-z

	Made debug files usable in mixed case lisps.  Use warn if si:signal
	is not available, etc.  Note that lowercasification of trace.l was
	a bit more zealous than necessary.  (But was much easier than doing
	the whole thing).  Ash bug in trace fixed.  New file proc-trace.l
	added -- traces which process sends which request, etc
		-- debug/debug.l
		-- debug/describe.l
		-- debug/trace.l

Franz specific changes, applicable to Allegro and Extended Common Lisps:
(note that all these changes are #+excl or #+allegro, so if you're not
 using our product these changes are "commented" out)

	Fix to make Allegro process-locks be created lazily.  Holding-lock
	also rewritten to be faster and smaller.  Atomic-push and pop changed
	to be "safe" in case CLX source is ever modified to use these functions
	on a form.  (Currently they're always used on a global)

		-- dependent.l :#+excl make-process-lock
				#+excl holding-lock
				#+excl test-inside-event-listen (new function)
				#+excl event-listen-error (function removed)
				#+excl atomic-push
				#+excl atomic-pop

	Fix to make reading from the X socket work correcly on large
	requests.  Buffer-close-default declaration changed to not give
	warning.  C reading/writing code completely rewritten -- now only
	requires select, not select and FIONREAD
		-- dependent.l :#+excl buffer-read-default
				#+excl buffer-close-default
		-- excldep.c
	CLX integrated with Allegro implemenation of Pitman condition system.
	Moved request-error definition to after the request-error printer,
	since Pitman wants it so.
		-- dependent.l :#+excl x-error
				#+excl x-cerror
				#+excl x-error defstruct,
				       make-condition (all removed)
		-- input.cl:	#+excl request-error define-condition (moved)

	Moved stuff out of defsystem into excldep, so defsystem doesn't
	have to be catted into CLX.fasl.
		-- excldefsys.l
		-- excldep.l
		-- exclMakefile

	Very large speedup to type checking -- added compiler transform.
	Copyright notice added to this file.
		-- excldep.l