File: ChangeLog

package info (click to toggle)
objfw 1.4.2-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 8,644 kB
  • sloc: objc: 101,491; asm: 5,083; sh: 4,092; makefile: 1,574; ansic: 709; xml: 367; pascal: 214
file content (722 lines) | stat: -rw-r--r-- 34,739 bytes parent folder | download
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
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
Legend:
 * Changes of existing features or bugfixes
 + New features

This file only contains the most significant changes.

ObjFW 1.4.1 -> ObjFW 1.4.2, 2025-10-05
 * Fixes compatibility with C++ 20 and up.
 * Fixes +[alloc] being able to return nil.
 * Fixes -[canBlock] being inherited for sockets returned by
   -[OFStreamSocket accept] being OS-dependent.
 * Fixes MPTCP being used on old macOS versions that don't support it.
 * Fixes parsing of ZIP64 local headers in OFZIPArchive when only some values
   in the regular local header are set to -1.
 * Fixes handling of 0 byte ZIP64 extra field in OFZIPArchiveEntry.
 * OFZIPArchive no longer verifies the local header date to better deal with
   broken archives.
 * Fixes parsing of header level 0/1 dates in OFLHAArchiveEntry.
 * Fixes OFZooArchiveEntry emitting the wrong length for the variable length.
 * Fixes ofarc setting directory permissions before extracting its files.
 * Fixes setting OFStdIOStream colors to `nil` on MS-DOS.
 + Adds support for aarch64_be in the runtime lookup assembly.

ObjFW 1.4 -> ObjFW 1.4.1, 2025-08-25
 * Optimizes CRC16 and CRC32 calculation, thereby fixing bad extraction speed
   for OFGZIPStream, OFLHAArchive, OFZIPArchive & OFZooArchive. This speeds up
   extracting a ZIP archive using ofarc from being significantly slower than
   unzip to being noticeably faster than unzip.
 + Adds missing man page for ofgctester.
 * Fixes compiling with the upcoming MorphOS SDK.
 * Uses SetFilePosixDate on MorphOS if available to avoid incorrect dates
   during DST transitions.

ObjFW 1.3.2 -> ObjFW 1.4, 2025-08-03
 * Memory management for objects was moved to the runtime, making many
   optimizations possible.
 * Many runtime optimizations were added.
 + Adds new classes: OFIndexSet, OFMutableIndexSet.
 + Adds new methods using OFIndexSet to OFArray, OFMutableArray and
   OFMutableData.
 + OFStream now supports setting a default encoding for the stream that will
   be used for all string operations that don't specify an encoding.
 + Adds support for asynchronously opening an item to OFIRIHandler.
 + Adds support for building the runtime as a .library on MorphOS.
 + Adds support for abstract UNIX sockets on Linux.
 + Adds basic math operations for OFVector3D and OFVector4D.
 + Adds support for hiding / showing the cursor to OFStdIOStream.
 + Adds support for compressed localizations to OFLocale.
 + Adds new util ofgctester to test game controllers using ObjFWHID.
 + Starts using OF_DIRECT with the ObjFW runtime when using Clang >= 21.
 + OFTLSSocket now supports client certificates officially instead of being an
   unsupported byproduct of support for server certificates (the only change
   is that this fixes mbedTLS using the certificate chain to verify the server
   when it should only be used for the client certificate).
 * Many fixes for AmigaOS and MorphOS.
 * Everything is built with RELRO, _FORTIFY_SOURCE=3 and -fstack-protector by
   default now.
 * Utils are now always built as PIE if possible.
 * Utils now write status messages to stderr instead of stdout.

ObjFW 1.3.1 -> ObjFW 1.3.2, 2025-06-08
 * Fixes handling of truncated writes in OFRunLoop.
 * Makes OFHTTPServer more reliable.
 * Fixes handling of write errors when using OpenSSL.
 * Fixes reporting of written bytes in OFWriteFailedException when using GnuTLS.
 * Fixes reporting of written bytes in OFWriteFailedException when using
   MbedTLS.
 * Fixes handling of EPIPE and ECONNRESET when using Secure Transport.

