changelog
    
    
    - Sun, 26 Oct 2025 16:16:43 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Oct 2025 16:16:43 +0100] rev 1453
 
    - add implementation for cxListDifference() - issue #745
 
    - Sun, 26 Oct 2025 15:51:49 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Oct 2025 15:51:49 +0100] rev 1452
 
    - continue to fix warnings on certain compilers due to implicit cast from fptr to bool
 
    - Sun, 26 Oct 2025 15:46:55 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Oct 2025 15:46:55 +0100] rev 1451
 
    - fix warnings on certain compilers due to implicit cast from fptr to bool
 
    - Sun, 26 Oct 2025 13:08:42 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Oct 2025 13:08:42 +0100] rev 1450
 
    - add more test coverage for new map functions and fixes some issues
the "what if dst already contains a key" part did not really work
plus the cxMapListDifference() did not fallback to a default allocator
really resolves #746 
    - Sun, 26 Oct 2025 12:50:43 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Oct 2025 12:50:43 +0100] rev 1449
 
    - simplify clone implementations
 
    - Sun, 26 Oct 2025 12:44:33 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Oct 2025 12:44:33 +0100] rev 1448
 
    - add tests for cxMapDifference() and cxMapListDifference()
resolves #746 
    - Sun, 26 Oct 2025 12:01:28 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Oct 2025 12:01:28 +0100] rev 1447
 
    - add documentation for cxMapDifference() and cxMapListDifference()
relates to #746 
    - Sun, 26 Oct 2025 11:50:33 +0100
 
    - by Mike Becker <universe@uap-core.de> [Sun, 26 Oct 2025 11:50:33 +0100] rev 1446
 
    - default NULL allocator to cxDefaultAllocator
 
    - Sat, 25 Oct 2025 21:33:56 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 25 Oct 2025 21:33:56 +0200] rev 1445
 
    - add implementations for map difference
relates to #746 
    - Sat, 25 Oct 2025 21:12:59 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 25 Oct 2025 21:12:59 +0200] rev 1444
 
    - make clone functions return int instead of size_t
relates to #743
relates to #744 
    - Fri, 24 Oct 2025 21:15:14 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 24 Oct 2025 21:15:14 +0200] rev 1443
 
    - add test coverage for allocation failures in clone-function
 
    - Fri, 24 Oct 2025 20:52:10 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 24 Oct 2025 20:52:10 +0200] rev 1442
 
    - fix hash map not being able to deal with 64-bit hashes
 
    - Thu, 23 Oct 2025 17:54:17 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 Oct 2025 17:54:17 +0200] rev 1441
 
    - add documentation for cxListClone() - relates to #744
 
    - Thu, 23 Oct 2025 17:50:28 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 Oct 2025 17:50:28 +0200] rev 1440
 
    - add documentation for cxMapClone() - resolves #743
 
    - Thu, 23 Oct 2025 17:38:44 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 23 Oct 2025 17:38:44 +0200] rev 1439
 
    - add tests for cxMapClone() - relates to #743
 
    - Wed, 22 Oct 2025 23:32:20 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 22 Oct 2025 23:32:20 +0200] rev 1438
 
    - add destruction of uninitialized entries on allocation failure to cxMapClone() - relates to #743
 
    - Wed, 22 Oct 2025 23:28:07 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 22 Oct 2025 23:28:07 +0200] rev 1437
 
    - untested draft of cxMapClone() - relates to #743
 
    - Tue, 21 Oct 2025 17:06:17 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 21 Oct 2025 17:06:17 +0200] rev 1436
 
    - add cxListClone() - resolves #744 except for test coverage
 
    - Mon, 20 Oct 2025 20:38:02 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 20 Oct 2025 20:38:02 +0200] rev 1435
 
    - fix accidental additions of unnecessary unistd.h includes
 
    - Mon, 20 Oct 2025 20:37:45 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 20 Oct 2025 20:37:45 +0200] rev 1434
 
    - fix overlooked renaming of cx_attr_export to CX_EXPORT
 
    - Mon, 20 Oct 2025 20:10:36 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 20 Oct 2025 20:10:36 +0200] rev 1433
 
    - add cxListEmplaceArray() and cxListEmplaceArrayAt() as preparation for the clone implementation
 
    - Mon, 20 Oct 2025 19:44:18 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 20 Oct 2025 19:44:18 +0200] rev 1432
 
    - add possibility to wrap valid function of an iterator (just for the sake of completeness)
 
    - Sun, 19 Oct 2025 21:18:17 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 19 Oct 2025 21:18:17 +0200] rev 1431
 
    - define the function pointer for clone functions
