| + |
---
|
| + |
title: "Radicle 1.4.0 – Lily"
|
| + |
image: radicle-1.png
|
| + |
---
|
| + |
|
| + |
The Radicle team is delighted to announce the release of Radicle 1.4.0
|
| + |
(bbd1e2c), code name *Lily*. Going forward, we want to name our releases after
|
| + |
the abundant flowers and plants of this earth. We chose Lily as the first in
|
| + |
honor of Finland's national flower, the *Lily of the Valley*. The team is making
|
| + |
this release from Helsinki 🇫🇮
|
| + |
|
| + |
This release contains 67 commits by 5 contributors. It's exciting to
|
| + |
see our Zulip community growing and having patches from fresh contributors! 👾
|
| + |
|
| + |
Thanks to the following contributors for providing their time and effort for
|
| + |
this release:
|
| + |
- srestegosaurio
|
| + |
- Matthias Beyer
|
| + |
- Sebastian Martinez
|
| + |
|
| + |
## Installation
|
| + |
|
| + |
```
|
| + |
curl -sSf https://radicle.xyz/install | sh -s -- --no-modify-path --version=1.4.0
|
| + |
```
|
| + |
|
| + |
## Canonical Reference Improvements
|
| + |
|
| + |
The canonical reference calculation was improved internally so that the
|
| + |
developers can better reason about the process. During this, it was noted that
|
| + |
the Radicle storage copy of the repository and the working copy of the
|
| + |
repository were both used during the process. By ensuring that the storage
|
| + |
copy is the only one used, a class of bugs is ruled out. This, however, means
|
| + |
that a `git push` will not fail when the pushed commit diverges, but will still
|
| + |
emit a warning that the new commit is diverging away from the other heads. We
|
| + |
weighed this up, and consider it an improvement, since the user is given control
|
| + |
of their own Git history.
|
| + |
|
| + |
Future improvements will provide ways of inspecting and resolving diverging
|
| + |
heads.
|
| + |
|
| + |
## Fixed Panics
|
| + |
|
| + |
Two instances of panics were fixed in this release.
|
| + |
|
| + |
The first, and most important, was a panic around serializing wire messages.
|
| + |
There is a strict size limit on the protocol messages that we control. However,
|
| + |
this size limit is not intended to be imposed on Git streams, for example during
|
| + |
fetching from other nodes. We incorrectly placed a check for this size limit in
|
| + |
the `serialize` function, which meant it would panic for some Git fetches. This
|
| + |
was fixed by moving the check elsewhere, while also improving the code so we do
|
| + |
not make that mistake again.
|
| + |
|
| + |
The second involved using the `read` method from the `sqlite` crate. This method
|
| + |
calls `try_read` and `unwrap`s the `Result`, which would cause a panic. We have
|
| + |
replaced the calls to `read` with `try_read` to more gracefully handle the
|
| + |
error.
|
| + |
|
| + |
## Improvements Towards Windows Compatibility
|
| + |
|
| + |
We have continued along the path towards compatibility by fixing some areas that
|
| + |
required some Windows specific handling. These included canonicalization of
|
| + |
paths, and using the correct named pipes location for the control socket.
|
| + |
|
| + |
## Improved Bootstrapping
|
| + |
|
| + |
Previously, we would use DNS to resolve to the IP address of bootstrap nodes,
|
| + |
which would be used as the bootstrap address. Now, we may also use the IPv4,
|
| + |
IPv6, and Tor addresses directly for bootstrapping.
|
| + |
|
| + |
## Improvements to `rad sync`
|
| + |
|
| + |
We now use a more suitable symbol in `rad sync status` for the status:
|
| + |
|
| + |
```
|
| + |
✗ Hint:
|
| + |
? … Status:
|
| + |
✓ … in sync ✗ … out of sync
|
| + |
! … not announced • … unknown
|
| + |
```
|
| + |
|
| + |
This aligns closer with the `rad node status` output. As well as this, the `Tip`
|
| + |
column was renamed to `SigRefs`, since the term `Tip` was too ambiguous.
|
| + |
|
| + |
The internal logic of `rad sync --announce` was improved by writing more tests
|
| + |
and finding edge cases to fix. Included in these improvements is changing the
|
| + |
target behavior. Before, the announcements would attempt to reach the preferred
|
| + |
seeds target *and* the replication factor. Now, it tries to reach the preferred
|
| + |
seeds and falls back to the replication factor.
|
| + |
|
| + |
## Improvements to `rad cob log`
|
| + |
|
| + |
The `rad cob log` command learned two new options, `--from` and `--to`. These
|
| + |
take a commit SHA that correspond to a COB operation, and allows you to limit
|
| + |
the log to start from or end the log at those operations, respectively.
|
| + |
|
| + |
## Various Improvements
|
| + |
|
| + |
We have made the errors that occur in `radicle-fetch` more fine-grained so that
|
| + |
we get better error reporting.
|
| + |
|
| + |
Also, thanks to Matthias Beyer for making improvements within our Rust code.
|
| + |
These may not be visible to the user, but they may improve some performance, and
|
| + |
improve the developers lives :)
|
| + |
|
| + |
## Changelog
|
| + |
|
| + |
This release contains 67 commit(s) by 5 contributor(s).
|
| + |
|
| + |
* `bbd1e2cff` **crates: 1.4.0 release** *<fintan.halpenny@gmail.com>*
|
| + |
* `de38d9741` **build: move to use `releases/` prefix** *<fintan.halpenny@gmail.com>*
|
| + |
* `819ae5fdf` **node/main: Refactor initialization of logging** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `bc4a13902` **systemd: Clean up default service configurations** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `25decf161` **systemd: Add example service hardening** *<lcdt@disroot.org>*
|
| + |
* `d7aa2d9da` **flake/hooks: Reconfigure Git Hooks** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `7d2f0e387` **node: e2e test for canonical ref update** *<fintan.halpenny@gmail.com>*
|
| + |
* `0d96af5d0` **node: update default branch for canonical refs** *<fintan.halpenny@gmail.com>*
|
| + |
* `c38b9d9e1` **node: simplify canonical reference calculation** *<fintan.halpenny@gmail.com>*
|
| + |
* `a8255a2e0` **Introduce a node event for canonical reference updates** *<fintan.halpenny@gmail.com>*
|
| + |
* `690f6b02c` **remote-helper: remove check for fast-forward** *<fintan.halpenny@gmail.com>*
|
| + |
* `119a12489` **radicle: the great Canonical rewrite** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `8a66e4d04` **node/systemd: Check that received sockets are AF_UNIX** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `192cc993a` **radicle: Fix panic when reading from SQLite database fails** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `a568e7f48` **protocol: Refactor decoding** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `cbd2a7070` **protocol: Refactor encoding** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `a8426dfda` **protocol: Fix panic when serializing large frames** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `c5b99db10` **doc: Oversight when integrating winpipe** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `a4d83ec8d` **node/control: Please the borrow checker** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `fca96e697` **node: Fix test on Windows** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `19a262d3d` **node: Use winpipe for control socket on Windows** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `ce11f03fe` **radicle/profile: Control socket path for Windows** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `fd34b680b` **signals: Guard most of the crate for Unix** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `5229fb8a5` **fix: Normalize filesystem paths with `dunce`** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `31039bbce` **radicle-fetch: More fine-grained errors** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `d2517c500` **radicle-fetch: Fallback to known version** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `a670b6e66` **radicle: fix stream tests** *<fintan.halpenny@gmail.com>*
|
| + |
* `0c6ff06c6` **radicle: use repository fixture in cob stream tests** *<fintan.halpenny@gmail.com>*
|
| + |
* `1d7478cd9` **radicle: introduce `cob::common::Title`** *<me@sebastinez.dev>*
|
| + |
* `2a0f6fd3c` **cli: extend `rad cob log` behaviour** *<fintan.halpenny@gmail.com>*
|
| + |
* `044ff8add` **radicle: introduce specialised Stream types** *<fintan.halpenny@gmail.com>*
|
| + |
* `c0ac228c3` **radicle: introduce COB stream** *<fintan.halpenny@gmail.com>*
|
| + |
* `9b59c0e2c` **radicle: add Op::load method** *<fintan.halpenny@gmail.com>*
|
| + |
* `dbfcf424d` **radicle: add Op::manifest_of** *<fintan.halpenny@gmail.com>*
|
| + |
* `bfe8c5234` **cob: add method for loading entry manifest** *<fintan.halpenny@gmail.com>*
|
| + |
* `86119473b` **test: add alphanumeric generator** *<fintan.halpenny@gmail.com>*
|
| + |
* `8953ec4c8` **cli/inbox: Clearify "clear" behaviour** *<mail@beyermatthias.de>*
|
| + |
* `9a7c22536` **radicle/config/node: Use newtypes** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `c4ff0d8ea` **radicle/config/node: Granular Default Values** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `77f63c76d` **Replace unit-returning-closure with drop()** *<mail@beyermatthias.de>*
|
| + |
* `cb7c748c6` **Move destructuring to fn signature** *<mail@beyermatthias.de>*
|
| + |
* `9486e751f` **Simplify impl of Display for some types** *<mail@beyermatthias.de>*
|
| + |
* `787cb3a87` **Collapse nested if** *<mail@beyermatthias.de>*
|
| + |
* `b0af48aa0` **To not allocate in good case** *<mail@beyermatthias.de>*
|
| + |
* `0200e84ae` **bootstrap: Add IPv6, IPv4, Onion addresses** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `6a1b13bb6` **cli: Use human-panic** *<mail@beyermatthias.de>*
|
| + |
* `f6f3be437` **cli/issue: Optimize how the issues are collected** *<mail@beyermatthias.de>*
|
| + |
* `b49ff9e5a` **radicle: Implement Iterator::size_hint() for optimizations** *<mail@beyermatthias.de>*
|
| + |
* `1e66c5764` **refactor: Replace return Err(anyhow!()) with anyhow::bail!()** *<mail@beyermatthias.de>*
|
| + |
* `01bed73a6` **cli: fix error formatting** *<fintan.halpenny@gmail.com>*
|
| + |
* `ed5b2659c` **cli: Gracefully handle failure to link log file** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `de78cf787` **cli: Add verbose printing of authors** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `c8b6a13d6` **cli/sync/status: Refactor output table** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `c089727e9` **term, cli, remote-helper: Status Symbols** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `1cd3ad078` **node: Remove useless caching of node announcement** *<lorenz.leutgeb@radicle.xyz>*
|
| + |
* `efa7efacc` **radicle: Announcer test set constructions** *<fintan.halpenny@gmail.com>*
|
| + |
* `c15288a69` **radicle: note about Announcer::can_continue** *<fintan.halpenny@gmail.com>*
|
| + |
* `1b33229dd` **radicle: test Announcer::timed_out on success** *<fintan.halpenny@gmail.com>*
|
| + |
* `11156619b` **radicle: Announcer test repeated sync** *<fintan.halpenny@gmail.com>*
|
| + |
* `ce2d3eb07` **radicle: Announcer test synced with unknown node** *<fintan.halpenny@gmail.com>*
|
| + |
* `ca7231e65` **radicle: Announcer test adapting the replication target** *<fintan.halpenny@gmail.com>*
|
| + |
* `685c84e59` **radicle: Announcer with replication factor of 0** *<fintan.halpenny@gmail.com>*
|
| + |
* `4307eb35b` **radicle: Announcer test AlreadySynced for preferred seeds** *<fintan.halpenny@gmail.com>*
|
| + |
* `376a5566c` **radicle: Announcer test preferred seeds only** *<fintan.halpenny@gmail.com>*
|
| + |
* `84f11f5e3` **radicle: Announcer ensures local node is ignored** *<fintan.halpenny@gmail.com>*
|
| + |
* `8a6e55502` **radicle: Announcer can exit on preferred seeds or replication factor** *<fintan.halpenny@gmail.com>*
|
| + |
* `d14709481` **fix: upgrade radicle-crypto** *<fintan.halpenny@gmail.com>*
|
| + |
## Checksums
|
| + |
|
| + |
```
|
| + |
8673c488c95fa2bf6e310e39fee54c07b7e15aca4496bf430551d944674cc772 radicle-1.4.0-rc.2-x86_64-apple-darwin.tar.xz
|
| + |
35f157611c30212ffd24a92a7c4b3cb950fe96f95cd3e346657cd8efbee63e7d radicle-1.4.0-rc.2-x86_64-unknown-linux-musl.tar.xz
|
| + |
0c75447090905f862720fe8d7a549e93b0f815fa11ef7538599e4699f3802cb7 radicle-1.4.0-rc.2-aarch64-apple-darwin.tar.xz
|
| + |
872d156eed2b869038cea1f7711a5de9fca615710e6aba31157ac5052f31d6b4 radicle-1.4.0-rc.2-aarch64-unknown-linux-musl.tar.xz
|
| + |
```
|