! aaChange.txt -- Alltalk kernel change log
! See oldChanges.txt for pre-1990 changes.

2.9Z20 W28 January 6, 1999
	mswSystem.c
	System.c
		Modify System.time so optional parameters can specify a date:
		system.time[year, month, date, hour, min, sec]
		If no parameters are supplied, the current time is
		returned. All six optional parameters must be supplied
		if another date is required.

2.9Z21 W28 January 27, 1999
	Clipboard.c
		New kernel class to support the system clipboard.
	mswBinFile.c
		Modified for speed.
	mswStrFile.c
		Added to replace cStrFile. Much faster.
	mswShell.c
	mswShellWindows.c
		Updated for clipboard functions.
		Remove Windows 3.1 support.
	BinaryFile.c
	StringFile.c
		Remove Macintosh support.

	Use integer (byte) values for color components to match
	the Unix version. This has no effect on image files, but
	programs that set up new colors (Window.color[x, y, z])
	must be changed.

2.9Z22 W29 February 7, 1999
	This is a big one.
	application.c
		System independent application model and faster
		activation of stand-alone applications.
		(Unix, Win32, WinCE, Mac)
	mswApplication.c 
		This file was deleted because it is now generic.
	System.c
		Revised to support generic stand-alone applications.
		Eliminate some old Mac-only features. (Mac version
		is still compatible without them.)

		The obsolete methods for #undo, #cut, #copy,
		#paste and #clear were removed.
	heap.c
		Revised for system independent heap model.
	cvtNumber.c
		Another fix for rounding floats correctly.
	mswGetFile.c
	BinaryFile.c
	StringFile.c
	LexFile.c
		The file type list and prompt were broken.
		The old #setCreator message was replace with
		#setPrompt to supply a file type description.
	mswError.c
		Uses the native exception handler rather than setjmp/longjmp.

	mswSystem.c
		The heap size resource is now an ascii string.
		You specify the desired heap size as a decimal
		integer in this string.

2.9Z23 W29 April 8, 1999
	mswGraph.c
	unixGraph.c
	Window.c
		The protocol for #push and #pop in class Window
		has been streamlined. This makes a big difference
		in performance because this is an 'inner loop' 
		method used to draw all views.

	This version is using the new Microsoft VC++ version 6.0
	service release 2 compiler which makes better code. In
	addition, this is the first version of Alltalk to be
	compiled for Pentium-only processors. Some inline code
	generation was also enabled, so this version is somewhat
	larger, but also faster.

2.9Z24 W29 April 8, 1999
	Converting floats to strings had rounding problems when
	compiling for Pentium or when certain optimizations were
	enabled for earlier machines. The code is now more robust
	and works for Pentium & optimized versions.

2.925	Not released.

2.926 May 12, 1999
	Fix error codes returned by file operations.

2.927 May 27, 1999
	The color model is revised to better support Unix.
	This change is not apparent to Windows users.
	The 'pens' returned by Window now have the same
	RGB components: 0x00BBGGRR on both Linux and
	Windows regardless of the resolution setting
	of the display card.

2.928 June 6, 1999
	The time base for the abstract tic counter
	(system.tics) has been changed from approximately
	60 Hz to 100 Hz.  A 'tic' is now worth about 10 milliseconds.
	This applies to mainly to Event delay settings. The
	processor was wasting time at the lower tic rate.
	This change improves control tracking and all related
	periodic behaviors.

	The values of the system global variables stdin,
	and stdout can now be reassigned to other objects.
	This allows you to send the listener output
	to other windows or obtain interactive expressions from
	another source.

	Input sources must implement a method for:

		read[aString, maxSize]
	
	This method must return a null terminated string not larger
	than maxSize.

	Output destinations must implement:

		write[aString]
		writeln[aString]

	To recover from redirection, simply assign the
	global values:

		stdin  := listener
		stdout := listener