ObjFW 1.3 -> ObjFW 1.3.1, 2025-06-07
 * Fixes OpenSSL TLS streams being reported as ready for reading when they are
   not.
 * Fixes using async I/O on OFHTTPServer's request body or response.
 * Fixes configure on Solaris / Illumos.
 * Improves configure check for GameController.framework.
 * Removes unncessary promotion to double in OFColor.
 * Fixes handling the last disk number on ZIP64 archives.
 * Fixes OFLHAArchiveEntry on big endian systems.
 * Fixes inconsistent nullability in OFMutablePair and OFMutableTriple.

ObjFW 1.2.4 -> ObjFW 1.3, 2025-03-22
 + OFStdIOStream adds support for truecolor, 256 colors, bold, italic,
   underlined and italic.
 * OFStdIOStream now keeps track of state to reduce the amount of escape codes
   used.
 + Adds support for getting peer credentials to UNIX sockets.
 + Adds support for MPTCP.
 + Adds more functions to parse integers to OFString.
 + Adds range checks to OFNumber instead of truncating values.
 * Deprecates OFPlugin in favor of OFModule.
 * Deprecates a few methods in various classes, their replacements are
   specified in the deprecation message.
 * Optimizes lookup for embedded files.
 * Improves EINTR handling throughout the entire code base.
 + ObjFWRT calls +[load] on categories now.
 * Adds and uses more error codes for OFTLSStream.
 + Adds OFX509Certificate with support for PKCS #12 and PEM files.
 + Adds server mode for OFTLSStream.
 + Adds support for TLS to OFHTTPServer.
 + Adds support for mbedTLS 3 to ObjFWTLS.
 * Fixes handling of unexpected stream end in OFOpenSSLTLSStream.
 + OFRunLoop now supports interacting with foreign run loops.
 + ObjFWBridge now provides an OFKernelEventObserver implementation that uses
   CFRunLoop to allow running code that needs a CFRunLoop inside an OFRunLoop.
 + ObjFWBridge now bridges OFDate/NSDate and OFData/NSData.
 * Fixes ObjFWBridge on macOS 10.5 (Leopard).
 + Adds documentation for ObjFWBridge.
 + Adds support for game controllers on macOS & iOS to ObjFWHID.
 + Adds OFNotifications for changes values to ObjFWHID.
 * ObjFWHID now uses more consistent names for game controller elements.
 + Adds game controller-specific profiles on Linux to ObjFWHID for the following
   controllers: Switch Pro Controller, Nintendo Switch Online SNES gamepad,
   8BitDo Ultimate 2C Wireless, 8BitDo NES30.
 + Adds game controller-specific profiles on macOS & iOS to ObjFWHID for the
   following controllers: DualSense, DualShock 4, pair of Joy-Cons, Switch Pro
   Controller, Nintendo Switch Online N64 controller, Nintendo Switch Online
   SNES gamepad, Stadia gamepad, 8BitDo NES30.
 * ObjFWHID now filters spurious extra buttons with the Xbox 360 Wireless
   Receiver on Linux.
 * ObjFWHID now assumes a single Joy-Con to be rotated and handles it
   accordingly.
 * ofarc now quarantines files before setting permissions, preventing an issue
   where the permissions would no longer allow quarantining files.

ObjFW 1.2.3 -> ObjFW 1.2.4, 2025-02-20
 * Fixes OFPlainConditionTimedWait(), which as a result fixes OFRunLoop
   spinning in some situations.
 * Fixes OFMutableUTF8Strings containing `\0`.
 * Fixes OFHTTPServer using an IPv6 address as host.

ObjFW 1.2.2 -> ObjFW 1.2.3, 2024-12-15
 * Fixes OFRunLoop not draining the autorelease pool after firing a timer.
 * Adds -fno-constant-ns{number,array,dictionary}-literals to OBJCFLAGS, which
   is required to have literals work with ObjFW with recent Xcode versions.

