Skip to content

Releases: r-lib/nanonext

CRAN release 0.9.2

07 Aug 19:22
353788a

Choose a tag to compare

nanonext 0.9.2

This version contains performance enhancements which have resulted in potentially breaking changes; please review carefully and only update when ready.

New Features

  • base64dec() argument 'convert' now accepts NA as an input, which unserializes back to the original object.

Updates

  • The argument 'keep.raw' for all receive functions is deprecated. This is as raw vectors are no longer created as part of unserialisation or data conversion.
  • Higher performance send and receive of serialized R objects.
    • For receive functions, attempting to unserialise a non-serialised message will now error with 'unknown input format' rather than fall back to a raw message vector.
  • ncurl() etc. gain higher performance raw to character conversion, resulting in the following changes:
    • Attempting to convert non-text data with embedded nuls will now error instead of silently returning NULL.
    • For efficiency, when 'convert' = TRUE, a raw vector is no longer stored at $raw.
  • Higher performance cryptographic hash and base64 conversion functions.
    • Attributes are now taken into account for scalar strings and raw vectors to ensure unique hashes.
  • Experimental threaded function timed_signal() removed.
  • Requires R >= 3.5 to ensure R serialization version 3.

CRAN release 0.9.1

13 Jul 07:01
f3547e2

Choose a tag to compare

nanonext 0.9.1

New Features

  • Enables secure TLS transports tls+tcp:// and wss:// for scalability protocols.
    • listen() and dial() gain the argument 'tls' for supplying a TLS configuration object
    • write_cert() generates 4096 bit RSA keys and self-signed X.509 certificates for use with tls_config().
  • weakref(), weakref_key() and weakref_value() implement an interface to R's weak reference system. These may be used for synchronising the lifetimes of objects with reference objects such as Sockets or Aios, or creating read-only objects accessible by the weakref value alone.
  • strcat() provides a simple, fast utility to concatenate two strings.

Updates

  • tls_config() now accepts a relative path if filenames are supplied for the 'client' or 'server' arguments.
  • 'tlsConfig' objects no longer have a 'source' attribute.
  • Fix cases where base64enc() failed for objects exceeding a certain size.
  • stream() has been updated internally for additional robustness.
  • Updates bundled 'libmbedtls' v3.4.0 source configuration for threading support.
  • Updates bundled 'libnng' to v1.6.0 alpha (c5e9d8a) again, having resolved previous issues.

CRAN release 0.9.0

29 May 07:22
651d03d

Choose a tag to compare

nanonext 0.9.0

The package is now compatible (again) with currently released 'libnng' versions. It will attempt to use system 'libnng' versions >= 1.5 where detected, and only compile the bundled library where necessary.

New Features

  • Implements tls_config() to create re-usable TLS configurations from certificate / key files (or provided directly as text).

Updates

  • 'pem' argument of ncurl(), ncurl_session() and stream() retired in favour of 'tls' which takes a TLS Configuration object created by tls_config() rather than a PEM certificate directly.
  • Removes nanonext_version() in favour of the existing nng_version(), along with utils::packageVersion() if required, for greater flexibility.
  • Removes ... argument for context() - retained for compatibility with the 'verify' argument, which was removed in the previous release.
  • Package widens compatibility to support system 'libnng' versions >= 1.5.0.
  • Bundled 'libnng' source rolled back to v1.6.0 pre-release (8e1836f) for stability.

CRAN release 0.8.3

06 May 23:01
3c984bd

Choose a tag to compare

nanonext 0.8.3

New Features

  • Implements cv_signal() and timed_signal() for signalling a condition variable, the latter after a specified time (from a newly-created thread).
  • Implements .context(), a performance alternative to context() that does not create the full object.
  • Adds utility nanonext_version() for providing the package version, NNG and mbed TLS library versions in a single string.
  • ncurl() gains a 'timeout' argument.

Updates

  • Removes 'verify' argument of context() (changed to '...' for compatibility) as request() and request_signal() have been rendered safe internally for use with timeouts.
  • The name of the single argument to msleep() has been changed to 'time' from 'msec'.
  • Functions pipe_notify(), lock() and unlock() now error if unsuccessful rather than returning with a warning.
  • For compiling bundled 'libmbedtls' and 'libnng' libraries from source, R's configured C compiler is now chosen over the system default where this is different.
  • Bundled 'libnng' source updated to v1.6.0 alpha (c5e9d8a).
  • Bundled 'libmbedtls' source updated to v3.4.0.

CRAN release 0.8.2

14 Apr 23:02
de42e2c

Choose a tag to compare

nanonext 0.8.2