2.929 June 15, 1999
	The font model has been changed by adding a kernel class Font.
	This was done to make a more portable and flexible system.
	The old Mac model of orthoginal font, size, & style is not
	used by X-Windows or Microsoft. The new standard model
	requires fonts to be created with all three attributes specified
	at once. The graphics.alt file in Views has been altered so
	that most users will never know the difference. 

	If your programs use the protocol for setting font sizes or
	styles in windows, you will want to look at the new graphics.alt.

	The standard view classes that have fontStyle and fontSize attributes
	have been revised to remove these attributes. A single font attribute
	takes their place. This font is the identifier returned by creating
	an instance of the new Font class:

	idInteger := Font.new[aFontNameString, aFontSizeInteger, aFontStyleInteger]

	The old methods in Window for #setFontSize & #setFontStyle now
	do nothing. They will be removed in a future version of Alltalk.

	Warning messages have been added to EditDisplay and Text for the
	messages:
		setFontStyle
		setFontSize
	
	DynamicText used the selector #setSize which also displays
	a warning.

	You should remove these messages from your classes.
	If you need a special font, size or style, create a font
	like the ones in View/graphics.alt


2.930	June 30, 1999	
	The stack overflow detector was broken.
	Infinite recursion caused a crash instead of an error
	message about stack overflow.

2.931	July 7, 1999
	Window types have been revised and debugged.
	The window type is an optional parameter for #new:
		Window.new[aTypeInteger]
	The types are described int views/graphics.alt

	Restarting a stopped Event sometimes caused the event to
	run twice on the same tic if the Event was still on the
	internal pending list. This has been fixed.
	
2.932	July 30, 1999
	Support for creating and deleting directories and files has
	been added as metaclass methods for File and Directory.
	They each take one string parameter and return true/false
	error values.

	system.command[commandString] 
	Now allows parameters in Windows. (This always worked in Unix.)

	system.environment[nameString, valueString]
	Return the value of the named environment variable to the valueString.
	The valueString must be big enough or the result will be truncated.

	system.setEnvironment[nameString, valueString]
	Set the value of the named environment variable.
	The variable is added if it does not exist.

2.934	August 4, 1999
	mswGraph.c
	Add a window type (winNoResize=4) to make windows
	that don't resize. This is great for fixed-size panels.
	The constant is defined in views/graphics.alt.

2.935	August 12, 1999
	virtualMachine.c
	Handle stack overflow more robustly.
	
	Alltalk no longer exits due to errors that occur
	in startup files.

	System has a method for #default and #setDefault[obj] to
	return or set the default object for compiling expressions.
	The obj can be a class or instance. The message works
	the same way as WITH <expression>.

	Windows with winStylePlain now have the exact dimensions
	specified, rather than extra space for a non-existant title
	bar.

	Context now has methods to #get and #put values in the
	parameter frame. 

	System has a new method to #setDefault as well as the old
	method #default to access and change the compilation 
	context.  The semantics have been changed to agree with
	the WITH construct.

	Object.forward can now accept an optional Selector 
	parameter which will replace the selector in the
	forwarded context. Used in conjunction with Context.put,
	this allows arbitrary redirection of any message.

2.936	August 20, 1999
	The anonymous method $doit used to execute events and 
	compile time expressions generated a context with an
	incorrect number of parameters. This caused problems
	for Alltalk programs that examine the stack.

	Context now has a method to #setSize[n] the number of 
	parameters in the frame. This can be used in conjunction
	with #put to add more parameters.

2.937	October 14, 1999
	Cosmetic fixes to get the code to agree with the Linux
	and SGI compilers.

2.938	November 14, 1999
	Windows.scrollRect[scrollRec, dx, dy, updateRec]
	The updateRec is a new optional parameter. It
	must be an instance of Rectangle. If supplied,
	it is modified to bound the exposed part of a
	window client area that must be redrawn.
	This makes it possible to correctly handle scrolling
	for windows that are not entirely visible on the 
	screen.

	SerialFile.readNow did not return NIL if the file was
	not open.

