* KVC Caching Implementation
* Do not ignore struct name when comparing type encoding as NSPoint and NSSize have the same layout
* Use fast-path when using Objective-C 2
* Guard old ValueForKey function when using the fast-path
* Add basic NSKeyValueCoding tests
* Update Copyright Years
* NSKeyValueCoding+Caching: Add Versioning to IVar Slot
* safe_caching: Remove Guards
* Add type encoding helper header
* Rename geometry structs (NSRect, NSPoint, NSSize) for toll-free bridging with CoreGraphics
* Move CG struct definitions to CFCGTypes.h
* Update known struct encoding prefixes
* Windows 64-bit is LLP64 and not LP64
* Re-order to avoid complier warning
---------
Co-authored-by: rfm <richardfrithmacdonald@gmail.com>
* Implement GSSmallObject Class
* Remove private concrete class access
* Change secondary bias
* NSDate: Get interval from rhs object in comparison
* Add prefix to CONCRETE_CLASS_NAME macro
* clang-format: Do not use tabs
* Ignore clangd cache and compile_commands
* NSBlockOperation: Fix memory leak
* NSHTTPCookie: Fix expires date parsing
* NSHTTPCookie: Release DateFormatter after use
* NSOperation: Remove all objects at end of execution
* Reimplementation of NSURLSession
* NSURLSession: Update expiration dates in test
* Update ChangeLog
* Fix trivial compiler warning caused by missing import
* Import GSDispatch.h for definition of DISPATCH_QUEUE_SERIAL
* Import common.h early to avoid header conflict
* Fix import order to avoid conflicts and ensure we have correct localisation macro
* Check for presence of dispatch_cancel
* Cancel timer using dispatch_source_cancel() if dispatch_cancel() is missing.
* NSURLSession: Replace dispatch_io with dispatch_source in unit test HTTP server
---------
Co-authored-by: hmelder <service@hugomelder.com>
* Update `-[NSMutableArray removeLastObject]`
Updates the following implementation to avoid raising an exception if the array is already empty (or notifying observers if applicable):
* `-[NSMutableArray removeLastObject]`
* `-[GSMutableArray removeLastObject]`
* `-[NSKeyValueMutableArray removeLastObject]`
* `-[NSKeyValueIvarMutableArray removeLastObject]`
This brings the behavior of `-[NSMutableArray removeLastObject]` inline with the Apple implementation, improving compatibility for code bases which use both GNUStep and Apple objc/Foundation implementations.
* Add `-[NSMutableArray removeLastObject]` test case
Adds a test case to ensure `-[NSMutableArray removeLastObject]` does not raise an exception when called on an empty array.
* Create NSString Win32Additions Category
* NSUserDefaults: Fetch Windows UI language information
* NSUserDefaults: Add winnls include
* Android Native UI Language
* NSUserDefaults: Replace incorrect separator on Windows
* NSProcessInfo: BCP-47 Note
* GSConfig: Bump MinGW WINVER to Vista
* NSString+Win32Additions: Do not add array to arp twice
* NSUserDefaults: Increase default length
* clang-format: Do not use tabs
* Ignore clangd cache and compile_commands
* NSBlockOperation: Fix memory leak
* NSHTTPCookie: Fix expires date parsing
* NSOperation: Remove all objects at end of execution
* Reimplementation of NSURLSession
* Update ChangeLog
fstat() on UNIX isn't guaranteed to always succeed, even if the file handle is valid. Special files may or may not support fstat() in the kernel.
(For context, I'm working on a Vulkan application. Vulkan has facilities to send certain objects across processes by representing the objects as file descriptors. These file descriptors still need to be close()d, which makes them good candidates for wrapping an NSFileHandle around them, but they do not support fstat(). I'm creating multiple of these each frame in the application, which means the line "unable to get status of descriptor" appears very often in the terminal while my application is running.)