Complete first release candidate audit (#107)
Some checks failed
API and SemVer surface / api-surface (push) Failing after 1m34s
Native code generation / deterministic (push) Has been cancelled
Concurrency and resource soak audit / soak (push) Has been cancelled
Documentation / documentation (push) Has been cancelled
performance evidence / audit (push) Has been cancelled
First release candidate / non-fuzz-release-gate (push) Has been cancelled
Release platform and feature matrix / audit (push) Has been cancelled
Release platform and feature matrix / matrix (false, linux-stable-minimal, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (false, macos-stable-portable, x86_64-apple-darwin, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (false, windows-stable-portable, x86_64-pc-windows-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-msrv-portable, x86_64-unknown-linux-gnu, 1.96.0) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-default, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-features, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Release platform and feature matrix / matrix (true, linux-stable-release-surface, x86_64-unknown-linux-gnu, stable) (push) Has been cancelled
Dependency and supply-chain audit / audit (push) Has been cancelled
Native release artifact audit / audit (push) Has been cancelled
Imaging and meshing gate / native (push) Failing after 53s
JPEG 2000 feature / linux (push) Successful in 2m49s
Native Rust workspace compile / compile (push) Failing after 59s
Skia feature / linux (push) Has been cancelled

This commit is contained in:
2026-08-12 14:44:28 +00:00
parent dceb394378
commit c9a1170a27
140 changed files with 82175 additions and 27179 deletions

View File

@@ -24,10 +24,16 @@ mod asset_cache;
mod asset_manager;
mod asset_material;
mod asset_models;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod asset_prim;
mod avatar_manager;
mod avatar_rig;
mod baking_texture_provider;
mod bit_pack;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod builtin_simple_renderer;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod callback_runtime;
mod caps;
mod caps_http;
mod client_core;
@@ -36,13 +42,21 @@ mod download_manager;
mod environment_manager;
mod estate_tools;
mod event_queue;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod event_subscription;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod file_helper;
mod friends_manager;
mod gesture;
mod gltf;
mod group_manager;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod helpers;
mod initial_outfit;
mod inventory;
mod inventory_ais;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod inventory_exception;
mod inventory_manager;
#[rustfmt::skip] // Deterministic machine output is formatted by the pinned generator.
mod foliage_catalog;
@@ -50,24 +64,64 @@ mod generated;
#[rustfmt::skip] // Deterministic machine output is formatted by the pinned generator.
mod genepool_catalog;
mod j2k;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod linden_mesh;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod logger;
mod login;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod lsl_syntax;
#[path = "marketplace.rs"]
mod marketplace_runtime;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod mesh_asset;
mod message_codec;
mod message_decoder;
mod model_workflow;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod name_value;
mod network_manager;
mod object_manager;
mod object_material;
mod object_model;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod observable_dictionary;
#[rustfmt::skip]
pub mod packet_catalog;
mod directory_manager;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod disposal_helper;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod dynamic_messages;
mod grid_manager;
pub use grid_manager::MapItemData;
mod interest_list;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod packet_base;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod packet_decoder;
mod packet_wire;
mod parcel_manager;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod particle_simulator;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod port_errors;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod position_helper;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod prim_object;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod protocol_manager;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod rendering_binary_reader;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod rendering_loader;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod rendering_metadata;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod repeat;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod service_collection;
mod sim_stats;
mod skeleton;
mod slurl;
@@ -80,8 +134,14 @@ mod terrain_manager;
mod transfers;
mod udp_transport;
mod user_report;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod uuid_formatter;
#[rustfmt::skip] // Deterministic machine output is formatted by the pinned generator.
mod visual_catalog;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod avatar_model;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod avatar_physics;
#[cfg(test)]
mod appearance_baker_semantics;
@@ -190,6 +250,7 @@ impl imaging::Baker {
}
}
pub use callback_runtime::{AsyncInvocation, DictionaryCallbackTarget};
pub use caps_http::CapsHttpLimits;
pub use client_core::{
ClientCoreError, ClientLifecycleState, ClientService, GridClientBuilder, ShutdownPhase,
@@ -199,6 +260,7 @@ pub use libremetaverse_imaging as imaging_abstractions;
pub use libremetaverse_structured_data as structured_data;
pub use libremetaverse_types as types;
pub use libremetaverse_types::Error;
pub use logger::LoggerCallbackTarget;
pub use network_manager::SimulatorCollection;
pub use udp_transport::{
AgentThrottleSender, UdpPacketHandler, UdpThrottleCategory, UdpTransportConfig,
@@ -213,6 +275,23 @@ pub(crate) fn is_offline_fixture_uri(uri: &libremetaverse_types::compat::Uri) ->
.is_some_and(|host| host == "invalid" || host.ends_with(".invalid"))
}
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod collada;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod coordinate_frame;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod physics_volume_morphs;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod simulator_data_pool;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod sound_catalog;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod statistics_runtime;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod texture_pipeline;
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the pinned C# API.
mod threading_runtime;
/// Rust object-safe view of the C# `InventoryBase` inheritance hierarchy.
pub trait InventoryObjectClass: std::any::Any {
/// Returns the concrete value for exact C# runtime-type checks.
@@ -320,19 +399,177 @@ impl InventoryItemClass for InventoryTexture {}
impl InventoryItemClass for InventoryWearable {}
/// Project-owned boundary types for external `MessagePack` signatures.
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the external API boundary.
pub mod message_pack {
pub trait IMessagePackFormatter<T = ()> {}
pub struct MessagePackReader;
use libremetaverse_types::Error;
pub trait IMessagePackFormatter<T = ()> {
fn serialize(
&self,
writer: &mut MessagePackWriter,
value: T,
options: MessagePackSerializerOptions,
) -> Result<(), Error>;
fn deserialize(
&mut self,
reader: &mut MessagePackReader,
options: MessagePackSerializerOptions,
) -> Result<T, Error>;
}
#[derive(Clone, Debug)]
pub struct MessagePackReader {
bytes: Vec<u8>,
position: usize,
}
impl MessagePackReader {
#[must_use]
pub fn new(bytes: Vec<u8>) -> Self {
Self { bytes, position: 0 }
}
pub fn read_bytes(&mut self) -> Result<Option<Vec<u8>>, Error> {
let marker = *self
.bytes
.get(self.position)
.ok_or(Error::IndexOutOfRange)?;
self.position += 1;
if marker == 0xc0 {
return Ok(None);
}
let length = match marker {
0xc4 => {
let length = *self
.bytes
.get(self.position)
.ok_or(Error::IndexOutOfRange)?;
self.position += 1;
usize::from(length)
}
0xc5 => {
let length = self
.bytes
.get(self.position..self.position + 2)
.ok_or(Error::IndexOutOfRange)?;
self.position += 2;
usize::from(u16::from_be_bytes([length[0], length[1]]))
}
0xc6 => {
let length = self
.bytes
.get(self.position..self.position + 4)
.ok_or(Error::IndexOutOfRange)?;
self.position += 4;
usize::try_from(u32::from_be_bytes([
length[0], length[1], length[2], length[3],
]))
.map_err(|_| Error::IndexOutOfRange)?
}
_ => {
return Err(Error::Parse {
position: self.position - 1,
context: "MessagePack binary marker",
});
}
};
let end = self
.position
.checked_add(length)
.ok_or(Error::IndexOutOfRange)?;
let value = self
.bytes
.get(self.position..end)
.ok_or(Error::IndexOutOfRange)?
.to_vec();
self.position = end;
Ok(Some(value))
}
}
#[derive(Clone, Copy, Debug, Default)]
pub struct MessagePackSerializerOptions;
pub struct MessagePackWriter;
#[derive(Clone, Debug, Default)]
pub struct MessagePackWriter {
bytes: Vec<u8>,
}
impl MessagePackWriter {
#[must_use]
pub fn new() -> Self {
Self::default()
}
pub fn write_bytes(&mut self, value: &[u8]) -> Result<(), Error> {
match value.len() {
length if u8::try_from(length).is_ok() => {
self.bytes.push(0xc4);
self.bytes.push(length as u8);
}
length if u16::try_from(length).is_ok() => {
self.bytes.push(0xc5);
self.bytes.extend_from_slice(&(length as u16).to_be_bytes());
}
length => {
self.bytes.push(0xc6);
let length = u32::try_from(length).map_err(|_| Error::Argument)?;
self.bytes.extend_from_slice(&length.to_be_bytes());
}
}
self.bytes.extend_from_slice(value);
Ok(())
}
#[must_use]
pub fn as_slice(&self) -> &[u8] {
&self.bytes
}
#[must_use]
pub fn into_bytes(self) -> Vec<u8> {
self.bytes
}
}
}
/// Project-owned boundary types for external logging signatures.
#[allow(clippy::all, clippy::pedantic)] // Public shapes mirror the external API boundary.
pub mod logging {
pub trait ILoggerFactory {}
use std::sync::Arc;
#[derive(Clone, Copy, Debug, Eq, Hash, PartialEq)]
use libremetaverse_types::compat::{Close, ExternalError, Object};
pub trait ILogger: Send + Sync {
fn is_enabled(&self, level: LogLevel) -> bool;
fn log(
&self,
level: LogLevel,
message: &Object,
exception: Option<&ExternalError>,
client_name: Option<&str>,
);
fn begin_scope(&self, state: Object) -> Box<dyn Close>;
}
pub trait ILoggerFactory: Send + Sync {
fn create_logger(&self, name: &str) -> Arc<dyn ILogger>;
fn shutdown(&self) -> Result<(), ExternalError>;
}
#[derive(Clone, Copy, Debug, Eq, Hash, Ord, PartialEq, PartialOrd)]
pub struct LogLevel(pub i32);
impl LogLevel {
pub const TRACE: Self = Self(0);
pub const DEBUG: Self = Self(1);
pub const INFORMATION: Self = Self(2);
pub const WARNING: Self = Self(3);
pub const ERROR: Self = Self(4);
pub const CRITICAL: Self = Self(5);
pub const NONE: Self = Self(6);
}
}
/// Project-owned boundary types for external networking signatures.
@@ -345,7 +582,7 @@ pub mod net {
/// Project-owned boundary types for external service-collection signatures.
pub mod services {
pub trait IServiceCollection {}
pub use crate::service_collection::{IServiceCollection, ServiceCollection};
}
/// Common behavior for program shims while the network stack is unimplemented.