2.939	December 14, 1999
	An old problem resurface because on newer machines,
	heap allocations need to have long word allignment.
	The allocator simply rounded up the requested number
	of bytes. This caused the #size message in the various
	array classes to sometimes return a rounded-up value.
	The #size message now always returns the requested size.

2.940	December 20, 1999
	The system.errorLine message that returns the line number
	where the last error occured did not work.

	A flaw in clipboard handling caused a crash when quitting
	applications that held private clipboard data.

2.941	February 2, 2000
	Windows created with styles that had no grow box in the
	lower right corner still had maximize and minimize buttons.
	These were removed.

	A new window style has been added to support modal dialogs
	that need to have a resize icon in the lower right corner.
	See 'graphics.alt' for winResizeDialog.

	Two experimental window styles have been added to support
	menus that draw beyond their parent window boundaries.
	It is likely that one of these will be removed.
	
	winPlain	This is an independent window with no decorations.
	winChild	This is a subwindow that is owned and clipped by
			the parent window.

	Messages to 'super' when outside an object caused alltalk
	to crash. This has be fixed and an appropriate error message
	is displayed.

	
2.942	February 10, 2000
	When line number reporting was fixed (2.940) another
	problem was introduced that caused Alltalk to crash
	when certain errors occur. 

2.943	March 02, 2000
	A new drawing primative has been added to Window.
	The #drawCursor[x, y] method draws the vertical
	line between characters. The x, y positions should
	be at the font base line, the same as used for drawing
	a character at the same position. This primative was
	added to improve portability with X-Windows based
	systems.

	Unix only:
	The dummy metaclass methods  added to Windows verson are
	now included:
		Directory.create[aDirNameString],
		Directory.delete[aDirNameString],  
		File.delete[aFileNameString]
	
	The system.modifier[aKey] method now works properly.

2.944	March 20, 2000
        Windows: When a window that had captured keydown events was
        iconified, no other window could get key events.
        This bug was introduced in 2.941.                                       

2.945   May 17, 2000
        A metaclass method for File was added:
                File.move[oldNameString, newNameString]
        This message can be used to rename or move files
        to a new location.  
	This is the version of Alltalk originally used for
	NADS.  
 
2.946   June 1, 2000
        New methods for Socket have been added:
 
        setDelay[flag]
                Use flag=0 for TCPNODELAY,
                    flag=1 to enable delay.
 
        setBuffer[size]
                Set the transmit and receive buffer size in bytes.
 
        setLinger[timeout]
                Set the linger on close timeout value.
                Zero will speed the closeout process.
 
        New methods to support overriding stderr have been added.
        By default, stderr contains the listener object (like
        stdin and stdout.)
        When a system error occurs, the messages #write and #writeln
        are used to generate the traceback on stderr. The final error
        message is written with #writeln and is now also sent as a
        parameter to the message #message[messageString].
        The Listener class implements #message by throwing up the
        system modal dialog to display the error.
 
        If you want to implement a handler for stderr, you must
        have methods for #write, #writeln and #message.  If you
        only want to override #message, you can also simple compile
        a new method for #message in class Listener.

2.947   June 8, 2000
        A message has been added to System to recover the operating
        system error code following any operating system function:
 
                system.errorNumber
 
        A zero value indicates success. The error codes are
        currently operating system dependent.
        For Windows, the message returns the Win32 error code.
        For Unix, the message returns the value of errno.
 
        The message #add in class Dictionary has been modified so
        you may omit the value parameter. In this case, the value
        will be NIL. This helps when using Dictionaries to
        identify members of a set.
 
        A new class, Literal, has been added to the kernel.
        Literal strings (like 'hello') are now instances of this
        class. The old class String is now a subclass of Literal.
        This change was done to make it impossible for Alltalk
        programs to modify the value of literal strings.
 
        An obscure bug in lex.c caused a crash when parsing LexFiles
        that contained character codes greater than 127.

