Releases: r-lib/nanonext
Releases · r-lib/nanonext
nanonext 1.6.2
Updates
- Fixes extremely rare cases of
unresolvedValue
being returned by fulfilled promises (#163).
nanonext 1.6.1
Updates
ncurl()
and variants now accept request data supplied as a raw vector (thanks @thomasp85, #158).cv_reset()
now correctly resets the flag in the case a flag event has already been registered withpipe_notify()
.- The previous
listen()
anddial()
argumenterror
, removed in v1.6.0, is now defunct. - The previous
serial_config()
argumentvec
, unutilised since v1.6.0, is removed. - Fixes package installation with 'libmbedtls' in a non-standard filesystem location, even if known to the compiler (thanks @tdhock, #150).
- Bundled 'libnng' updated to 1.11.0 release.
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.