Skip to content

Commit 887c215

Browse files
committed
this fucking sucked
1 parent 1a186b6 commit 887c215

10 files changed

Lines changed: 2386 additions & 20 deletions

File tree

Cargo.lock

Lines changed: 1 addition & 20 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,9 @@ members = ["odorobo", "odoroboctl"]
55
[workspace.package]
66
rust-version = "1.95.0"
77

8+
[patch.crates-io]
9+
libp2p-yamux = { path = "patches/libp2p-yamux" }
10+
811
[workspace.dependencies]
912
stable-eyre = "0.2"
1013
clap = { version = "4", features = ["derive", "env"] }

patches/libp2p-yamux/.cargo-ok

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
{"v":1}
Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
{
2+
"git": {
3+
"sha1": "9736aacf814eb7b9df0372c5f9adcffba8a4b212"
4+
},
5+
"path_in_vcs": "muxers/yamux"
6+
}

patches/libp2p-yamux/CHANGELOG.md

Lines changed: 235 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,235 @@
1+
## 0.47.0
2+
3+
<!-- Update to libp2p-core v0.43.0 -->
4+
5+
## 0.46.0
6+
7+
<!-- Update to libp2p-swarm v0.45.0 -->
8+
9+
## 0.45.2
10+
11+
- Update `yamux` to version `v0.13.3`.`
12+
13+
## 0.45.1
14+
15+
- Deprecate `WindowUpdateMode::on_receive`.
16+
It does not enforce flow-control, i.e. breaks backpressure.
17+
Use `WindowUpdateMode::on_read` instead.
18+
See `yamux` crate version `v0.12.1` and [Yamux PR #177](https://github.com/libp2p/rust-yamux/pull/177).
19+
- `yamux` `v0.13` enables auto-tuning for the Yamux stream receive window.
20+
While preserving small buffers on low-latency and/or low-bandwidth connections, this change allows for high-latency and/or high-bandwidth connections to exhaust the available bandwidth on a single stream.
21+
Have `libp2p-yamux` use `yamux` `v0.13` (new version) by default and fall back to `yamux` `v0.12` (old version) when setting any configuration options.
22+
Thus default users benefit from the increased performance, while power users with custom configurations maintain the old behavior.
23+
`libp2p-yamux` will switch over to `yamux` `v0.13` entirely with the next breaking release.
24+
See [PR 4970](https://github.com/libp2p/rust-libp2p/pull/4970).
25+
26+
## 0.45.0
27+
28+
- Migrate to `{In,Out}boundConnectionUpgrade` traits.
29+
See [PR 4695](https://github.com/libp2p/rust-libp2p/pull/4695).
30+
31+
## 0.44.1
32+
33+
- Update to `yamux` `v0.12` which brings performance improvements and introduces an ACK backlog of 256 inbound streams.
34+
When interacting with other libp2p nodes that are also running this or a newer version, the creation of inbound streams will be backpressured once the ACK backlog is hit.
35+
See [PR 3013].
36+
37+
[PR 3013]: https://github.com/libp2p/rust-libp2p/pull/3013
38+
39+
## 0.44.0
40+
41+
- Raise MSRV to 1.65.
42+
See [PR 3715].
43+
44+
- Remove deprecated items.
45+
See [PR 3897].
46+
47+
- Remove `Incoming`, `LocalIncoming` and `LocalConfig` as well as anything from the underlying `yamux` crate from the public API.
48+
See [PR 3908].
49+
50+
[PR 3715]: https://github.com/libp2p/rust-libp2p/pull/3715
51+
[PR 3897]: https://github.com/libp2p/rust-libp2p/pull/3897
52+
[PR 3908]: https://github.com/libp2p/rust-libp2p/pull/3908
53+
54+
## 0.43.1
55+
56+
- Drop `Yamux` prefix from all types.
57+
Users are encouraged to import the `yamux` module and refer to types via `yamux::Muxer`, `yamux::Config` etc.
58+
See [PR 3852].
59+
60+
[PR 3852]: https://github.com/libp2p/rust-libp2p/pull/3852
61+
62+
## 0.43.0
63+
64+
- Update to `libp2p-core` `v0.39.0`.
65+
66+
## 0.42.0
67+
68+
- Update to `libp2p-core` `v0.38.0`.
69+
70+
- Update `rust-version` to reflect the actual MSRV: 1.60.0. See [PR 3090].
71+
72+
[PR 3090]: https://github.com/libp2p/rust-libp2p/pull/3090
73+
74+
## 0.41.1
75+
76+
- Yield from `StreamMuxer::poll` as soon as we receive a single substream.
77+
This fixes [issue 3041].
78+
See [PR 3071].
79+
80+
[PR 3071]: https://github.com/libp2p/rust-libp2p/pull/3071/
81+
[issue 3041]: https://github.com/libp2p/rust-libp2p/issues/3041/
82+
83+
## 0.41.0
84+
85+
- Update to `libp2p-core` `v0.37.0`.
86+
87+
## 0.40.0
88+
89+
- Update to `libp2p-core` `v0.36.0`
90+
91+
- Remove `OpenSubstreamToken` as it is dead code. See [PR 2873].
92+
93+
- Drive connection also via `StreamMuxer::poll`. Any received streams will be buffered up to a maximum of 25 streams.
94+
See [PR 2861].
95+
96+
[PR 2873]: https://github.com/libp2p/rust-libp2p/pull/2873/
97+
[PR 2861]: https://github.com/libp2p/rust-libp2p/pull/2861/
98+
99+
## 0.39.0
100+
101+
- Update to `libp2p-core` `v0.35.0`
102+
103+
## 0.38.0
104+
105+
- Update to `libp2p-core` `v0.34.0`.
106+
107+
## 0.37.0
108+
109+
- Update to `libp2p-core` `v0.33.0`.
110+
111+
## 0.36.0 [2022-02-22]
112+
113+
- Update to `libp2p-core` `v0.32.0`.
114+
115+
- Update to `parking_lot` `v0.12.0`. See [PR 2463].
116+
117+
[PR 2463]: https://github.com/libp2p/rust-libp2p/pull/2463/
118+
119+
## 0.35.0 [2022-01-27]
120+
121+
- Update dependencies.
122+
123+
- Migrate to Rust edition 2021 (see [PR 2339]).
124+
125+
- Update to `yamux` `v0.10.0` and thus defaulting to `WindowUpdateMode::OnRead`.
126+
See [PR 2435].
127+
128+
[PR 2339]: https://github.com/libp2p/rust-libp2p/pull/2339
129+
[PR 2435]: https://github.com/libp2p/rust-libp2p/pull/2435
130+
131+
## 0.34.0 [2021-11-01]
132+
133+
- Make default features of `libp2p-core` optional.
134+
[PR 2181](https://github.com/libp2p/rust-libp2p/pull/2181)
135+
136+
- Update dependencies.
137+
138+
- Implement `From<io::Error> for YamuxError` instead of `Into`.
139+
[PR 2169](https://github.com/libp2p/rust-libp2p/pull/2169)
140+
141+
## 0.33.0 [2021-07-12]
142+
143+
- Update dependencies.
144+
145+
## 0.32.0 [2021-04-13]
146+
147+
- Update to `yamux` `v0.9.0` [PR
148+
1960](https://github.com/libp2p/rust-libp2p/pull/1960).
149+
150+
## 0.31.0 [2021-03-17]
151+
152+
- Update `libp2p-core`.
153+
154+
## 0.30.1 [2021-02-17]
155+
156+
- Update `yamux` to `0.8.1`.
157+
158+
## 0.30.0 [2021-01-12]
159+
160+
- Update dependencies.
161+
162+
## 0.29.0 [2020-12-17]
163+
164+
- Update `libp2p-core`.
165+
166+
## 0.28.0 [2020-11-25]
167+
168+
- Update `libp2p-core`.
169+
170+
## 0.27.0 [2020-11-09]
171+
172+
- Tweak the naming in the `MplexConfig` API for better
173+
consistency with `libp2p-mplex`.
174+
[PR 1822](https://github.com/libp2p/rust-libp2p/pull/1822).
175+
176+
- Update dependencies.
177+
178+
## 0.26.0 [2020-10-16]
179+
180+
- Update `libp2p-core`.
181+
182+
## 0.25.0 [2020-09-09]
183+
184+
- Update to `yamux-0.8.0`. Upgrade step 4 of 4. This version always implements
185+
the additive meaning w.r.t. initial window updates. The configuration option
186+
`lazy_open` is removed. Yamux will automatically send an initial window update
187+
if the receive window is configured to be larger than the default.
188+
189+
## 0.24.0 [2020-09-09]
190+
191+
- Update to `yamux-0.7.0`. Upgrade step 3 of 4. This version sets the flag but will
192+
always interpret initial window updates as additive.
193+
194+
## 0.23.0 [2020-09-09]
195+
196+
- Update to `yamux-0.6.0`. As explain below, this is step 2 of 4 in a multi-release
197+
upgrade. This version recognises and sets the flag that causes the new semantics
198+
for the initial window update.
199+
200+
## 0.22.0 [2020-09-09]
201+
202+
- Update to `yamux-0.5.0`. *This is the start of a multi-release transition* to a
203+
different behaviour w.r.t. the initial window update frame. Tracked in [[1]],
204+
this will change the initial window update to mean "in addition to the default
205+
receive window" rather than "the total receive window". This version recognises
206+
a temporary flag, that will cause the new meaning. The next version `0.23.0`
207+
will also set the flag. Version `0.24.0` will still set the flag but will always
208+
implement the new meaning, and (finally) version `0.25.0` will no longer set the
209+
flag and always use the additive semantics. If current code uses the default
210+
Yamux configuration, all upgrades need to be performed in order because each
211+
version is only compatible with its immediate predecessor. Alternatively, if the
212+
default configuration is deployed with `lazy_open` set to `true`, one can
213+
directly upgrade from version `0.21.0` to `0.25.0` without any intermediate
214+
upgrades.
215+
216+
- Bump `libp2p-core` dependency.
217+
218+
[1]: https://github.com/paritytech/yamux/issues/92
219+
220+
## 0.21.0 [2020-08-18]
221+
222+
- Bump `libp2p-core` dependency.
223+
224+
- Allow overriding the mode (client/server), e.g. in the context
225+
of TCP hole punching. [PR 1691](https://github.com/libp2p/rust-libp2p/pull/1691).
226+
227+
## 0.20.0 [2020-07-01]
228+
229+
- Update `libp2p-core`, i.e. `StreamMuxer::poll_inbound` has been renamed
230+
to `poll_event` and returns a `StreamMuxerEvent`.
231+
232+
## 0.19.1 [2020-06-22]
233+
234+
- Deprecated method `Yamux::is_remote_acknowledged` has been removed
235+
as part of [PR 1616](https://github.com/libp2p/rust-libp2p/pull/1616).

0 commit comments

Comments
 (0)