Base Release Notes
The release notes include descriptions of API changes, behaviour
changes and other information that might help developers and users
migrate to using a newer version of the library.
Version 1.17.0
This is an unstable release.
Highlights:
NSArray
New OSX method stubs.
NSAutoreleasePool
Dummy OSX method (-drain).
NSBundle
New OSX method stubs.
NSCoder
New OSX10.5 methods for NSInteger implemented.
NSConnection
New OSX10.5 methods for server connections implemented.
NSData
New OSX method stubs.
NSException
Implement stack address reporting.
NSIndexSet
Add OSX10.5 stub for countOfIndexesInRange
NSKeyvalueObserving
OSX10.5 additions implemented
NSSet
Implemented new OSX methods.
NSStream
Implemented basic SSL/TLS support using gnu-TLS.
NSThread
Implemented new OSX methods.
NSLock, NSRecursiveLock, NSConditionLock
Implemented names.
GSXML, NSXMLParser
Fully support namespace handling and fix bugs.
NSKeyValueCoding, NSKeyValueObserving
Made fully functional and MacOS-X compatible.
The current emphasis of the base library is MacOS-X compatibility,
and the headers in this release mark many non-MacOS-X methods as being
scheduled for removal by the next release (from 1.17.0).
These methods will mostly be moved to the 'additions' library,
(which can be built stand-alone in conjunction with the Cocoa Foundation
framework as libgnustep-baseadd on OSX) and their declarations will
be in the headers of that library (<GNUstepBase/...>) rather
than in the Foundation directory.
NB. The markup in the headers and documentation should not be
assumed to be exhaustive ... it is planned that the next stable
release of the base library will enforce MacOS-X compatibility
by default, and you will have to explicitly include headers from
<GNUstepBase/...> in order to use GNUstep specific
additions.
You should track the unstable branch of the base library (subversion
trunk) to find out what changes your software actually needs to make.
The TODO list for MacOS-X 10.5 compatibility follows,
this is all stuff which would ideally be done by the next
stable release of this library.
- Remove all non OSX10.5 declarations from standard headers
- Implement most new method stubs.
- Implement new OSX10.5 NSCalendar class.
- Implement new OSX10.5 NSLocale class.
- Implement new OSX10.5 NSOperation class.
- Implement new OSX10.5 XML classes.
- Implement NSInteger coding for NSCoder subclasses.
- Implement support for now enumerated values
in NSComparisonPredicate.
- Implement new OSX10.5 features of NSDateFormatter.
- Implement new OSX10.5 features of NSExpression.
- Implement new OSX10.5 features of NSPredicate.
- Implement new OSX10.5 features of NSFileManager.
- Implement new OSX10.5 features of NSProcessInfo.
- Implement new OSX10.5 NSHashTable class.
- Implement new OSX10.5 NSMapTable class.
- Implement new OSX10.5 NSPointerArray class.
- Implement new OSX10.5 NSLocale additions.
- Implement new OSX10.5 features of NSNumberFormatter.
- Implement new OSX10.5 features of NSNumber/NSValue.
- Update NSDistributedNotificationCenter
with new OSX methods.
Version 1.15.3
This is an unstable release.
Highlights:
Configuration/NSUserDefaults
Syntax within the configuration file extended so that a leading
'../' in a path name denotes a relative path in a relocatable
installation.
New 'GlobalDefaults.plist' file in the same directory as the main
GNUstep config file allows packagers/sysadmins to set up global
defaults easily.
NSStream
Addition of TLS/SSL support using GNU TLS on both unix-like
and mswindows systems. First draft.
Additions of SOCKS proxying support for socket streams. First draft.
NSURLConnection
Added support for https using new stream code.
Added support for basic and digest authentication.
Version 1.15.2
This is an unstable release. Bug fixes include improved thread
safety and Key-Value observing.
Highlights:
NSException
New MacOS X methods and improved stack trace.
NSThread
New methods from Mac OS 10.5 and new ivars
NSDecimal and NSDecimalNumber
Many improvements
Version 1.15.1
This is an unstable release. There have been many bug fixes, but
also a few method additions and changes to some headers.
Also the license for this release is now GPLv3 and LGPLv3.
Highlights:
NSUserDefaults
Stores YES or NO as a string for MacOS X compatibility.
NSErrorRecoveryAttempting
Added header (and some support in the gui library).
NSArray
Added some new methods to handle multiple objects.
Key-Value Coding
More support for key-value coding.
NSPredicate
Much improved parsing. Ivars have changed in some of the predicate
classes.
Version 1.15.0
This is an unstable release from 1.14.0. It is otherwise
identical to the 1.14.0 release. Releases in the 1.15 series
may not be forward compatible with previous 1.15 releases.
Version 1.14.0
This is a stable release ... all programs linked with earlier
versions of the library and wishing to use this latest stable
release need to be rebuilt from source.
This release should be used in conjunction with the latest
stable release of the other gnustep core components.
This release continues the process of cleanup and restructuring
to further improve MacOS-X compatibility, fix bugs, optimise
performance, and improve portability between different
hardware/operating system platforms.
Highlights:
NSAffineTransform
Imported from gui library for MacOS-X compatibility.
NSBundle
Implemented library resource versioning.
NSException
Support provision of stack trace information in exceptions.
NSObject
Fixes for lock contention with retain/release, so the performance
of massively multi-threaded applications is much better.
NSNetServices
New MacOS-X class implemented.
NSPathUtilities
Uses new gnustep-make features to provide native filesystem
integration.
NSPropertyList
XML property list parsing supported even if libxml2 not available.
NSSpellServer
Imported from gui library for MacOS-X compatibility.
NSValueTransformer
New MacOS-X class implemented.
Version 1.13.1
This is a bugfix release improving the stability and security
of applications using the base library.
Programs dynamically linked with the existing stable release
will automatically benefit from these changes once this
version is installed.
NSBundle
Fix for crash when initialising the bundle system in
an application linked with many frameworks.
NSCalendarDate
Fix for buffer overrun problem when initialising
date from string. Also fixed to return nil when
initialising from some illegal strings.
NSConnection
Some locking fixes to avoid rare deadlocks in heavily
multi-threaded applications.
NSDecimalNumber
Fix to handle current locale properly when initialising.
NSIndexSet
Fix bug adding indexes in a range which lies within a
range already in the set.
NSPropertyList
Fix problem writing negative numbers into old-style
property list.
NSString
Fix for problem with keyed archiving of simple strings.
NSURL
Fix a potential repeated load of the same resource.
Also fix to return nil when initialised with a string
which does not contain a URL scheme.
NSURLHandle
Improve handling of persistent connections when the remote
host drops the connection unexpectedly.
GSXML
Fix bug causing removal of newline characters from escaped
strings.
Fix error setting start end end element for SAX.
Version 1.13.0
Several sets of classes have been added for dealing with urls and
predicates. A few minor api changes have occurred as well.
Character sets
Character sets were improved with regard to ranges (Chinese
characters, etc).
Keyed Archiving
Better compatibility with MacOSX. In particular, some guesses
are made as to how some objects should be encoded.
GNUstep configuration file
Extra keys are allowed in the configuration file with the
definition of the GNUSTEP_EXTRA key.
URL Loading
Headers and a basic framework for Apple's new URL loading scheme
were added, although this is not fully implemented yet.
Objective-C++
Most of the code was updated to compile nicely with the new
gcc objective-c++ compiler.
NSString designated initialiser
The GNUstep designated initialiser for the NSString class
cluster has changed to
-initWithBytesNoCopy:length:encoding:freeWhenDone:
from
-initWithCharactersNoCopy:length:freeWhenDone:
and older code sub classing NSString will need to be updated.
NSBundle bundleWithIndentifier:
The NSBundle method +bundleWithIdentifier:
was
added.
NSPredicate
A basic implementation of the NSPredicate classes (NSPredicate,
NSComparisonPredicate, NSCompoundPredicate, NSExpression) was
added.
Stack traces
Support for getting stack traces via bfd was added
experimentally. You have to define STACKTRACE when compiling
base to get this.
Languages
Added new language files Esperanto, Korean, and Ukrainian.
Run loops
Removed the timeout facility for run loop watchers - you should
use standard timers instead. The watcher interface is deprecated
anyway.
Version 1.12.0
There have been a number of API changes and several
methods have been depreciated in this release. Although
current GNUstep programs that use these methods will still
work in this version, there are enough changes that a new
library version was considered useful.
NSCoder deprecated methods
Several methods using the old libObjects style scheme
withName:
are now deprecated. You can use the new
NSKeyedArchiver and NSKeyedUnarchiver functionality to perform
the same function in a much more portable way.
NSPortCoder, NSPortMessage private methods
The private method _components
was removed
from the public interface.
NSString -getCString:maxLength:encoding:
The return type of this function was changed to BOOL.
NSBundle deprecated and private methods
Several deprecated and private methods were removed from
the public interface including
+gnustepBundle
, and
+pathForGNUstepResource:ofType:inDirectory:
.
NSNotificationCenter deprecated method
The GNUstep method setLockingDisabled:
method
was deprecated.
NSNotificationQueue private functions
Private functions GSNotifyASAP
,
GSNotifyIdle
, and GSNotifyMore
were removed from public interface.
NSRunLoop watcher API updates and other changes
We are starting to integrate the Cocoa NSStream classes
into GNUstep, which allow you to do much the same things
as the GNUstep-specific run loop watcher API was
intended. At some point the watcher API will be deprecated
as it will be redundant with NSStream functionality. Also
the deprecated win32 specific methods for NSRunLoop were
removed.
NSAttribtedString deprecated method
The non-standard
attributedSubstringWithRange:
method (just a
synonym for the real method) was deprecated.
NSConnection, NSDistantObject method removal
Several legacy methods from the original GNU Connection
class were removed or moved to the additions category of
the library.
NSAutoreleasePool private methods
The private method _endThread:
was removed
from the public interface.
NSPortNameServer private methods
Several private methods were removed from the public interface.
NSStream, NSIndexPath
New classes added to the library.
NSUserDefaults improvements
User defaults were restructured to create the defaults
lazily and can be set to not write to an external file at
all, for developers who wish to use the library as a
stand-alone library or in other situations where using
external resources is not desired.
Version 1.11.2
GNUstep.conf and relocation
Support for GNUstep.conf and relocation of the filesystem is
much improved in this release.
Windows platform
The WM_QUIT message is now intercepted to allow an application to
terminate cleanly.
NSMessagePort - Windows platform
NSMessagePort was implemented on Windows platforms.
NSOpenStepRootDirectory
This function has been un-deprecated, and the documentation
clarified so it is easier to understand what it does and does
not do.
GNUsteprc
Deprecated support for system-wide GNUsteprc files has
been removed.
Version 1.11.1
NSSortDescriptor
New class.
NSStringFromPoint, NSStringFromRect, NSStringFromSize
Functions now output strings that can be read by old
OpenStep implementations (but can also still be read by GNUstep and
MacOSX).
Debugging support
More support for debugging on mingw, including writing logs to
debugger and event viewer.
Version 1.11.0
The interface version of the base library has changed in
this release. Applications, libraries and tools that
wish to use this new version must be recompiled
(otherwise, they'll use the older version of the library).
Window's changes
A lot of the behavior of path handling in the base
library has changed with respect to Window's machines.
Windows native paths are used throughout.
The fileSystemRepresentation methods now use utf-16
as the external c-string representation on windows.
The local to openstep and openstep to local methods
are now deprecated and do nothing. Other changes to
classes and class variables have also occurred (detailed
below).
Path/Startup configuration
At the startup of any application or tool, GNUstep used to
look at various environment variables in order to find
the location of various data directories and other
things. GNUstep still does this, but the environment
variables are no longer required to find these
files. In addition the configuration files used to
override certain path behavior has been changed and
expanded. See the base library documentation on GNUstep
Configuration Files for more information.
NSCharacterSets
Character sets are included in the library itself instead
of being loaded from a data file. Also, the
NSBitmapCharSet API has been removed.
NSPathUtilities
Depreciated functions GSSystemRootDirectory and
GSStandardPathPrefixes. In addition, beware of using the
function NSOpenStepRoot, which may not necessarily return
the information you need (see the documentation for this
function for more info). Enumeration values for
NSSearchPathDirectory have changed.
NSRunLoop
NSRunLoop and related classes now use native win32 event
handling on Window's machines. See also GSFileHandle,
NSSocketPort and NSMessagePort.
GSFileHandle
This GNUstep specific class has a new ivar on Windows.
NSSocketPort, NSMessagePort
This class has a new ivar on Windows.
NSPortNameServer
A one-time warning is printed concerning a future change in
which nsconnections will only work between processes owned
by the same account on
the same machine, for MacOSX compatibility and
security. If inter-host/user communication is desired,
the developer will need to set this explicitly.
Keyed Encoding
Work was done in many classes to support keyed
encoding. It may not be fully implemented in every class, however.
Version 1.10.3
This release includes a few minor bug fixes.
Version 1.10.2
This release is most likely the last release in this series,
aside from possible bug fixes.
It was was branched from CVS on Feb 22, 2005.
NSContainsRect behavior change
The definition of NSContainsRect has changed to
correspond with the current Mac OS X/Cocoa definition. The
sides of the bRect can touch aRect.
Unichar file paths
Windows supports unichar file paths, but there isn't
really an API for handling this. GNUstep-specific
methods for dealing with this have been
added, NSFileManager's
-localFromOpenStepPath
and
openStepPathFromLocal
and equivalent methods for
NSString
. In most cases the Base library should
handle this problem internally, but it's possible that there
are cases where the developer wants to handle the file name
explicitly with system-specific functions.
NSDictionaryErnumerator
Some ivars in NSDictionaryEnumerator have changed types,
but the total storage space has not changed. This may
cause problems if you access ivars directly, perhaps
through a subclass.
NSNotification -setImmutablePost
This GNUstep extension method was removed.
NSPort extension methods
Unimplemented GNUstep extension methods -close
,
-outPackedClass
,
and +outPackedClass
were removed.
NSTimeZone -abbreviationDictionary
NSTimeZone
's abbreviation dictionary is now
a proper one-to-one dictionary.
Version 1.10.1
Runtime version discovery of library
A developer can discover the version of the base library that
is loaded using the NSBundle methods
[[NSBundle bundleForLibrary: @"gnustep-base"] infoDictionary]
and retrieving the GSBundleVersion key.
NSXMLParser class added
This is a Cocoa class that has been added for
compatibility. The class is still alpha state.
NSArray makeObjectsPerformSelector:
The order of iteration through objects was changed to
match Cocoa.
Designated initializer changes
The designated initializer for NSArray, NSDictionary,
NSSet, and NSString for MacOS X compatibility. Like
MacOS X, you can call [super init]
to initialize
the class from a subclass, although it is prefered that you use
the designated initializer, with it's richer
set of initializers.
Version 1.10.0
Interface version change
The interface version of the base library has changed in
this release, as it will in all future releases with a
new minor number (that's the second number in the
release number). Applications, libraries and tools that
wish to use this new version must be recompiled
(otherwise, they'll use the older version of the library).
There is no single reason for this change. Arguably, it
should have been done long ago.
NSString clarification
The NSString documentation contains some clarification
on the lifetime of returned NSString objects.
URL classes support persistant connections
The NSURLHandle and other classes have support for
persistant connections.
NSMethodSignature clarification
Recent compiler releases have exposed a flaw in the way
GNUstep gathers signature information. The
documentation explains how the information for offset
and registers may not be reliable.
Mac OS X compatibility
There have been many fixes in various classes for Mac
OS X compatibility, particularly relating to XML encoding.
Version 1.9.2
GSMime parsing ignores extraneous data
When extraneous data is encountered in the input, it is ignored
(and a warning logged) rather than adding it to the
message body. Not sure this is right though, perhaps we should
raise an exception or extend the api to return the extra
data. Anyway, it's better than the previous behavior of
adding the bad data to the parsed body.
New log functions GSOnceFlag and GSOnceMLog
Log messages the first time the code is executed. Typical
usage is to log warnings about deprecated features.
NSError
New MacOSX compatibility class
GSObjCRuntime
Multiple new runtime functions that work with both GNU
and Apple runtimes. These functions allow you to look
at method lists, add and remove methods (for instance,
if you want to make sure your method in a category
overrides another method in a category).
NSProtocolChecker rewritten
Was previously almost non-functional.
autogsdoc
Support added for building frames structured documentation.
Add the flag -MakeFrames YES
to the autogsdoc
command line.
Binary incompatibilities
NSUnarchiver, GSIMapTable have new ivars added to
them. Tools and applications that use these classes may
need to be recompiled after the new library is installed.