2.948
	A dreadfull bug was introduced in 247. Very few people
        got copies, so it probably has not gone too far yet...
        The error redirect function could follow an undefined
        pointer under certain circumstances causing a hard crash.
 
        New functions were added to System to remain in phase with
        the Unix version:
 
        system.count
                Return the number of parameters passed on the
                command line.
 
        system.parameter[n, resultString]
                Returns the nTh string passed as a parameter on
                the command line.
 
        Optimized modules do not work with this version.
 
2.949   August 29, 2000
        Modules now work with all optimizations enabled.
 
2.950   September 7, 2000
        Another fix for stderr redirection.
 
2.951   September 12, 2000
        Integer.$MOD (Infix MOD) of zero was not detected as
        division by zero.

	All Conversions of integers to strings in bases other than
	ten are now done unsigned. This was not done consistantly
	before this version.
 
        Several complex changes were made to Socket to avoid
        memory leaks and to improve robustness when repeatedly
        opening and closing server sockets.
 
        When stderr was redirected, the error traceback lines were
        written to stdout instead of stderr. The now go to stderr.

	A new method for #active was added to Event. It returns
	TRUE if an Event is pending or waiting, NIL if the Event
	is stopped.

2.952	October 3, 2000
	A kernel method to return a window's name has
	been added:

		aWindow.name

	To make Unix and Windows versions work exactly
	the same way, the event loop was modified to
	change the timing of $grow events. This fixed
	a problem with starting the cursor in ModalGetParam
	and ModalGetFile dialog boxes.

	Arrow keys are now enabled under Unix/Linux.

2.953	October 7, 2000

	The unix color cache model has been added to mswGraph.
	This makes drawing considerably faster. (About 40% in
	some cases.)

	All the source code was put through a rigorous lint
	detector. Two problems were found: One rarely-used function,
	Directory.depth had an incorrect parameter list that could
	have crashed the application when used. Another parameter
	list error was found in the clipboard support module. This
	would cause the clipboard to be truncated, which was reported
	and not fixed in a previous version.

	Class Listener now supports #name and #setName like other windows.
	This was done to make debugging networked alltalk programs easier.
	You can now keep track of which listener is associated with each
	program by giving it an application name.

	The timing and protocol for $update events in class Windows
	has been changed:

	Window.$update now takes a Rectangle parameter.
	ViewWindow $update uses this to constrain drawing to the proper area.
	This was formerly done inside kernel class Window, but now
	update events are deferred and processed by a system Event.
	This was done to eliminate recursive calls to vmExecute
	when handling Window events.

2.954	October 24, 2000
	Two errors were found and fixed in the 2.953 release.
	1) It didn't work with Windows 98. Non-NT versions of Windows
	have some kind of undocumented limit for the size of the clipping
	rectangle. Clipping fails if the clipping rectangle is too large.
	2) Alltalk could crash when certain random colors were generated.
	(This was found with the Mondrian demo.)
	Windows calls the application shell recursively in such a
	way that deferred events cannot be replayed later even in
	the same order they were delivered. All the recursion-avoidance
	code tested in 2.953 has been removed.

2.955	November 06, 2000
	Quitting Alltalk under certain conditions left a zombie
	process running. If these accumulate, the system slows
	way down and some resources become unavailable.

2.956	November 11, 2000
	Windows.drawLines with a count of zero caused a buffer overflow.
	This was a new bug introduced in 2.954.

2.957	January 4, 2001
	The kernel method for Window.track has been changed to return an
	integer instead of TRUE/NIL. The value returned indicates the state of the
	mouse buttons using a bit map: 1 for left, 2 for right, 3 for middle.
	The only class in Views that required changes was Control where "window.track"
	was used once. If you have other classes that use this expression you will
	need to substitute "window.track <> 0" to get the same behavior.

	The method for  #throw in class Context will now display the error message
	parameter when no #catch is found on the stack.

2.958	January 31, 2001
	Some new features and fixes:

	1) Windows no longer capture the mouse. (This is an internal matter.)
	2) Mouse drag and button up events can now be handled by user windows.
	3) Unicode is supported to some extent. This is experimental and not
	yet in the Unix versions.

	Two new classes are added: WideString and WideStringLiteral.
	Wide literals are created by using double quotes, e.g. "hello".
	To see interesting characters you must select a unicode-capable
	font and set the character values in the string appropriately.
	Window.drawString and Windows.strWide will accept instances of:
		String, Literal, WideString WideLiteral.
	In general, WideString functions will accept regular String parameters,
	but the reverse is not always true.

