| 7 a static and a shared lib containing all units, but you may also use the UCX |
7 a static and a shared lib containing all units, but you may also use the UCX |
| 8 sources in your project and compile specific units by yourself. |
8 sources in your project and compile specific units by yourself. |
| 9 |
9 |
| 10 If you want to use this library, you can [download and install](install.md) |
10 If you want to use this library, you can [download and install](install.md) |
| 11 the recent version. |
11 the recent version. |
| 12 The source code is also available as Mercurial repository [at our site][1] and |
12 The source code is also available as Mercurial repository [at our site](https://develop.uap-core.de/hg/ucx/) and |
| 13 on [Source Forge][2]. |
13 on [Source Forge](https://sourceforge.net/p/ucx/code/). |
| 14 |
14 |
| 15 [1]: https://develop.uap-core.de/hg/ucx/ |
15 ## Authors |
| 16 [2]: https://sourceforge.net/p/ucx/code/ |
|
| 17 |
|
| 18 ### Authors |
|
| 19 |
16 |
| 20 Mike Becker [<universe@uap-core.de>](mailto:universe@uap-core.de) |
17 Mike Becker [<universe@uap-core.de>](mailto:universe@uap-core.de) |
| 21 |
18 |
| 22 Olaf Wintermann |
19 Olaf Wintermann |
| 23 [<olaf.wintermann@gmail.com>](mailto:olaf.wintermann@gmail.com) |
20 [<olaf.wintermann@gmail.com>](mailto:olaf.wintermann@gmail.com) |
| 24 |
21 |
| 25 Changelog |
22 ## Other Resources |
| 26 --------- |
23 |
| |
24 * [Doxygen Documentation](https://ucx.sourceforge.io/api/) |
| |
25 * [Test Coverage Report](https://ucx.sourceforge.io/coverage/) |
| |
26 |
| |
27 ## Changelog |
| |
28 |
| |
29 ### Version 3.1 - 2025-02-11 {collapsible="true"} |
| |
30 |
| |
31 * adds properties.h |
| |
32 * adds tree.h |
| |
33 * adds json.h |
| |
34 * adds locale-independent string to number conversion functions |
| |
35 * adds reallocarray() like functions to allocator.h |
| |
36 * adds cxIterator() to create iterators over raw C arrays |
| |
37 * adds cxIteratorPtr() to create iterators over raw C pointer arrays |
| |
38 * adds cx_array_reallocator() and cx_array_default_reallocator |
| |
39 * adds several new array and list functions |
| |
40 * adds cxBufferReset() |
| |
41 * adds cxBufferAppend() |
| |
42 * adds cxBufferEnableFlushing() and cxBufferFlush() |
| |
43 * adds CX_BUFFER_COPY_ON_WRITE and CX_BUFFER_COPY_ON_EXTEND flags |
| |
44 * adds cxBufferWriteFunc and cxBufferReadFunc function pointers (for convenience) |
| |
45 * adds cx_cmp_ptr() |
| |
46 * adds cx_vcmp_* family of functions |
| |
47 * adds cx_sprintf() and several more variants |
| |
48 * adds runtime constants to read out the actual SBO sizes |
| |
49 * adds improved version of UCX 2 Test framework (now a self-contained header) |
| |
50 * adds cx_nmemb() utility function to common.h |
| |
51 * changes that CxMap returns own CxMapIterator to save memory in CxIterator |
| |
52 * changes name of cxBasicMempoolCreate() to cxMempoolCreateSimple() |
| |
53 * changes all functions, for which there is no dedicated xyz_a variant, |
| |
54 to accept NULL as allocator argument (in which case a default allocator will be used) |
| |
55 * changes the name of destroy functions that actually free the memory to better indicate their behavior |
| |
56 * change cx_strcat variants to allow handling of ENOMEM |
| |
57 * change cx_strcast() to also accept cxstring (and doing nothing in that case) |
| |
58 * change the behavior of cxBufferSeek() to allow offset zero for SEEK_END |
| |
59 * moves cx_compare_func typedef to compare.h |
| |
60 * moves cx_szmul() to common.h |
| |
61 * moves stream copy functions to new streams.h |
| |
62 * removes cx_strupper() and cx_strlower() because they only do the right thing in special cases |
| |
63 * removes several *_m variants of functions in string.h in favor of automatic conversion |
| |
64 * removes utils.h |
| |
65 * removes flag_removal function from iterator |
| |
66 * removes cxMapDetach() and makes cxMapRemoveAndGet() compatible with both map variants |
| |
67 * removes the API for changing the store_pointer property of collections after their creation |
| |
68 * removes CMake |
| |
69 * removes GTest dependency |
| |
70 * removes flags to disable SBO in tests |
| |
71 * removes CX_LINKED_LIST_SWAP_SBO_SIZE (it's not really an optimization for linked lists) |
| |
72 * fixes cx_strcmp() and cx_strcasecmp() not being useful for lexicographic ordering |
| |
73 * fixes cx_hash_key_cxstr() evaluating the argument twice |
| |
74 * fixes critical bug that produced wrong results when comparing lists of different type but same size |
| |
75 * ends UCX 2.1 long term support |
| 27 |
76 |
| 28 ### Version 3.0 - 2023-07-09 {collapsible="true"} |
77 ### Version 3.0 - 2023-07-09 {collapsible="true"} |
| 29 |
78 |
| 30 * complete redesign from scratch |
79 * complete redesign from scratch |
| 31 * collections can now store copies of objects and not just pointers |
80 * collections can now store copies of objects and not just pointers |