New Features

  • lock() and unlock() implemented to prevent further pipe connections from being established at a socket, optionally tied to the value of a condition variable.

Updates

  • context() gains the argument 'verify' with a default of TRUE. This adds additional protection to notably the request() and request_signal() functions when using timeouts, as these require a connection to be present.
  • Sending and hashing of language objects and symbols is now possible after fixes to serialisation.
  • until() now works as intended.
  • Removes recently-introduced msg_pipe() and 'weakref<-'() to maintain simplicity of user interface.
  • Internal performance enhancements.

CRAN release 0.8.1

27 Mar 11:09
fbe9d0e

Choose a tag to compare

nanonext 0.8.1

New Features

  • Implements synchronisation primitives from the NNG library. Condition variables allow the R execution thread to wait until it is signalled by an incoming message or pipe event.
    • adds core functions cv(), wait(), until(), cv_value(), and cv_reset().
    • adds signalling receive functions recv_aio_signal() and request_signal().
    • pipe_notify() signals up to 2 condition variables whenever pipes are added or removed at a socket.
  • Adds msg_pipe() to return the pipe connection associated with a 'recvAio' message.
  • Exposes the sha1() cryptographic hash and HMAC generation function from the 'Mbed TLS' library (for secure applications, use one of the SHA-2 algorithms instead).
  • Utility function 'weakref<-'() exposes R_MakeWeakRef from R's C API. Useful for keeping objects alive for as long as required by a dependent object.

Updates

  • ncurl_session() gains a 'timeout' argument, and returns an 'errorValue' with warning upon error.
  • listen() and dial() gain the new logical argument 'error' to govern the function behaviour upon error.
  • Internal performance enhancements.

CRAN release 0.8.0

03 Mar 18:09
b0e54e8

Choose a tag to compare

nanonext 0.8.0

New Features

  • Implements stat(), an interface to the NNG statistics framework. Can be used to return the number of currently connected pipes for a socket, connection attempts for a listener/dialer etc.
  • Implements parse_url(), which parses a URL as per NNG. Provides a fast and standardised method for obtaining parts of a URL string.

Updates

Please review the following potentially breaking changes, and only update when ready:

  • Using socket() specifying either 'dial' or 'listen', a failure to either dial or listen (due to an invalid URL for example) will now error rather than return a socket with a warning. This is safer behaviour that should make it easier to detect bugs in user code.
  • opt() and 'opt<-'() have been implemented as more ergonomic options getter and setter functions to replace getopt() and setopt(). These will error if the option does not exist / input value is invalid etc.
  • subscribe(), unsubscribe() and survey_time() now return the Socket or Context invisibly rather than an exit code, and will error upon invalid input etc.
  • survey_time() argument name is now 'value', with a default of 1000L.
  • nano Object methods $opt, $listener_opt, and $dialer_opt re-implemented to either get or set values depending on whether the 'value' parameter has been supplied.

Other changes:

  • Bundled 'libnng' source updated to v1.6.0 pre-release (8e1836f).
  • Supported R version amended to >= 2.12, when person() adopted the current format used for package description.
  • Internal performance enhancements.

CRAN release 0.7.3

22 Jan 17:30
2fae382

Choose a tag to compare

nanonext 0.7.3

New Features

  • Implements ncurl_session() and transact() providing high-performance, re-usable http(s) connections.

Updates

  • For dialers, the 'autostart' argument to dial(), socket() and nano() now accepts NA for starting the dialer synchronously - this is less resilient if a connection is not immediately possible, but avoids subtle errors from attempting to use the socket before an asynchronous dial has completed.
  • Closing a stream now renders it inactive safely, without the need to strip all attributes on the object (as was the case previously).
  • messenger() is faster to connect and exits gracefully in case of a connection error.
  • Removes defunct function nano_init().
  • Bundled 'libnng' source updated to v1.6.0 pre-release (539e559).
  • Fixes CRAN 'additional issue' (clang-UBSAN).

CRAN release 0.7.2

12 Dec 11:06
c9458a3

Choose a tag to compare

nanonext 0.7.2

Updates

  • For raw to character hash conversion, uses snprintf instead of sprintf for CRAN compliance.

v0.7.1

16 Nov 16:35
d51473e

Choose a tag to compare

nanonext 0.7.1

New Features

  • Implements getopt(), the counterpart to setopt() for retrieving the value of options on objects.

Updates

  • The setopt() interface is simplified, with the type now inferred from the value supplied.
  • ncurl() now returns redirect addresses as the response header 'Location'. This is so that HTTP data can also be returned at $data where this is provided.
  • Eliminates CRAN 'additional issue' (clang/gcc-UBSAN).
  • Internal performance optimisations.