## v5.2.0
*August 19, 2025*
| Type | Changes |
|------|----------|
| **Added** | • Expose functions through the C++ interface to enable or disable system SSL certificate usage when establishing a secure connection. |
## v5.1.6
*August 5, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fixed deadlock for sync polling via `last_result`. |
## v5.1.5
*July 28, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Define sleep function for Windows builds. |
| **Modified** | • Guard `unistd` inclusion with platform check. |
## v5.1.4
*July 22, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix bug that UTF8 characters used in some end points were breaking the request format. |
## v5.1.3
*July 15, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fixed memory leak when calling pubnub_free on an initialized PubNub object.<br/>• Fixed socket leak when calling pubnub_free on a PubNub object with an open connection.<br/>• Fixed socket leak when publishing using a context with use_http_keep_alive = 0.<br/>• Fixed crash due to double-free when calling pubnub_free after pbpal_handle_socket_condition encounters a socket error. |
## v5.1.2
*July 8, 2025*
| Type | Changes |
|------|----------|
| **Modified** | • Use recursive semaphore for `mutex` lock and unlock in `pbpal_mutex.h`. |
## v5.1.1
*June 26, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix issue because of which it was impossible for sync PubNub context version to cancel operation awaited in secondary thread. |
| **Modified** | • Fix the code for which the compiler emitted warnings during the build for `mbedTLS` and `ESP_PLATFORM=1`. |
## v5.1.0
*June 19, 2025*
| Type | Changes |
|------|----------|
| **Added** | • Add functions which allow to enable and disable 'smart heartbeat' behavior for automatic heartbeat: `pubnub_enable_smart_heartbeat` and `pubnub_disable_smart_heartbeat`.<br/>• Add `pubnub_last_publish_timetoken` function to retrieve recently published message high precision timetoken. |
| **Fixed** | • Fix issue which caused deadlock on secondary thread and as result heartbeat stop.<br/>• Fix signature of `pbntf_init_callback` and its usage in Windows dedicated code. |
## v5.0.3
*June 17, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fixed wrong string copy if multiple channels(groups) are provided for `pubnub_set_state`. Note that using `memcpy` instead of `strncpy` is used intentionally because of the ESP support.<br/>• Fixed crash when double comma is provided to `pubnub_set_state` as a channels(groups).<br/>• Fixed wrong check if the reallocation is required in `pubnub_set_state`.<br/>• Removed additional allocation of memory for temporary data.<br/>• Changed the amount of bytes allocated based on the provided parameters instead of hardcoded values. |
## v5.0.2
*June 2, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix `pubnub_reconnect` and `pubnub_disconnect` not to print an error when called within incorrect subscription state. Warning will be printed instead and function won't execute further. |
## v5.0.1
*May 26, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix crashes that could sometimes happen during unsubscribe due to calling `strlen` on null pointers.<br/>• Fix `pubnub_fetch_history` function when used with crypto api. Change `PUBNUB_MAX_URL_PARAMS` to 12.<br/>• Fix the issue that was causing memory fragmentation fault at the moment of the next automated heartbeat call. |
## v5.0.0
*April 3, 2025*
| Type | Changes |
|------|----------|
| **Added** | • Add `PUBNUB_NTF_RUNTIME_SELECTION` flag that allows to select API type at runtime.<br/>• Introduce `void*` parameter for user data in listeners to let callbacks keep context on demand. |
## v4.19.1
*April 2, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix the issue that there was an assertion when using App Context functions with `limit` set to 100. |
## v4.19.0
*March 19, 2025*
| Type | Changes |
|------|----------|
| **Added** | • Add the ability to set `timetoken` (for message catchup) in `pubnub_subscribe_v2_options` which is used with `pubnub_subscribe_v2`. |
| **Fixed** | • Fix issue which was source of segmentation fault when tried to access memory after it has been freed. |
## v4.18.1
*February 11, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix issue because of which `signature` value in query has been truncated. |
## v4.18.0
*February 6, 2025*
| Type | Changes |
|------|----------|
| **Added** | • Add `status` and `type` support for channel and uuid metadata objects state update API. |
## v4.17.0
*January 16, 2025*
| Type | Changes |
|------|----------|
| **Added** | • Add possibility to replace default log function with a callback provided by the user. |
## v4.16.1
*January 9, 2025*
| Type | Changes |
|------|----------|
| **Fixed** | • Remove the `user_id` length restriction for dynamically allocated memory for it. |
| **Modified** | • Configure `try_compile` when building a static library. |
## v4.16.0
*December 25, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Additional flags for C/CPP can be set with: `USER_C_FLAGS` / `USER_CXX_FLAGS`. |
| **Fixed** | • Fix because of which one of the source files has been missed for Windows.<br/>• Fix issue with unsupported concatenation of sources files / definitions (`+=`). |
| **Modified** | • Refactor our `Makefiles` from different folders and platforms to use `include` directives to include shared definitions, flags, source files. |
## v4.15.0
*November 25, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Add custom message type support for the following APIs: publish, signal, share file, subscribe and history.<br/>• Add `pubnub_set_ipv4_connectivity` and `pubnub_set_ipv6_connectivity` to `pubnub_coreapi` to switch preferred connectivity protocol. |
| **Fixed** | • Make sure that in case of connection close (including because of error) proxy context object will be reset. |
## v4.14.1
*October 24, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix CMakeLists to build correctly on Windows. |
| **Modified** | • Prepare CMakeLists to support builds for Arm64 architecture. |
## v4.14.0
*October 15, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Add core Event Engine implementation with the required set of types and methods.<br/>• Add Subscribe Event Engine built atop of the core Event Engine implementation.<br/>• Add the following entities: channel, channel group, uuid and channel metadata objects.<br/>• Add objects to manage subscriptions and provides interface for update listeners.<br/>• Add new event listeners, which make it possible to add listeners to a specific entity or group of entities (though subscription and subscription set).<br/>• Added ability to configure automated retry policies for failed requests. |
## v4.13.1
*September 5, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • Removed additional null byte character. |
## v4.13.0
*August 9, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Add `delete message` API support to the advanced history module. |
## v4.12.3
*August 5, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • Add the missing `ttl` parameter to the `pubnub_publish_options` for extended `publish` configuration. |
## v4.12.2
*August 5, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • Fixed custom `bool` type for CMake builds. |
## v4.12.1
*August 5, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix query values for boolean flags for history endpoint (`include meta`, `include uuid`, `include message type` and `reverse`). |
## v4.12.0
*July 29, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Added `filter` and `sort` parameters to be closer to the other SDKs with object API.<br/>• Configurable `bool` type. |
| **Fixed** | • Missing features needed for grant token API in CMakeLIsts.txt. |
## v4.11.2
*July 15, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • Added missing subscribe v2 crypto implementation. |
## v4.11.1
*June 28, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • Fixed `cmake` build for not ESP32 builds. |
## v4.11.0
*June 27, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Provided support for ESP32 devices via ESP-IDF framework.<br/>• Provided support for MBedTLS library used within esp32 platform. |
| **Modified** | • Replace `strncpy` with `strcpy` in blocks where it is safer to be used. |
## v4.10.0
*June 14, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Added possibility to use strings in actions API. |
| **Modified** | • `pubnub_action_type` enum has been deprecated. |
## v4.9.1
*March 26, 2024*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix too small amount of memory allocated for aes cbc algorithm in some cases. |
| **Modified** | • Add possibility to include address sanitizer in build via CMake. |
## v4.9.0
*January 8, 2024*
| Type | Changes |
|------|----------|
| **Added** | • Provide CMake support.<br/>• Adjust `build.cs` unreal engine file for CMake build. |
## v4.8.0
*December 7, 2023*
| Type | Changes |
|------|----------|
| **Added** | • Add `#if` switches into files that are related to PubNub features to not rely only on makefiles. [Be careful when update. It's not a breaking change at all but might fail build for custom makefiles!]. |
## v4.7.1
*November 23, 2023*
| Type | Changes |
|------|----------|
| **Fixed** | • Handle unencrypted message while getting messages with crypto. |
## v4.7.0
*November 20, 2023*
| Type | Changes |
|------|----------|
| **Added** | • Provided `PUBNUB_EXTERN` macro to extern C functions. |
## v4.6.2
*November 14, 2023*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix `pubnub_free()` function on not initialised PubNub that can cause exceptions/undefined behaviours. |
## v4.6.1
*November 8, 2023*
| Type | Changes |
|------|----------|
| **Fixed** | • Provide missing `publish()` function overload for QT wrapper that allows set publish related options. |
## v4.6.0
*October 30, 2023*
| Type | Changes |
|------|----------|
| **Added** | • Add the `PUBNUB_QT_MOVE_TO_THREAD` flag as default to give users the opportunity to manage threads by themselves. |
| **Fixed** | • Move `pubnub_qt` into QT main thread by default to be sure that timers will be run in it. |
## v4.5.0
*October 16, 2023*
| Type | Changes |
|------|----------|
| **Added** | • Update the crypto module structure and add enhanced AES-CBC cryptor. |
| **Fixed** | • Improved security of crypto implementation by increasing the cipher key entropy by a factor of two.<br/>• Fixed missing return from failed `pbaes256_decrypt_alloc()` function. |
## v4.4.0
*September 28, 2023*
| Type | Changes |
|------|----------|
| **Added** | • Provide module files to integrate SDK with Unreal Enigne. |
## v4.3.0
*July 24, 2023*
| Type | Changes |
|------|----------|
| **Added** | • Add `publisher` field into `pubnub_v2_message`. |
| **Fixed** | • Fixed `flags` and `region` values that always equaled `0`. |
## v4.2.2
*May 24, 2023*
| Type | Changes |
|------|----------|
| **Fixed** | • Conditionally use of using newest openssl API Ipv4 parsing is needed for working with proxy. Include object file with that function for proxy builds. |
| **Modified** | • Use newest openssl API. |
## v4.2.1
*April 26, 2023*
| Type | Changes |
|------|----------|
| **Modified** | • Conditionally use `sha256` when build is linked with OpenSSL 3+ version. |
## v4.2.0
*February 7, 2023*
| Type | Changes |
|------|----------|
| **Added** | • Updated QT to version `6.*`. |
| **Fixed** | • Fixed not building QT module.<br/>• Align QT module with current SDK state. |
| **Modified** | • Removed some states, classes and structs that aren't currently used. |
## v4.1.0
*January 16, 2023*
| Type | Changes |
|------|----------|
| **Added** | • Added pubnub_set_state_ex to support heartbeat. |
| **Fixed** | • Removed state param from subscribe request.<br/>• Added state param to hearbeat request. |
## v4.0.6
*December 14, 2022*
| Type | Changes |
|------|----------|
| **Fixed** | • Fixed hanging allocated memory after error in `parse_token` by cleaning the result memory on `cbor` error. |
| **Modified** | • Implemented more tests for `pubnub_token_parse` function to increase confidence about that function.<br/>• Refactored implementation of some tests' setups. |
## v4.0.5
*December 2, 2022*
| Type | Changes |
|------|----------|
| **Fixed** | • Fixed compilation error for MSVC in `pubnub_parse_token` function. |
## v4.0.4
*November 25, 2022*
| Type | Changes |
|------|----------|
| **Fixed** | • Fixed crashing parsing token for not valid values by logging an error and returning `NULL`. |
## v4.0.3
*November 17, 2022*
| Type | Changes |
|------|----------|
| **Fixed** | • Fixed wrong pointer reallocation in string concatenation.<br/>• Fixed allocation counter that was not taking to the account recursed allocations. |
## v4.0.2
*November 15, 2022*
| Type | Changes |
|------|----------|
| **Fixed** | • Improved accuracy of the base64 encoding size what fixes buffer underflow in encryption module.<br/>• Fixed undefined behaviours in `pubnub_encrypt_decrypt_iv_sample.c` by including some additional checks and variable initialisations. |
| **Modified** | • Made same base for encrypt functions what makes codes easier to understand and maintain. |
## v4.0.1
*November 8, 2022*
| Type | Changes |
|------|----------|
| **Fixed** | • `ERR_load_BIO_strings()` is deprecated in OpenSSL 3.0. Low-level encoding primitives are also deprecated. `EVP_EncodeBlock()` is available in all currently supported OpenSSL releases. |
## v4.0.0
*November 2, 2022*
| Type | Changes |
|------|----------|
| **Added** | • Add `user_id` configuration option that deprecates `uuid` ones.<br/>• BREAKING CHANGES: now `user_id` (old `uuid`) is a required property!. |
## v3.5.2
*October 11, 2022*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix memory leak in cpp `parse_token` method.<br/>• Fix buffer overflow in core `pubnub_parse_token` function for some cases.<br/>• Fix buffer overflow in core `pubnub_encrypt` function for randomized initial vector. |
## v3.5.1
*September 22, 2022*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix wrong parsing uuid in parse_token.<br/>• Fix case sensitive header check. |
## v3.5.0
*September 8, 2022*
| Type | Changes |
|------|----------|
| **Added** | • Implemented Fetch History. |
## v3.4.3
*July 5, 2022*
| Type | Changes |
|------|----------|
| **Fixed** | • Removed extra parenthesis in get_dns_ip function code.<br/>• Added uuid query param to history, set/get state, wherenow, channel-group operations. |
## v3.4.2
*April 25, 2022*
| Type | Changes |
|------|----------|
| **Fixed** | • Handle state for subscribe and resubscribe. |
## v3.4.1
*March 9, 2022*
| Type | Changes |
|------|----------|
| **Fixed** | • Support system name servers in async DNS client.<br/>• Fix multiple memory safety and leak issues.<br/>• Fix slash char encoding for pnsdk. |
## v3.4.0
*January 11, 2022*
| Type | Changes |
|------|----------|
| **Added** | • Add token permissions revoke functionality. |
| **Fixed** | • Remove body from `signature` calculation for requests with DELETE HTTP method. |
| **Modified** | • Update `.pubnub.yml` file with access token revoke and secret key all access. |
## v3.3.2
*January 10, 2022*
| Type | Changes |
|------|----------|
| **Fixed** | • Filter-expr query param typo. |
## v3.3.1
*January 5, 2022*
| Type | Changes |
|------|----------|
| **Fixed** | • Encode = (equal) sign for filter expression. |
## v3.3.0
*October 11, 2021*
| Type | Changes |
|------|----------|
| **Added** | • Implemented PAMv3 support. |
| **Fixed** | • Handle subscribe error for empty channel-group. |
## v3.2.0
*September 15, 2021*
| Type | Changes |
|------|----------|
| **Fixed** | • Error codes for missing subscribe timetoken. |
## v3.1.0
*June 14, 2021*
| Type | Changes |
|------|----------|
| **Added** | • Added PAMv3 Grant Token support. |
## v3.0.0
*May 24, 2021*
| Type | Changes |
|------|----------|
| **Added** | • BREAKING CHANGE - Added PUBNUB_RAND_INIT_VECTOR to support dynamic IV, default to true. |
## v2.14.0
*May 10, 2021*
| Type | Changes |
|------|----------|
| **Fixed** | • Handling Access Denied server error in Pubnub Access Manager requests. |
## v2.13.0
*April 20, 2021*
| Type | Changes |
|------|----------|
| **Added** | • Implemented Pubnub Access Manager Support.<br/>• Implemented Objects V2. Removed Objects V1. |
## v2.12.7
*January 20, 2021*
| Type | Changes |
|------|----------|
| **Added** | • Added support for Universal Windows(UWP). |
## v2.12.6
*October 3, 2020*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix DNS servers rotation during transaction origin DNS resolution timeout. |
## v2.12.5
*April 8, 2020*
| Type | Changes |
|------|----------|
| **Modified** | • Dynamically allocate memory for `uuid` in `pubnub_set_uuid` function. |
## v2.12.4
*January 31, 2020*
| Type | Changes |
|------|----------|
| **Fixed** | • Properly handle DNS retries and stale HTTP Kept-Alive connections |
## v2.12.3
*January 16, 2020*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix assertion failure while retrying timed out DNS queries with multiple contexts |
## v2.12.2
*December 5, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Add support for automatic sending of heartbeat messages with sync interface (POSIX and Windows) |
## v2.12.1
*November 22, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Add support for automatic sending of heartbeat messages on Windows, callback. |
## v2.12.0
*November 15, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Support automatic sending of heartbeat messages (only on POSIX, callback, for now). |
## v2.11.1
*October 25, 2019*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix Qt |
## v2.11.0
*October 20, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Introduce Actions API<br/>• Add 'include_meta' parameter to pubnub_history_ex() |
| **Fixed** | • Fix stopwatch not working after 25 days |
## v2.10.2
*October 18, 2019*
| Type | Changes |
|------|----------|
| **Fixed** | • Restore get/set connection timeout in C++ wrapper |
## v2.10.1
*October 2, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Retry if DNS server does not respond. Number of retries is a compile-time parameter. |
| **Fixed** | • In C++, fix transaction finishing before user starts to wait for it to finish. |
## v2.10.0
*September 23, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Introduce Objects API |
| **Fixed** | • Fix high history (extended/full) handling of 'reverse' and other boolean parameters |
## v2.9.4
*September 10, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Introduce separate connection timer, to control/limit the duration of DNS resolving and connection establishment, which should be much shorter than full transaction timer, which has to be >5 min for subscribe |
| **Fixed** | • Fix high CPU load in callback interface when no context, thus socket, is executing a transaction |
## v2.9.3
*September 3, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Detect TCP/IP connect timeout in callback mode w/sockets - does not seem to work on Windows<br/>• Add set_proxy_none() to pubnub::context |
## v2.9.2
*August 28, 2019*
| Type | Changes |
|------|----------|
| **Fixed** | • Proxy admin functions (set, get) were not protected by mutex/monitor, so caused a race condition<br/>• Setting new proxy might have been ignored until the resolved DNS addresses of the previous proxy expire.<br/>• If all resolved addresses on file expire, we would report transaction failure instead of just asking for new ones. |
## v2.9.1
*August 25, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Improvements in sockets and DNS error reporting |
## v2.9.0
*August 9, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Introduce Signals support<br/>• Support subscribe V2 in C++ & Qt<br/>• Add pubnub_stop() for graceful shutdown when using callback interface |
## v2.8.4
*June 12, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Introduce minimal transaction timer duration<br/>• Use QTime for transaction timer duration |
## v2.8.3
*May 31, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Use TTL from DNS response (cache resolved addresses)<br/>• Better identification of the platform we run on<br/>• Detect authenticating proxy that works incorrectly |
## v2.8.2
*April 29, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Will try other address from (async) DNS response if first one fails<br/>• Will try secondary (async) DNS server if primary doesn't work |
## v2.8.1
*April 29, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Update pubnub_allooc_std.c to pubnub_cancel() changes |
## v2.8.0
*March 18, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Support Message Counts API |
## v2.7.0
*February 19, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Support IPv6 for DNS resolution (mostly for callback interface) |
## v2.6.4
*January 17, 2019*
| Type | Changes |
|------|----------|
| **Fixed** | • URL encode channel name(s) |
## v2.6.3
*January 8, 2019*
| Type | Changes |
|------|----------|
| **Modified** | • Update samples to changes in pubnub_cancel() and other interface changes<br/>• Update samples to use time() instead of clock() as clock() can measure CPU-only time instead of real time<br/>• Update Qt functional tests and make them reliable<br/>• UUID is now part of the Pubnub context (instead of a pointer to it). This makes handling its lifetime easier, yet does not incur much memory increase |
| **Fixed** | • C++ wrapper and Qt did not have proper multithreading support as they did not protect _their_ data. Now that is fixed. |
## v2.6.2
*December 20, 2018*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix memory leak regarding OpenSSL |
## v2.6.1
*December 2, 2018*
| Type | Changes |
|------|----------|
| **Modified** | • Publish can now be GZIPed (if done via POST) |
| **Fixed** | • Publish via POST encrypted could publish garbage and fail |
## v2.6.0
*November 20, 2018*
| Type | Changes |
|------|----------|
| **Modified** | • Publish can now be done via POST |
| **Fixed** | • Several smaller DNS en/de/coding issues fixed |
## v2.5.8
*November 8, 2018*
| Type | Changes |
|------|----------|
| **Modified** | • pubnub_await() in the sync interface now reports PNR_TIMEOUT on, well, (transaction) timeout |
## v2.5.7
*November 4, 2018*
| Type | Changes |
|------|----------|
| **Fixed** | • DNS en/de/coding could fail on some toolchains because of alignment issues. |
## v2.5.6
*November 2, 2018*
| Type | Changes |
|------|----------|
| **Fixed** | • TLS connection timeout was prone to errors due to time synchronisation and such. |
## v2.5.5
*November 1, 2018*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix wrong detection of PNR_TIMEOUT, by reset of TLS connect timer when connection is established. |
## v2.5.4
*October 18, 2018*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix DNS decoding |
## v2.5.3
*October 16, 2018*
| Type | Changes |
|------|----------|
| **Added** | • Add support for pubnub_subscribe_v2() w/filter expressions<br/>• pubnub_cancel() returns is it done, or it just started the cancellation<br/>• Code that is only for TLS/SSL ifdef-ed out when not building w/TLS/SSL<br/>• Functional tests for C++ updated and now run on each commit |
## v2.5.2
*September 10, 2018*
| Type | Changes |
|------|----------|
| **Fixed** | • Improved handling of lost connection while in HTTP Keep-Alive |
| **Added** | • pubnub_free() now implies pubnub_cancel()<br/>• pubnub_cancel() will now call pbnc_fsm() in the sync interface. Combined with previous, this makes it possible to call pubnub_free() in sync interface and have it succeed even if transaction is ongoing. |
## v2.5.1
*August 30, 2018*
| Type | Changes |
|------|----------|
| **Added** | • Removed (unused) option to ignore TLS/SSL errors |
## v2.5.0
*August 28, 2018*
| Type | Changes |
|------|----------|
| **Added** | • Support HTTPS CONNECT proxy<br/>• Can set proxy via IP address and `localhost`<br/>• Adhere to Connection: close from server<br/>• Functional tests improved, can run concurrently |
| **Fixed** | • Possible pointer out of bounds fixed in JSON parser<br/>• MacOS build fixed |
## v2.4.3
*July 25, 2018*
| Type | Changes |
|------|----------|
| **Added** | • Support OpenSSL 1.1.x with callback interface<br/>• Add support for filter expressions on subscribe<br/>• Enable receiving GZIP-ed reply |
## v2.4.2
*July 12, 2018*
| Type | Changes |
|------|----------|
| **Added** | • Enable setting HTTP Keep-Alive use on/off for C++ and Qt |
## v2.4.1
*July 6, 2018*
| Type | Changes |
|------|----------|
| **Added** | • Enable reading system DNS on Windows |
| **Fixed** | • Small fixes in system DNS reading/parsing |
## v2.4.0
*June 14, 2018*
| Type | Changes |
|------|----------|
| **Added** | • Callback interface uses (our own) async DNS<br/>• Enable sending meta data when publishing<br/>• Enable setting `norep` (do not replicate) when publishing (with `store=false`, publish becomes "fire")<br/>• On MacOS, use SO_NOSIGPIPE to avoid SIGPIPE on the socket |
| **Fixed** | • Small fixes for async DNS<br/>• Bad handling of new transaction started in the callback and HTTP keep-alive was active<br/>• Bad handling of error (connection lost) when starting a new transaction on a HTTP kept-alive connection |
## v2.3.3
*April 11, 2018*
| Type | Changes |
|------|----------|
| **Added** | • On Linux, use MSG_NOSIGNAL to avoid SIGPIPE on send()<br/>• Add API to read proxy configuration<br/>• Send up-to-date version info in User-Agent HTTP header |
| **Fixed** | • Avoid (currently harmless) inconsistent locking order<br/>• Fix HTTP GET & CONNECT proxy w/HTTP Keep-Alive |
## v2.3.2
*March 10, 2018*
| Type | Changes |
|------|----------|
| **Fixed** | • Unify default blocking I/O setting to block in sync and non-block in callback interface |
## v2.3.1
*March 8, 2018*
| Type | Changes |
|------|----------|
| **Fixed** | • Read from OpenSSL in a loop, to handle more than one record received at a time<br/>• Fix minor race condition on timer expiry |
## v2.3.0
*March 5, 2018*
| Type | Changes |
|------|----------|
| **Added** | • Use HTTP Keep-alive, where possible |
## v2.2.14
*February 6, 2018*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix removing the first context from the timer list |
## v2.2.13
*February 6, 2018*
| Type | Changes |
|------|----------|
| **Added** | • Support OpenSSL 1.1.0+ (BIO_(s|g)et_conn_ip -> BIO_(s|g)et_conn_address) |
| **Fixed** | • Handle chunks larger than http_buff<br/>• Fix receiving data longer than http_buff at a time |
## v2.2.12
*December 30, 2017*
| Type | Changes |
|------|----------|
| **Fixed** | • Cleanups, fix build issue and warnings on Windows |
## v2.2.11
*October 30, 2017*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix resource leaks in C++ pubnub::futres on Windows |
## v2.2.10
*October 5, 2017*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix build issues on Mac |
## v2.2.9
*October 1, 2017*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix high CPU utilization when network out on Mac |
## v2.2.8
*September 25, 2017*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix off-by-one error |
## v2.2.7
*September 14, 2017*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix handling of recv() errrno on MacOS |
## v2.2.6
*September 10, 2017*
| Type | Changes |
|------|----------|
| **Added** | • Support OpenSSL 1.1.0+ (removed BIO_set_conn_port_int) |
| **Fixed** | • Some logging code was not using proper types |
## v2.2.5
*September 1, 2017*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix potential issue in interpreting UTF-8 char values |
## v2.2.4
*August 30, 2017*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix off-by-one error |
## v2.2.3
*March 9, 2017*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix handling of segmented messages |
| **Added** | • Improve exising and add new logging |
## v2.2.2
*October 12, 2016*
| Type | Changes |
|------|----------|
| **Added** | • Improve parsing of bad publish/subscribe key error<br/>• Add option to turn of SSL/TLS session reuse<br/>• PNR_TIMEOUT no longer resets the time token |
| **Fixed** | • Fixes and improvements of the console sample application |
## v2.2.1
*April 2, 2016*
| Type | Changes |
|------|----------|
| **Fixed** | • Fix C++ pubnub::futres destructor hanging up |
## v2.2.0
*February 22, 2016*
| Type | Changes |
|------|----------|
| **Added** | • First "core feature complete" release |
Added | - Expose functions through the C++ interface to enable or disable system SSL certificate usage when establishing a secure connection.
|
Fixed | - Fixed deadlock for sync polling via
last_result .
|
Fixed | - Define sleep function for Windows builds.
|
Modified | - Guard
unistd inclusion with platform check.
|
Fixed | - Fix bug that UTF8 characters used in some end points were breaking the request format.
|
Fixed | - Fixed memory leak when calling pubnub_free on an initialized PubNub object.
- Fixed socket leak when calling pubnub_free on a PubNub object with an open connection.
- Fixed socket leak when publishing using a context with use_http_keep_alive = 0.
- Fixed crash due to double-free when calling pubnub_free after pbpal_handle_socket_condition encounters a socket error.
|
Modified | - Use recursive semaphore for
mutex lock and unlock in pbpal_mutex.h .
|
Fixed | - Fix issue because of which it was impossible for sync PubNub context version to cancel operation awaited in secondary thread.
|
Modified | - Fix the code for which the compiler emitted warnings during the build for
mbedTLS and ESP_PLATFORM=1 .
|
Added | - Add functions which allow to enable and disable 'smart heartbeat' behavior for automatic heartbeat:
pubnub_enable_smart_heartbeat and pubnub_disable_smart_heartbeat . - Add
pubnub_last_publish_timetoken function to retrieve recently published message high precision timetoken.
|
Fixed | - Fix issue which caused deadlock on secondary thread and as result heartbeat stop.
- Fix signature of
pbntf_init_callback and its usage in Windows dedicated code.
|
Fixed | - Fixed wrong string copy if multiple channels(groups) are provided for
pubnub_set_state . Note that using memcpy instead of strncpy is used intentionally because of the ESP support. - Fixed crash when double comma is provided to
pubnub_set_state as a channels(groups). - Fixed wrong check if the reallocation is required in
pubnub_set_state . - Removed additional allocation of memory for temporary data.
- Changed the amount of bytes allocated based on the provided parameters instead of hardcoded values.
|
Fixed | - Fix
pubnub_reconnect and pubnub_disconnect not to print an error when called within incorrect subscription state. Warning will be printed instead and function won't execute further.
|
Fixed | - Fix crashes that could sometimes happen during unsubscribe due to calling
strlen on null pointers. - Fix
pubnub_fetch_history function when used with crypto api. Change PUBNUB_MAX_URL_PARAMS to 12. - Fix the issue that was causing memory fragmentation fault at the moment of the next automated heartbeat call.
|
Added | - Add
PUBNUB_NTF_RUNTIME_SELECTION flag that allows to select API type at runtime. - Introduce
void* parameter for user data in listeners to let callbacks keep context on demand.
|
Fixed | - Fix the issue that there was an assertion when using App Context functions with
limit set to 100.
|
Added | - Add the ability to set
timetoken (for message catchup) in pubnub_subscribe_v2_options which is used with pubnub_subscribe_v2 .
|
Fixed | - Fix issue which was source of segmentation fault when tried to access memory after it has been freed.
|
Fixed | - Fix issue because of which
signature value in query has been truncated.
|
Added | - Add
status and type support for channel and uuid metadata objects state update API.
|
Added | - Add possibility to replace default log function with a callback provided by the user.
|
Fixed | - Remove the
user_id length restriction for dynamically allocated memory for it.
|
Modified | - Configure
try_compile when building a static library.
|
Added | - Additional flags for C/CPP can be set with:
USER_C_FLAGS / USER_CXX_FLAGS .
|
Fixed | - Fix because of which one of the source files has been missed for Windows.
- Fix issue with unsupported concatenation of sources files / definitions (
+= ).
|
Modified | - Refactor our
Makefiles from different folders and platforms to use include directives to include shared definitions, flags, source files.
|
Added | - Add custom message type support for the following APIs: publish, signal, share file, subscribe and history.
- Add
pubnub_set_ipv4_connectivity and pubnub_set_ipv6_connectivity to pubnub_coreapi to switch preferred connectivity protocol.
|
Fixed | - Make sure that in case of connection close (including because of error) proxy context object will be reset.
|
Fixed | - Fix CMakeLists to build correctly on Windows.
|
Modified | - Prepare CMakeLists to support builds for Arm64 architecture.
|
Added | - Add core Event Engine implementation with the required set of types and methods.
- Add Subscribe Event Engine built atop of the core Event Engine implementation.
- Add the following entities: channel, channel group, uuid and channel metadata objects.
- Add objects to manage subscriptions and provides interface for update listeners.
- Add new event listeners, which make it possible to add listeners to a specific entity or group of entities (though subscription and subscription set).
- Added ability to configure automated retry policies for failed requests.
|
Fixed | - Removed additional null byte character.
|
Added | - Add
delete message API support to the advanced history module.
|
Fixed | - Add the missing
ttl parameter to the pubnub_publish_options for extended publish configuration.
|
Fixed | - Fixed custom
bool type for CMake builds.
|
Fixed | - Fix query values for boolean flags for history endpoint (
include meta , include uuid , include message type and reverse ).
|
Added | - Added
filter and sort parameters to be closer to the other SDKs with object API. - Configurable
bool type.
|
Fixed | - Missing features needed for grant token API in CMakeLIsts.txt.
|
Fixed | - Added missing subscribe v2 crypto implementation.
|
Fixed | - Fixed
cmake build for not ESP32 builds.
|
Added | - Provided support for ESP32 devices via ESP-IDF framework.
- Provided support for MBedTLS library used within esp32 platform.
|
Modified | - Replace
strncpy with strcpy in blocks where it is safer to be used.
|
Added | - Added possibility to use strings in actions API.
|
Modified | pubnub_action_type enum has been deprecated.
|
Fixed | - Fix too small amount of memory allocated for aes cbc algorithm in some cases.
|
Modified | - Add possibility to include address sanitizer in build via CMake.
|
Added | - Provide CMake support.
- Adjust
build.cs unreal engine file for CMake build.
|
Added | - Add
#if switches into files that are related to PubNub features to not rely only on makefiles. [Be careful when update. It's not a breaking change at all but might fail build for custom makefiles!].
|
Fixed | - Handle unencrypted message while getting messages with crypto.
|
Added | - Provided
PUBNUB_EXTERN macro to extern C functions.
|
Fixed | - Fix
pubnub_free() function on not initialised PubNub that can cause exceptions/undefined behaviours.
|
Fixed | - Provide missing
publish() function overload for QT wrapper that allows set publish related options.
|
Added | - Add the
PUBNUB_QT_MOVE_TO_THREAD flag as default to give users the opportunity to manage threads by themselves.
|
Fixed | - Move
pubnub_qt into QT main thread by default to be sure that timers will be run in it.
|
Added | - Update the crypto module structure and add enhanced AES-CBC cryptor.
|
Fixed | - Improved security of crypto implementation by increasing the cipher key entropy by a factor of two.
- Fixed missing return from failed
pbaes256_decrypt_alloc() function.
|
Added | - Provide module files to integrate SDK with Unreal Enigne.
|
Added | - Add
publisher field into pubnub_v2_message .
|
Fixed | - Fixed
flags and region values that always equaled 0 .
|
Fixed | - Conditionally use of using newest openssl API Ipv4 parsing is needed for working with proxy. Include object file with that function for proxy builds.
|
Modified | |
Modified | - Conditionally use
sha256 when build is linked with OpenSSL 3+ version.
|
Added | - Updated QT to version
6.* .
|
Fixed | - Fixed not building QT module.
- Align QT module with current SDK state.
|
Modified | - Removed some states, classes and structs that aren't currently used.
|
Added | - Added pubnub_set_state_ex to support heartbeat.
|
Fixed | - Removed state param from subscribe request.
- Added state param to hearbeat request.
|
Fixed | - Fixed hanging allocated memory after error in
parse_token by cleaning the result memory on cbor error.
|
Modified | - Implemented more tests for
pubnub_token_parse function to increase confidence about that function. - Refactored implementation of some tests' setups.
|
Fixed | - Fixed compilation error for MSVC in
pubnub_parse_token function.
|
Fixed | - Fixed crashing parsing token for not valid values by logging an error and returning
NULL .
|
Fixed | - Fixed wrong pointer reallocation in string concatenation.
- Fixed allocation counter that was not taking to the account recursed allocations.
|
Fixed | - Improved accuracy of the base64 encoding size what fixes buffer underflow in encryption module.
- Fixed undefined behaviours in
pubnub_encrypt_decrypt_iv_sample.c by including some additional checks and variable initialisations.
|
Modified | - Made same base for encrypt functions what makes codes easier to understand and maintain.
|
Fixed | ERR_load_BIO_strings() is deprecated in OpenSSL 3.0. Low-level encoding primitives are also deprecated. EVP_EncodeBlock() is available in all currently supported OpenSSL releases.
|
Added | - Add
user_id configuration option that deprecates uuid ones. - BREAKING CHANGES: now
user_id (old uuid ) is a required property!.
|
Fixed | - Fix memory leak in cpp
parse_token method. - Fix buffer overflow in core
pubnub_parse_token function for some cases. - Fix buffer overflow in core
pubnub_encrypt function for randomized initial vector.
|
Fixed | - Fix wrong parsing uuid in parse_token.
- Fix case sensitive header check.
|
Added | - Implemented Fetch History.
|
Fixed | - Removed extra parenthesis in get_dns_ip function code.
- Added uuid query param to history, set/get state, wherenow, channel-group operations.
|
Fixed | - Handle state for subscribe and resubscribe.
|
Fixed | - Support system name servers in async DNS client.
- Fix multiple memory safety and leak issues.
- Fix slash char encoding for pnsdk.
|
Added | - Add token permissions revoke functionality.
|
Fixed | - Remove body from
signature calculation for requests with DELETE HTTP method.
|
Modified | - Update
.pubnub.yml file with access token revoke and secret key all access.
|
Fixed | - Filter-expr query param typo.
|
Fixed | - Encode = (equal) sign for filter expression.
|
Added | - Implemented PAMv3 support.
|
Fixed | - Handle subscribe error for empty channel-group.
|
Fixed | - Error codes for missing subscribe timetoken.
|
Added | - Added PAMv3 Grant Token support.
|
Added | - BREAKING CHANGE - Added PUBNUB_RAND_INIT_VECTOR to support dynamic IV, default to true.
|
Fixed | - Handling Access Denied server error in Pubnub Access Manager requests.
|
Added | - Implemented Pubnub Access Manager Support.
- Implemented Objects V2. Removed Objects V1.
|
Added | - Added support for Universal Windows(UWP).
|
Fixed | - Fix DNS servers rotation during transaction origin DNS resolution timeout.
|
Modified | - Dynamically allocate memory for
uuid in pubnub_set_uuid function.
|
Fixed | - Properly handle DNS retries and stale HTTP Kept-Alive connections
|
Fixed | - Fix assertion failure while retrying timed out DNS queries with multiple contexts
|
Modified | - Add support for automatic sending of heartbeat messages with sync interface (POSIX and Windows)
|
Modified | - Add support for automatic sending of heartbeat messages on Windows, callback.
|
Modified | - Support automatic sending of heartbeat messages (only on POSIX, callback, for now).
|
Modified | - Introduce Actions API
- Add 'include_meta' parameter to pubnub_history_ex()
|
Fixed | - Fix stopwatch not working after 25 days
|
Fixed | - Restore get/set connection timeout in C++ wrapper
|
Modified | - Retry if DNS server does not respond. Number of retries is a compile-time parameter.
|
Fixed | - In C++, fix transaction finishing before user starts to wait for it to finish.
|
Modified | |
Fixed | - Fix high history (extended/full) handling of 'reverse' and other boolean parameters
|
Modified | - Introduce separate connection timer, to control/limit the duration of DNS resolving and connection establishment, which should be much shorter than full transaction timer, which has to be >5 min for subscribe
|
Fixed | - Fix high CPU load in callback interface when no context, thus socket, is executing a transaction
|
Modified | - Detect TCP/IP connect timeout in callback mode w/sockets - does not seem to work on Windows
- Add set_proxy_none() to pubnub::context
|
Fixed | - Proxy admin functions (set, get) were not protected by mutex/monitor, so caused a race condition
- Setting new proxy might have been ignored until the resolved DNS addresses of the previous proxy expire.
- If all resolved addresses on file expire, we would report transaction failure instead of just asking for new ones.
|
Modified | - Improvements in sockets and DNS error reporting
|
Modified | - Introduce Signals support
- Support subscribe V2 in C++ & Qt
- Add pubnub_stop() for graceful shutdown when using callback interface
|
Modified | - Introduce minimal transaction timer duration
- Use QTime for transaction timer duration
|
Modified | - Use TTL from DNS response (cache resolved addresses)
- Better identification of the platform we run on
- Detect authenticating proxy that works incorrectly
|
Modified | - Will try other address from (async) DNS response if first one fails
- Will try secondary (async) DNS server if primary doesn't work
|
Modified | - Update pubnub_allooc_std.c to pubnub_cancel() changes
|
Modified | - Support Message Counts API
|
Modified | - Support IPv6 for DNS resolution (mostly for callback interface)
|
Fixed | - URL encode channel name(s)
|
Modified | - Update samples to changes in pubnub_cancel() and other interface changes
- Update samples to use time() instead of clock() as clock() can measure CPU-only time instead of real time
- Update Qt functional tests and make them reliable
- UUID is now part of the Pubnub context (instead of a pointer to it). This makes handling its lifetime easier, yet does not incur much memory increase
|
Fixed | - C++ wrapper and Qt did not have proper multithreading support as they did not protect _their_ data. Now that is fixed.
|
Fixed | - Fix memory leak regarding OpenSSL
|
Modified | - Publish can now be GZIPed (if done via POST)
|
Fixed | - Publish via POST encrypted could publish garbage and fail
|
Modified | - Publish can now be done via POST
|
Fixed | - Several smaller DNS en/de/coding issues fixed
|
Modified | - pubnub_await() in the sync interface now reports PNR_TIMEOUT on, well, (transaction) timeout
|
Fixed | - DNS en/de/coding could fail on some toolchains because of alignment issues.
|
Fixed | - TLS connection timeout was prone to errors due to time synchronisation and such.
|
Fixed | - Fix wrong detection of PNR_TIMEOUT, by reset of TLS connect timer when connection is established.
|
Added | - Add support for pubnub_subscribe_v2() w/filter expressions
- pubnub_cancel() returns is it done, or it just started the cancellation
- Code that is only for TLS/SSL ifdef-ed out when not building w/TLS/SSL
- Functional tests for C++ updated and now run on each commit
|
Fixed | - Improved handling of lost connection while in HTTP Keep-Alive
|
Added | - pubnub_free() now implies pubnub_cancel()
- pubnub_cancel() will now call pbnc_fsm() in the sync interface. Combined with previous, this makes it possible to call pubnub_free() in sync interface and have it succeed even if transaction is ongoing.
|
Added | - Removed (unused) option to ignore TLS/SSL errors
|
Added | - Support HTTPS CONNECT proxy
- Can set proxy via IP address and
localhost - Adhere to Connection: close from server
- Functional tests improved, can run concurrently
|
Fixed | - Possible pointer out of bounds fixed in JSON parser
- MacOS build fixed
|
Added | - Support OpenSSL 1.1.x with callback interface
- Add support for filter expressions on subscribe
- Enable receiving GZIP-ed reply
|
Added | - Enable setting HTTP Keep-Alive use on/off for C++ and Qt
|
Added | - Enable reading system DNS on Windows
|
Fixed | - Small fixes in system DNS reading/parsing
|
Added | - Callback interface uses (our own) async DNS
- Enable sending meta data when publishing
- Enable setting
norep (do not replicate) when publishing (with store=false , publish becomes "fire") - On MacOS, use SO_NOSIGPIPE to avoid SIGPIPE on the socket
|
Fixed | - Small fixes for async DNS
- Bad handling of new transaction started in the callback and HTTP keep-alive was active
- Bad handling of error (connection lost) when starting a new transaction on a HTTP kept-alive connection
|
Added | - On Linux, use MSG_NOSIGNAL to avoid SIGPIPE on send()
- Add API to read proxy configuration
- Send up-to-date version info in User-Agent HTTP header
|
Fixed | - Avoid (currently harmless) inconsistent locking order
- Fix HTTP GET & CONNECT proxy w/HTTP Keep-Alive
|
Fixed | - Unify default blocking I/O setting to block in sync and non-block in callback interface
|
Fixed | - Read from OpenSSL in a loop, to handle more than one record received at a time
- Fix minor race condition on timer expiry
|
Added | - Use HTTP Keep-alive, where possible
|
Fixed | - Fix removing the first context from the timer list
|
Added | - Support OpenSSL 1.1.0+ (BIO_(s|g)et_conn_ip -> BIO_(s|g)et_conn_address)
|
Fixed | - Handle chunks larger than http_buff
- Fix receiving data longer than http_buff at a time
|
Fixed | - Cleanups, fix build issue and warnings on Windows
|
Fixed | - Fix resource leaks in C++ pubnub::futres on Windows
|
Fixed | - Fix high CPU utilization when network out on Mac
|
Fixed | - Fix handling of recv() errrno on MacOS
|
Added | - Support OpenSSL 1.1.0+ (removed BIO_set_conn_port_int)
|
Fixed | - Some logging code was not using proper types
|
Fixed | - Fix potential issue in interpreting UTF-8 char values
|
Fixed | - Fix handling of segmented messages
|
Added | - Improve exising and add new logging
|
Added | - Improve parsing of bad publish/subscribe key error
- Add option to turn of SSL/TLS session reuse
- PNR_TIMEOUT no longer resets the time token
|
Fixed | - Fixes and improvements of the console sample application
|
Fixed | - Fix C++ pubnub::futres destructor hanging up
|
Added | - First "core feature complete" release
|