Skip to content

Commit 3809616

Browse files
committed
Chore: Release v0.4.0-rc
1 parent 91640f6 commit 3809616

File tree

4 files changed

+210
-7
lines changed

4 files changed

+210
-7
lines changed

CHANGELOG.md

+204-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,140 @@
11
# Changelog
22

3-
## [0.3.2] - 2023-04-09
3+
## [0.4.0] — 2023-11-20 — **Nightingale**
4+
5+
Possessing a beautiful, creative, and evocative song through both night and day, the humble Nightingale has long been seen as a symbol of poetry and love.
6+
7+
In keeping with the spirit of this release's passerine of choice, *songbird* now sings more melodiously than ever!
8+
This release has been a *long* time coming, and as such *Nightingale* brings several huge changes to how songbird is used and how it performs.
9+
10+
---
11+
12+
The largest change by far is a complete overhaul of all code relating to audio decoding, mixing, and loading from different locations, driven by [**Symphonia**](https://github.com/pdeljanov/Symphonia).
13+
Broadly, this means that we handle every part of the audio pipeline *in-process* and ffmpeg is entirely removed, saving significant memory and CPU and letting you scale to more voice calls on one box.
14+
Another boon is that reading in-memory audio now Just Works: if you can treat it as a `&[u8]`, then you're good to go!
15+
Having this level of control also lets us expand our list of file-formats supporting direct Opus passthrough to include Ogg Opus and WebM/MKV, as well as the [DCA](https://github.com/bwmarrin/dca) format.
16+
Given that many sites will serve WebM, this is a significant saving on CPU time for many playback use cases.
17+
Additionally, we now handle HTTP reconnection logic internally, offering more reliable behaviour than certain `downloader -> ffmpeg` process chains would provide.
18+
Symphonia format support is [significant](https://github.com/pdeljanov/Symphonia?tab=readme-ov-file#formats-demuxers), and you can enable and disable exactly the codecs and containers you need at compile-time.
19+
20+
Voice receive has been given its own fair share of improvements.
21+
Most importantly, all receive sessions now make use of per-user *jitter buffers**songbird* will now delay decoding of all users to correctly reorder audio packets, smooth out network latency jitter, and to help synchronize playback of several speakers.
22+
Receive functionality is now feature-gated and disabled by default, and so won't affect compile-time or runtime performance if you don't want to make use of it.
23+
24+
Finally, songbird now includes a new deadline-aware audio scheduler, which will pack as many concurrent `Call`s as possible onto a single thread.
25+
Compared to the previous model we now reduce thread counts, CPU use, and context switching – for context, up to 660 live Opus-passthrough-enabled calls can run on a single thread on a Ryzen 5700X.
26+
This is also helped by how we now park all `Call`s without any active `Track`s onto a single shared event handling async task.
27+
28+
---
29+
30+
All in all, we're really excited to see what you build with these new tools and performance improvements.
31+
32+
Thanks to the following for their contributions:
33+
34+
- [@Erk-]
35+
- [@fee1-dead]
36+
- [@FelixMcFelix]
37+
- [@GnomedDev]
38+
- [@jontze]
39+
- [@maxall41]
40+
- [@Sebbl0508]
41+
- [@tazz4843]
42+
- [@vicky5124]
43+
44+
### Upgrade Pathway
45+
46+
**Inputs**:
47+
* `ytdl` etc. are removed and replaced with new lazy initialisers – [read the docs on how to create sources from a URL or local path](https://serenity-rs.github.io/songbird/next/songbird/input/index.html#common-sources).
48+
* All inputs are now lazy by default, so `Restartable` is no longer needed.
49+
* Inputs can no longer directly output raw audio, as symphonia must always parse a container/codec pair. We've included a custom `RawReader` container format and the `RawAdapter` transform to support this.
50+
* Metadata is now split according to what you can learn when creating a source (`AuxMetadata`, e.g. info learned from a web scrape) and what metadata is encoded in a track itself (`Metadata`). `Metadata` can only be read once a track is fully initialised and parsed.
51+
* Songbird can now better encode an audio source's lifecycle from uninitialised, to readable, to having its headers fully parsed. [Read the examples on how they can be manipulated](https://serenity-rs.github.io/songbird/next/songbird/input/enum.Input.html), particularly if you want to make use of metadata.
52+
* Songbird's audio systems have undergone the most change in this release, so this list is non-exhaustive.
53+
54+
**Tracks**:
55+
* `TrackHandle::action` now gives temporary access to a `View` object – a set of current track state and extracted metadata – which can be used to fire more complex commands like seeking or pre-loading a `Track` by returning an `Action`.
56+
* `TrackHandle`s are now created only from `Driver::play`/`play_input` and related methods.
57+
* `tracks::create_player` is removed in favour of the above methods on `Driver`.
58+
59+
**Voice Receive**:
60+
* Users of voice receive will now need to enable the `"receive"` feature.
61+
* `CoreEvent::VoicePacket` has now split into two events: `RtpPacket` and `VoiceTick`.
62+
`RtpPacket` corresponds to raw RTP packets received from each user and does not decode audio, while `VoiceTick` fires every 20ms and includes the reordered (and decoded, if so configured) audio for every user, synchronised and ready to use.
63+
* Per-user jitter buffer sizes can be configured using `Config::playout_buffer_length` and `::playout_spike_length`.
64+
65+
### Added
66+
67+
- [driver] Driver: Implement audio scheduler (#179) ([@FelixMcFelix]) [c:3daf11f]
68+
- [gateway] Gateway: Add `Songbird::iter` (#166) ([@fee1-dead]) [c:5bc8430]
69+
- [driver] Driver/receive: Implement audio reorder/jitter buffer (#156) ([@FelixMcFelix]) [c:c60c454]
70+
- [driver] Driver: Split receive into its own feature (#141) ([@FelixMcFelix]) [c:2277595]
71+
- [driver] Driver: Add toggle for softclip (#137) ([@FelixMcFelix]) [c:13946b4]
72+
- [driver] Support simd_json (#105) ([@vicky5124]) [c:cb0a74f]
73+
- [driver] Driver/Input: Migrate audio backend to Symphonia (#89) ([@FelixMcFelix]) [c:8cc7a22]
74+
75+
### Changed
76+
77+
- [clippy] Chore: Cleanup clippy lints ([@FelixMcFelix]) [c:91640f6]
78+
- [deps] Chore: Upgrade serenity to 0.12.0-rc ([@FelixMcFelix]) [c:1487da1]
79+
- [deps] Chore: Bump DiscoRTP version ([@FelixMcFelix]) [c:0ef0e4f]
80+
- [clippy] Fix clippy pedantic warnings (#204) ([@GnomedDev]) [c:3d307aa]
81+
- [deps] Update simd-json to 0.13 (#203) ([@GnomedDev]) [c:63d48ee]
82+
- [deps] Chore: Update Rubato -> 0.14.1 ([@FelixMcFelix]) [c:67b3b3e]
83+
- [deps] Chore: Update (most) dependencies ([@FelixMcFelix]) [c:4220c1f]
84+
- [clippy] Chore: Rust 1.72.0 Clippy lints, adjust MSRV ([@FelixMcFelix]) [c:6f80156]
85+
- [deps] Driver: Replace `xsalsa20poly1305` with `crypto_secretbox` (#198) ([@Sebbl0508]) [c:77a9b46]
86+
- [ci] Chore(ci): Update rust, cargo and cache actions (#177) ([@jontze]) [c:5ddc8f4]
87+
- [ci] chore(docs): Update rust setup action and cache (#176) ([@jontze]) [c:4eadeb6]
88+
- [ci] chore(workflows): Update checkout action to v3 (#175) ([@jontze]) [c:841224e]
89+
- [driver] Driver: Retune threadpool keepalive time ([@FelixMcFelix]) [c:9ab5be8]
90+
- [driver] Driver: Downgrade failed scheduler message delivery to info ([@FelixMcFelix]) [c:02c9812]
91+
- [clippy] Chore: Clippy fixes to match new MSRV. ([@FelixMcFelix]) [c:9fa063f]
92+
- [deps] Chore: Update dependencies, MSRV. ([@FelixMcFelix]) [c:1bf17d1]
93+
- [deps] Chore: Update dependencies. ([@FelixMcFelix]) [c:a5f7d3f]
94+
- [ci] Repo: Update issue templates ([@FelixMcFelix]) [c:6cd3097]
95+
- [deps] Gateway: Twilight 0.15 support (#171) ([@Erk-]) [c:b2507f3]
96+
- [clippy] Chore: Fix clippy warnings (#167) ([@fee1-dead]) [c:6e6d8e7]
97+
- [ci] CI: Disable Windows, MacOS Testing ([@FelixMcFelix]) [c:2de071f]
98+
- [input] Input: Clarify `YoutubeDl` error if command missing (#160) ([@FelixMcFelix]) [c:53ebc3c]
99+
- [deps] Deps: Move to published `symphonia` v0.5.2 from git ([@FelixMcFelix]) [c:fdd0d83]
100+
- [gateway] Gateway: Simplify return value of `join`/`join_gateway` (#157) ([@FelixMcFelix]) [c:f2fbbfe]
101+
- [deps] Chore: Update tokio-tungstenite, typemap_rev ([@FelixMcFelix]) [c:5d06a42]
102+
- [deps] Chore: Apply latest nightly clippy lints ([@FelixMcFelix]) [c:125c803]
103+
- [driver] Driver: remove copy to receive &mut for softclip (#143) ([@FelixMcFelix]) [c:ab18f9e]
104+
- [deps] Deps: Move symphonia back to mainline repo. ([@FelixMcFelix]) [c:b7e40ab]
105+
- [deps] Deps: Update dev-dependencies ([@FelixMcFelix]) [c:f72175b]
106+
- [deps] Deps: Update Ringbuf, Serde-Aux, Simd-Json, Typemap ([@FelixMcFelix]) [c:6a38fc8]
107+
- [clippy] Chore: Fix new(er) Clippy lints ([@FelixMcFelix]) [c:662debd]
108+
- [deps] Deps: Update Twilight -> v0.14 ([@FelixMcFelix]) [c:646190e]
109+
- [deps] Deps: Update twilight to 0.13 (#147) ([@Erk-]) [c:372156e]
110+
- [deps] Chore: Update `xsalsa20poly1305` -> 0.9 ([@FelixMcFelix]) [c:48db45f]
111+
- [deps] Chore: Rework crate features (#139) ([@FelixMcFelix]) [c:d8061d5]
112+
- [driver] Driver: Migrate to `tokio_tungstenite` (#138) ([@FelixMcFelix]) [c:76c9851]
113+
- [input] Input: lazy_static -> once_cell::sync::Lazy (#136) ([@GnomedDev]) [c:0beb0f0]
114+
115+
### Fixed
116+
117+
- [gateway] Fix compiling with latest serenity (#199) ([@GnomedDev]) [c:509743f]
118+
- [driver] Driver: Correct buffer instantiation for Rubato ([@FelixMcFelix]) [c:935171d]
119+
- [tests] Chore: Update test URL for playlist. ([@FelixMcFelix]) [c:c55a313]
120+
- [driver] Driver: Don't trim recv_buffer on MacOS ([@FelixMcFelix]) [c:019ac27]
121+
- [driver] Driver: Fix scheduler crash after task closure ([@FelixMcFelix]) [c:77e3916]
122+
- [input] Input: Add HTTP Status Code Checks (#190) ([@maxall41]) [c:c976d50]
123+
- [driver] Fix: Move WS error handling (#174) ([@Erk-]) [c:500d679]
124+
- [gateway] Gateway: Fix serenity breaking changes (#173) ([@tazz4843]) [c:4d0c1c0]
125+
- [driver] fix(ws): Songbird would fail if it could not deserialize ws payload. (#170) ([@Erk-]) [c:c73f498]
126+
- [repo] Chore: Fix README.md CI badge (#161) ([@FelixMcFelix]) [c:50dbc62]
127+
- [input] Input: Pass `--no-playlist` for `YoutubeDl` (#168) ([@fee1-dead]) [c:296f0e5]
128+
- [docs] Docs: Fix a link in constant docstring (#169) ([@fee1-dead]) [c:3f6114c]
129+
- [input] Input: Fix high CPU use when initialising long files over HTTP (#163) ([@FelixMcFelix]) [c:50fa17f]
130+
- [deps] Docs: Correct version for symphonia codec support ([@FelixMcFelix]) [c:ed4be7c]
131+
- [driver] Avoid spawning a disposal thread per driver (#151) ([@GnomedDev]) [c:be3a4e9]
132+
- [input] Input: Fix audio stream selection for video files. (#150) ([@FelixMcFelix]) [c:03b0803]
133+
- [driver] Driver: Prune `SsrcState` after timeout/disconnect (#145) ([@FelixMcFelix]) [c:893dbaa]
134+
- [docs] Events: Fix typo in docs for VoiceData (#142) ([@tazz4843]) [c:6769131]
135+
- [docs] Docs: Fix module docs for `songbird::tracks`. ([@FelixMcFelix]) [c:c1d93f7]
136+
137+
## [0.3.2] — 2023-04-09
4138

5139
This patch release fixes a WS disconnection that would occur when receiving a
6140
new opcode, which was happening due to Discord sending such an opcode upon
@@ -436,6 +570,7 @@ We'd also like to thank all users who have contributed to this module in the pas
436570
- [driver] Handle Voice close codes, prevent Songbird spinning WS threads (#1068) ([@FelixMcFelix]) [c:26c9c91]
437571

438572
<!-- COMPARISONS -->
573+
[0.4.0]: https://github.com/serenity-rs/songbird/compare/v0.3.2...v0.4.0
439574
[0.3.2]: https://github.com/serenity-rs/songbird/compare/v0.3.1...v0.3.2
440575
[0.3.1]: https://github.com/serenity-rs/songbird/compare/v0.3.0...v0.3.1
441576
[0.3.0]: https://github.com/serenity-rs/songbird/compare/v0.2.2...v0.3.0
@@ -462,6 +597,7 @@ We'd also like to thank all users who have contributed to this module in the pas
462597
[@DoumanAsh]: https://github.com/DoumanAsh
463598
[@Elinvynia]: https://github.com/Elinvynia
464599
[@Erk-]: https://github.com/Erk-
600+
[@fee1-dead]: https://github.com/fee1-dead
465601
[@FelixMcFelix]: https://github.com/FelixMcFelix
466602
[@Flat]: https://github.com/Flat
467603
[@ForsakenHarmony]: https://github.com/ForsakenHarmony
@@ -472,12 +608,14 @@ We'd also like to thank all users who have contributed to this module in the pas
472608
[@james7132]: https://github.com/james7132
473609
[@JamesDSource]: https://github.com/JamesDSource
474610
[@JellyWX]: https://github.com/JellyWX
611+
[@jontze]: https://github.com/jontze
475612
[@jtscuba]: https://github.com/jtscuba
476613
[@Lakelezz]: https://github.com/Lakelezz
477614
[@lajp]: https://github.com/lajp
478615
[@LikeLakers2]: https://github.com/LikeLakers2
479616
[@Lunarmagpie]: https://github.com/Lunarmagpie
480617
[@Maspenguin]: https://github.com/Maspenguin
618+
[@maxall41]: https://github.com/maxall41
481619
[@mendess]: https://github.com/mendess
482620
[@Miezhiko]: https://github.com/Miezhiko
483621
[@nickelc]: https://github.com/nickelc
@@ -489,17 +627,82 @@ We'd also like to thank all users who have contributed to this module in the pas
489627
[@reiyw]: https://github.com/reiyw
490628
[@Roughsketch]: https://github.com/Roughsketch
491629
[@saanuregh]: https://github.com/saanuregh
630+
[@Sebbl0508]: https://github.com/Sebbl0508
492631
[@s0lst1ce]: https://github.com/s0lst1ce
493632
[@Sreyas-Sreelal]: https://github.com/Sreyas-Sreelal
494633
[@tarcieri]: https://github.com/tarcieri
495634
[@tazz4843]: https://github.com/tazz4843
496635
[@tktcorporation]: https://github.com/tktcorporation
497636
[@vaporox]: https://github.com/vaporox
637+
[@vicky5124]: https://github.com/vicky5124
498638
[@vilgotf]: https://github.com/vilgotf
499639
[@vivian]: https://github.com/vivian
500640
[@wlcx]: https://github.com/wlcx
501641

502642
<!-- COMMITS -->
643+
[c:3daf11f]: https://github.com/serenity-rs/songbird/commit/3daf11f5d128eb57eea1d7dea0419c638d3912d6
644+
[c:5bc8430]: https://github.com/serenity-rs/songbird/commit/5bc843047f7d15ee1ee9e110fc203d64f657a126
645+
[c:c60c454]: https://github.com/serenity-rs/songbird/commit/c60c454cf529f2ba63381f4a56a830828b67eed4
646+
[c:2277595]: https://github.com/serenity-rs/songbird/commit/2277595be4d150eb14098ab4d7959213b22e0337
647+
[c:13946b4]: https://github.com/serenity-rs/songbird/commit/13946b47ce80fe1fd7acec9b02ff1949688e4e98
648+
[c:cb0a74f]: https://github.com/serenity-rs/songbird/commit/cb0a74f511d4ff574369a42fd380ca074f0763c6
649+
[c:8cc7a22]: https://github.com/serenity-rs/songbird/commit/8cc7a22b0bae5da405e1c52639567ed24bc7325b
650+
[c:91640f6]: https://github.com/serenity-rs/songbird/commit/91640f6c86dfb6571851182d38bb73063ec6044d
651+
[c:1487da1]: https://github.com/serenity-rs/songbird/commit/1487da175c4ce2f32d58e356e27564f43164af6a
652+
[c:0ef0e4f]: https://github.com/serenity-rs/songbird/commit/0ef0e4fc8266512b0639b5b6fe5d106552c0fa4d
653+
[c:3d307aa]: https://github.com/serenity-rs/songbird/commit/3d307aaa8bb71be21d06ae31e4523a1cefa7213f
654+
[c:63d48ee]: https://github.com/serenity-rs/songbird/commit/63d48ee5973bf6b9549c10809996f3634bd81310
655+
[c:67b3b3e]: https://github.com/serenity-rs/songbird/commit/67b3b3ec50be6695998d762b90f37b222de0f0b8
656+
[c:4220c1f]: https://github.com/serenity-rs/songbird/commit/4220c1ffe534072e39ca9de1a8d84cc36534ab92
657+
[c:6f80156]: https://github.com/serenity-rs/songbird/commit/6f801563e51a9a94c2ed46ede3d08848ac149699
658+
[c:77a9b46]: https://github.com/serenity-rs/songbird/commit/77a9b4626cb1f660b3c92e96dc0ed28621a257a8
659+
[c:5ddc8f4]: https://github.com/serenity-rs/songbird/commit/5ddc8f44480e00435bb50a540949dc65ff907c79
660+
[c:4eadeb6]: https://github.com/serenity-rs/songbird/commit/4eadeb6834e5e20be34004202a4d08856c81ff1c
661+
[c:841224e]: https://github.com/serenity-rs/songbird/commit/841224ee7abf01d126e22330c3dfedccbe997367
662+
[c:9ab5be8]: https://github.com/serenity-rs/songbird/commit/9ab5be8c9f577f81f32ac8be615056d659775f37
663+
[c:02c9812]: https://github.com/serenity-rs/songbird/commit/02c9812c3eda600693a6c75f01271cca6aaff1a6
664+
[c:9fa063f]: https://github.com/serenity-rs/songbird/commit/9fa063ff0edd0372f0e4d0f0269056b01321cb19
665+
[c:1bf17d1]: https://github.com/serenity-rs/songbird/commit/1bf17d128e19fdf190579fec56932b7f4818c480
666+
[c:a5f7d3f]: https://github.com/serenity-rs/songbird/commit/a5f7d3f4886241d9d27dd7800aa47b02d2febc24
667+
[c:6cd3097]: https://github.com/serenity-rs/songbird/commit/6cd3097da0716f5aca9fba70a5e79b323710cc65
668+
[c:b2507f3]: https://github.com/serenity-rs/songbird/commit/b2507f34f1e69dac3fd2bb71d6fd29168437829d
669+
[c:6e6d8e7]: https://github.com/serenity-rs/songbird/commit/6e6d8e7ebf4de57f18968d35021b4217f2683372
670+
[c:2de071f]: https://github.com/serenity-rs/songbird/commit/2de071f9218d7d72c94e2be6722f2bbf457386fe
671+
[c:53ebc3c]: https://github.com/serenity-rs/songbird/commit/53ebc3c637137c6d8b383494e8bbdde31a81cc07
672+
[c:fdd0d83]: https://github.com/serenity-rs/songbird/commit/fdd0d830c78fbf1fa6addfc0029bf76dbac56dbf
673+
[c:f2fbbfe]: https://github.com/serenity-rs/songbird/commit/f2fbbfeb2537085f867be01c935149e472544445
674+
[c:5d06a42]: https://github.com/serenity-rs/songbird/commit/5d06a429a8bfe16645886dd96da368d97abeaee6
675+
[c:125c803]: https://github.com/serenity-rs/songbird/commit/125c803fa713e728c2f712c222ce00b7a7131d7b
676+
[c:ab18f9e]: https://github.com/serenity-rs/songbird/commit/ab18f9e092dd28101961cc945c0038bddc38560a
677+
[c:b7e40ab]: https://github.com/serenity-rs/songbird/commit/b7e40ab5e44fa1b1b893b6d9b47a741dbd16b766
678+
[c:f72175b]: https://github.com/serenity-rs/songbird/commit/f72175b799b3ab16ec69c096aaba9f2a009530df
679+
[c:6a38fc8]: https://github.com/serenity-rs/songbird/commit/6a38fc82f46c06580fb7b6fac5ff54dcab6b24ad
680+
[c:662debd]: https://github.com/serenity-rs/songbird/commit/662debd4146fa090f144b1ec0c4dd83d977fc9a2
681+
[c:646190e]: https://github.com/serenity-rs/songbird/commit/646190eaf82ca665537692ef7613f3570a858840
682+
[c:372156e]: https://github.com/serenity-rs/songbird/commit/372156e638ce45cd25223d15d6d2168468af2f40
683+
[c:48db45f]: https://github.com/serenity-rs/songbird/commit/48db45ffd8d54db7404b9df4a3915860e85c6e85
684+
[c:d8061d5]: https://github.com/serenity-rs/songbird/commit/d8061d5029e8ab987667686c8d2f720642c1aeb4
685+
[c:76c9851]: https://github.com/serenity-rs/songbird/commit/76c98510349db3b5c9eaa1efbb1a989dedd214fe
686+
[c:0beb0f0]: https://github.com/serenity-rs/songbird/commit/0beb0f0d760fbd84f3f4abcb68fa8e71a667e896
687+
[c:509743f]: https://github.com/serenity-rs/songbird/commit/509743fd40664de742e1e84149ba076f35226dfa
688+
[c:935171d]: https://github.com/serenity-rs/songbird/commit/935171df4fa9c55c03e45d99c4c96ddcebb27e8a
689+
[c:c55a313]: https://github.com/serenity-rs/songbird/commit/c55a3130d6e29bffcc3d65dfd8a72e3f04f9c3f9
690+
[c:019ac27]: https://github.com/serenity-rs/songbird/commit/019ac27a85e98feea4312f8b7125cf92ca5a6bd6
691+
[c:77e3916]: https://github.com/serenity-rs/songbird/commit/77e3916bdca36fad5978171f5b07be3781f52ccf
692+
[c:c976d50]: https://github.com/serenity-rs/songbird/commit/c976d50cc5bf4af2c3d3a567e65634728cd0d81c
693+
[c:500d679]: https://github.com/serenity-rs/songbird/commit/500d679ae553f234ff725aab40187232e4b50121
694+
[c:4d0c1c0]: https://github.com/serenity-rs/songbird/commit/4d0c1c030d4287d77469585a2fb47c27ed3ae917
695+
[c:c73f498]: https://github.com/serenity-rs/songbird/commit/c73f4988c83d43cb8ee2cf8b3cd6898b9f78c542
696+
[c:50dbc62]: https://github.com/serenity-rs/songbird/commit/50dbc62a6abd2594d57ea1a0445a9630c2f6ecf5
697+
[c:296f0e5]: https://github.com/serenity-rs/songbird/commit/296f0e552c72314ed08cea86cd680856d5d5ae20
698+
[c:3f6114c]: https://github.com/serenity-rs/songbird/commit/3f6114c53c4ed7200cc55639494a58d2de296a02
699+
[c:50fa17f]: https://github.com/serenity-rs/songbird/commit/50fa17fb592fc07b22c15af73d8983bd2b5dec50
700+
[c:ed4be7c]: https://github.com/serenity-rs/songbird/commit/ed4be7c6070fe471fe5e54ad6c4127141d2be8e7
701+
[c:be3a4e9]: https://github.com/serenity-rs/songbird/commit/be3a4e9b245b6c375a0e65d1262764f7554485c1
702+
[c:03b0803]: https://github.com/serenity-rs/songbird/commit/03b0803a1d08b4d4e420192ff15da359d4b1fb4c
703+
[c:893dbaa]: https://github.com/serenity-rs/songbird/commit/893dbaae34b56c01fbd482840e9b794944f90ca9
704+
[c:6769131]: https://github.com/serenity-rs/songbird/commit/6769131fa2d5aecb8702126757f3408ef846f95e
705+
[c:c1d93f7]: https://github.com/serenity-rs/songbird/commit/c1d93f790cf36a82b28a6c9c163364372d641c62
503706
[c:e5d3feb]: https://github.com/serenity-rs/songbird/commit/e5d3febb7bfbc6b4b98af3dbf312c23528307544
504707
[c:752cae7]: https://github.com/serenity-rs/songbird/commit/752cae7a09b25f69ffac110ca3ce4c841d1ec99b
505708
[c:eedab8f]: https://github.com/serenity-rs/songbird/commit/eedab8f69d1c17125971e290ee8a50fc1adcdffc

Cargo.toml

+1-1
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ name = "songbird"
1111
readme = "README.md"
1212
repository = "https://github.com/serenity-rs/songbird.git"
1313
rust-version = "1.74"
14-
version = "0.3.2"
14+
version = "0.4.0-rc"
1515

1616
[dependencies]
1717
async-trait = { optional = true, version = "0.1" }

0 commit comments

Comments
 (0)