Releases: nanomsg/nng
Version 1.2.4 Bug Fix Release
This fix contains an URGENT bug fix, and all users using v1.2.x where x <= 3 should upgrade at their earliest opportunity.
The bugs fixed are:
- #1132 Masking error in LMQ leads to corruption
- #1131 (openindiana) compile error
- fix reported versions in nng.h and CMakeLists.txt
The critical bug here is #1132 which leads to use after free heap corruption, and unpredictable results once the receive or send queue wraps. The other two bugs are less critical, but should help Solaris and illumos users, and correct a bug where we reported wrong the ABI version (which could cause compatibility problems when mixing older versions with v1.2.x.)
Version 1.2.3 Bug Fix Release
This release fixes a number of important bugs. It's highly recommended that folks using v1.2.0, v1.2.1, or v1.2.2 upgrade to this release.
Specifically fixed:
- #1079 Use after free in tcp dialer
- #1075 WebSocket use after free
- #1064 Potential deadlock in statistics code
- #1065 resolver leaks work structures
There were also several fixes to the test suite included with these changes.
Version 1.2
Version 1.2 is a minor feature release of NNG.
- Notably it includes support for non-SP protocol usages -- for example NNG can be used to make generic websocket or HTTP applications now.
- The default maximum receive size is lifted. (If you use NNG on an untrusted network, please set an explicit limit instead of relying on the defaults!)
- Substantial work on performance. Most protocols should see a nice boost.
- Numerous bugs fixed.
Hopefully the next release won't be so far in the future. Thanks to everyone for their patience.
Version 1.2.2 Bug Fix Release
This release fixes two bugs that were affecting some people:
-
Crashes in the websocket code. (#986) Folks using the websocket transport are highly encouraged to update. This bug could have led to either application crashes or data corruption in transit.
-
Windows client connections not supporting NNG_OPT_LOCADDR (#1062)
This release also includes changes to the way tests are created and managed, so that more tests are run, they are easier to write, easier to collect coverage for, and easier to diagnose when they fail. This won't impact built libraries, but it should have a big improvement on the overall quality of the library over time. This will be an ongoing work.
We're also making better use of GitHub actions to test on more systems, and more configurations. While this has helped to uncover some real bugs in the library, it has also started uncovering brittleness in the test suites themselves. This is the source of a lot of false failures; we will continue working on this going forward.
Version 1.2.1
Version 1.2.1 is mainly being released to correct a problem with the semantic versioning in the shared library interfaces. It also corrects a problem that may have affect non-mainstream platforms, without support for atomic operations.
Other changes should not affect library users.
Version 1.1.1
Version 1.1.1 patch release.
This fixes a few problems with 1.1.0.
- The version number at build time was misreported as 1.0.1. It will now be 1.1.1.
- Support for use in CMake scenarios involving add_subdirectory
- Fix for the bug report URL if NNG crashes
- Fix for a crash if a remote websocket peer sends PING requests
Version 1.1.0
There are numerous bug fixes and improvements in this since 1.0.1.
DNS resolution is done asynchronously at dial time, leading to better self healing in the face of changing DNS records (and the possibility to use DNS for round-robin load balancing.)
Better peer identification is possible with IPC based transports.
The HTTP framework has better support for cancellation, and the HTTP client has a much friendlier ability to execute transactions. Additionally, the HTTP client can now support servers that insist on sending chunked transfer encodings.
The ZeroTier transport received a lot of work, so that it is far more stable, and supports more properties relating to peer identification. There are (undocumented) options to tune the local IP addresses used in ZeroTier as well. Also, the entire configuration process for ZeroTier is much saner.
A statistics API is available to obtain statistics about the application. Unfortunately, only a few statistics have been added -- more will be added in coming releases.
More modern CMake style is used to provide much more correct use from CMake projects - it should no longer be necessary to call find_package(Threads) or similar.
Better support for more platforms (older versions of Linux, Alpine Linux, QNX).
A variety of stability fixes and performance improvements.
A number of documentation improvements and corrections have been made as well.
1.1.0 Release Candidate
This is a release candidate for 1.1.0.
There are numerous bug fixes and improvements in this since 1.0.1.
DNS resolution is done asynchronously at dial time, leading to better self healing in the face of changing DNS records (and the possibility to use DNS for round-robin load balancing.)
Better peer identification is possible with IPC based transports.
The HTTP framework has better support for cancellation, and the HTTP client has a much friendlier ability to execute transactions. Additionally, the HTTP client can now support servers that insist on sending chunked transfer encodings.
The ZeroTier transport received a lot of work, so that it is far more stable, and supports more properties relating to peer identification. There are (undocumented) options to tune the local IP addresses used in ZeroTier as well. Also, the entire configuration process for ZeroTier is much saner.
A statistics API is available to obtain statistics about the application. Unfortunately, only a few statistics have been added -- more will be added in coming releases.
More modern CMake style is used to provide much more correct use from CMake projects - it should no longer be necessary to call find_package(Threads) or similar.
A number of documentation improvements have been made as well.
Version 1.0.1
This is a bug fix release, and contains fixes for several important bugs. Users of macOS and BSD operating systems should see a huge reduction in CPU overhead as a critical kqueue processing bug is fixed. The IPC transport also got a critical fix to eliminate accidental deletion of the socket incorrectly.
There is one feature that snuck in (my bad!) which is that it is now possible to customize the HTTP error page -- see nng_http_server_set_error_file() or nng_http_server_set_error_page() for details.
A few other minor bugs were fixed as well, including a leak in the URL, an inability to tune dialer reconnection timers individually.
More stabilization work and feature work is pending, but these issues are important enough that we felt it worthwhile to push this release out while we finish up the work on the other issues.
Version 1.0.0
This is the first "stable" release of NNG. While there are many more things to do in NNG, we are recommending users being transitioning to NNG away from nanomsg.