! 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.    
 
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.

 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.