ObjFW 1.2.1 -> ObjFW 1.2.2, 2024-12-07
 * Fixes OFTLSSocket not sending shutdown when using OpenSSL.
 * Fixes OFTLSSocket initialization when using MbedTLS.
 * Fixes imports in ObjFWTLS.h.
 * OFINIFile now properly quotes ; and #.
 * Ensures ofarc and ofhash link ObjFWTLS.
 * Makes OFEmbeddedIRIHandler public, as it's required for objfw-embed.
 * Fixes compiling on Haiku r1beta5.
 * Adds compatibility with latest devkitARM.

ObjFW 1.2 -> ObjFW 1.2.1, 2024-11-09
 * Fixes exceptions in ObjC++.
 * Fixes compiling ObjC++ on Windows.
 * Fixes compiling tests on Haiku.
 * Properly hides private methods in ObjFWHID.

ObjFW 1.1.7 -> ObjFW 1.2, 2024-11-02
 + Adds a new framework for game controllers called ObjFWHID.
 + Adds support for tagged pointer strings.
 + Strings are now allowed to contain `\0`, while preventing such strings from
   being passed to anything that expects a C string.
 * `\u0000` and `\x??` are now allowed in JSON.
 + Adds a new option `OFJSONRepresentationOptionSorted` to create sorted,
   reproducible JSON representations.
 * Socket initialization is now delayed until sockets are used for the first
   time to significantly speed up startup on some systems, in particular game
   consoles.
 + Adds -[readString], -[tryReadString] and -[asyncReadString] to OFStream to
   read until a `\0` is found.
 + Adds support for SCTP sockets.
 + Adds support for UNIX sequenced packet sockets.
 + Adds assembly lookup for the following platforms: ARM64/Win64, RISC-V 64/ELF,
   LoongArch 64/ELF.
 + Adds -[forwardingTargetForSelector:] for the following platforms:
   MIPS64-N64/ELF, RISC-V 64/ELF, LoongArch 64/ELF, PowerPC 64/ELF v1,
   PowerPC 64/ELF v2, ARM64/Win64
 + Adds support for the following encodings: Windows-1250, Codepage 852.
 + Adds support for extended attributes on Solaris.
 * OFPlugin now falls back to loading .dylibs on macOS/iOS when no .bundle was
   found.
 * OFINICategory was renamed to OFINISection.
 * The API for async I/O handlers was changed to contain more arguments, which
   results in new methods that take a handler instead of a block and deprecating
   the old ones.
 * -[attributesOfItemAtIRI:] now works for embedded files.
 * `OF_APPLICATION_DELEGATE()` now works with `-mwindows`.
 + Adds man pages for all utilities.
 * ofdns now defaults to query AAAA and A, not ALL.
 * ofhash now accepts --rmd160 as an alias for --ripemd160.

ObjFW 1.1.6 -> ObjFW 1.1.7, 2024-08-25
 * Fixes creating OFStrings from C strings with some encodings.
 * Fixes creating an ASCII C string from an OFString that has been initialized
   by passing an instance of a custom string class.
 * Fixes OFINIFile not parsing `=` within `"` correctly.
 * OFINIFile now allows comments and pairs before the first category.
 * OFINIFile now allows # for comments.
 * Hides some private symbols in the runtime library.
 * Disables UNIX datagram sockets on Hurd as Hurd has incomplete support for
   UNIX datagram sockets.

ObjFW 1.1.5 -> ObjFW 1.1.6, 2024-08-11
 * Fixes ObjC++ with GCC.
 * Adds handling of EINTR in OFKernelEventObserver.
 * Fixes overriding / reusing stack arguments in super calls on x86.
 * Makes headers compatible with -Wunused-parameter.

ObjFW 1.1.4 -> ObjFW 1.1.5, 2024-07-06
 * Fixes MIPS32.
 * Properly hides private symbols in the runtime so they can't be used
   accidentally anymore.

ObjFW 1.1.3 -> ObjFW 1.1.4, 2024-05-22
 * Fixes ofarc failing to extract from stdin on macOS.
 * Fixes the workaround for missing blx on ARM.
 * Avoids Clang's integrated assembler on MIPS64 for .S files (as it cannot
   calcualte the offset between two labels).
 * Fixes X32 being mistaken for AMD64.

