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

@@ -117,6 +117,8 @@ struct ClientRuntime {
agent_throttle_sender: Mutex<Option<Arc<dyn crate::udp_transport::AgentThrottleSender>>>,
http_caps_client: Mutex<crate::caps_http::HttpCapsClient>,
caps_rate_limiter: Mutex<crate::caps_http::CapsRateLimiter>,
utilization_statistics: Mutex<crate::stats::UtilizationStatistics>,
throttle: Mutex<crate::AgentThrottle>,
network_manager: Mutex<std::sync::Weak<crate::network_manager::NetworkManagerInner>>,
agent_manager: Mutex<std::sync::Weak<crate::agent_manager::AgentManagerInner>>,
object_manager: Mutex<Option<Arc<crate::object_manager::ObjectManagerInner>>>,
@@ -169,6 +171,11 @@ impl ClientRuntime {
agent_throttle_sender: Mutex::new(None),
http_caps_client: Mutex::new(http_caps_client),
caps_rate_limiter: Mutex::new(caps_rate_limiter),
utilization_statistics: Mutex::new(
crate::stats::UtilizationStatistics::new()
.expect("utilization statistics construction is infallible"),
),
throttle: Mutex::new(crate::AgentThrottle::default()),
network_manager: Mutex::new(std::sync::Weak::new()),
agent_manager: Mutex::new(std::sync::Weak::new()),
object_manager: Mutex::new(None),
@@ -651,6 +658,10 @@ impl GridClient {
self.agent_manager.as_deref_mut().expect("agent manager")
}
pub(crate) fn native_agent_manager(&self) -> Result<crate::AgentManager, crate::Error> {
crate::agent_manager::AgentManager::native_new(Some(Arc::new(self.clone())))
}
pub(crate) fn cached_agent_manager_inner(
&self,
) -> Option<Arc<crate::agent_manager::AgentManagerInner>> {
@@ -1142,6 +1153,38 @@ impl GridClient {
.unwrap_or_else(std::sync::PoisonError::into_inner) = value;
}
pub(crate) fn native_stats(&self) -> crate::stats::UtilizationStatistics {
self.runtime
.utilization_statistics
.lock()
.unwrap_or_else(std::sync::PoisonError::into_inner)
.clone()
}
pub(crate) fn native_set_stats(&self, value: crate::stats::UtilizationStatistics) {
*self
.runtime
.utilization_statistics
.lock()
.unwrap_or_else(std::sync::PoisonError::into_inner) = value;
}
pub(crate) fn native_throttle(&self) -> crate::AgentThrottle {
self.runtime
.throttle
.lock()
.unwrap_or_else(std::sync::PoisonError::into_inner)
.clone()
}
pub(crate) fn native_set_throttle(&self, value: crate::AgentThrottle) {
*self
.runtime
.throttle
.lock()
.unwrap_or_else(std::sync::PoisonError::into_inner) = value;
}
pub(crate) fn shutdown(&self) -> Result<(), ClientCoreError> {
self.runtime.shutdown()
}
@@ -1181,14 +1224,115 @@ impl Drop for GridClient {
}
impl crate::IGridClient for GridClient {
fn ais_client(&self) -> crate::InventoryAISClient {
self.native_ais_client()
.unwrap_or_else(|_| panic!("failed to construct InventoryAISClient"))
}
fn appearance(&self) -> crate::AppearanceManager {
self.native_appearance()
.unwrap_or_else(|_| panic!("failed to construct AppearanceManager"))
}
fn assets(&self) -> crate::AssetManager {
self.native_assets()
.unwrap_or_else(|_| panic!("failed to construct AssetManager"))
}
fn avatars(&self) -> crate::AvatarManager {
self.native_avatars()
.unwrap_or_else(|_| panic!("failed to construct AvatarManager"))
}
fn directory(&self) -> crate::DirectoryManager {
self.native_directory()
.unwrap_or_else(|_| panic!("failed to construct DirectoryManager"))
}
fn environment(&self) -> crate::EnvironmentManager {
self.native_environment()
.unwrap_or_else(|_| panic!("failed to construct EnvironmentManager"))
}
fn estate(&self) -> crate::EstateTools {
self.native_estate()
.unwrap_or_else(|_| panic!("failed to construct EstateTools"))
}
fn friends(&self) -> crate::FriendsManager {
self.native_friends()
.unwrap_or_else(|_| panic!("failed to construct FriendsManager"))
}
fn grid(&self) -> crate::GridManager {
self.native_grid()
.unwrap_or_else(|_| panic!("failed to construct GridManager"))
}
fn groups(&self) -> crate::GroupManager {
self.native_groups()
}
fn http_caps_client(&self) -> crate::caps_http::HttpCapsClient {
self.native_http_caps_client()
}
fn interest_list(&self) -> crate::InterestListManager {
self.native_interest_list()
.unwrap_or_else(|_| panic!("failed to construct InterestListManager"))
}
fn inventory(&self) -> crate::InventoryManager {
self.native_inventory()
.unwrap_or_else(|_| panic!("failed to construct InventoryManager"))
}
fn marketplace(&self) -> crate::marketplace::MarketplaceManager {
self.native_marketplace()
}
fn network(&self) -> crate::NetworkManager {
self.native_network()
.unwrap_or_else(|_| panic!("failed to construct NetworkManager"))
}
fn objects(&self) -> crate::ObjectManager {
self.native_objects()
.unwrap_or_else(|_| panic!("failed to construct ObjectManager"))
}
fn parcels(&self) -> crate::ParcelManager {
self.native_parcels()
.unwrap_or_else(|_| panic!("failed to construct ParcelManager"))
}
fn self_(&self) -> crate::AgentManager {
self.native_agent_manager()
.unwrap_or_else(|_| panic!("failed to construct AgentManager"))
}
fn settings(&self) -> Settings {
self.settings.clone()
}
fn sound(&self) -> crate::SoundManager {
self.native_sound()
.unwrap_or_else(|_| panic!("failed to construct SoundManager"))
}
fn stats(&self) -> crate::stats::UtilizationStatistics {
self.native_stats()
}
fn terrain(&self) -> crate::TerrainManager {
self.native_terrain()
.unwrap_or_else(|_| panic!("failed to construct TerrainManager"))
}
fn throttle(&self) -> crate::AgentThrottle {
self.native_throttle()
}
fn time_provider(&self) -> TimeProvider {
self.time_provider.clone()
}