Copyright: (C) 2005-2023 Free Software Foundation, Inc.
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.
Bugfix release to increment library version number to reflect ABI changes which should have been noticed before 1.28.1 release.
Aside from an assortment of bugfixes, this release includes a lot of improvements for Windows support as well as security features.
Not every bugfix, improvement or a new feature will be listed here.
Aside from an assortment of bugfixes, this release includes a lot of improvements for Android support as well as numerous new classes and methods.
Expose GNU TLS wrappers and add methods to get certificate expiry.
Improve thread safety when using zombies, particularly on statup/shutdown.
Improvements for Ukrainian localization.
Decreased ICU requirements to 49 to support Windows 2000.
Simplifications and fixes in GSPrivateSymbolPath().
GSMime improvements (word encoding specifier, utf-8 improvements encoding
quoted words with multibyte characters)
NSJSONSerialization fixes for codepoints over 0x7f.
NSCharacterSet support for URL*AllowedCharacterSet and declarations for
new character sets.
NSString implementations for new methods stringByRemovingPercentEncoding/
stringByAddingPercentEncodingWithAllowedCharacterSet:.
Fixed a crash in gdomap when an invalid hostname is given for the -M
option.
In NSString.m, removed functions urldecode() and ishex() which were
mistakenly neither namespaced nor declared static and thus could have conflicted
with non-library code.
Fixed libdispatch configuration switch so --enable-libdispatch works
correctly; correctly checking for HAVE_LIBDISPATCH_RUNLOOP.
Updated libdispatch runloop integration so it is compatible with Swift's
corelibs libdispatch release (from github.com/apple/swift-corelibs-libdispatch).
The libdispatch must be compiled with INSTALL_PRIVATE_HEADERS=YES.
In NSThread, spinlocks implemented using builtins to be able to target
platforms without pthread_spin_lock(), such as Android targeting API level < 24.
In NSLog on Android, send logs to syslog.
Implementation of NSOrderedSet.
When ./configuring, link against libandroid on Android.
In NSBundle, allow integrating with Android asset manager using +[NSBundle
setJavaAssetManager:withJNIEnv:], enabling use of mainBundle's
pathForResource:ofType:, -URLForResource:ofType: and similar; referencing
Info.plist if it exists in Android assets; use of NSFileManager's
fileExistsAtPath: et al and isReadableFileAtPath:; reading files using
NSFileHandle APIs; use of NSDirectoryEnumerator to enumerate Android assets from
the main bundle.
In NSBundle, localization support on Android.
In NSProcessInfo, automatic initialization on Android using a fake
executable path (/data/data/<app identifier>/Resources).
In NSData, improvements in reading Android assets.
Various improvements in the mechanism to report memory usage of individual
objects.
Skeletal implementation of NSUbiquitousKeyValueStore.
Implementation of NSByteCountFormatter.
Fixes to writing large HTTPS requests (GSSocketStream, NSURLProtocol).
In gdomap.c, fix detection of local networks.
In NSArray's -removeObjectsInArray:, prevent some crashes.
In GSTLS, avoid setting session priority twice.
In NSFileHandle, fix so that setting certificate information does not
discard any other options already set.
In GSXML's -fatalErrorFunction, use the correct function to get the line
number.
In NSOperation's _execute, ensure lock gets released on an error by
surrounding with NS_DURING.
Generics support in NSHashTable.
Implementation of NSProgress.
Skeleton implementation of NSURLComponents.
In NSSortDescriptor, added -sortDescriptorWithKey:ascending:descending:.
In NSOperationQueue, added -addOperationWithBlock.
In NSFileManager, added
-URLForDirectory:inDomain:appropriateForURL:create:error: and
-enumeratorAtURL:includingPropertiesForKeys:options:errorHandler:. Also added
NSItemReplacementDirectory constant, and updated stub implementation for
-URLForDirectory:shouldCreate:error:. Added -initWithDirectoryPath:... with
additional parameters skipHidden and errorHandler.
In NSDictionary, fixed keysSortedByValueUsingComparator:.
Moved NSFileWrapper from -gui to -base.
Added NSFilePresenter, NSFileVersion and NSFileCoordinator.
Added NSPersonComponents and NSPersonNameComponentsFormatter.
Added units of measurement classes such as NSUnit, NSMeasurement,
NSMeasurementFormatter, NSEnergyFormatter, NSLengthFormatter,
NSMassFormatter.
In NSUnit, support for NSUnitArea, NSUnitConcentrationMass,
NSUnitDispersion, NSUnitElectricCharge, NSUnitIlluminance,
NSUnitElectricCurrent, NSUnitElectricPotentionDifference, NSElectricResistance,
NSUnitMass, NSUnitEnergy, NSUnitFrequency, NSUnitPower, NSUnitSpeed,
NSUnitFuelEfficiency, NSUnitPressure, NSUnitVolume, NSUnitLength.
Support for data directory on Android introduces
GSInitializeProcessAndroid and makes use of the path returned by
Context.getFilesDir() as the basis for storing data (e.g. NSUserDefaults) and
when querying for directory paths (NSLibraryDirectory,
NSApplicationSupportDirectory, etc.).
Placeholder NSScript* classes. Added NSUserActivity, NSObjectScripting,
NSHFSFileTypes, NSAppleEventManager and NSAppleEventDescriptor.
Added NSDateInterval intersectionWithDateInterval:.
Added NSBackgroundActivityScheduler.
Added NSISO8601DateFormatter and NSMetadataAttributes.
Added NSOrtogrpahy and NSLinguisticTagger.
Added NSExtensionItem, NSExtensionContext, NSExtensionRequestHandling, and
NSItemProvider and NSItemProviderReadingWriting.
Updated timezone info for NSTimeZones.
On Android, support for NSTemporaryDirectory to use Context.getCacheDir(),
and cleaning it up in GSInitializeProcessAndroid() given there is no support for
temp directory before Android API 26. Also used with NSCachesDirectory +
NSUserDomainMask.
NSXPCConnection fixes.
NSException symbolication support using libunwind (used when backtrace()
is unavailable).
Travis build improvements to use new runloop integration and gnustep-2.0
runtime.
In NSKeyValueObserving, implement two missing methods for NSArray:
-addObserver:options:context: and
-removeObserver:fromObjectsAtIndexes:forKeyPath:.
Updated NSUUID to use instancetype.
Added support for NSDate constants in NSPredicate.
Fixed a NSTimer bug with blocks.
In GSTLS, do not put password in the hash key of the credentials, and to
avoid logging it when debugging is on.
Improvements in NSConcreteHashTable and NSConcreteMapTable.
In various places, switch away from deprecated CREATE_AUTORELEASE_POOL()
to use the ARC-compatible ENTER_POOL and LEAVE_POOL macros.
When building the list of hosts to be probed to see if they have gdomap
servers, fix code to include those explicitly defined in the config file.
Add -S option to list the addresses of the known gdomap servers.
Backward compatibility fix for ICU 65.
Update GSPrivateSymbolPath() so that, on the path where LINKER_GETSYMBOL
is not available, we attempt to lookup classes using the prefix ._OBJC_CLASS_
for the 2.0 ABI (earlier ABIs use a prefix of __objc_class_name_ for the class
definition.
Fix parsing of NSURLResponse content type header.
Fix for class lookup when using the 2.0 ABI.
Fixed NSURLComponents setURL: throwing exceptions when URL didn't have
all expected parts caused by rangeOfString: throwing for nil values.
Added NSURLQueryItem implementation.
A new stable release.
Improve utf8 validity checks.
Make point and size subclasses for NSValue interchangable.
Add support for TLS SNI. Always request certificate from client
and update certificates after 5 minutes.
Don't write deprecated fields to desktop link file.
Use NSLock instead of GSLazyLock and other improvements for
multithreaded processes.
Clean up of NSString cluster.
Update NSAssert() and NSCAssert() to handle variable arguments
(as OSX has done) and mark the numbered macros as obsolete.
Various improvements in tests.
Require ICU >= 50.
ICU is now detected using pkg-config.
Improve XML parsing.
Make NSXMLNode ivar a union representing different types, instead of
assuming it will contain different underlying class types in different
contexts. This is important for the new libobjc2 ABI.
OSX compatibility changes to NSURL.
NSFileManager call error handle on missing file.
Dummy spinlock implementation for platforms that don't support it.
Internationalization improvements: Japanese translation, Turkish
translation, Polish translation.
Various improvements for new libobjc2 "v2 ABI", including things like
a new NSConstantString implementation, making GS_REPLACE_CONSTANT_STRING
a noop with the new ABI, etc.
Improvements for stack traces, exception handling and dead lock
detection.
Other more minor bugfixes and cleanups. Many found by Coverity
scan results.
As usual, this release also contains an update to include the
most recent international timezone data.
A new stable release.
Unicode fixes for characters outside the base plane
Stubs for some new OSX methods
Various new OSX compatibility macro and type definitions
NSFileManager fixes and tweaks to match OSX implementation
NSDistributedLock bugfix for pre-existing lock directories
Alternative sort algorithms selectable at runtime
Compatibility-related changes for environments not supporting weak symbols
Other more minor bugfixes and cleanups.
As usual, this release also contains an update to include the
most recent international timezone data.
A new stable release.
Removes garbage collection support (though for now the
NSGarbageCollector class remains as a stub).
Changes multi-architecture support to match the scheme used by
Debian.
OpenSSL bundle removed since it didn't match GNUTLS support.
Improved support for 64bit little-endian systems.
Ported to Debian/Hurd.
ICU string (regexp in particular) fixes.
OSX compatibity changes in NSRunLoop behavior and NSTask.
Alternative sort algorithms selectable at runtime.
Many bugfixes and cleanups.
As usual, this release also contains an update to include the
most recent international timezone data.
A new stable (bugfix) release.
Niels added support for generics.
Support for 'ng' runtime library (latest language features
enabled)
Performance optimisations and improved diagnostic messages.
Garbage Collection deprecated (support to be removed).
As usual, this release also contains an update to include the
most recent international timezone data.
A new stable (bugfix) release.
The release contains a variety of bugfixes as well as some
performance optimisations (particularly in the use of tiny string
objects by the new objc runtime on 64bit systems).
Thread naming and logging of threads by NSLog() has been made
consistent with the latest OSX releases, making debugging of
multithreaded code a little easier.
Sergei Golovin has added NSURLConnection regression tests (while
fixing a few bugs there).
As usual, this release also contains an update to include the
most recent international timezone data.
A new stable (bugfix) release.
The release has various platform/portability tweaks, as
well as a variety of bugfixes.
The default HTTPS connection configuration is modified to disable
SSLv3.0 support (to prevent the 'POODLE' security attack).
This release also contains an update to include the most recent
international timezone data.
A new stable (bugfix) release.
This release contains a new class (NSUUID) and several
new methods.
The OSX version compatibility macros have been updated
to add the latest version of OSX.
The release has various platform/portability tweaks, as
well as a variety of bugfixes.
A new stable (bugfix) release.
The main reason for this version is to release a collection of minor
bugfixes before making more extensive changes which will break ABI
compatibility and appear in a 1.25 branch.
This release contains a new class (NSInvocationOperation) and a few
new methods.
The OSX version compatibility macros have been updated to permit use
of the same numeric values as on OSX.
The release has been through the clang static analyzer (with minor
issues resolved) and has had clang's printf format checking used
to correct issues (mostly with NSInteger/NSUInteger on 64bit systems)
with printf formats in various debug/logging messages.
Timezone data was updated for this release.
A new stable (bugfix) release.
The main reason for this version is the inclusion of the latest
available time zone data (something accidentally omitted from the
previous release).
Most of the other changes in this version are fairly minor portability
and bugfixes (and the addition of a number of new testcases).
API changes are limited to the addition of a few OSX-10.7 methods
for NSCalendar and a few new NSFileManager methods for working
with URLs.
Finally, there is experimental code to change the hashing algorithm
used in the library ... enabling it will cause slower hash generation
but a better distribution of hash values ... which might improve the
performance of large collections.
A new stable release.
Many changes in this version are behavior updates/improvements
but there are also new APIs, none of which should effect binary
compatibility with earlier 1.24.x releases.
An important change at the configure stage is that configure policy
now requires you to explicitly disable features in order to build if
external packages that those features depend on are missing. This
should ensure that builds of base contain consistent feature sets
unless you really want to change that.
The main changes are:
Implementation of the NSXML DOM classes (previously stubs). This is
by far the biggest chunk of new code in this release.
The DOM support has a dependency on the libxml2 library.
Implementation of cookies in the NSURLConnection related classes.
Implementation of common HTTPS support in the NSURLConnection
related classes and the older NSURLHandle. The HTTPS support has
a dependency on the gnutls library.
Implementation of new sorting code for faster sorting and to allow
sorting algorithms to be changed.
Many changes to add support for ObjectiveC-2.0 additions.
Implementation of Encoding/Decoding of NSAffineTransform.
Many, many minor bugfixes and tweaks.
A new stable release.
Most changes in this version are behavior updates/improvements
rather than new API, but you should be aware that there is a
binary incompatibility on 64bit systems in that the value of
the NSNotFound constant there is now 64bits rather than 32bits.
With this release the official supported compiler for GNUstep is gcc-4.0 and later, and the base library has been tested using recent gcc development snapshots.
The main changes are:
Support for the GNU LANGUAGES environment variable and other locale
improvements.
Caching of file and directory path information within bundles.
IPV6 support for NSHost and networking operations.
Support for UTF-8 string literals in source (compiler permitting).
Improved support for building standalone application bundles.
And of course, lots of bugfixes and OSX compatibility tweaks.
One this that didn't make it into this release was functioning NSXML DOM classes. For DOM style work you still need to use the GSXML classes, however there is active work on implementing NSXMLNode and friends as wrappers round the corresponding libxml2 classes, and we hope/expect these to be ready soon.
A new stable release with many minor bugfixes and tweaks.
The main changes however are David Chisnall's work adding support
of the clang compiler and Objective-C 2.0 language/runtime (the
compiler/runtime combination now provides full support for the
Objective-C 2.0 language).
Garbage collection using clang and libobjc2 is now available in
addition to the existing gcc runtime garbage collection support.
Going beyond that, for people who don't like garbage collection,
there is now support for automated reference counting, where the
clang compiler adds reference count calls to manage object lifetimes,
relieving the application developer from the need to manage reference
counts.
An important point to note is that this is the last release to
support the gcc-2.9.5 compiler. In future, while releases may work
with older systems, the formal requirement will be a gcc-4.x series
compiler or later and base may also depend on support for the C99
standard being available.
This change is being made in order avoid developers needing to spend
a great deal of time keeping code working for obsolete systems which
are no longer used in practice.
A new stable release with many updates and changes. In addition to many new classes and methods, there is now a regression test framework included in the base release.
In addition, base now supports and uses the Objective-C 2.0 runtime API from Apple and we encourage anyone programming with GNUstep to move to using this new runtime and the new functionality it supports. Note however, there is currently no compiler/runtime combination that completely supports the Objective-C 2.0 specification, but we would recommend the following:
This is an unstable snapshot release but is functionally
identical to the 1.20-1 stable bugfix release, made to ensure
that the latest available snapshot version of the unstable
branch is at least as up to date as the latest stable release.
The changes in this release
are a timezone handling update to the latest zone information,
various minor bug fixes and portability updates, some small
cleanups and optimizations, a few tweaks to help packagers,
and finally an alteration to the additions library on OSX to
add a category to re-enable serialization of property lists
in the more readable and compact OpenStep format (something the
most recent versions of OSX lost).
This is an unstable release synchronized with the 1.20.0 stable release. There have been major changes and reorganizations to support, among other things, the new non-fragile ABI from clang. These changes, although they break binary compatibility with previous releases, should allow all future releases to maintain compatibility.
This is a new unstable snapshot release of the base library almost identical to 1.19.2 but containing a bugfix for the introduction of a change in the behavior of NSURL's -path method to match OSX. We add a new -fullPath method which returns the actual path of the URL the way the old -path implementation did. This is necessary because the OSX behavior is to strip any trailing '/' from a path so that it's no longer possible to reliably build a URL string from its component parts.
This is a new unstable snapshot release of the base library. It may contain minor binary incompatibilities with the previous unstable release, but should generally work with software compiled for that release.
This is primarily intended as a bugfix release prior to major rewrite of NSLock code by David Chisnall. As such, most changes are bugfixes and performance tweaks. Some of the main ones are listed below.
A great deal of improvements have occurred recently. This includes many improvements in garbage collection (first to get it working again). Also many Mac OS X 10.5 methods and classes have been added, as well as compatibility improvements.
This is a new unstable release of the base library. Note that gnustep-core is now installed in the LOCAL domain by default instead of the SYSTEM domain. You may want to remove old installations in the SYSTEM domain to avoid any incompatibility problems. Or you can force installation in SYSTEM using make GNUSTEP_INSTALLATION_DOMAIN=SYSTEM install.
This is an unstable release.
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 unstable 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.
This is an unstable release.
This is an unstable release. Bug fixes include improved thread safety and Key-Value observing.
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.
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.
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, optimize performance, and improve portability between different hardware/operating system platforms.
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.
Several sets of classes have been added for dealing with URLs and predicates. A few minor api changes have occurred as well.
-initWithBytesNoCopy:length:encoding:freeWhenDone:
from
-initWithCharactersNoCopy:length:freeWhenDone:
and older code sub classing NSString will need to be updated.
+bundleWithIdentifier:
was
added.
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.
withName:
are now deprecated. You can use the new
NSKeyedArchiver and NSKeyedUnarchiver functionality to perform
the same function in a much more portable way.
_components
was removed
from the public interface.
+gnustepBundle
, and
+pathForGNUstepResource:ofType:inDirectory:
.
setLockingDisabled:
method
was deprecated.
GSNotifyASAP
,
GSNotifyIdle
, and GSNotifyMore
were removed from public interface.
attributedSubstringWithRange:
method (just a
synonym for the real method) was deprecated.
_endThread:
was removed
from the public interface.
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).
This release includes a few minor bug fixes.
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.
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.
-close
,
-outPackedClass
,
and +outPackedClass
were removed.
NSTimeZone
's abbreviation dictionary is now
a proper one-to-one dictionary.
[[NSBundle bundleForLibrary: @"gnustep-base"] infoDictionary]
and retrieving the GSBundleVersion key.
[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.
-MakeFrames YES
to the autogsdoc
command line.