ObjFW 1.1.2 -> ObjFW 1.1.3, 2024-05-12
 * Fixes +[OFSystemInfo networkInterfaces] on NetBSD.
 * Properly hides private symbols so they can't be used accidentally anymore.
 * Adds missing documentation for various functions and macros.
 * Uses RtlGenRandom to get proper randomness on Windows now.
 * No longer uses _wutime64, which is buggy in some MinGW distributions.
 * Only uses blx on ARM if it is available now.
 * Adds a workaround for OFSubprocess tests on Windows 9x.
 * Skips symlink tests if symlinks are unavailable.

ObjFW 1.1.1 -> ObjFW 1.1.2, 2024-04-20
 * Fixes configure script on systems using BusyBox for tr.
 * Fixes compiling for Haiku.
 * Fixes -[contentsOfDirectoryAtIRI:] corrupting the stack on Solaris.
 * Fixes compiling for Wii with newer SDK.
 * Fixes missing endbr / bti.
 * Minor optimizations to ARM64 assembly.

ObjFW 1.1 -> ObjFW 1.1.1, 2024-04-14
 * Fixes missing ${DESTDIR} in some Makefiles.

ObjFW 1.0.12 -> ObjFW 1.1, 2024-04-14
 * ObjFW is now licensed under LGPLv3.0-only.
 + Adds a new framework for writing tests called ObjFWTest.
 * All tests were migrated to ObjFWTest.
 + The runtime now supports associated objects.
 + OFDNSResolver now caches responses.
 + OFDNSResolver now supports URI and LOC DNS resource records.
 + Adds methods to handle path extension to OFIRI.
 + Adds support for Mbed TLS.
 + Adds more methods to OFSystemInfo to check for CPU features.
 * OFSystemInfo now only indicates CPU features as supported if the OS also
   supports them.
 + OFLHAArchive now supports extracting and creating files > 4 GB.
 + OFLHAArchive now supports header level 3.
 + OFLHAArchive now supports extracting -lhx-, -lz4- and -pm0- files.
 * OFLHAArchive no longer defaults to ISO 8859-1.
 + New class OFZooArchive for extracting and creating Zoo files.
 * The schemes for archive IRI handlers have been renamed.
 * The schemes for archive IRI handlers now look for the rightmost `!`,
   which allows for chaining with less quoting.
 * Fixes -[OFMutableArray replaceObjectIdenticalTo:withObject:] being
   inconsistent with -[OFMutableArray replaceObject:withObject:].
 * Fixes getting non-existent xattrs in OFFileManager.
 * Objects on Windows, MS-DOS and 32 bit Solaris now get properly aligned so
   that SIMD can be used on ivars.
 * Fixes parsing of signed numbers in MessagePack.
 * Fixes a memory leak in OFTarArchive.
 + Adds support for typed extended file attributes (only on Haiku).
 + Adds support for extended file attributes on Haiku, NetBSD and FreeBSD.
 + OFStdIOStream now supports cursor movement and colors on MS-DOS.
 * All headers are now compatible with -masm=intel.
 + OFMatrix4x4 can now transform multiple vectors at once.
 + OFMatrix4x4 has a 3DNow! implementation for multiplication and vector
   transformations now.
 + OFMatrix4x4 has an SSE implementation for vector transformations now.
 * Updates Unicode support to 15.1.
 * Fixes compatibility with LibreSSL.
 * Fixes two linker warnings on macOS.
 * Fixes compiling on QNX.
 * OFLocale now supports automatic initialization.
 + ofarc now supports extracting and creating Zoo archives.
 + ofarc now has an --iri option to directly work on local and remote IRIs.
 + ofarc now prints the archive comment with -lv.
 + ofarc can now add an archive comment with --archive-comment=.
 + ofarc now propagates the quarantine xattr on macOS when extracting an
   archive.

