This page leads you towards possible incompatibility problems,
when migrating from an older ST/X version.
Although we try to mention all possible trouble spots, we can
neither guarantee 100% compatibility, nor can we guarantee
listing all possible trouble spots in the list below.
(after all, we are all humans and "to err is human".
However, we put a lot of effort in trying to maintain backward compatibility as much as possible.)
you should use:s := WriteStream on:String new
CharacterWriteStream is smart enough to automatically adjust the underlying collection and change it from String to Unicode16String or even Unicode32String if required. The contents returned by CharacterWriteStream will use the best representation. That means that for strings which can be represented using single bytes, you will get a String as before.s := CharacterWriteStream on:String new
Of course, you may also expect problems if you destructively access a string with at:put:
,
trying to put a 16bit character into an 8bit String instance.
DisplaySurface
/ SimpleView
:
these are now stored in a "middleButtonMenu keyCommands gotExpose
moreAttributes
" dictionary or the
"flags
" instVar.
(i.e. the functionality and getters/setters are still there, but stored in another place).
The saved instVar slots are reused, so that subclasses do not have an instVar-index
recompilation problem.
This means that the instVar index of all other instVars remains the same, so that binary
compiled class libraries with subclasses of SimpleView
are still compatible
(this is of special importance to customer libraries).
NOTICE:
all direct accesses to middleButtonMenu
and keyCommands
MUST be
replaced by getter/setter calls.
Encoding: utf8
and are typically placed into a comment (or a compiler pragma comment).
Make sure to clear any existing changeFiles, as change records will be appended utf8-encoded by the new version (if you want to use old change-files with the new release).
Application code should be prepared to get Unicode16Strings as the result of messages like #asLowercase etc.
Starting with 4.1.9, 4 methods were added to aid in writing portable code:
These methods are still (and will still be) present, to allow for code to be written
which works on any system.
position0Based / position0Based:
position1Based / position1Based:
All code which computes a stream position or takes a stream position as collection index,
using position
and/or position:
should either:
position1Based
and/or position1Based:
Prior to release 5 no error exception has been raised when opening or creating of a FileStream
failed. A Notification has been signaled to those, who explicitly handled this notification.
Most classes did not handle this notification and got a nil-return, when doing e.g.
'/nonExistingFile' asFilename readStream
.
From Release 5 on, FileStream openErrorSignal
is an error exception and the same as
ExternalStream openErrorSignal
.
Filename»readStreamOrNil
has been introduced. Please use the Filename interface,
and avoid using FileStreams directly.
Bytecode binaries, source files or autoloaded classes are not affected, and do not need special care.
Copyright © 1996 Claus Gittinger Development & Consulting, all rights reserved
Copyright © 2003 eXept Software AG, all rights reserved
<info@exept.de>
Doc $Revision: 1.23 $ $Date: 2016/11/05 17:38:36 $