You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: NEWS.md
+3-5Lines changed: 3 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -1,22 +1,20 @@
1
-
# nanonext 0.1.0.9000 (under development)
1
+
# nanonext 0.2.0
2
2
3
3
#### New Features
4
4
5
5
* Implements full async I/O capabilities
6
6
+`send_aio()` and `recv_aio()` now return Aio objects, for which the results may be called using `call_aio()`.
7
-
* New `request()` and `reply()` functions implement the full logic of an RPC client/server.
7
+
* New `request()` and `reply()` functions implement the full logic of an RPC client/server, allowing processes to run concurrently on the client and server.
8
8
+ Designed to be run in separate processes, the reply server will await data and apply a function before returning a result.
9
9
+ The request client performs an async request to the server and returns immediately with an Aio.
10
-
+ This allows processes to run concurrently on the client and server.
11
10
* New `ncurl()` minimalistic http(s) client.
11
+
* New `nng_timer()` utility as a demonstration of NNG's multithreading capabilities.
12
12
* Allows setting the environment variable 'NANONEXT_TLS' prior to package installation
13
13
+ Enables TLS where the system NNG library has been built with TLS support (using Mbed TLS).
14
-
* New `nng_timer()` utility as a demonstration of NNG's multithreading capabilities.
15
14
16
15
#### Updates
17
16
18
17
* Dialer/listener starts and close operations no longer print a message to stderr when successful for less verbosity by default.
19
-
+ The state of respective objects can always be queried using `$state`
20
18
* All send and receive functions, e.g. `send()`/`recv()`, gain a revised 'mode' argument.
21
19
+ This now permits R serialization as an option, consolidating the functionality of the '_vec' series of functions.
22
20
* Functions 'send_vec' and 'recv_vec' are deprecated and will be removed in a future release.
R binding for NNG (Nanomsg Next Gen), a successor to ZeroMQ. NNG is a socket library providing high-performance scalability protocols, implementing a cross-platform standard for messaging and communications. Serves as a concurrency framework that can be used for building distributed systems.
24
+
R binding for NNG (Nanomsg Next Gen), a successor to ZeroMQ. NNG is a socket library providing high-performance scalability protocols, implementing a cross-platform standard for messaging and communications. Serves as a concurrency framework that can be used for building distributed applications.
25
25
26
-
Designed for performance and reliability, the NNG library is written in C and {nanonext} is a lightweight wrapper depending on no other packages. Supported transports include inproc (intra-process), IPC (inter-process), TCP/IP (IPv4 or IPv6), and WebSocket. The inproc transport uses zero-copy where possible for a much faster solution than alternatives.
26
+
Designed for performance and reliability, the NNG library is written in C and {nanonext} is a lightweight wrapper depending on no other packages. Provides the interface for code and processes to communicate with each other - receive data generated in Python, perform analysis in R, and send results to a C++ program – all on the same computer or on networks spanning the globe.
27
27
28
-
Can be used for sending data across networks, but equally as an interface for code and processes to communicate with each other. Receive data generated in Python, perform analysis in R, and send results to a C++ program – all on the same computer or on networks spanning the globe.
The primary object in the object-oriented interface is the nano object. Use `nano()` to create a nano object which encapsulates a Socket and Dialer/Listener. Methods such as `$send()` or `$recv()` can then be accessed directly from the object.
63
77
64
-
*Example using Request/Reply (REQ/REP) protocol with inproc transport:*
78
+
*Example using Request/Reply (REQ/REP) protocol with inproc transport:* <br />
79
+
(The inproc transport uses zero-copy where possible for a much faster solution than alternatives)
65
80
66
81
Create nano objects:
67
82
@@ -113,7 +128,7 @@ recv(socket2)
113
128
114
129
### Cross-language Exchange
115
130
116
-
{nanonext} provides a fast and reliable data interface between different programming languages where NNG has a binding, including C, C++, Python, Go, Rust etc.
131
+
{nanonext} provides a fast and reliable data interface between different programming languages where NNG has a binding, including C, C++, Java, Python, Go, Rust etc.
117
132
118
133
The following example demonstrates the exchange of numerical data between R and Python (NumPy), two of the most commonly-used languages for data science and machine learning.
119
134
@@ -181,7 +196,7 @@ res$result
181
196
182
197
```
183
198
184
-
For a 'recvAio' object, calling the message causes it to be stored in the AIO as `$raw` and/or`$data` as the case may be.
199
+
For a 'recvAio' object, calling the message causes it to be stored in the AIO as `$raw`(if kept) and `$data`.
185
200
186
201
```{r async3}
187
202
@@ -212,7 +227,7 @@ close(s2)
212
227
213
228
Can be used to perform computationally-expensive calculations or I/O-bound operations such as writing large amounts of data to disk in a separate 'server' process running concurrently.
214
229
215
-
Server process: `reply()` will wait for a message and apply a function, in this case `rnorm()`, before sending back the result.
230
+
Server process: `reply()` will wait for a message and apply a function, in this case `rnorm()`, before sending back the result
0 commit comments