Releases: r-lib/nanonext
Releases · r-lib/nanonext
nanonext 1.6.0
New Features
serial_config()
now accepts vector arguments to register multiple custom serialization configurations.- Adds
ip_addr()
for returning the local network IPv4 address of all network adapters, named by interface. - Adds
pipe_id()
for returning the integer pipe ID for a resolved 'recvAio'. - Adds
write_stdout()
which performs a non-buffered write tostdout
, to avoid interleaved messages when used concurrently by different processes. - Adds
read_stdin()
which performs a read fromstdin
on a background thread, relayed via an 'inproc' socket so that it may be consumed viarecv()
orrecv_aio()
. request()
gains integer argumentid
. This may be specified to have a special payload sent asynchronously upon timeout (to communicate with the connected party).
Updates
listen()
anddial()
argumenterror
is replaced withfail
to specify the failure mode - 'warn', 'error', or 'none' to just return an 'errorValue'.- Any existing usage of
error = TRUE
will work only until the next release.
- Any existing usage of
- Partial matching is no longer enabled for the
mode
argument to send/receive functions. send_aio()
without keeping a reference to the return value no longer potentially drops sends (thanks @wch, #129).pipe_notify()
no longer requires any particular sequencing of closing the socket and garbage collection of the socket / 'conditionVariable' (#143).- More robust interruption on non-Windows platforms when
tools::SIGINT
is supplied to theflag
argument ofpipe_notify()
(thanks @LennardLux, #97). - Installation from source specifying 'INCLUDE_DIR' and 'LIB_DIR' environment variables works again, correcting a regression in v1.5.2 (#104).
- Windows bi-arch source builds for R <= 4.1 using rtools40 and earlier work again (regression since v1.5.1) (thanks @daroczig, #107).
- Bundled 'libnng' 1.10.2 pre-release updated with latest patches.
- Package is re-licensed under the MIT license.
nanonext 1.5.2
Updates
write_cert()
argument 'cn' now defaults to '127.0.0.1' instead of 'localhost'.messenger()
now exits cleanly, correcting a regression in nanonext 1.5.0 (#87).- Promises created from 'recvAio' and 'ncurlAio' now reject in exactly the same way whether or not they were resolved at time of creation (#89).
- Bundled 'libnng' updated to 1.10.2 pre-release.
- With this library version, a 'req' socket with option 'req:resend-time' set as 0 now frees the message as soon as the send has completed without waiting for the reply.
nanonext 1.5.1
Updates
pipe_notify()
drops argument 'cv2' for signalling 2 condition variables on one pipe event. Use signal forwarders%~>%
instead.- The abillity to
lock()
andunlock()
sockets is removed. - Renders it safe to serialize 'nano' and 'aio' objects - they will be inactive when unserialized.
- Unified Windows build system now compiles 'libmbedtls' and 'libnng' from source even on R <= 4.1 using Rtools40 or earlier.
- Minimum supported 'libnng' version increased to 1.9.0.
nanonext 1.5.0
Library Updates
- Bundled 'libnng' updated to latest 1.10.1 release.
- Bundled 'libmbedtls' updated to latest 3.6.2 LTS branch release.
Updates
nano()
updated with the 'poly' protocol, with 'pipe' argument enabled for the send methods.write_cert()
no longer displays a status message when interactive (thanks @wlandau, #74).- Removes partial matching when using
$
,[[
or[
on an object inheriting from class 'nano'. - Fixes a rare hang on socket close that was possible on Windows platforms for IPC connections (#76).
nanonext 1.4.0
New Features
- New interface to Pipes moves to using integer pipe IDs rather than Pipe (external pointer) objects:
send()
andsend_aio()
gain the argument 'pipe' which accepts an integer pipe ID for directed sends (currently only supported by Sockets using the 'poly' protocol).- A 'recvAio' now records the integer pipe ID, where successful, at
$aio
upon resolution. - Pipe objects (of class 'nanoPipe') are obsoleted.
- Adds
monitor()
andread_monitor()
for easy monitoring of connection changes (pipe additons and removals) at a Socket.
Updates
collect_pipe()
is removed given the pipe interface changes.
nanonext 1.3.2
Updates
- Hotfix for CRAN (updates to tests only).
nanonext 1.3.1
Updates
- Performs interruptible 'aio' waits using a single dedicated thread, rather than launching new threads, for higher performance and efficiency.
- Performance enhancements for 'ncurlAio' and 'recvAio' promises methods.
- Updates bundled 'libnng' to v1.9.0 stable release.
- The package has a shiny new hex logo.
nanonext 1.3.0
New Features
- Adds support for threaded dispatcher in
mirai
. - Adds 'recvAio' method for
promises::as.promise()
andpromises::is.promising()
to enable 'recvAio' promises.
Updates
serial_config()
now validates all arguments and returns them as a list. Full validation is also performed when the option is set for additional safety.- Warning messages for unserialization or conversion failures of received data are now suppressable.
- Upgrades
reply()
to always return even when there is an evaluation error. This allows it to be used safely in a loop without exiting early, for example. - Removes deprecated and defunct
next_config()
. - Internal performance enhancements.
- Updates bundled 'libnng' v1.8.0 with latest patches.
nanonext 1.2.1
Updates
- Re-optimizes custom serialization (whilst addressing CRAN clang-UBSAN checks).
nanonext 1.2.0
New Features
- Adds
serial_config()
to create configurations that can be set on Sockets to make use of custom serialization and unserialization functions for reference objects (plugs into the 'refhook' system of native R serialization). 'opt<-'()
now accepts the special option 'serial' for Sockets, which takes a configuration returned fromserial_config()
.- Adds the 'poly' protocol for one-to-one of many socket connections (NNG's pair v1 polyamorous mode).
- Adds
is_ncurl_session()
as a validation function. - Adds
collect_pipe()
for obtaining the underlying Pipe from a 'recvAio'. This affords more granular control of connections, with the ability to close individual pipes. send_aio()
now accept a Pipe to direct messages to a specific peer for supported protocols such as 'poly'.
Updates
- Send mode 'next' is folded into the default 'serial', with custom serialization functions applying automatically if they have been registered.
- The session-wide
next_config()
is now deprecated and defunct, in favour of the newserial_config()
. ncurl_session()
now returns 'errorValue' 7 (Object closed) when attempting to transact over a closed session or closing a closed session, rather than throwing an error.collect_aio()
andcollect_aio_()
no longer append empty names when acting on lists of Aios where there were none in the first place.- Removes hard dependency on
stats
andutils
base packages. - Requires R >= 3.6.