| 9  * adds cxListContains() | 9  * adds cxListContains() | 
| 10  * adds cxListFirst() and cxListLast() | 10  * adds cxListFirst() and cxListLast() | 
| 11  * adds cxListRemoveAndGetFirst() and cxListRemoveAndGetLast(), | 11  * adds cxListRemoveAndGetFirst() and cxListRemoveAndGetLast(), | 
| 12    and corresponding macro aliases cxListPopFront() and cxListPop() | 12    and corresponding macro aliases cxListPopFront() and cxListPop() | 
| 13  * adds cxListEmplace(), cxListEmplaceAt(), and cxMapEmplace() | 13  * adds cxListEmplace(), cxListEmplaceAt(), and cxMapEmplace() | 
|  | 14  * adds cxListInsertUnique() and cxListInsertUniqueArray() | 
|  | 15  * adds cx_array_insert_unique() and various convenience macros | 
|  | 16  * adds cx_linked_list_insert_unique() and cx_linked_list_insert_unique_chain() | 
| 14  * adds cxBufferShrink() | 17  * adds cxBufferShrink() | 
| 15  * adds cxTreeSize() | 18  * adds cxTreeSize() | 
| 16  * adds CX_PRIstr and CX_SFMT macros for formatting UCX strings | 19  * adds CX_PRIstr and CX_SFMT macros for formatting UCX strings | 
| 17  * adds cx_strcpy() and cx_strcpy_a() | 20  * adds cx_strcpy() and cx_strcpy_a() | 
| 18  * adds cxJsonArrRemove() and cxJsonObjRemove() | 21  * adds cxJsonArrRemove() and cxJsonObjRemove() | 
| 24  * changes grow strategy for CxBuffer, which does now take the page size into account | 27  * changes grow strategy for CxBuffer, which does now take the page size into account | 
| 25  * changes the implementation of cx_strreplacen() for improved efficiency | 28  * changes the implementation of cx_strreplacen() for improved efficiency | 
| 26  * changes all cxListIterator() and cxMapIterator() family of functions to also accept NULL as argument | 29  * changes all cxListIterator() and cxMapIterator() family of functions to also accept NULL as argument | 
| 27  * changes insert_element member function of CxList to accept NULL source and return a pointer to the inserted element | 30  * changes insert_element member function of CxList to accept NULL source and return a pointer to the inserted element | 
| 28  * fixes critical memory overflow in the stack-based array reallocator (this unfortunately breaks the function signature) | 31  * fixes critical memory overflow in the stack-based array reallocator (this unfortunately breaks the function signature) | 
|  | 32  * fixes critical bug in cx_array_insert_sorted() that caused an infinite loop when inserting duplicates | 
| 29  * fixes mempool implementation not supporting NULL as argument for realloc | 33  * fixes mempool implementation not supporting NULL as argument for realloc | 
| 30  * fixes mempool implementation not supporting zero as size for realloc | 34  * fixes mempool implementation not supporting zero as size for realloc | 
| 31  * fixes that the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() | 35  * fixes that the elem_count member of an iterator was not updated after removing an element flagged by cxIteratorFlagRemoval() | 
| 32  * fixes that starting an iteration in a non-root node incorrectly continues iteration with the siblings of that node | 36  * fixes that starting an iteration in a non-root node incorrectly continues iteration with the siblings of that node | 
| 33  * fixes unnecessary allocations in cx_strcat() family of functions | 37  * fixes unnecessary allocations in cx_strcat() family of functions |