v2.0.0-alpha.1
Pre-release
Pre-release
Summary
This is the first "alpha" release of 2.0.0. Note that this is very much a work in progress, and stability is not guaranteed.
There will be more breaking changes coming. But to help with early adoption and testing, this is posted.
Reminder: If you want stability or need to use in production, please consider the "stable" branch instead.
The main changes here involve these major areas:
- New UDP transport
- Performance enhancements - fewer allocations, fewer locks -- this is an ongoing effort
- Documentation changing to mdbook
- Removal of some legacy support and refactoring some others to be less error prone
This version is NOT compatible with NNG 1.x at an API level -- there are breaking changes so please see the migration guide https://github.com/nanomsg/nng/blob/main/docs/ref/migrate/nng1.md.
Known Issues
- The docs are a work in progress ... its only about halfway through the mdbook conversion so far
- The optional ZeroTier transport is utterly broken (it likely won't even compile) - plan is to remove it, possibly rewriting it entirely later
- During tests, it is possible for an occasional object to get leaked (TCP test sometimes leaks a connection object) -- there are races during finalization... note that this is not a "recurring" leak, so its pretty benign.
- If you call
nng_fini
to quickly after setting things up, websocket/http may crash with use after free. The workaround right now is to wait a few dozen msec before callingnng_fini
(or don't call it at all for a regular application!). This will be fixed by better use of reference counting in the near future.
What's Changed
- Gdamore/udp by @gdamore in #1879
- fix broken link to BUILD_TLS by @jan-ruzicka-c in #1872
- Fixes Compiler Warnings (Windows) by @shikokuchuo in #1877
- posix: add getentropy() based RNG by @gdamore in #1880
- Gdamore/oldeps by @gdamore in #1881
- Bump checkout action to v4. by @gdamore in #1882
- Actually enable UDP. Also fix some UWYI includes. by @gdamore in #1883
- fix aio test failures on darwin by @gdamore in #1884
- Bump codecov to v4 by @gdamore in #1885
- Missed config option for UDP by @gdamore in #1886
- udp: fix leaks on EP destroy by @gdamore in #1887
- UDP: add some statistics by @gdamore in #1889
- Gdamore/udp stats tests by @gdamore in #1891
- UDP: burst testing to improve coverage by @gdamore in #1892
- Gdamore/statslock by @gdamore in #1894
- Use
const
for nng_stat when possible. by @gdamore in #1895 - remove legacy support for configuration of transport options on socket by @gdamore in #1897
- Remove the libnanomsg compatibility layer by @gdamore in #1898
- Gdamore/tls api by @gdamore in #1899
- Gdamore/stream set gone by @gdamore in #1901
- NNI_GETXX macros are brittle due to casting mistake. by @gdamore in #1904
- NNG_OPT_RECVFD and NNG_OPT_SENDFD converted to functions. by @gdamore in #1905
- Gdamore/no ctx addr by @gdamore in #1906
- Gdamore/socket by @gdamore in #1908
- Replace NNG_OPT_SUB_SUBSCRIBE/UNSUBSCRIBE with functions. by @gdamore in #1909
- Gdamore/no untyped pipe get by @gdamore in #1910
- Gdamore/no ctx untyped by @gdamore in #1911
- Socket option handling clean ups for endpoints. by @gdamore in #1912
- Gdamore/new acutest by @gdamore in #1913
- Gdamore/udp burst tune by @gdamore in #1916
- UDP: prefer new packets (drop older) by @gdamore in #1917
- Gdamore/ipc test by @gdamore in #1918
- Gdamore/more tests by @gdamore in #1919
- Add matrix of TLS engines, including wolfSSL by @gdamore in #1923
- TLS configuration changed to use discret _set_tls and _get_tls functi… by @gdamore in #1925
- websocket: Do not allow a listener or dialer to change TLS while running by @gdamore in #1926
- New init by @gdamore in #1927
- tls: remove support for TLS 1.0 and 1.1. by @gdamore in #1931
- tls: add ecdsa test case by @gdamore in #1932
- remove NNG_OPT_SOCKNAME (and socket names altogether) by @gdamore in #1933
- tcp/tls: Remove support for local interface address in dialer URLs by @gdamore in #1934
- fix parsing bug in abstract URLs by @gdamore in #1935
- intern URL scheme by @gdamore in #1936
- Nng url no alloc by @gdamore in #1937
- Url accessors by @gdamore in #1938
- Gdamore/more opt url by @gdamore in #1939
- Tls mutual test by @gdamore in #1940
- Ipc tests by @gdamore in #1941
- No reqctx test by @gdamore in #1942
- option parser: test for no clustering support by @gdamore in #1943
- http: constify some functions by @gdamore in #1944
- No more sec desc option by @gdamore in #1945
- Remove all the get_ptr option accessors. by @gdamore in #1946
- Tls no extra resolver by @gdamore in #1947
- Nuts tests by @gdamore in #1952
- Http server race by @gdamore in #1953
- windows ipc: check the return value of nni_aio_schedule by @gdamore in #1956
- sockfd: check the result of nni_aio_schedule by @gdamore in #1957
- Htnuts by @gdamore in #1962
- fixes #1959 Occasional SIGSEGV in nng_recv_aio() on a respondent socket by @aleksejsolovev in #1960
- fixes #1408 Reference count as a first class type by @gdamore in #1963
- Add forgotten license boilerplate by @aleksejsolovev in #1965
- Aio reap noreschedule by @gdamore in #1966
- aio: stop has to wait for expirations to finish by @gdamore in #1967
- reap: thread exits prematurely after reinitialization by @gdamore in #1968
- Pipe null by @gdamore in #1969
- udp: hang on close after sending too large by @gdamore in #1970
- aio: make sure aio is initialized before certain operations by @gdamore in #1971
- ctx: Simplify handling for closed contexts. by @gdamore in #1972
- performance: reference counters can use relaxed order when incrementing by @gdamore in #1973
- websocket: inline the aios by @gdamore in #1974
- nuts: try to avoid address in use for most tests by @gdamore in #1975
- device: fixes for socket holds and leaking aio data by @gdamore in #1977
- aio: task_abort was a mistake by @gdamore in #1978
- Listener inline by @gdamore in #1981
- Windows iopc no close by @gdamore in #1984
- ipc transport: convert to using inline data structures by @gdamore in #1982
- Tcp stop by @gdamore in #1985
- streams: add explicit stop functions by @gdamore in #1987
- Http aio init by @gdamore in #1988
- Tcptran aio inline by @gdamore in #1989
- Inproc ref by @gdamore in #1990
- Tls inline 2 by @gdamore in #1991
- Websocket inline by @gdamore in #1992
- Websock stop by @gdamore in #1994
- syslog: test for existence by @gdamore in #1995
- POSIX poller: add support for select, and for choosing the poller by @gdamore in #1996
- Expose pfd by @gdamore in #1998
- Poll alloc by @gdamore in #1999
- workflows: add pollq and make build debug for backtraces by @gdamore in #2000
- workflows: only generate docs when appropriate, and don't do tests wh… by @gdamore in #2001
- freebsd workflow by @gdamore in #2002
- OmniOS tests (this covers illumos and Solaris mostly, which uses the … by @gdamore in #2003
- HTTP: intern the version and avoid allocation by @gdamore in #2005
New Contributors
- @jan-ruzicka-c made their first contribution in #1872
Full Changelog: v1.9.0...v2.0.0-alpha.1