summaryrefslogtreecommitdiff
path: root/ChangeLog
blob: 13b1f590371d389273b805077a755ba220f619a4 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
Legend:
 * Changes of existing features or bugfixes.
 + New features.

ObjFW 0.7 -> ObjFW 0.7.1, 12.11.2012
 + Support for Haiku.
 * Autorelease pools now work properly without __thread.
 * Incorrect framework version in Xcode project fixed.
 * Documentation fixes and improvements.
 * Blocks now only use 16 bits for the reference count in order to avoid
   problems with newer Clang versions.
 * More use of OF_SENTINEL.

ObjFW 0.6 -> ObjFW 0.7, 27.10.2012
 Again, the differences are more than in any release before, thus listing them
 all would be too much. The major differences are:
 + ObjFW now comes with its own runtime, which greatly increases performance
   compared to the GNU runtime and is even faster than the Apple runtime
   (using Clang >= 3.2 is recommended, but not necessary).
 * Support for the GNU runtime has been dropped.
 + New, much faster autorelease pool implementation (now inside the runtime).
 + Support for Automatic Reference Counting (requires Clang >= 3.2).
 + Forwarding has been implemented.
 + Asynchronous stream handling.
 + New classes: OFThreadPool, OFRecursiveMutex, OFSortedList, OFTimer, OFRunLoop
 + New protocols: OFLocking, OFTLSSocket
 * Lots of API changes to make APIs more future-proof.
 + Support for the new Objective-C literals.
 * OFHTTPRequest now implements HTTP/1.1.
 * OFObject's memory handling has been improved, leading to better performance.
 * Strings are allocated faster now.
 + Support for JSON5.
 * All private methods use the prefix OF_ now instead of _, making it possible
   to use the _ prefix in applications.
 * Most ObjC compiler feature checks are not part of configure anymore, making
   it possible to use the same installation with different compilers.

ObjFW 0.5.4 -> ObjFW 0.6, 27.02.2012
 The differences between 0.5.4 and 0.6 are too big to list them all. However,
 the major new features are:
 * OFString, OFArray, OFDictionary, OFSet and OFCountedSet are now class
   clusters.
 + Serialization and deserialization of objects into/from XML and JSON.
 + New class OFIntrospection for introspecting classes.
 + New class OFProcess for working with and controlling child processes.
 * Lots of OFXMLParser and OFXMLElement improvements.
 + OFHTTPRequests can have a delegate now for status updates and processing
   data as soon as it arrives.
 + There are several backends for OFStreamObserver now, including kqueue, poll
   and select.
 + SOCKS5 support for OFTCPSockets (client only).
 * Several API changes.

ObjFW 0.5.3 -> ObjFW 0.5.4, 30.08.2011
 * The blocks runtime is now working correctly.
 * Documentation fixes.
 * -framework works with objfw-compile now.
 + Support for QNX.
 * Various small fixes.

ObjFW 0.5.2 -> ObjFW 0.5.3, 01.07.2011
 * Lots of bugfixes, see Git log for details.

ObjFW 0.5.1 -> ObjFW 0.5.2, 25.04.2011
 * Fix double-retain in OFList.
 * Don't ignore the timeout in OFStreamObserver when using select().
 * Do -[OFURL copy] in a try block to prevent a leak when an exception occurs.
 * Fix too big buffer in -[OFMutableString _applyTable:withSize:].
 * Call madvise() on the correct length variable so it covers the whole string.
 * Fix a warning when sizeof(size_t) < sizeof(long long).
 * Skip possible BOMs when appending strings.

ObjFW 0.5 -> ObjFW 0.5.1, 21.04.2011
 * Work around a wrong warning produced by Apple GCC 4.0.1 which would cause
   the build to fail due to -Werror.
 * Call objc_thread_{add,remove} when using the GNU runtime to make sure the
   runtime knows about our thread.
 * Detach a thread before restarting if it was never joined.
 * Release the old return value when restarting a thread.

ObjFW 0.4-alpha1 -> 0.5, 09.04.2011
 + %@ is now allowed in format strings.
 + Added of_log for easy logging.
 * Exceptions have one header per exception now.
 * Lots of exception improvements.
 * Huge improvements in XML handling.
 * Improvements in socket handling, including improved API.
 * OFStreamObserver is now thread-safe and stops the current observe call when
   the set of streams to observe is modified.
 + New class OFURL.
 + New class OFHTTPRequest.
 + New class OFCondition.
 * Improvements in objfw-compile.
 + Blocks can be used together with Cocoa now.
 + When linking ObjFW and Cocoa, OFAutoreleasePools are used by both now.
 + Support for Base64.
 + Use a real Xcode project instead of just calling make.
 + Add Haiku to the list of supported platforms.
 * Lots of small bugfixes and countless small changes. Read the commits!

ObjFW 0.3.1 -> 0.4-alpha1, 03.01.2011
 * ObjFW is now available under the terms of the QPL, GPLv2 and GPLv3.
 + Support for blocks was added, including a blocks runtime.
 + Added support for the new GNU runtime, introduced in GCC 4.6.
 * Objects returned from collections are no longer retained and autoreleased.
 + Added new classes OFXMLParser, OFXMLElement, OFXMLAttribute and
   OFXMLElementBuilder.
 + Added new class OFStreamObserver to observe streams.
 + Added new class OFDate for storing dates.
 + Many new methods in almost all classes.
 * OFAutoreleasePool was optimized.
 * Handling of ASCII strings was optimized.
 * OFSocket was renamed to OFStreamSocket.
 * OFConstString was renamed to OFConstantString.
 * objfw-compile now has a new syntax.
 + objfw-compile can now compile libraries and plugins.
 * Many small changes and new features that would be too much to list here.
   The diff between 0.3.1 and 0.4-alpha1 has almost 24000 lines!

