|
@@ -0,0 +1,38 @@
|
|
|
+# Cjdns Changelog
|
|
|
+
|
|
|
+## Version 22 - Noisemaker
|
|
|
+February 3, 2023
|
|
|
+
|
|
|
+It's been since September 18, 2020 when cjdns v21 was tagged out, and brought only small experimental inclusion of
|
|
|
+Rust code to cjdns. v22 makes Rust a main language in which cjdns is written, and it is foreseen that in v23, almost
|
|
|
+all interactions with the OS will be done in Rust.
|
|
|
+
|
|
|
+### Major Changes
|
|
|
+1. New protocol version v22, compatibility is maintained with v21 and v20 (no change in compatibility)
|
|
|
+ * This new protocol version brings a new CryptoAuth protocol based on the NOISE protocol used by WireGuard® VPN.
|
|
|
+ The NOISE protocol is used in all direct peering connections where both sides are v22.
|
|
|
+ * The legacy CryptoAuth protocol remains but has been entirely re-written in Rust,
|
|
|
+ the C version remains only for testing purposes.
|
|
|
+2. RPC `InterfaceController_peerStats()` Now contains Integer noiseProto: 1 if using the NOISE protocol for communication
|
|
|
+3. RPC `InterfaceController_disconnectPeer()` Now disconnects ALL sessions to given peer address instead of only the first
|
|
|
+4. RPC `InterfaceController_timestampPackets()` has been removed, as it only affected debug logging and was rarely used
|
|
|
+5. Libuv code is now compiled using the cjdns build system, it is nolonger compiled using gyp so **python is nolonger needed to build cjdns**
|
|
|
+6. Removed `cjdroute --bench` which was not an accurate measure of expected performance
|
|
|
+
|
|
|
+### Minor Changes
|
|
|
+1. Made fields of Message structure so they will be accessed through accessors - first step to move Message into Rust
|
|
|
+2. Make cjdns Error return value use a Rust anyhow error
|
|
|
+3. In preparation for removal of Libuv, we have replaced the following Libuv functions with Rust implementations:
|
|
|
+ * IP Address manipulation functions: `uv_inet_pton` / `uv_inet_pton`
|
|
|
+ * Current time: `uv_now` / `uv_hrtime`
|
|
|
+ * Child process: `uv_spawn` / `uv_exepath` / `uv_process_kill`
|
|
|
+4. We nolonger put `makekeys`, `mkpasswd`, `privatetopublic`, `publictoip6`, `randombytes`, and `sybilsim` in the main folder
|
|
|
+ * In the future: `makekeys`, `privatetopublic`, `publictoip6`, and `randombytes` will be built as a separate optional component
|
|
|
+ * `mkpasswd` will be dropped because it is too trivial to be worth maintaining
|
|
|
+ * `sybilsim` will be dropped because it is nolonger maintained
|
|
|
+5. Removed from SwitchCore.c the possibility of an interface to be "down" which never exists in reality
|
|
|
+6. New logger for Rust code which uses the cjdns logger as a backend
|
|
|
+7. CryptoAuth is now an (asynchronous) Iface rather than a function you call to encrypt and decrypt
|
|
|
+
|
|
|
+# Older versions
|
|
|
+For earlier versions, see ./util/version/Version.h
|