aboutsummaryrefslogtreecommitdiff
path: root/RELEASE_NOTES.md
diff options
context:
space:
mode:
Diffstat (limited to 'RELEASE_NOTES.md')
-rw-r--r--RELEASE_NOTES.md139
1 files changed, 139 insertions, 0 deletions
diff --git a/RELEASE_NOTES.md b/RELEASE_NOTES.md
new file mode 100644
index 00000000..c2b83483
--- /dev/null
+++ b/RELEASE_NOTES.md
@@ -0,0 +1,139 @@
+# RELEASE NOTES FOR NNG v1.8.x
+
+This document has the following sections:
+
+- Notable Changes
+- End of Feature Announcements
+
+## Notable Changes (since 1.8.0)
+
+Support is added for WolfSSL and TLS 1.3.
+
+Support is added for TLS PSK.
+
+An undocumented, but public, API for UDP is provided.
+
+Mimimum CMake version is 3.15.
+
+A new nng_id_visit API is provided.
+
+Significant bug fixes, especially race conditions around close/shutdown.
+
+## Notable Changes (since 1.7.0)
+
+A new option, `NNG_ENABVLE_COMPAT` is present to allow removing
+the compatibility layer from the build. (This defaults to `ON`.)
+Note that a future release will likely drop support for the compatibility
+layer altogether!
+
+CMake related improvements should reduce friction when building for TLS.
+
+New `NNG_ENABLE_IPV6` option to conditionally enable IPv6 support.
+It is off by default.
+
+A new logging framework, `nng_log_*` is provided to provide more debuggability,
+especially useful for TLS debugging.
+
+## Notable Changes (since 1.6.0)
+
+A new compile time setting, `NNG_MAX_POLLER_THREADS` is introduced,
+with a default value of 8, and will limit the number of threads
+used for pollers that are concurrent (currently only Windows).
+Additionally, for single core systems only two threads will be started
+instead of four.
+
+A new supplemental API, nng_id_map(3), is made available.
+This exposes the internal ID hash API NNG uses mapping integer IDs
+(like socket IDs) to data structures.
+It also brings back support for 64-bit IDs.
+See bug #1740.
+
+Setting the `NNG_OPT_RECVMAXSZ` setting no longer affects pipes
+that are already established. The old behavior was undocumented
+and racy. Please set this setting before starting any listeners
+or dialers.
+
+A new transport (experimental), for `socket://` is available.
+This allows one to create a connection using sockets created
+with `socketpair()` (or the new `nng_socket_pair()` supplemental API),
+which can help use cases where file descriptors are passed between
+processes or inherited via `fork()`. This API is only available on
+Linux. It does have somewhat different semantics for establishing
+the connection, so please see the manual page for `nng_socket(5)` for more information.
+
+WebSocket close is fixed to conform to RFC 6455, sending the
+close frame, and waiting to receive the close frame from the
+peer. This allows websocket based connections to ensure that
+data messages are fully delivered before shutting down.
+See bugs #1733, #1734 and #1735.
+Thanks @alawn-wang for the inspiration and a first
+draft of the change.
+
+The REQ and SURVEYOR protocols were fixed to improve scalability
+when many clients or many contexts are used. As part of this change,
+a new option, `NNG_OPT_REQ_RESENDTICK` is available to adjust how
+often we check for expired requests.
+
+A new ability to override compile-time settings for thread counts
+is available. This facility is considered experimental, and is not
+documented in manual pages -- and is subject to change without notice.
+Please see nng_init_set_parameter() in the nng.h header file. The
+values that can be tuned are listed there along with comments
+describing their use. See bug #1572.
+
+As part of the fixes for #1572, tunable values for setting fixed
+values (rather upper limits) for thread counts are now exposed properly
+via CMake variables. These are `NNG_NUM_EXPIRE_THREADS` and `NNG_NUM_TASKQ_THREADS`.
+
+A new API, `nng_aio_set_expire()` is introduced as a complement to
+`nng_aio_set_timeout()`. This provides absolute expiration times,
+which may be easier in circumstances involving multiple actions such
+as common state-machine based idioms.
+
+A bug which caused TLS connections to spin on accept, causing high
+CPU usage, is fixed. (See bug #1673)
+Various minor documentation fixes were made, some contributed by
+Patrik Wenger <patrik.wenger@mindclue.ch>.
+
+## End of Feature Announcements
+
+### Windows Legacy Support
+
+As announced in 1.6.0,
+NNG no longer officially claims support for Windows Vista, Windows 7, Windows 8, or Windows 8.1.
+We have no ability to build or test these versions, and Microsoft no longer supports them.
+Continued use of these systems may be possible, but future changes may break
+compatibility with these systems without further notice.
+
+### Windows Named Pipe Support Changes
+
+A future release of NNG may make the ipc:// URL format operate over UNIX domain sockets by default.
+We plan to do this for the other projects we control, such as mangos, as well.
+
+Should this occur, it will be breaking for Windows versions older than Windows 10 17063.
+
+### macOS Legacy Support
+
+As announced in 1.6.0,
+NNG no longer officially supports macOS versions older than 10.12.
+Future versions of NNG may depend on features not available on versions of macOS older than 10.12.
+
+### Documentation Restructuring
+
+A future release of NNG may restructure the documentation to make it more
+approachable for more users. This would break the organization as UNIX manual
+pages, and would also drop the ability to format them as UNIX nroff source.
+The best way to view this documentation is on the NNG website, or with the PDF or printed manual.
+
+### ZeroTier Incompatible Changes
+
+A future release of NNG may break compatibility for applications built using earlier versions
+of NNG when using the ZeroTier transport. ZeroTier support is an experimental feature.
+
+### Pair1 Polyamorous Mode
+
+A future release of NNG may remove Pair 1 Polyamorous support, but _only_ if a suitable
+replacement is provided. Pair1 Polyamorous mode is an experimental feature.
+
+Alternatively we may change the Pair1 wire protocol in a way that breaks compatibility with
+earlier versions of Pair1 Polyamorous mode.