ObjFW 0.3 -> 0.3.1, 19.06.2010
 * Fix a typo in OFMutableDictionary that prevented termination in case
   the last bucket is already used when the dictionary is resized.
 * The mutations pointer is now correctly initialized in enumerators for
   immutable collections.
 * The objc_sync test was still using the old threads API and was
   updated to use the new one now.
 * PLATFORMS has been updated to be more specific.

ObjFW 0.2.1 -> 0.3, 09.05.2010
 + Many new methods were added to different classes.
 + A huge amount of methods was added to OFStream, allowing easy binary
   stream handling and even mixing string-based and binary operations.
 + An optional write buffer was added to OFStream.
 + OFSeekableStream was added for streams that allow seeking, for example
   OFFiles.
 * OFNumber was completely reworked and got many new features now.
 * Large parts of OFDictionary were rewritten for better readability, better
   memory usage and to fix a bug with removing objects.
 * OFThread has been greatly improved.
 * Many small optimizations.
 * Many documentation improvements.
 * Method replacing was reworked and the methods renamed.
 + Tests for OFStream were added.
 * A bug with building ObjFW as a Universal Binary Framework was fixed.
 + Support for ObjFW-RT, the ObjFW Objective C runtime, was added.
 * Sockets are now properly closed before an exception is thrown.
 * Error handling with sockets was improved.
 * OFFile now uses open(), read() and write(), thus allowing -[readLine] to be
   used on of_stdin and fixing many other annoyances.
 * A few misc methods were renamed.
 + OFApplication was added.
 * All tests and the table generator are now using OFApplication.
 + It is now possible to get the remote address of an OFTCPSocket.
 + OFString can now build paths in the OS-native format.
 + It is now possible to create a string with the contents of a file.
 + Many new file operations were added to OFFile.
 * The existing file operations in OFFile were improved.
 * Almost all functions that returned self before now return void.
 + OFHash was added as a superclass for OFMD5Hash and OFSHA1Hash and OFHashes
   renamed to OFHash.
 + objfw-compile was added for easy compilation of ObjFW projects, which
   includes dependency checking for headers etc.
 * The instance variable naming convention was changed so that properties work.
 + Properties were added to the interfaces and are used if they are supported
   by the compiler.
 + The library version is now included in the resulting dylib and libobjc is
   reexported now. Additionally, objfw-config offers --reexport now to produce
   libraries that link against ObjFW and reexport it.

ObjFW 0.2 -> 0.2.1, 14.03.2010
 * Fix for OFNumbers not doing calculations.
 * Improved -[hash] for OFNumbers with floats and doubles.
 + Tests for OFNumber.
 * Small optimization for OFArray's -[componentsJoinedByString:].
 * Documentation improvements.
 * Updated copyright.

ObjFW 0.1.2 -> 0.2, 01.02.2010
 + Support for ObjC 2 Fast Enumerations on every platform which has
   compiler support for fast enumerations.
 + Support for ObjC 2 properties on every platform with compiler support.
 + Fast Enumeration through arrays and dictionaries.
 * OFIterator has been removed.
 + OFEnumerator was added to replace OFIterator, which is more general
   and works with arrays and dictionaries.
 + Portable implementation for atomic operations.
 + Portable implementation for spinlocks. They use atomic operations if
   available, if not they fall back to pthread spinlocks. If both are
   unavailable, mutexes are used as a last fallback.
 * -[retain] and -[release] are now atomic. If no atomic operations are
   available, spinlocks are used (which can fall back to mutexes, see
   above).
 * -[readLine] now handles \r\n without having the \r included in the
   returned line.
 + OFThread now has -[tryLock].
 * Mutation methods have been removed from immutable interfaces, thus
   already giving an error at compilation instead of at runtime.
 * Dependencies between headers have been reduced, leading to faster
   compile times.
 * The interfaces of OFSocket and OFStream were cleaned up and some
   methods were moved to OFTCPSocket, as they make sense only there.
 * File methods unavailable on Windows don't throw an exception at
   runtime anymore, but instead are not even in the interface on
   Windows. This way, it is a compile time error instead of a runtime
   error.

ObjFW 0.1.1 -> 0.1.2, 15.01.2010
 * Fix a bug in OFMutableArray's -[removeObject:] and
   -[removeObjectIdenticalTo:] that could lead to not removing all
   occurrences of the object from the array and to out of bounds reads.
 * Change the URL in the framework plist to the homepage.

ObjFW 0.1 -> 0.1.1, 04.01.2010
 * Fix a missing out of range check for -[removeNItems:atIndex:] that
   allowed the programmer to specify too big ranges so it would crash
   instead of throwing an exception.
 * Fix missing calls to -[retain] and -[autorelease] when getting
   objects from an OFArray or OFDictionary.
 * Safer and more fault-tolerant way to remove objects from an
   OFMutableArray.
 * Calling +[dealloc] throws an exception now. If someone really calls
   [SomeClass dealloc], this should be punished and not ignored, as
   this is a serious programmer error.
 * -[readLineWithEncoding:] is more fault-tolerant now and does not
   lose data when it stumbles upon invalid encoding. Instead, it allows
   recalling with the correct encoding now.

ObjFW 0.1, 24.12.2009
 + Initial release