ObjFW 1.0.11 -> ObjFW 1.0.12, 2024-03-11
 * Fixes a regression in OFZIPArchive that was introduced in 1.0.11 that
   resulted in failing to extract archives and creating broken archives.
 * Fixes a rare condition where OFInflateStream could end up in an endless
   loop.
 * Fixes OFTarArchiveEntry not having a default date, which could result in
   messaging nil on a FP return, which yielded invalid results on 32-bit x86
   with GCC.

ObjFW 1.0.10 -> ObjFW 1.0.11, 2024-03-09
 * Fixes -[OFHTTPClientResponse isAtEndOfStream] and
   -[OFGZIPStream isAtEndOfStream].
 * Fixes how OFZIPArchive handles disk 0 vs. disk 1.
 * OFLHAArchive and OFZIPArchive create more compatible archives now.
 * OFLHAArchive ignores padding in level 2 headers now.
 * ofarc correctly sets modification dates of directories now by delaying
   setting those until after all files have been extracted.
 * Fixes a linker warning on macOS/iOS.
 * Several minor documentation fixes.
 * OFFileIRIHandler correctly transforms exceptions now so that they use an IRI
   and not a path.

ObjFW 1.0.9 -> ObjFW 1.0.10, 2024-02-24
 * Fixes objc_getClassList() not releasing the global runtime mutex.
 * Improves OFLHAArchive's compatibility with non-standard archives.
 + Adds endbr32 / endbr64 / bti instructions for compatibility with Control
   Flow Integrity.

ObjFW 1.0.8 -> ObjFW 1.0.9, 2024-02-18
 * Fixes OFGZIPStream reading the size and CRC32 incorrectly when either spans
   multiple reads.
 * Fixes a type mismatch in OFMapTable that could cause problems on big endian
   systems when uint32_t and unsigned long have a different size.
 * Fixes the default implementation of -[initWithKeys:arguments:] for custom
   dictionaries.
 * Improves detection of mutation during enumeration in
   -[enumerateKeysAndObjectsUsingBlock:].
 * Minor documentation fixes.

ObjFW 1.0.7 -> ObjFW 1.0.8, 2024-01-21
 * Fixes compilation on NetBSD, OpenBSD, OpenIndiana etc. which was broken by
   1.0.7.

ObjFW 1.0.6 -> ObjFW 1.0.7, 2024-01-21
 * Fixes inheriting the environment in OFSubprocess.
 * Fixes dealloc in OFSubprocess when -[closeForWriting] was called.
 + Adds tests for OFSubprocess.
 * Changes the key for +[OFSystemInfo networkInterfaces] to the adapter name
   on Windows XP and newer to avoid a possible collission on the adapter index.
 * Fixes compilation with old MinGW versions.
 * Fixes the documentation for OFSRVDNSResourceRecord.

ObjFW 1.0.5 -> ObjFW 1.0.6, 2024-01-15
 * Fixes compatibility with autoconf 2.72.
 * Fixes OFDNSResolver's handling of types, classes and lengths > 255.

ObjFW 1.0.4 -> ObjFW 1.0.5, 2023-11-05
 * Fixes the calculation of the extra alignment in OFAllocObject()
 * Fixes +[OFSystemInfo networkInterfaces] on OpenBSD and Windows 98
 * Fixes OFSocketAddressString() for AppleTalk addresses
 * Uses GetModuleHandle() instead of LoadLibrary() where possible on Windows
 * Disables tests for global blocks on Win64 due to broken compilers
 * Adds PGP keys to verify tarballs and commits in the code repository

ObjFW 1.0.3 -> ObjFW 1.0.4, 2023-10-08
 * Fixes OFFile closing fd 0 when initialization fails
 * Fixes -[stringByAppendingPathComponent:] on empty strings
 * Fixes +[OFSystemInfo operatingSystemName] and
   +[OFSystemInfo operatingSystemVersion] returning nil on some systems
 * Adds a license for localizations

