# RELEASE.MAJOR.MINOR

1.5.3
    Tests completely reorganized and now with full code coverage
    Some fixes where there was a missing return statement
    Expanded utl/assert.h

1.5.2
    Added utl/test.h
    Added utl/assert.h
    Added tests/list.c - UnitTest for LIST
    Small fixes on utl/foreach.h, utl/test.h and redone utl/timer.h
    Removed utl/log.h functions that were unnecessary
    Added the CMC namespace to CONCATC and CONCATH at macro_collections.h

1.5.1
    New queue benchmark
    Added sac/queue.h
    Added utl/timer.h
    Fixing descriptions and other minor fixes

1.5.0
    Changed tests compilation and execution to a single Makefile
    Changed project structure
    ./src/
        ./cmc/ - Main C Macro Collections Library
        ./dev/ - A copy of ./cmc/ used for development (logging utility)
        ./ext/ - Extra collections
        ./sac/ - Stack Allocated Collections
        ./utl/ - Utility like ForEach, logging, etc
    Added ./utl/log.h a logging utility
    Added ./dev/deque.h - A mirror of ./cmc/deque.h but with logging utility
    Added ./ext/linkedqueue.h - A singly-linked list based queue
    Added ./sac/stack.h - A Stack purely allocated on the stack

1.4.3
    Fixed some functions names
    Added set functions for both Tree and Hash Set
        - is_subset
        - is_proper_subset
        - is_superset
        - is_proper_subset
        - is_disjointset

1.4.2
    Adapted code so that plain struct type is accepted
    Changed TreeSet max and min to be compatible with the TreeMap and the hash collections
    Changed function modifier of all implementation detail to static
    Fixed some implementation detail functions that were not prefixed with impl
    Added types.c to test if it is possible to compile all the collections' generated code accepting all C data types
    Removed pointertype.c (replaced by types.c)

1.4.1
    Removed PUBLIC and PRIVATE from the main macro
    Corrected examples and benchmark
    Added new test consisting of compiling the header and source separately

1.4.0
    New way on how iterators work to all collections
        Added iter_init to work with stack allocated iterators
        Added iter_new and iter_free to work with heap allocated iterators
        Added two pointers to functions (it_start and it_end) that allow you to access iterators to both start and end of the target collection easily
        iter_next and iter_prev now only move the iterator
        To access the key, value and index, use a separate function
    Removed FOR_EACH_MAP as it is no longer necessary since FOR_EACH also works to associative containers now
    Updated benchmark, examples and tests to work on these new iterators
    Changed pointertype test to be a pointer to struct instead of pointer to char
    Added CHANGELOG and TODO

1.3.0
    Changed how the linkedlist functions relative to nodes work
        Removed reference to owner list on each node
        Renamed some functions for consistency

1.2.4
    Fixing some declarations in hashset and hashmap where a pointer type would cause problems
    Added a test to make sure all collections support pointer type
    Tests:
        - pointertype

1.2.3
    Added get_ref functions to all collections that support it (only included in hashmap, linkedlist, list and treemap)

1.2.2
    Removed unnecessary modulo operation in hashtable functions

1.2.1
    Optimized list - now using 'string.h' functions to shift elements around instead of for-loops:
        - memset
        - memcpy
        - memmove

1.2.0
    'contains' functions added to all collections
    'contains' tests and benchmark
    Unified Benchmark
    Updated examples

1.1.3
    Renamed deque's 'rear' struct member to 'back' to be more consistent with other collections
    Better benchmark and foreach tests are alphabetically ordered

1.1.2
    Fixing iterators for when they are initialized with an empty target
    Better iterator tests
    More examples

1.1.1
    Reordering functions (implementation details are now at the end of each file)

1.1.0
    Added new list functions:
        - new_from
        - prepend
        - insert
        - append
        - remove
        - fits

1.0.1
    Fixed hashset logic in robin-hood hashing

1.0.0
    First stable version
    Includes the following collections:
        - deque
        - hashmap
        - hashset
        - heap
        - linkedlist
        - list
        - queue
        - stack
        - treemap
        - treeset
    Two-way iterators
    Benchmarks
    Tests:
        - foreach
        - iterator
