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
|