2.959	March 18, 2001
	Interesting bugs. Some old, some new:
	The idea of not capturing the mouse was a mistake. Mouse
	capturing is back the way it was before 2.958. Arn't you 
	glad you didn't try version 2.958?

	A serious bug was dicovered that can occur during shutdown.
	A set of system memory allocations are freed after their
	parent block was freed. This produces unpredictable results.
	Since the program is shutting down, the "bullet-proof" error
	handler restarts the interpreter and forced the shutdown to
	continue, so this problem hasn't been noticed. But jumping out
	of the normal shutdown leaves some resources unreleased.

	The problem is now fixed. This bug has been in place since
	command line recall (up arrow) was added in 1998.

	Window attributes in graphics.alt are now handled with a bit
	map that can be or'd together to produce some new window effects.
	The old definitions still work as usual.
	
	Another serious bug was found during shutdowns. (Windows only)
	When the clipboard held data, an abnormal termination could occur.
	Internal details:
	In itfShutdown, a shell_cycle was done to process the WM_RENDERALLFORMATS
	message before shutting down the heap. This doesn't work because 
	shellQuit is already true. In any case, under Window2000 the WM_RENDERALLFORMATS
	gets sent when the invisible alltalkWindow is destroyed. To fix this problem,
	the alltalkWindow is destroyed before the heap is deleted. The system
	will send the WM_RENDERALLFORMATS automatically. The old code used to
	work, so I believe a service pack must have changed the order of events
	during shutdown. WinMain in mswShellWindow now destroys the alltalkWindow
	before deleting the heap.

	An attempt to make Window.drawString faster broke browser syntax
	highlighting. This is now back the way it was.

	The System.cycle method was broken by an earlier effort to improve
	Linux/Unix compatibility. It is now fixed.

	Changes:
	When a direct instance of Window is drawn it is
	no longer automatically selected as the keyboard focus. The method
	for #draw in ViewWindow does this right after drawing the window,
	so applications don't need to be changed.

	When winPlain (no border, title bar or other features) type windows
	are drawn, they no longer appear on the task bar.

	New Features:
	Window has a new method for $drag[fileNameString].
	When the user drags file icons on top of your windows, they will get
	this message.

2.960	July 24, 2001
	System has a new method: .play[aFileNameString]
	This message will cause the sound specified in the file to play back
	asynchronously. To stop the sound, send the message again with
	NIL for the file name.

	Several enhancements for Kanji and other Unicode fonts have been
	added. See documentation for WideString and WideLiteral for details.

	The Listener window 'shrank' each time an application was created
	and restored:

	Internal notes:
		Restoring an image file did not correctly dispose of all heap resources.
		Now sycStart activates the heap and sycStop deactivates the heap.
		The itfShutdown no longer does the hmemDeactivate.
		The listener now gets the restored attributes correctly.

	**

2.961	August 28, 2001
	Never released.

2.962	August 29, 2001
	The kernel now sends a $buttonDown event to windows when they
	are activated with a mouse click. The method for $select in
	ViewWindow.alt used to simulate this, but it was not always
	handled correctly.

2.963	November 28, 2001

	Virtual machine stack overflows occur when scrolling very large
	alltalk source files in the browser with syntax highlighting 
	enabled. The stack is larger now.

2.964	December 4, 2001

	This is a must have:
	Windows 2000 sockets have changed somewhat: It is not always possible
	to do a single socket.read for the number of bytes returned by socket.count.
	This is an implementation variation that is allowed according to Stevens.
	The Socket class has been changed so that you always can expect a single
	read to work if your buffer is large enough.