relates to #743 and issue #744 
    - Fri, 17 Oct 2025 21:03:11 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 17 Oct 2025 21:03:11 +0200] rev 1430
 
    - minor wording improvements in buffer documentation
 
    - Fri, 17 Oct 2025 16:53:24 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 17 Oct 2025 16:53:24 +0200] rev 1429
 
    - remove the concept of "mutating iterators" - resolves #579
 
    - Fri, 17 Oct 2025 15:04:56 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 17 Oct 2025 15:04:56 +0200] rev 1428
 
    - add support for non-sorted lists in cxListInsertUnique() and cxListInsertUniqueArray()
relates to #557 
    - Fri, 17 Oct 2025 14:14:21 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 17 Oct 2025 14:14:21 +0200] rev 1427
 
    - make cxCollectionSorted() always return true for empty collections regardless of the sorted flag
 
    - Thu, 16 Oct 2025 19:57:47 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 16 Oct 2025 19:57:47 +0200] rev 1426
 
    - clean up header files and adds support for comparing arbitrary strings with string.h functions
 
    - Wed, 15 Oct 2025 22:45:21 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 15 Oct 2025 22:45:21 +0200] rev 1425
 
    - remove unnecessary members from the array reallocator struct - fixes #621
 
    - Sun, 12 Oct 2025 20:21:56 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 12 Oct 2025 20:21:56 +0200] rev 1424
 
    - fixes tons of typos and grammar issues across the documentation - fixes #667
 
    - Sat, 11 Oct 2025 15:42:48 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 11 Oct 2025 15:42:48 +0200] rev 1423
 
    - fixes various bugs related to skipping duplicates in insert_unique - relates to #557
 
    - Sat, 11 Oct 2025 11:55:46 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 11 Oct 2025 11:55:46 +0200] rev 1422
 
    - changes the compare function wrapper for pointer lists so that it no longer invokes the actual compare function for NULL pointers
 
    - Fri, 10 Oct 2025 19:40:24 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 10 Oct 2025 19:40:24 +0200] rev 1421
 
    - fix missing documentation if insert_unique member - relates to #557
 
    - Fri, 10 Oct 2025 19:35:25 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 10 Oct 2025 19:35:25 +0200] rev 1420
 
    - fix various typos in the web documentation
 
    - Fri, 10 Oct 2025 17:24:19 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 10 Oct 2025 17:24:19 +0200] rev 1419
 
    - add functions to insert elements into lists/arrays without duplicates - resolves #557
 
    - Fri, 10 Oct 2025 12:26:43 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 10 Oct 2025 12:26:43 +0200] rev 1418
 
    - assert instead of assume sorted property in debug builds
 
    - Wed, 08 Oct 2025 20:20:54 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 08 Oct 2025 20:20:54 +0200] rev 1417
 
    - replace all remaining generics with cx_strcast() - resolves #700
 
    - Wed, 08 Oct 2025 20:09:32 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 08 Oct 2025 20:09:32 +0200] rev 1416
 
    - add unsigned char strings to cx_strcast() and changes documentation
also relates to #700 
    - Fri, 03 Oct 2025 18:58:44 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 03 Oct 2025 18:58:44 +0200] rev 1415
 
    - go back to ctype.h, but this time try to avoid crashes in Microsoft's implementation
 
    - Thu, 02 Oct 2025 21:31:52 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 02 Oct 2025 21:31:52 +0200] rev 1414
 
    - missing custom CFLAGS when testing for memrchr availability
 
    - Thu, 02 Oct 2025 21:21:45 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 02 Oct 2025 21:21:45 +0200] rev 1413
 
    - improve feature test for memrchr() making it also available on BSD
 
    - Thu, 02 Oct 2025 17:58:43 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 02 Oct 2025 17:58:43 +0200] rev 1412
 
    - use memrchr() to implement cx_strrchr() when it is available
 
    - Wed, 01 Oct 2025 22:45:48 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 01 Oct 2025 22:45:48 +0200] rev 1411
 
    - fixes regression: missing closing brace in map.h in c++ builds
