base64dec()base64 encoding and decoding using the ‘Mbed TLS’ library.
sha512()functions gain an argument ‘convert’ to control whether to return a raw vector or character string.
ncurl()gains the optional argument ‘follow’ to control whether redirects are automatically followed.
Please review the following potentially breaking changes, and only update when ready:
send()now returns an integer exit code in all cases. The ‘echo’ argument has been replaced by ‘…’, and specifying ‘echo’ no longer has any effect.
request()now set ‘keep.raw’ to FALSE as default to return only the originally sent object.
ncurl()argument ‘request’ renamed to ‘response’ for specifying response headers to return (to avoid confusion); the ‘pem’ argument is also moved after the new argument ‘follow’.
sha512()functions no longer return ‘nanoHash’ objects, but a raw vector or character string depending on the new argument ‘convert’.
nano()now accept non-missing NULL ‘listen’ and ‘dial’ arguments, allowing easier programmatic use.
survey_time()are no longer S3 generics for enhanced performance.
sha512()series of fast, optimised cryptographic hash and HMAC generation functions using the ‘Mbed TLS’ library.
stream()gain the argmument ‘pem’ for optionally specifying a certificate authority certificate chain PEM file for authenticating secure sites.
ncurl()gains the argument ‘request’ for specifying response headers to return.
ncurl()now returns additional
$status(response status code) and
$headers(response headers) fields.
messenger()gains the argument ‘auth’ for authenticating communications based on a pre-shared key.
random()gains the argument ‘n’ for generating a vector of random numbers.
nng_version()now returns the ‘Mbed TLS’ library version number.
device()gains a confirmation prompt when running interactively for more safety.
ncurl()that caused a 26 cryptography error with certain secure sites using SNI.
msleep()made safe (does not block) in case of non-numeric input.
random()utilities exposing the library functions for timing and cryptographic RNG respectively.
socket()gains the ability to open ‘raw’ mode sockets. Please note: this is not for general use - do not set this argument unless you have a specific need, such as for use with
device()(refer to NNG documentation).
device()which creates a socket forwarder or proxy. Warning: use this in a separate process as this function blocks with no ability to interrupt.
/usr/local. Note that this is a manual setting allowing for custom NNG builds, and requires a version of NNG at least as recent as 722bf46.
unresolvedValuereturned by Aios (thanks @lionel- #3).
nanonext is now considered substantially feature-complete and API-stable
$context()method added for creating new contexts from nano Objects using supported protocols (i.e. req, rep, sub, surveyor, respondent) - this replaces the
context()function for nano Objects.
unsubscribe()now accept a topic of any atomic type (not just character), allowing pub/sub to be used with integer, double, logical, complex, or raw vectors.
survey_time()gain nanoContext methods.
keep.raw = TRUE.
recv_ctx()and logging removed.
stream()interface exposes low-level byte stream functionality in the NNG library, intended for communicating with non-NNG endpoints, including but not limited to websocket servers.
ncurl()adds an ‘async’ option to perform HTTP requests asynchronously, returning immediately with a ‘recvAio’. Adds explicit arguments for HTTP method, headers (which takes a named list or character vector) and request data, as well as to specify if conversion from raw bytes is required.
messenger()function implements a multi-threaded console-based messaging system using NNG’s scalability protocols (currently as proof of concept).
nano_init()function intended to be called immediately after package load to set global options.
warnings()and flexibility in handling via setting
recv()functions, and their asynchronous counterparts
recv_aio(), are now S3 generics and can be used across Sockets, Contexts and Streams.
recv()now allows an integer value for setting a timeout.
recv_ctx()are deprecated and will be removed in a future package version - the methods for
recv()should be used instead.
logging()is now defunct.
$rawnow resolve automatically without requiring
call_aio(). Access directly and an ‘unresolved’ logical NA value will be returned if the Aio operation is yet to complete.
unresolved()added as an auxiliary function to query whether an Aio is unresolved, for use in control flow statements.
is_error_value()helper function included.
is_nul_byte()added as a helper function for request/reply setups.
survey_time()added as a convenience function for surveyor/respondent patterns.
logging()function to specify a global package logging level - ‘error’ or ‘info’. Automatically checks the environment variable ‘NANONEXT_LOG’ on package load and then each time
logging(level = "check")is called.
ncurl()adds a ‘…’ argument. Support for HTTP methods other than GET.
dial()now return (invisible) zero rather than NULL upon success for consistency with other functions.
optsto avoid clash with base R ‘options’.
nng_timer()utility as a non-essential function.
reply()functions implement the full logic of an RPC client/server, allowing processes to run concurrently on the client and server.
ncurl()minimalistic http(s) client.
nng_timer()utility as a demonstration of NNG’s multithreading capabilities.
recv(), gain a revised ‘mode’ argument.
$socket_close()method of nano objects has been renamed
$close()to better align with the functional API.