2.965	December 11, 2001

	Windows only: The built in file dialogs now support the full-featured
	"Explorer" style dialogs that allow directory creation and other nice
	navigation aids. To enable this behavior, make sure you don't have
	"useFileDialogs.alt" included in your startup file.

	All systems:
	LexFiles did not implement #setType and #setPrompt correctly. This
	has been fixed and the documentation for these methods in StringFile,
	BinaryFile and LexFile has been updated. (See the Kernel/*.alt files)

	LexFiles now implement #write, #writeln, #create, #seek, #pos, #size
	and #setSize. The protocol is identical in function to StringFile.
	This is a Good Thing(tm) because you don't have to keep an extra
	StringFile around to write a file that will later be read as a LexFile.

2.966	December 18, 2001
	
	The method for #saveIn in class System now reports an error
	if the application file cannot be updated.

	When applications are created using system.saveIn[aFileName],
	the file will now shrink if the new heap is smaller than the
	old one.

2.966b	January 27, 2001
	
	In the method for obj.sendArray[selector, array, count], the
	count parameter was supposed to be optional, but this feature
	was broken so that the count was always required.

2.967	(Experimental version discarded)

2.968	May 16, 2002

	String.copy was overridden in the kernel by ByteArray.copy.
	WideString.copy had the same defect.
	This slowed down all string operations a great deal.

	WideStringFile : New class added to support Unicode files.

	virtualMachine.c
		Will now coerce wide strings to strings
		where required.
	
	StringFile.c
	WideStringFile.c

		The coercion functions needed to recognized both
		String and Literal versions of the parameter.

	Drag-n-drop file path names could not contain spaces.
	Also, if the user disabled the display of file extensions
	on the desktop, Alltalk got the file names without extensions.


2.969	June 11, 2002

	Due to an oversight, the Windows version of the built-in file
	picker did not use the new "Explorer style" dialog window
	when creating new files. Opening files worked correctly.


2.970	October 17, 2002
	
	The method for #commmand in class System now returns an Integer id
	that can be used to kill a process using the new method for #kill[aProcessId]
	(added to class System.)

2.971	October 21, 2002
	
	ModalDialogs were broken in two ways:

	1) The built-in file dialog was not entirely modeless.
	This bug was introduced with the Explorer-style file dialog
	change in version 2.965. The fix involves making the hook
	function look at the parent window.

	2) Mouse clicks on a window both activate the window and supply one mouseDown
	event. This was done starting in Alltalk 2.962. Unfortunately, it seems
	to break the ModalDialogs implemented in Alltalk because the user can
	press a control panel button in some other window while a ModalDialog is
	on top. A possible fix:

	METHOD $buttonDown[x,  y, whichButtons] OF ViewWindow IS
		Respond to the mouse buttons or wheel
	BEGIN
		IF NOT ModalDialog.active THEN
			topView.mouseDown[x, y, whichButtons]
		END IF
	END METHOD

	METHOD $buttonDown[x,  y, whichButtons] OF ModalDialog IS
		Respond to the mouse buttons or wheel
	BEGIN
		topView.mouseDown[x, y, whichButtons]
	END METHOD

	Another possible fix is to disable this feature in the kernel,
	which was always done prior to Alltalk 2.965. This would probably
	break some people's code...

	After several experiments, I decided to undo the kernel change.
	This means that "punch-through" mouse clicks no longer work.
	Sorry Dean. I'll try to do this better when I'm not in a rush.


2.972	November 11, 2002
	
	The methods for #multiplex in the array classes did not correctly
	recognized source arrays if they were subclasses of built-in array
	types.

	The method for #write in class Socket did not correctly return the
	number of records sent.

2.973	November 18, 2002
	
	The termination condition in the method for #read in class Socket
	was wrong. It returns without reading all the bytes requested.
	This behavior didn't break anything because the higher level code
	exp
	This is an old bug, but the higher level code in earlier
	versions of Node/Downlink and RemotePort covered it up.

2.974	December 3, 2002

	Socket and file classes use a GetLastError() function to implement
	the #error selector. This is incorrect becuase the vm will check
	for <shift><pause> every N cycles and this will alter the value
	of GetLastError().

	As a quick fix, the test for <shift><pause> now preserves the error
	state.
	
	BinaryFile
	StringFile
	SerialFile
		These classes all used the global GetLastError to obtain
		the error code, which will not work reliably. They have
		been fixed to use local information.


2.975	December 18, 2002
	Throwing an exception did not work when the catch was in the same
	context as the thrower.


2.976	February 11, 2003
	
	Windows XP and Windows 2000 changed the default behaviour of
	the file picker dialog.

	In Alltalk, the windows built-in file picker is invoked with
	expressions such as:

		aStringFile.open[aDirPath, aResultString]

	The first parameter is a path named used to select the initial
	directory. The second parameter has the resulting file path
	chosen by the user.

	In Windows 2000 and XP, "aDirPath" was ignored if a previous
	file dialog has selected a default directory. Even thought
	the "Current Directory" is set to the proper place, there is
	now, in effect, another "Current Directory" that only applies
	to the file picker dialog.

	This update to Alltalk restores the proper behavior: The first
	parameter now sets the initial directory for the file picker
	and the "Current Directory". (The "Current Directory" in 
	Windows-speak is the default directory for future file open
	or create operations that don't specify a path.)

2.977	March 12, 2003

	Relative file paths have never worked propery with the
	INCLUDE directive. This is now fixed so you can do things
	like: INCLUDE '..\stuff\*.alt'

	NOTE:
	If the idea about Button.terminate and Control.releaseControl
	works out, be sure to update the Views in the development directory.
	Also, this whole dated entry need to be done to Alltalk III.

2.978	April 12, 2003

	Three very obscure bugs existed in SerialFile:
	1) Whole strings could be lost when unusual mixes of CR and LF
	characters were read from the input stream.
	2) The string read could be too short when the buffer is just
	big enought and unusual mixes of CR and LF occur in the input
	stream.
	3) The comm port parameters were being set up in a somewhat
	unusual way. With some serial cables, the hardware handshaking
	would not work correctly. Hardware handshaking works correctly
	with all the cables I have available for testing.

	A problem with command-line programs:
	When a stand-alone alltalk program (an .exe) was run from
	the command line, Alltalk tried to compile the command line
	parameters rather than letting the program access them with
	system.parameter. The happened because the heap stored in
	the application was never started. The command line allows
	the user program to be named without the ".exe". This prevented
	the heap loader from finding the internally saved heap.


	The Listener font was changed to be mono-spaced.

2.979	April 29, 2003
	
	Try to support click-though select & focus again.

	1) In Windows, WM_ACTIVATE does not work for handling select/deselect.
	2) Passing through the WM_MOUSEACTIVATE requires ViewWindow to screen
	out mouse events from ModalWindows. Set Views/aaChanges.txt for details.

	This has been tried 3 or 4 times before, so beware.

2.980	Experimental. Not released.

2.981	June 18, 2003
	
	A major overhaul of class Socket, which is now a subclass of Scalar.
	You will need to rewrite your socket programs.
	Please see Socket.hlp for details.

	The connect method now accepts dotted names or DNS names.
	THIS VERSION HAS A MAJOR flaw in Socket.read see 2.983 below.

2.982	July 07, 2003
	
	Socket timeout overflow had a flaw.

	LexFile.open using the built-in file picker had a bug
	that caused the file not to open even when the path is
	correct.
	THIS VERSION HAS A MAJOR flaw in Socket.read see 2.983 below.

2.983	July 20, 2003
	
	The <SHIFT><PAUSE> break did not show the stack trace.
	
	The socket read function could return more bytes than
	requested. This was a bug introduced in 2.981.

	Event.connect[receiver, selector, p1,...,p6]
	Up to six parameters may be specified for Events.


2.984 	July 31, 2003
	
	Add a method for Socket #setSync[isSync] that controls
	synchronous (isSync=TRUE, default as before) or
	asynchronous (isSync=NIL) operation.

2.985	February 10, 2004

	Improved timeout handling in Socket.
