Releases: shikokuchuo/nanonext
Releases · shikokuchuo/nanonext
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.
nanonext 1.1.1
New Features
- Adds 'ncurlAio' method for
promises::as.promise()
andpromises::is.promising()
to enable 'ncurlAio' promises. - Adds
x[]
as a new method for an Aiox
equivalent tocollect_aio_(x)
, which waits for and collects the data.
Updates
request()
specifying argument 'cv' other than NULL or a 'conditionVariable' will cause the pipe connection to be dropped when the reply is (asynchronously) completed.- Removes deprecated functions
strcat()
,recv_aio_signal()
andrequest_signal()
. - Drops
base64enc()
andbase64dec()
in favour of those from the {secretbase} package. msleep()
now ignores negative values rather than taking the absolute value.later
is now relaxed to a soft 'suggests' dependency (only required if using promises).promises
is added as a soft 'enhances' dependency.
nanonext 1.1.0
New Features
- Adds
collect_aio()
andcollect_aio_()
to wait for and collect the data of an Aio or list of Aios. unresolved()
,call_aio()
,call_aio()_
andstop_aio()
now all accept a list of Aios.pipe_notify()
gains the ability to specify 'cv' as NULL to cancel previously-set signals.ncurl_aio()
modified internally to support conversion of 'ncurlAio' to event-driven promises.
Updates
recv_aio()
andrequest()
add argument 'cv' allowing optional signalling of a condition variable. The separate functionsrecv_aio_signal()
andrequest_signal()
are deprecated.strcat()
is deprecated as considered non-core - it is recommended to replace usage withsprintf()
.status_code()
now returns the status code combined with the explanation as a character string.- Performance enhancements for
unresolved()
,call_aio()
andcall_aio_()
. - Updates bundled 'libnng' v1.8.0 with latest patches.
nanonext 1.0.0
New Features
- Integrates with the
later
package to provide the foundation for truly event-driven (non-polling) promises (thanks @jcheng5 for the initial prototype in #28), where side-effects are enacted asynchronously upon aio completion.request()
andrequest_signal()
modified internally to support conversion of 'recvAio' to event-driven promises.later
dependency ensures asynchronous R code is always run on the main R thread.later
is lazily loaded the first time a promise is used, and hence does not impact the load time ofnanonext
or dependent packages.
Updates
stop_aio()
now causes the 'aio' to resolve to an 'errorValue' of 20 (Operation canceled) if successfully stopped.nng_error()
now returns the error code combined with the message as a character string.- Integer file descriptors are no longer appended to 'nanoSocket' attributes.
- Adds 'xz' to SystemRequirements (as was the case previously but not explicitly specified) (thanks @gaborcsardi).
- Re-aligns bundled 'libmbedtls' to v3.5.2 and optimises bundle size.
- Updates minimum 'libnng' version requirement to v1.6.0.
- Upgrades bundled 'libnng' to v1.8.0.
nanonext 0.13.6
Updates
- Safer and more efficient memory reads for 'next' serialization corrects for CRAN UBSAN-clang check errors.
- Upgrades bundled 'libmbedtls' to v3.6.0 LTS.