Releases: shikokuchuo/nanonext
Releases · shikokuchuo/nanonext
nanonext 0.13.5
Updates
- Removes SHA-2 cryptographic hash functions (please use the streaming implementation in the secretbase package).
nanonext 0.13.4
New Features
- An integer file descriptor is appended to 'nanoSockets' as the attribute 'fd' - see updated documentation for
socket()
.
nanonext 0.13.3
New Features
next_config()
gains argument 'class' and 'vec', enabling custom serialization for all reference object types supported by R serialization.
Updates
- Upgrades bundled 'libnng' to v1.7.3.
nanonext 0.13.2
Updates
- Fixes cases of 'built for newer macOS version than being linked' installation warnings on MacOS.
- Fixes other compiler warnings with additional flags enabled on the CRAN M1mac test machine.
- Upgrades bundled 'libnng' to v1.7.2.
CRAN release 0.13.0
nanonext 0.13.0
Updates
Please note the following potentially breaking changes, and only update when ready:
- Default behaviour of
send()
andrecv()
aligned to non-blocking for both Sockets and Contexts (facilitated by synchronous context sends in NNG since v1.6.0). ncurl()
,ncurl_aio()
andncurl_session()
now restrict 'header' and 'response' arguments to character vectors only, no longer accepting lists (for safety and performance).- Unserialization / decoding errors where the received message cannot be translated to the specified mode will output a message to stderr, but no longer generate a warning.
- SHA functions now skip serialization headers for serialized R objects (ensuring portability as these contain R version and encoding information). This means that, for serialized objects, hashes will be different to those obtained using prior package versions.
sha1()
is removed as a hash option.
Other changes:
messenger()
specifying 'auth' now works reliably on endpoints using different R versions/platforms due to the above hashing portability fix.- Internal memory-efficiency and performance enhancements.
- Upgrades bundled 'libmbedtls' to v3.5.2.
CRAN release 0.12.0
nanonext 0.12.0
This is a major performance and stability release bundling the 'libnng' v1.7.0 source code.
New Features
pipe_notify()
argument 'flag' allows supplying a signal to be raised on a flag being set upon a pipe event.
Updates
- More compact print methods for 'recvAio', 'sendAio', 'ncurlAio', 'ncurlSession' and 'tlsConfig' objects.
random()
now explicitly limits argument 'n' to values between 0 and 1024.next_config()
now returns a pairlist (of the registered serialization functions) rather than a list (for efficiency).- Using mode 'next', serialization functions with incorrect signatures are now simply ignored rather than raise errors.
- 'nanoStream' objects simplified internally with updated attributes 'mode' and 'state'.
- Deprecated function
.until()
is removed. - Eliminates potential memory leaks along certain error paths.
- Fixes bug which prevented much higher TLS performance when using the bundled 'libnng' source.
- Upgrades bundled 'libnng' to v1.7.0 release.
CRAN release 0.11.0
nanonext 0.11.0
This is a major stability release bundling the 'libnng' v1.6.0 source code.
New Features
- Introduces
call_aio_()
, a user-interruptible version ofcall_aio()
suitable for interactive use. - Introduces
wait_()
anduntil_()
user-interruptible versions ofwait()
anduntil()
suitable for interactive use. - Implements
%~>%
signal forwarder from one 'conditionVariable' to another.
Updates
next_config()
replacesnextmode()
with the following improvements:- simplified 'refhook' argument takes a pair of serialization and unserialization functions as a list.
- registered 'refhook' functions apply to external pointer type objects only.
- no longer returns invisibly for easier confimation that the correct functions have been registered.
until()
updated to be identical to.until()
, returning FALSE instead of TRUE if the timeout has been reached.reap()
updated to no longer warn in cases it returns an 'errorValue'.pipe_notify()
arguments 'add', 'remove' and 'flag' now default to FALSE instead of TRUE for easier selective specification of the events to signal.- Fixes regression in release 0.10.4 that caused a potential segfault using
ncurl()
with 'follow' set to TRUE when the server returns a missing or invalid relocation address. - The weak references interface is removed as 'non-core'.
- Upgrades bundled 'libnng' to v1.6.0 release.
- Upgrades bundled 'libmbedtls' to v 3.5.1.
CRAN release 0.10.4
nanonext 0.10.4
New Features
nextmode()
configures settings for send mode 'next'. Registers hook functions for custom serialization and unserialization of reference objects (such as those accessed via an external pointer)..until()
contains revised behaviour for this synchronisation primitive, returning FALSE instead of TRUE if the timeout has been reached. This function will replaceuntil()
in a future package version.
Updates
lock()
supplying 'cv' has improved behaviour which locks the socket whilst allowing for both initial connections and re-connections (when the 'cv' is registered for both add and remove pipe events).- Improves listener / dialer logic for TLS connections, allowing inter alia synchronous dials.
request()
argument 'ack' removed due to stability considerations.- Fixes memory leaks detected with valgrind.
- Upgrades bundled 'libmbedtls' to v 3.5.0.
CRAN release 0.10.2
nanonext 0.10.2
Updates
- Addresses one case of memory access error identified by CRAN.
CRAN release 0.10.1
nanonext 0.10.1
New Features
request()
adds logical argument 'ack', which sends an ack(nowledgement) back to the rep node upon a successful async message receive.reap()
implemented as a faster alternative toclose()
for Sockets, Contexts, Listeners and Dialers - avoiding S3 method dispatch, hence works for unclassed external pointers created by.context()
.random()
updated to use the Mbed TLS library to generate random bytes. Adds a 'convert' argument for specifying whether to return a raw vector or character string.- Adds 'next' as a mode for send functions, as a 100% compatible R serialisation format (may be received using mode 'serial').
Updates
write_cert()
has been optimised for higher efficiency and faster operation.send()
andrecv()
over contexts now use more efficient synchronous methods where available.- Fixes package installation failures where the R default C compiler command contains additional flags (thanks @potash #16).
- Performance improvements due to simplification of the internal structure of 'aio' objects.
- Rolls forward bundled 'libnng' to v1.6.0 alpha (a54820f).