<commit_before>v0.10.1 (kinetic-protocol 3.0.5)
--------------------------------
* Fixed regression in 0.10.0 where a GET with metadataOnly=true would result in a crash if a value field was not provided
* Added system tests for P2P operations which are now fully validated and working on HW

v0.10.0 (kinetic-protocol 3.0.5)
--------------------------------
* Added put_nonblocking and get_nonblocking examples
* Added KineticSemaphore API to provide a simpler wrapper around a common use of pthread condition variables as a thread safe way to signal when an async operation has finished
* Switched internal message infrastructure to use a threadpool. This will allow for a much higher number active connections and outstanding commands.
* KineticClient_Init now returns a KineticClient pointer (internally, it's a handle to the threadpool) that must be passed to KineticClient_CreateConnection() in order to create new connections and must also be passed to KineticClient_Shutdown() on shutdown
* Improved I/O examples to demonstrate client write operations for blocking/non-blocking (asynchrounous) and single/multi-threaded.
* Added consolidated performance test which reports metrics on PUT/GET/DELETE sequences (test/system/test_system_async_throughput.c).

v0.9.2 (kinetic-protocol 3.0.5)
-------------------------------
* Added missing mutex lock causing a concurrency issue.
* Added profiling to test/system/test_system_async_io.c

v0.9.1 (kinetic-protocol 3.0.5)
-------------------------------
* Added get_key_range.c example for KineticClient_GetKeyRange().

v0.9.0 (kinetic-protocol 3.0.5)
-------------------------------
* Changed API to use a `KineticSession` with a pointer to private session/connection info in place of the old `KineticSessionHandle`.
* Added `FLUSHALLDATA` operation via `KineticClient_Flush()`
* Added `GETPREVIOUS`/`GETNEXT` operations via `KineticClient_GetPrevious()`/`KineticClient_GetNext()`
* Replaced `KinticClient_Connect()`/`Disconnect()` with `KineticClient_CreateConnection()`/`DestroyConnection()`, since the connection structure is dynamically allocated and populated in the provided `KineticSession`. `KineticClient_DestroyConnection()` MUST be called on the an established `KineticSession` in order to shutdown the connection and free up resources.
* Added initial implementation of PEER2PEERPUSH which does NOT yet support chaining via KineticClient_P2POperation().
* Fixed bug with mutex locking causing an assert failure and subsequent crash.<commit_msg>Added a release note item to call out pthread_join shutdown issue on GCC builds<commit_after>v0.10.1 (kinetic-protocol 3.0.5)
--------------------------------
* Fixed regression in 0.10.0 where a GET with metadataOnly=true would result in a crash if a value field was not provided
* Added system tests for P2P operations which are now fully validated and working on HW
* Fixed misue of pthread_join status in thread pool which was causing shutdown issues in GCC builds

v0.10.0 (kinetic-protocol 3.0.5)
--------------------------------
* Added put_nonblocking and get_nonblocking examples
* Added KineticSemaphore API to provide a simpler wrapper around a common use of pthread condition variables as a thread safe way to signal when an async operation has finished
* Switched internal message infrastructure to use a threadpool. This will allow for a much higher number active connections and outstanding commands.
* KineticClient_Init now returns a KineticClient pointer (internally, it's a handle to the threadpool) that must be passed to KineticClient_CreateConnection() in order to create new connections and must also be passed to KineticClient_Shutdown() on shutdown
* Improved I/O examples to demonstrate client write operations for blocking/non-blocking (asynchrounous) and single/multi-threaded.
* Added consolidated performance test which reports metrics on PUT/GET/DELETE sequences (test/system/test_system_async_throughput.c).

v0.9.2 (kinetic-protocol 3.0.5)
-------------------------------
* Added missing mutex lock causing a concurrency issue.
* Added profiling to test/system/test_system_async_io.c

v0.9.1 (kinetic-protocol 3.0.5)
-------------------------------
* Added get_key_range.c example for KineticClient_GetKeyRange().

v0.9.0 (kinetic-protocol 3.0.5)
-------------------------------
* Changed API to use a `KineticSession` with a pointer to private session/connection info in place of the old `KineticSessionHandle`.
* Added `FLUSHALLDATA` operation via `KineticClient_Flush()`
* Added `GETPREVIOUS`/`GETNEXT` operations via `KineticClient_GetPrevious()`/`KineticClient_GetNext()`
* Replaced `KinticClient_Connect()`/`Disconnect()` with `KineticClient_CreateConnection()`/`DestroyConnection()`, since the connection structure is dynamically allocated and populated in the provided `KineticSession`. `KineticClient_DestroyConnection()` MUST be called on the an established `KineticSession` in order to shutdown the connection and free up resources.
* Added initial implementation of PEER2PEERPUSH which does NOT yet support chaining via KineticClient_P2POperation().
* Fixed bug with mutex locking causing an assert failure and subsequent crash.
{'fraction_non_alphanumeric': 0.11911196911196911, 'fraction_numerical': 0.015057915057915058, 'mean_word_length': 3.929590865842055, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '4953313', 'n_tokens_mistral': 1419, 'n_tokens_neox': 1287, 'n_words': 570}