ObjFW 1.0.2 -> ObjFW 1.0.3, 2023-09-14
 * Fixes -[OFConcreteData initWithItemSize:] not setting freeWhenDone to true,
   which resulted in a memory leak
 * Fixes -[OFData initWithContentsOfIRI:] freeing the buffer in @catch instead
   of @finally, which resulted in a memory leak

ObjFW 1.0.1 -> ObjFW 1.0.2, 2023-09-11
 * The build system has been updated to fix building .frameworks and to build
   them differently for macOS and iOS

ObjFW 1.0 -> ObjFW 1.0.1, 2023-09-10
 * Hanging connections with OFTLSStream have been fixed when using OpenSSL
 * The same fix as for OpenSSL has been applied to GnuTLS and SecureTransport
   out of caution, even though there have been no hangs in practice
 * The build system has been updated to fix building .frameworks among other
   minor changes
 * Some headers have been changed to fix compatibility with ObjC++
 * Warnings about empty .o files on x86_64 Darwin have been fixed
 * The OFDate documentation has been improved to list supported formats

ObjFW 0.90.2 -> ObjFW 1.0, 2023-08-29
 + First stable release with stable API and ABI
 * Too many changes to list, as it has been almost 6 years since the last
   release. See commits in the repository for details.

ObjFW 0.90.1 -> ObjFW 0.90.2, 2017-10-23
 * Fix shadowed variables which caused many bugs (e.g. using the wrong object)
 * Many, many nullability fixes
 * OFTCPSocket: Fix exception not being retained for async connect
 * OFThread: Fix setting the name on the wrong thread
 * OFMutableSet: Fix missing override for -[copy]
 * configure: Fix posix_spawnp check
 * Xcode project: Set the correct version for the bridge
 * Better check for iOS
 * tests: Fix testing the wrong OFKernelEventObserver

ObjFW 0.90 -> ObjFW 0.90.1, 2017-08-20
 * OFData: Fix -[description]
 * OFFileManager: Set errno to 0 before readdir()
 * OFDate: Add -[localMinute]
 * OFTarArchiveEntry: Fix prefix handling for ustar
 * OFZIPArchive: Fix uncompressed + data descriptor
 * OFArray: Fix MessagePack encoding
 * of_asprintf: Don't require set up OFLocalization
 * OFGZIPStream: Add missing documentation
 * Fix a linker warning on OpenBSD/SPARC64
 * Remove the OFFile b modes from MorphOS
   (they were already removed for all other OSes)

ObjFW 0.8.1 -> ObjFW 0.90, 2017-08-01
 + New classes: OFFileManager, OFGZIPStream, OFTarArchive, OFTarArchiveEntry
		OFHMAC, OFSandbox, OFHTTPCookie, OFHTTPCookieManager,
		OFLocalization
 + New platforms: Nintendo 3DS, MorphOS
 + New lookup assembly for platforms: SPARC64/ELF, ARM64/ELF
 + New forwarding for: ARM64/ELF
 + New tools: objfw-new (to create boilerplate code)
 + New options: --disable-unicode-tables
 * Required GCC version increased to 4.6
 * OFDataArray was split into OFData and OFMutableData
 * OFURL was split into OFURL and OFMutableURL
 * Most properties are now nonatomic
   (this changes from returned retained + autoreleased to +0 retained)
 * Correct handling of encoding on Win32 console
   (stream is read and written in UTF-8 and translated to UTF-16 on the fly)
 * Runtime is now built as a separate library
 + More encodings for strings
 * Reworked OFOptionsParser API
 * Refactored OFKernelEventObserver
 * Better randomization of HTTP header order
 * Allow overriding all HTTP headers
 * Definition of thread priorities changed
 + Key Value Coding
 + Exceptions in ObjC++
 * OFHash was renamed to OFCryptoHash
 + PBKDF2
 + scrypt
 + Xcode project to build for iOS
 + String decomposition to NFD
 * OFFile modes simplified ('b' removed)

