Skip to content

Releases: shikokuchuo/nanonext

nanonext 1.4.0

02 Dec 23:40
a7394f4
Compare
Choose a tag to compare

New Features

  • New interface to Pipes moves to using integer pipe IDs rather than Pipe (external pointer) objects:
    • send() and send_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() and read_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

14 Nov 17:57
0027f9c
Compare
Choose a tag to compare

Updates

  • Hotfix for CRAN (updates to tests only).

nanonext 1.3.1

13 Nov 22:44
e89c85b
Compare
Choose a tag to compare

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

04 Oct 13:32
25850a1
Compare
Choose a tag to compare

New Features

  • Adds support for threaded dispatcher in mirai.
  • Adds 'recvAio' method for promises::as.promise() and promises::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

19 Aug 06:48
45d573b
Compare
Choose a tag to compare

Updates

  • Re-optimizes custom serialization (whilst addressing CRAN clang-UBSAN checks).

nanonext 1.2.0

09 Aug 09:29
945bff4
Compare
Choose a tag to compare

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 from serial_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 new serial_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() and collect_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 and utils base packages.
  • Requires R >= 3.6.

nanonext 1.1.1

23 Jun 21:13
17536aa
Compare
Choose a tag to compare

New Features

  • Adds 'ncurlAio' method for promises::as.promise() and promises::is.promising() to enable 'ncurlAio' promises.
  • Adds x[] as a new method for an Aio x equivalent to collect_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() and request_signal().
  • Drops base64enc() and base64dec() 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

03 Jun 16:55
54c1637
Compare
Choose a tag to compare

New Features

  • Adds collect_aio() and collect_aio_() to wait for and collect the data of an Aio or list of Aios.
  • unresolved(), call_aio(), call_aio()_ and stop_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() and request() add argument 'cv' allowing optional signalling of a condition variable. The separate functions recv_aio_signal() and request_signal() are deprecated.
  • strcat() is deprecated as considered non-core - it is recommended to replace usage with sprintf().
  • status_code() now returns the status code combined with the explanation as a character string.
  • Performance enhancements for unresolved(), call_aio() and call_aio_().
  • Updates bundled 'libnng' v1.8.0 with latest patches.

nanonext 1.0.0

01 May 22:48
e6d6d7c
Compare
Choose a tag to compare

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() and request_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 of nanonext 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

08 Apr 06:57
7f50360
Compare
Choose a tag to compare

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.