relates to #731 
    - Wed, 01 Oct 2025 22:43:48 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 01 Oct 2025 22:43:48 +0200] rev 1410
 
    - resolve TODO: test C23 base-2 literals
 
    - Tue, 30 Sep 2025 22:35:24 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 30 Sep 2025 22:35:24 +0200] rev 1409
 
    - finalize the documentation on the new hash key features
resolves #731 
    - Tue, 30 Sep 2025 22:29:54 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 30 Sep 2025 22:29:54 +0200] rev 1408
 
    - change map.h to use new CX_HASH_KEY macro
relates to #731 
    - Tue, 30 Sep 2025 22:21:41 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 30 Sep 2025 22:21:41 +0200] rev 1407
 
    - add missing docstrings
 
    - Tue, 30 Sep 2025 20:29:55 +0200
 
    - by Mike Becker <universe@uap-core.de> [Tue, 30 Sep 2025 20:29:55 +0200] rev 1406
 
    - change kv-list to use new CX_HASH_KEY macro
relates to #731 
    - Mon, 29 Sep 2025 23:31:59 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 29 Sep 2025 23:31:59 +0200] rev 1405
 
    - fix using empty initializer, which is a C23 extension
 
    - Mon, 29 Sep 2025 23:28:46 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 29 Sep 2025 23:28:46 +0200] rev 1404
 
    - fix cxKvListSetKey() and cxKvListRemoveKey() accidentally not declared for C++
relates to #461 
    - Mon, 29 Sep 2025 23:25:31 +0200
 
    - by Mike Becker <universe@uap-core.de> [Mon, 29 Sep 2025 23:25:31 +0200] rev 1403
 
    - add C++ implementation of CX_HASH_KEY()
relates to #731 
    - Sun, 28 Sep 2025 22:32:42 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sun, 28 Sep 2025 22:32:42 +0200] rev 1402
 
    - add generic CX_HASH_KEY() macro
relates to #731 
    - Sat, 27 Sep 2025 17:53:41 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 27 Sep 2025 17:53:41 +0200] rev 1401
 
    - add changelog entries for issue #720
 
    - Sat, 27 Sep 2025 17:49:13 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 27 Sep 2025 17:49:13 +0200] rev 1400
 
    - add support for integer keys - resolves #720
 
    - Sat, 27 Sep 2025 17:47:10 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 27 Sep 2025 17:47:10 +0200] rev 1399
 
    - add size_t compare functions
 
    - Sat, 27 Sep 2025 17:03:35 +0200
 
    - by Mike Becker <universe@uap-core.de> [Sat, 27 Sep 2025 17:03:35 +0200] rev 1398
 
    - simplify hash map iterator - resolves #727
 
    - Fri, 26 Sep 2025 22:43:17 +0200
 
    - by Mike Becker <universe@uap-core.de> [Fri, 26 Sep 2025 22:43:17 +0200] rev 1397
 
    - fix cx_kvl_map_put() returning the wrong pointer
relates to #461 
    - Thu, 25 Sep 2025 14:49:48 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 25 Sep 2025 14:49:48 +0200] rev 1396
 
    - add kv-list files to MSVC project files
resolves #461 for MSVC 
    - Thu, 25 Sep 2025 14:49:26 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 25 Sep 2025 14:49:26 +0200] rev 1395
 
    - fix initialization of cxDefaultAllocator for MSVC
 
    - Thu, 25 Sep 2025 14:30:28 +0200
 
    - by Mike Becker <universe@uap-core.de> [Thu, 25 Sep 2025 14:30:28 +0200] rev 1394
 
    - add cxKvListGetKey()
resolves #461 
    - Wed, 24 Sep 2025 23:52:36 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 24 Sep 2025 23:52:36 +0200] rev 1393
 
    - fix that cxKvListInsert() did not lose the sorted property
relates to #461 
    - Wed, 24 Sep 2025 23:51:04 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 24 Sep 2025 23:51:04 +0200] rev 1392
 
    - remove unused old cx_kv_list_remove_key() prototype
 
    - Wed, 24 Sep 2025 23:50:41 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 24 Sep 2025 23:50:41 +0200] rev 1391
 
    - fix typo in CHANGELOG
 
    - Wed, 24 Sep 2025 23:50:15 +0200
 
    - by Mike Becker <universe@uap-core.de> [Wed, 24 Sep 2025 23:50:15 +0200] rev 1390
 
    - kv-list: add documentation
relates to #461