ObjFW 0.8 -> ObjFW 0.8.1, 2015-10-04
 * Adjust to __nullable / __nonnull being changed to _Nullable / _Nonnull in
   Clang 3.7 (this fixes compilation with Clang 3.7)
 * Blocks: Proper handling when called from a byref handler
 * Fix compilation on Solaris
 * Fix compilation for Wii, PSP and Nintendo DS
 * OFProcess: Send SIGTERM on close instead of SIGKILL
 * OFZIPArchive: Throw invalid format exception on failed seeks
 * Make sure of_hash_seed is never initialized to 0
 * Special cases for the Wii's weird network stack (fixes the tests)
 * Better length checks for write / send calls
 * Don't use -pedantic on platforms where it's broken by the system headers
 * Documentation fixes

ObjFW 0.7.1 -> ObjFW 0.8, 2015-08-14

 + An insanely huge amount of new APIs
 + New classes: OFHTTPServer, OFINICategory, OFINIFile, OFInflate64Stream,
   OFInflateStream, OFMapTable, OFRIPEMD160Hash, OFSHA224Hash, OFSHA256Hash,
   OFSHA384Hash, OFSHA512Hash, OFSettings, OFStdIOStream, OFSystemInfo,
   OFUDPSocket, OFZIPArchive, OFZIPArchiveEntry
 + New utils: ofzip, ofhash, ofhttp
 + Support for -[forwardingTargetForSelector:] on a lot of platforms
   (see PLATFORMS.md)
 * OFHTTPRequest: Split into OFHTTPRequest and OFHTTPClient
 * Rename OFHTTPRequestReply to OFHTTPResponse
 * OFDictionary now uses OFMapTable internally
 + Highly randomized, DoS-resistant hashtables (different seed per hashtable,
   additionally rotated by a random number of bits)
 * Reworked exceptions API that explicitly passes errno around
 + OFHTTPClient: Keep-alive and Basic Authorization support
 + Support for (and use of) ObjC generics, nullability and kindof
 + Fast path for resolving classes when using GCC (Clang doesn't need the fast
   path, as it directly references classes)
 * OFStreamObserver: Refactored and renamed to OFKernelEventObserver (as it is
   no longer limited to streams)
 + Support for SjLj and SEH exceptions
 + Support for DOS/DJGPP, Nintendo Wii, Nintendo DS and PlayStation Portable
 + Support for bare metal (in other words: running without any OS; tested on
   ARM)
 + Full support for ARM64 on iOS
 + Full MessagePack implementation (the new MessagePack version that supports
   strings)
 + Backtraces for uncaught exceptions
 + Bridge to Cocoa now part of ObjFW
 * Default depth limit for XML and JSON parser
 + Optional support for outputting JSON5 (default is JSON)
 * 16 bit selector UIDs are now the default
 * BOOL replaced with bool everywhere (except where required by the ABI)
 * Fix for a nasty bug in -[replaceCharactersInRange:withString:]
 * Fix for a nasty bug in atomic ops
 * OFTLSKey replaced with +[OFThread threadDictionary]
 * Documentation improvements (for example, imports should now be shown
   correctly everywhere and many APIs have been documented in more detail)
 + Property introspection
 * OFProcess: Use posix_spawnp if available
 * OFProcess improvements for Win32
 + epoll support for OFKernelEventObserver
 * Rewritten OFMD5Hash and OFSHA1Hash
 * Reworked OFTLSSocket API (easier verification)
 * Unicode support updated to Unicode 8.0
 * OFURL: Proper escaping and unescaping

ObjFW 0.7 -> ObjFW 0.7.1, 2012-11-12
 + 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, 2012-10-27
 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, 2012-02-27
 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, 2011-08-30
 * 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, 2011-07-01
 * Lots of bugfixes, see Git log for details

ObjFW 0.5.1 -> ObjFW 0.5.2, 2011-04-25
 * 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, 2011-04-21
 * 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, 2011-04-09
 + %@ 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, 2011-01-03
 * 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, 2010-06-19
 * 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, 2010-05-09
 + 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, 2010-03-14
 * 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, 2010-02-01
 + 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, 2010-01-15
 * 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, 2010-01-04
 * 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, 2009-12-24
 + Initial release