chore: update nightly toolchain and dependencies (#455)

pull/447/merge
zijiren 3 weeks ago committed by GitHub
parent dd6428ebca
commit 940d566ff0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194

@ -39,7 +39,7 @@ jobs:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2026-08-25
toolchain: nightly-2026-08-31
components: rustfmt
- name: Check formatting
@ -55,7 +55,7 @@ jobs:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2026-08-25
toolchain: nightly-2026-08-31
components: clippy
- name: Install build dependencies
@ -82,7 +82,7 @@ jobs:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2026-08-25
toolchain: nightly-2026-08-31
- name: Install build dependencies
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev
@ -106,7 +106,7 @@ jobs:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2026-08-25
toolchain: nightly-2026-08-31
- name: Install build dependencies
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev
@ -128,7 +128,7 @@ jobs:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2026-08-25
toolchain: nightly-2026-08-31
- name: Install build dependencies
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev
@ -159,7 +159,7 @@ jobs:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2026-08-25
toolchain: nightly-2026-08-31
- name: Install cargo-nextest
uses: taiki-e/install-action@nextest
@ -211,7 +211,7 @@ jobs:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2026-08-25
toolchain: nightly-2026-08-31
- name: Install cargo-nextest
uses: taiki-e/install-action@nextest
@ -240,7 +240,7 @@ jobs:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2026-08-25
toolchain: nightly-2026-08-31
- name: Install cargo-audit
run: make install-cargo-audit
@ -263,7 +263,7 @@ jobs:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2026-08-25
toolchain: nightly-2026-08-31
- name: Install cargo-deny
run: make install-cargo-deny
@ -297,7 +297,7 @@ jobs:
- name: Install Rust nightly
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2026-08-25
toolchain: nightly-2026-08-31
- name: Install build dependencies
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev

@ -82,7 +82,7 @@ jobs:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2026-08-25
toolchain: nightly-2026-08-31
- name: Install Flutter
uses: subosito/flutter-action@1a449444c387b1966244ae4d4f8c696479add0b2 # v2

@ -47,7 +47,7 @@ jobs:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2026-08-25
toolchain: nightly-2026-08-31
- name: Install build dependencies
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev

@ -41,7 +41,7 @@ jobs:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2026-08-25
toolchain: nightly-2026-08-31
- name: Install build dependencies
run: sudo apt-get update && sudo apt-get install -y protobuf-compiler nasm libclang-dev

@ -30,7 +30,7 @@ jobs:
- name: Install Rust toolchain
uses: dtolnay/rust-toolchain@master
with:
toolchain: nightly-2026-08-25
toolchain: nightly-2026-08-31
- name: Normalize release version
id: version

File diff suppressed because it is too large Load Diff

@ -128,7 +128,7 @@ tower-http = { version = "=0.7.0", features = [
"compression-gzip",
"compression-zstd",
] }
hyper = { version = "=1.11.0", default-features = false, features = [
hyper = { version = "=1.11.1", default-features = false, features = [
"http1",
"http2",
"server",
@ -174,8 +174,8 @@ jsonwebtoken = { version = "=11.0.0", features = ["rust_crypto"] }
oauth2 = { version = "=5.0.0", default-features = false }
webauthn-rs = { version = "=0.6.1-dev", features = ["conditional-ui", "danger-allow-state-serialisation"] }
webauthn-rs-proto = "=0.6.1-dev"
aes-gcm = "=0.11.0"
aes = "=0.9.2"
aes-gcm = "=0.11.1"
aes = "=0.9.3"
cbc = { version = "=0.2.1", features = ["alloc", "block-padding"] }
ammonia = "=4.1.4"
http-acl = "=0.13.0"
@ -192,25 +192,25 @@ subtle = "=2.6.1"
# Serialization
serde = { version = "=1.0.229", features = ["derive"] }
serde_json = "=1.0.151"
quick-xml = "=0.41.0"
quick-xml = "=0.42.0"
serde_yaml = "=0.9.34"
serde_ignored = "=0.1.14"
toml = "=1.1.4"
serde_urlencoded = "=0.7.1"
serde_html_form = "=0.4.1"
serde_path_to_error = "=0.1.20"
indexmap = "=2.14.0"
indexmap = "=2.14.1"
# bincode 3.0.0 is an intentionally unbuildable placeholder release.
bincode = { version = "=2.0.1", features = ["serde"] }
# Caching
moka = { version = "=0.12.16", features = ["future", "sync"] }
dashmap = "=7.0.0-rc2"
lru = "=0.18.2"
lru = "=0.18.3"
# IDs & Crypto
nanoid = "=0.5.0"
uuid = { version = "=1.24.1", features = ["v4", "v5", "serde"] }
uuid = { version = "=1.26.0", features = ["v4", "v5", "serde"] }
sqids = "=0.4.2"
rand = "=0.10.2"
rand_08 = { package = "rand", version = "=0.8.6" }
@ -224,26 +224,27 @@ iana-time-zone = "=0.1.65"
# Streaming (consolidated xiu crate)
synctv-xiu = { path = "synctv-xiu", default-features = false }
webrtc = "=0.17.2"
webrtc = "=0.20.4"
rtc = "=0.20.4"
sdp = "=0.17.2"
opus = "=0.4.0"
fdk-aac = "=0.8.0"
retina = "=0.4.20"
rust_h265 = "=0.1.0"
rusty_aac = { version = "=0.5.0", default-features = false }
rusty_h264 = { version = "=0.10.0", default-features = false }
rusty_h264 = { version = "=0.12.0", default-features = false }
ffmpeg-next = { version = "=9.0.0", default-features = false, features = ["build", "format"] }
ffmpeg-sys-next = { version = "=9.0.0", features = ["build-portable"] }
# Object Storage
opendal = { version = "=0.58.1", default-features = false, features = [
opendal = { version = "=0.58.2", default-features = false, features = [
"executors-tokio",
"services-s3",
"layers-retry",
"layers-timeout",
"layers-concurrent-limit",
] }
opendal-http-transport-reqwest = { version = "=0.58.1", default-features = false, features = ["rustls-no-provider"] }
opendal-http-transport-reqwest = { version = "=0.58.2", default-features = false, features = ["rustls-no-provider"] }
# Logging & Tracing
tracing = "=0.1.44"
@ -271,11 +272,11 @@ url = "=2.5.8"
percent-encoding = "=2.3.2"
urlencoding = "=2.1.3"
regex = "=1.13.1"
oxc_allocator = "=0.144.0"
oxc_ast = "=0.144.0"
oxc_parser = "=0.144.0"
oxc_span = "=0.144.0"
boa_engine = { version = "=0.21.1", default-features = false }
oxc_allocator = "=0.147.0"
oxc_ast = "=0.147.0"
oxc_parser = "=0.147.0"
oxc_span = "=0.147.0"
boa_engine = { version = "=0.22.0", default-features = false }
paste = "=1.0.15"
byteorder = "=1.5.0"
http = "=1.5.0"
@ -318,7 +319,7 @@ lettre = { version = "=0.11.23", default-features = false, features = [
handlebars = { version = "=6.4.4", features = ["no_logging"] }
# Compression
flate2 = { version = "=1.1.9", default-features = false, features = ["zlib-rs"] }
flate2 = { version = "=1.1.10", default-features = false, features = ["zlib-rs"] }
brotli = "=8.0.4"
lz4_flex = { version = "=0.14.0", default-features = false, features = [
"alloc",

2154
docs/package-lock.json generated

File diff suppressed because it is too large Load Diff

@ -14,16 +14,16 @@
"validate": "npm run diagrams && npm run validate:content && astro check && astro build"
},
"dependencies": {
"@astrojs/starlight": "0.41.7",
"astro": "7.2.0",
"sharp": "0.35.3",
"@astrojs/starlight": "0.41.10",
"astro": "7.2.9",
"sharp": "0.35.4",
"tar-js": "0.3.0"
},
"devDependencies": {
"@astrojs/check": "0.9.9",
"@mermaid-js/mermaid-cli": "11.14.0",
"starlight-codeblock-fullscreen": "1.0.0",
"starlight-links-validator": "0.24.0",
"typescript": "5.9.3"
"@astrojs/check": "0.9.10",
"@mermaid-js/mermaid-cli": "11.16.0",
"starlight-codeblock-fullscreen": "2.0.0",
"starlight-links-validator": "0.25.3",
"typescript": "6.0.3"
}
}

@ -1,4 +1,4 @@
[toolchain]
channel = "nightly-2026-08-25"
channel = "nightly-2026-08-31"
profile = "minimal"
components = ["clippy", "rustfmt"]

@ -70,9 +70,7 @@ pub fn parse_multistatus(
}
Ok(Event::Text(text)) if in_response => {
if let Some(field) = current_field.as_ref() {
let value = text
.decode()
.map_err(|error| ProviderClientError::Parse(error.to_string()))?;
let value = text.xml_content(quick_xml::XmlVersion::Implicit1_0);
fields
.entry(field.clone())
.and_modify(|existing| existing.push_str(&value))
@ -81,9 +79,7 @@ pub fn parse_multistatus(
}
Ok(Event::GeneralRef(reference)) if in_response => {
if let Some(field) = current_field.as_ref() {
let decoded = reference
.decode()
.map_err(|error| ProviderClientError::Parse(error.to_string()))?;
let decoded = reference.xml_content(quick_xml::XmlVersion::Implicit1_0);
let value = match decoded.as_ref() {
"amp" => '&',
"lt" => '<',
@ -187,9 +183,8 @@ fn boolean(fields: &HashMap<String, String>, key: &str) -> bool {
.is_some_and(|value| matches!(value.as_str(), "1" | "true"))
}
fn local_name(name: &[u8]) -> String {
let name = name.rsplit(|byte| *byte == b':').next().unwrap_or(name);
String::from_utf8_lossy(name).into_owned()
fn local_name(name: &str) -> String {
name.rsplit(':').next().unwrap_or(name).to_owned()
}
fn dav_scope(user_id: &str, path: &str) -> String {

@ -50,12 +50,7 @@ where
}
},
);
let rewritten = rewrite_start(
&start,
reader.decoder(),
&inherited_base,
&mut proxy_scope_for,
)?;
let rewritten = rewrite_start(&start, &inherited_base, &mut proxy_scope_for)?;
writer.write_event(Event::Start(rewritten))?;
let mut context = ElementContext {
@ -89,12 +84,7 @@ where
let inherited_base = contexts
.last()
.map_or_else(|| source.clone(), |context| context.descendant_base.clone());
let rewritten = rewrite_start(
&start,
reader.decoder(),
&inherited_base,
&mut proxy_scope_for,
)?;
let rewritten = rewrite_start(&start, &inherited_base, &mut proxy_scope_for)?;
writer.write_event(Event::Empty(rewritten))?;
}
Event::Text(text) => {
@ -106,7 +96,7 @@ where
writer.write_event(Event::Text(text.into_owned()))?;
continue;
};
let decoded = text.decode()?;
let decoded = text.xml_content(quick_xml::XmlVersion::Implicit1_0);
let unescaped = quick_xml::escape::unescape(&decoded)?;
url_text.push_str(&unescaped);
}
@ -119,7 +109,7 @@ where
writer.write_event(Event::CData(cdata.into_owned()))?;
continue;
};
let decoded = cdata.decode()?;
let decoded = cdata.xml_content(quick_xml::XmlVersion::Implicit1_0);
url_text.push_str(&decoded);
}
Event::GeneralRef(reference) => {
@ -130,7 +120,7 @@ where
writer.write_event(Event::GeneralRef(reference.into_owned()))?;
continue;
};
let reference = reference.decode()?;
let reference = reference.xml_content(quick_xml::XmlVersion::Implicit1_0);
url_text.push_str(match reference.as_ref() {
"amp" => "&",
"lt" => "<",
@ -219,22 +209,20 @@ fn root_has_base_url(mpd: &str) -> Result<bool, anyhow::Error> {
fn rewrite_start<F>(
start: &BytesStart<'_>,
decoder: quick_xml::encoding::Decoder,
inherited_base: &Url,
proxy_scope_for: &mut F,
) -> Result<BytesStart<'static>, anyhow::Error>
where
F: FnMut(&str, MpdResourceKind) -> String,
{
let qualified_name = String::from_utf8(start.name().as_ref().to_vec())?;
let qualified_name = start.name().as_ref().to_owned();
let element_name = local_name(start.name().as_ref());
let mut rewritten = BytesStart::new(qualified_name);
for attribute in start.attributes() {
let attribute = attribute?;
let qualified_key = String::from_utf8(attribute.key.as_ref().to_vec())?;
let qualified_key = attribute.key.as_ref().to_owned();
let attribute_name = local_name(attribute.key.as_ref());
let value =
attribute.decoded_and_normalized_value(quick_xml::XmlVersion::Implicit1_0, decoder)?;
let value = attribute.normalized_value(quick_xml::XmlVersion::Implicit1_0)?;
let kind = uri_attribute_kind(&element_name, &qualified_key, &attribute_name);
let rewritten_value = match kind {
Some(MpdResourceKind::Media) if safe_relative_media_reference(&value) => value,
@ -360,9 +348,8 @@ fn ensure_trailing_slash(mut value: String) -> String {
value
}
fn local_name(name: &[u8]) -> String {
let name = name.rsplit(|byte| *byte == b':').next().unwrap_or(name);
String::from_utf8_lossy(name).into_owned()
fn local_name(name: &str) -> String {
name.rsplit(':').next().unwrap_or(name).to_owned()
}
#[cfg(test)]

@ -36,6 +36,7 @@ futures.workspace = true
async-trait.workspace = true
retina.workspace = true
webrtc.workspace = true
rtc.workspace = true
sdp.workspace = true
opus.workspace = true
fdk-aac.workspace = true

@ -1,11 +1,11 @@
use bytes::{BufMut as _, Bytes, BytesMut};
use fdk_aac::enc::{AudioObjectType, BitRate, ChannelMode, Encoder as AacEncoder, EncoderParams};
use opus::{Channels, Decoder as OpusDecoder};
use std::collections::VecDeque;
use webrtc::{
rtp::{codecs::h264::H264Packet, packet::Packet, packetizer::Depacketizer},
rtp_transceiver::rtp_codec::RTPCodecType,
use rtc::{
rtp::{codec::h264::H264Packet, packet::Packet, packetizer::Depacketizer},
rtp_transceiver::rtp_sender::RtpCodecKind,
};
use std::collections::VecDeque;
use crate::{
flv::define::{self, aac_packet_type, avc_packet_type},
@ -44,13 +44,13 @@ pub(crate) enum TrackFrameEncoder {
impl TrackFrameEncoder {
pub(crate) fn new(
kind: RTPCodecType,
kind: RtpCodecKind,
mime_type: &str,
channels: u16,
) -> Result<Self, MediaConversionError> {
match (kind, mime_type.to_ascii_lowercase().as_str()) {
(RTPCodecType::Video, "video/h264") => Ok(Self::Video(VideoFrameEncoder::default())),
(RTPCodecType::Audio, "audio/opus") => {
(RtpCodecKind::Video, "video/h264") => Ok(Self::Video(VideoFrameEncoder::default())),
(RtpCodecKind::Audio, "audio/opus") => {
AudioFrameEncoder::new(channels).map(Self::Audio)
}
_ => Err(MediaConversionError::UnsupportedCodec(
@ -427,7 +427,7 @@ mod tests {
let payload_len = opus_encoder.encode(&pcm, &mut payload)?;
payload.truncate(payload_len);
let packet = Packet {
header: webrtc::rtp::header::Header {
header: rtc::rtp::header::Header {
timestamp: index * 960,
..Default::default()
},
@ -463,7 +463,7 @@ mod tests {
let payload_len = opus_encoder.encode(&pcm, &mut payload)?;
payload.truncate(payload_len);
let packet = Packet {
header: webrtc::rtp::header::Header {
header: rtc::rtp::header::Header {
timestamp,
..Default::default()
},

File diff suppressed because it is too large Load Diff
Loading…
Cancel
Save