diff --git a/Cargo.lock b/Cargo.lock index 44b52c1658..fc33c6fa64 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -193,15 +193,6 @@ version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a4c527152e37cf757a3f78aae5a06fbeefdb07ccc535c980a3208ee3060dd544" -[[package]] -name = "arrayvec" -version = "0.4.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cd9fd44efafa8690358b7408d253adf110036b88f55672a933f01d616ad9b1b9" -dependencies = [ - "nodrop", -] - [[package]] name = "arrayvec" version = "0.5.1" @@ -403,7 +394,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d8fb2d74254a3a0b5cac33ac9f8ed0e44aa50378d9dbb2e5d83bd21ed1dc2c8a" dependencies = [ "arrayref", - "arrayvec 0.5.1", + "arrayvec", "constant_time_eq", ] @@ -414,7 +405,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9ff35b701f3914bdb8fad3368d822c766ef2858b2583198e41639b936f09d3f" dependencies = [ "arrayref", - "arrayvec 0.5.1", + "arrayvec", "cc", "cfg-if 0.1.10", "constant_time_eq", @@ -1099,16 +1090,16 @@ dependencies = [ [[package]] name = "crossbeam" -version = "0.7.2" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d818a4990769aac0c7ff1360e233ef3a41adcb009ebb2036bf6915eb0f6b23c" +checksum = "fd01a6eb3daaafa260f6fc94c3a6c36390abc2080e38e3e34ced87393fb77d80" dependencies = [ - "cfg-if 0.1.10", - "crossbeam-channel 0.3.9", - "crossbeam-deque 0.7.3", - "crossbeam-epoch 0.7.2", - "crossbeam-queue 0.1.2", - "crossbeam-utils 0.6.6", + "cfg-if 1.0.0", + "crossbeam-channel 0.5.0", + "crossbeam-deque 0.8.0", + "crossbeam-epoch 0.9.0", + "crossbeam-queue 0.3.1", + "crossbeam-utils 0.8.0", ] [[package]] @@ -1162,20 +1153,6 @@ dependencies = [ "crossbeam-utils 0.8.0", ] -[[package]] -name = "crossbeam-epoch" -version = "0.7.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fedcd6772e37f3da2a9af9bf12ebe046c0dfe657992377b4df982a2b54cd37a9" -dependencies = [ - "arrayvec 0.4.12", - "cfg-if 0.1.10", - "crossbeam-utils 0.6.6", - "lazy_static", - "memoffset", - "scopeguard", -] - [[package]] name = "crossbeam-epoch" version = "0.8.2" @@ -1205,15 +1182,6 @@ dependencies = [ "scopeguard", ] -[[package]] -name = "crossbeam-queue" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7c979cd6cfe72335896575c6b5688da489e420d36a27a0b9eb0c73db574b4a4b" -dependencies = [ - "crossbeam-utils 0.6.6", -] - [[package]] name = "crossbeam-queue" version = "0.2.3" @@ -1225,6 +1193,16 @@ dependencies = [ "maybe-uninit", ] +[[package]] +name = "crossbeam-queue" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0f6cb3c7f5b8e51bc3ebb73a2327ad4abdbd119dc13223f14f961d2f38486756" +dependencies = [ + "cfg-if 1.0.0", + "crossbeam-utils 0.8.0", +] + [[package]] name = "crossbeam-utils" version = "0.6.6" @@ -3156,12 +3134,6 @@ dependencies = [ "libc", ] -[[package]] -name = "nodrop" -version = "0.1.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72ef4a56884ca558e5ddb05a1d1e7e1bfd9a68d9ed024c21704cc98872dae1bb" - [[package]] name = "noise" version = "0.6.0" @@ -3837,11 +3809,11 @@ dependencies = [ [[package]] name = "prometheus" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "30d70cf4412832bcac9cffe27906f4a66e450d323525e977168c70d1b36120ae" +checksum = "c8425533e7122f0c3cc7a37e6244b16ad3a2cc32ae7ac6276e2a75da0d9c200d" dependencies = [ - "cfg-if 0.1.10", + "cfg-if 1.0.0", "fnv", "lazy_static", "parking_lot 0.11.0", @@ -4524,7 +4496,7 @@ version = "0.10.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c5f08237e667ac94ad20f8878b5943d91a93ccb231428446c57c21c57779016d" dependencies = [ - "arrayvec 0.5.1", + "arrayvec", "hashbrown 0.7.2", "mopa", "rayon", @@ -5231,9 +5203,9 @@ dependencies = [ [[package]] name = "tracing-tracy" -version = "0.3.0" +version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f70411ba0d11c4aee042b1c73e68086322a293f8038c53ac95d36319c91ec19" +checksum = "b668a0e08f29842a38973cc33317dba03a3062538c762df7425aa6397bce480a" dependencies = [ "tracing-core", "tracing-subscriber", @@ -5242,18 +5214,18 @@ dependencies = [ [[package]] name = "tracy-client" -version = "0.9.0" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "eb214203bffe8cefe9bc0dfc12140f85e8d59b42e1f52f696071fdf8595e066a" +checksum = "9e8ccdb37ca05e354a50011b8a195f115215e46324f65be92495859882cea453" dependencies = [ "tracy-client-sys", ] [[package]] name = "tracy-client-sys" -version = "0.10.0" +version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3b1b6565366c88aa66599426f400751c5cd7a315f6493b3578da309ae686aaf1" +checksum = "1ee6f0f7878155b6102ab5aba86a92ec4357702ad44683df68ab5493ba3c86a2" dependencies = [ "cc", ] @@ -5645,7 +5617,7 @@ version = "0.8.0" dependencies = [ "authc", "chrono", - "crossbeam", + "crossbeam-channel 0.5.0", "diesel", "diesel_migrations", "dotenv", @@ -5818,7 +5790,7 @@ dependencies = [ "bincode", "bitflags", "clap", - "crossbeam-channel 0.4.4", + "crossbeam-channel 0.5.0", "futures 0.3.5", "lazy_static", "lz-fear", diff --git a/common/Cargo.toml b/common/Cargo.toml index 82e28bda46..10e19925ad 100644 --- a/common/Cargo.toml +++ b/common/Cargo.toml @@ -14,7 +14,7 @@ default = ["simd"] [dependencies] arraygen = "0.1.13" -crossbeam = "0.7" +crossbeam = "0.8" enum-iterator = "0.6" lazy_static = "1.4.0" num-derive = "0.3" @@ -55,7 +55,7 @@ csv = { version = "1.1.3", optional = true } structopt = { version = "0.3.13", optional = true } # Tracy -tracy-client = { version = "0.9.0", optional = true } +tracy-client = { version = "0.10.0", optional = true } [dev-dependencies] #bench diff --git a/common/net/Cargo.toml b/common/net/Cargo.toml index ed783f74c3..b83608fd47 100644 --- a/common/net/Cargo.toml +++ b/common/net/Cargo.toml @@ -30,4 +30,4 @@ specs = { git = "https://github.com/amethyst/specs.git", features = ["serde", "s serde = { version = "1.0.110", features = ["derive"] } # Tracy -tracy-client = { version = "0.9.0", optional = true } +tracy-client = { version = "0.10.0", optional = true } diff --git a/common/src/metrics.rs b/common/src/metrics.rs index 19e034f353..cc7435bd41 100644 --- a/common/src/metrics.rs +++ b/common/src/metrics.rs @@ -1,19 +1,19 @@ -use std::sync::atomic::AtomicI64; +use std::sync::atomic::AtomicU64; #[derive(Default)] pub struct SysMetrics { - pub agent_ns: AtomicI64, - pub mount_ns: AtomicI64, - pub controller_ns: AtomicI64, - pub character_behavior_ns: AtomicI64, - pub stats_ns: AtomicI64, - pub phys_ns: AtomicI64, - pub projectile_ns: AtomicI64, - pub melee_ns: AtomicI64, + pub agent_ns: AtomicU64, + pub mount_ns: AtomicU64, + pub controller_ns: AtomicU64, + pub character_behavior_ns: AtomicU64, + pub stats_ns: AtomicU64, + pub phys_ns: AtomicU64, + pub projectile_ns: AtomicU64, + pub melee_ns: AtomicU64, } #[derive(Default)] pub struct PhysicsMetrics { - pub entity_entity_collision_checks: i64, - pub entity_entity_collisions: i64, + pub entity_entity_collision_checks: u64, + pub entity_entity_collisions: u64, } diff --git a/common/sys/Cargo.toml b/common/sys/Cargo.toml index 3efc4a95e8..3c0776317d 100644 --- a/common/sys/Cargo.toml +++ b/common/sys/Cargo.toml @@ -32,7 +32,7 @@ specs = { git = "https://github.com/amethyst/specs.git", features = ["serde", "s serde = { version = "1.0.110", features = ["derive"] } # Tracy -tracy-client = { version = "0.9.0", optional = true } +tracy-client = { version = "0.10.0", optional = true } # Plugins toml = { version = "0.5.7", optional = true } diff --git a/common/sys/src/agent.rs b/common/sys/src/agent.rs index 806162c5e3..ae02157b6c 100644 --- a/common/sys/src/agent.rs +++ b/common/sys/src/agent.rs @@ -1488,7 +1488,7 @@ impl<'a> System<'a> for Sys { } } sys_metrics.agent_ns.store( - start_time.elapsed().as_nanos() as i64, + start_time.elapsed().as_nanos() as u64, std::sync::atomic::Ordering::Relaxed, ); } diff --git a/common/sys/src/character_behavior.rs b/common/sys/src/character_behavior.rs index 59151b79e3..395da28806 100644 --- a/common/sys/src/character_behavior.rs +++ b/common/sys/src/character_behavior.rs @@ -206,7 +206,7 @@ impl<'a> System<'a> for Sys { incorporate_update(&mut tuple, state_update); } sys_metrics.character_behavior_ns.store( - start_time.elapsed().as_nanos() as i64, + start_time.elapsed().as_nanos() as u64, std::sync::atomic::Ordering::Relaxed, ); } diff --git a/common/sys/src/controller.rs b/common/sys/src/controller.rs index 07027322f9..283bd7530e 100644 --- a/common/sys/src/controller.rs +++ b/common/sys/src/controller.rs @@ -121,7 +121,7 @@ impl<'a> System<'a> for Sys { } } sys_metrics.controller_ns.store( - start_time.elapsed().as_nanos() as i64, + start_time.elapsed().as_nanos() as u64, std::sync::atomic::Ordering::Relaxed, ); } diff --git a/common/sys/src/melee.rs b/common/sys/src/melee.rs index 3591672b73..accc6ab276 100644 --- a/common/sys/src/melee.rs +++ b/common/sys/src/melee.rs @@ -157,7 +157,7 @@ impl<'a> System<'a> for Sys { } } sys_metrics.melee_ns.store( - start_time.elapsed().as_nanos() as i64, + start_time.elapsed().as_nanos() as u64, std::sync::atomic::Ordering::Relaxed, ); } diff --git a/common/sys/src/mount.rs b/common/sys/src/mount.rs index 8074436567..80b71cfed5 100644 --- a/common/sys/src/mount.rs +++ b/common/sys/src/mount.rs @@ -93,7 +93,7 @@ impl<'a> System<'a> for Sys { mountings.remove(entity); } sys_metrics.mount_ns.store( - start_time.elapsed().as_nanos() as i64, + start_time.elapsed().as_nanos() as u64, std::sync::atomic::Ordering::Relaxed, ); } diff --git a/common/sys/src/phys.rs b/common/sys/src/phys.rs index 5b59633c70..c0303a13bb 100644 --- a/common/sys/src/phys.rs +++ b/common/sys/src/phys.rs @@ -761,7 +761,7 @@ impl<'a> System<'a> for Sys { event_emitter.emit(ServerEvent::LandOnGround { entity, vel: vel.0 }); }); sys_metrics.phys_ns.store( - start_time.elapsed().as_nanos() as i64, + start_time.elapsed().as_nanos() as u64, std::sync::atomic::Ordering::Relaxed, ); } diff --git a/common/sys/src/projectile.rs b/common/sys/src/projectile.rs index 61bdd1a9ab..2072858e10 100644 --- a/common/sys/src/projectile.rs +++ b/common/sys/src/projectile.rs @@ -233,7 +233,7 @@ impl<'a> System<'a> for Sys { .unwrap_or_default(); } sys_metrics.projectile_ns.store( - start_time.elapsed().as_nanos() as i64, + start_time.elapsed().as_nanos() as u64, std::sync::atomic::Ordering::Relaxed, ); } diff --git a/common/sys/src/stats.rs b/common/sys/src/stats.rs index c503160436..c44d500de1 100644 --- a/common/sys/src/stats.rs +++ b/common/sys/src/stats.rs @@ -160,7 +160,7 @@ impl<'a> System<'a> for Sys { } } sys_metrics.stats_ns.store( - start_time.elapsed().as_nanos() as i64, + start_time.elapsed().as_nanos() as u64, std::sync::atomic::Ordering::Relaxed, ); } diff --git a/network/Cargo.toml b/network/Cargo.toml index 11039b8d88..11f59cb90b 100644 --- a/network/Cargo.toml +++ b/network/Cargo.toml @@ -18,13 +18,13 @@ default = ["metrics","compression"] bincode = "1.2" serde = { version = "1.0" } #sending -crossbeam-channel = "0.4.2" +crossbeam-channel = "0.5" # NOTE: Upgrading async-std can trigger spontanious crashes for `network`ing. Consider elaborate tests before upgrading async-std = { version = "~1.5", default-features = false, features = ["std", "async-task", "default"] } #tracing and metrics tracing = { version = "0.1", default-features = false } tracing-futures = "0.2" -prometheus = { version = "0.10", default-features = false, optional = true } +prometheus = { version = "0.11", default-features = false, optional = true } #async futures = { version = "0.3", features = ["thread-pool"] } #mpsc channel registry diff --git a/network/src/metrics.rs b/network/src/metrics.rs index a753229a55..d43aeaae3a 100644 --- a/network/src/metrics.rs +++ b/network/src/metrics.rs @@ -1,6 +1,6 @@ use crate::types::{Cid, Frame, Pid}; use prometheus::{ - core::{AtomicI64, GenericCounter}, + core::{AtomicU64, GenericCounter}, IntCounter, IntCounterVec, IntGauge, IntGaugeVec, Opts, Registry, }; use std::error::Error; @@ -281,7 +281,7 @@ pub(crate) struct PidCidFrameCache { pub(crate) struct MultiCidFrameCache { metric: IntCounterVec, - cache: Vec<[Option>; Frame::FRAMES_LEN as usize]>, + cache: Vec<[Option>; Frame::FRAMES_LEN as usize]>, } impl MultiCidFrameCache { @@ -307,7 +307,7 @@ impl MultiCidFrameCache { ]); } - pub fn with_label_values(&mut self, cid: Cid, frame: &Frame) -> &GenericCounter { + pub fn with_label_values(&mut self, cid: Cid, frame: &Frame) -> &GenericCounter { self.populate(cid); let frame_int = frame.get_int() as usize; let r = &mut self.cache[cid as usize][frame_int]; @@ -322,7 +322,7 @@ impl MultiCidFrameCache { } pub(crate) struct CidFrameCache { - cache: [GenericCounter; Frame::FRAMES_LEN as usize], + cache: [GenericCounter; Frame::FRAMES_LEN as usize], } impl CidFrameCache { @@ -341,7 +341,7 @@ impl CidFrameCache { Self { cache } } - pub fn with_label_values(&mut self, frame: &Frame) -> &GenericCounter { + pub fn with_label_values(&mut self, frame: &Frame) -> &GenericCounter { &self.cache[frame.get_int() as usize] } } diff --git a/network/src/prios.rs b/network/src/prios.rs index 6ac05c75e0..46d31024b5 100644 --- a/network/src/prios.rs +++ b/network/src/prios.rs @@ -158,7 +158,7 @@ impl PrioManager { self.metrics .message_out_throughput .with_label_values(&[&self.pid, &sid_string]) - .inc_by(msg.buffer.data.len() as i64); + .inc_by(msg.buffer.data.len() as u64); } //trace!(?prio, ?sid_string, "tick"); diff --git a/network/src/protocols.rs b/network/src/protocols.rs index 1616691ff7..7b0b8651b6 100644 --- a/network/src/protocols.rs +++ b/network/src/protocols.rs @@ -182,7 +182,7 @@ impl TcpProtocol { ref data, } = frame { - throughput_cache.inc_by(data.len() as i64); + throughput_cache.inc_by(data.len() as u64); } } w2c_cid_frame_s @@ -291,7 +291,7 @@ impl TcpProtocol { ref data, } = frame { - throughput_cache.inc_by(data.len() as i64); + throughput_cache.inc_by(data.len() as u64); } } if let Err(e) = Self::write_frame(&mut stream, frame).await { @@ -372,7 +372,7 @@ impl UdpProtocol { Frame::gen_data(*<&[u8; 18]>::try_from(&bytes[1..19]).unwrap()); let mut data = vec![0; length as usize]; #[cfg(feature = "metrics")] - throughput_cache.inc_by(length as i64); + throughput_cache.inc_by(length as u64); data.copy_from_slice(&bytes[19..]); Frame::Data { mid, start, data } }, @@ -459,7 +459,7 @@ impl UdpProtocol { buffer[17..19].copy_from_slice(&(data.len() as u16).to_le_bytes()); buffer[19..(data.len() + 19)].clone_from_slice(&data[..]); #[cfg(feature = "metrics")] - throughput_cache.inc_by(data.len() as i64); + throughput_cache.inc_by(data.len() as u64); 19 + data.len() }, Frame::Raw(data) => { diff --git a/server-cli/Cargo.toml b/server-cli/Cargo.toml index 7ff170040f..8ae7ff672f 100644 --- a/server-cli/Cargo.toml +++ b/server-cli/Cargo.toml @@ -27,7 +27,7 @@ ron = {version = "0.6", default-features = false} serde = {version = "1.0", features = [ "rc", "derive" ]} # Tracy -tracing-tracy = { version = "0.3.0", optional = true } +tracing-tracy = { version = "0.4.0", optional = true } [dependencies.tui] git = "https://github.com/fdehau/tui-rs.git" diff --git a/server/Cargo.toml b/server/Cargo.toml index 04da8efbb2..7d17b39458 100644 --- a/server/Cargo.toml +++ b/server/Cargo.toml @@ -37,8 +37,8 @@ serde_json = "1.0.50" rand = { version = "0.7", features = ["small_rng"] } chrono = "0.4.9" hashbrown = { version = "0.7.2", features = ["rayon", "serde", "nightly"] } -crossbeam = "0.7.2" -prometheus = { version = "0.10", default-features = false} +crossbeam-channel = "0.5" +prometheus = { version = "0.11", default-features = false} tiny_http = "0.7.0" portpicker = { git = "https://github.com/xMAC94x/portpicker-rs" } authc = { git = "https://gitlab.com/veloren/auth.git", rev = "b943c85e4a38f5ec60cd18c34c73097640162bfe" } diff --git a/server/src/chunk_generator.rs b/server/src/chunk_generator.rs index 35ab7e8032..624c67c899 100644 --- a/server/src/chunk_generator.rs +++ b/server/src/chunk_generator.rs @@ -2,7 +2,6 @@ use crate::metrics::ChunkGenMetrics; #[cfg(not(feature = "worldgen"))] use crate::test_world::{IndexOwned, World}; use common::{generation::ChunkSupplement, terrain::TerrainChunk}; -use crossbeam::channel; use hashbrown::{hash_map::Entry, HashMap}; use specs::Entity as EcsEntity; use std::sync::{ @@ -19,15 +18,15 @@ type ChunkGenResult = ( ); pub struct ChunkGenerator { - chunk_tx: channel::Sender, - chunk_rx: channel::Receiver, + chunk_tx: crossbeam_channel::Sender, + chunk_rx: crossbeam_channel::Receiver, pending_chunks: HashMap, Arc>, metrics: Arc, } impl ChunkGenerator { #[allow(clippy::new_without_default)] // TODO: Pending review in #587 pub fn new(metrics: ChunkGenMetrics) -> Self { - let (chunk_tx, chunk_rx) = channel::unbounded(); + let (chunk_tx, chunk_rx) = crossbeam_channel::unbounded(); Self { chunk_tx, chunk_rx, diff --git a/server/src/connection_handler.rs b/server/src/connection_handler.rs index bbc04605cd..4e4dc02e0a 100644 --- a/server/src/connection_handler.rs +++ b/server/src/connection_handler.rs @@ -1,5 +1,5 @@ use crate::{Client, ClientType, ServerInfo}; -use crossbeam::{bounded, unbounded, Receiver, Sender}; +use crossbeam_channel::{bounded, unbounded, Receiver, Sender}; use futures_channel::oneshot; use futures_executor::block_on; use futures_timer::Delay; diff --git a/server/src/persistence/character_loader.rs b/server/src/persistence/character_loader.rs index 03982c7dde..a352ae4670 100644 --- a/server/src/persistence/character_loader.rs +++ b/server/src/persistence/character_loader.rs @@ -7,7 +7,7 @@ use common::{ character::{CharacterId, CharacterItem}, comp::item::tool::AbilityMap, }; -use crossbeam::{channel, channel::TryIter}; +use crossbeam_channel::{self, TryIter}; use std::path::Path; use tracing::error; @@ -65,14 +65,14 @@ pub struct CharacterLoaderResponse { /// Responses are polled on each server tick in the format /// [`CharacterLoaderResponse`] pub struct CharacterLoader { - update_rx: channel::Receiver, - update_tx: channel::Sender, + update_rx: crossbeam_channel::Receiver, + update_tx: crossbeam_channel::Sender, } impl CharacterLoader { pub fn new(db_dir: &Path, map: &AbilityMap) -> diesel::QueryResult { - let (update_tx, internal_rx) = channel::unbounded::(); - let (internal_tx, update_rx) = channel::unbounded::(); + let (update_tx, internal_rx) = crossbeam_channel::unbounded::(); + let (internal_tx, update_rx) = crossbeam_channel::unbounded::(); let mut conn = establish_connection(db_dir)?; diff --git a/server/src/persistence/character_updater.rs b/server/src/persistence/character_updater.rs index 07bb46e9ee..ca58c0ea96 100644 --- a/server/src/persistence/character_updater.rs +++ b/server/src/persistence/character_updater.rs @@ -2,7 +2,6 @@ use crate::comp; use common::{character::CharacterId, comp::item::ItemId}; use crate::persistence::{establish_connection, VelorenConnection}; -use crossbeam::channel; use std::{path::Path, sync::Arc}; use tracing::{error, trace}; @@ -19,14 +18,14 @@ pub type CharacterUpdateData = ( /// This is used to make updates to a character and their persisted components, /// such as inventory, loadout, etc... pub struct CharacterUpdater { - update_tx: Option>>, + update_tx: Option>>, handle: Option>, } impl CharacterUpdater { pub fn new(db_dir: &Path) -> diesel::QueryResult { let (update_tx, update_rx) = - channel::unbounded::>(); + crossbeam_channel::unbounded::>(); let mut conn = establish_connection(db_dir)?; diff --git a/voxygen/Cargo.toml b/voxygen/Cargo.toml index 8ba2c81bcd..1f0f6390e1 100644 --- a/voxygen/Cargo.toml +++ b/voxygen/Cargo.toml @@ -63,7 +63,7 @@ bincode = "1.2" chrono = "0.4.9" cpal = "0.13" copy_dir = "0.1.2" -crossbeam = "=0.7.2" +crossbeam = "0.8.0" deunicode = "1.0" # TODO: remove directories-next = "2.0" @@ -88,7 +88,7 @@ inline_tweak = "1.0.2" itertools = "0.9.0" # Tracy -tracing-tracy = { version = "0.3.0", optional = true } +tracing-tracy = { version = "0.4.0", optional = true } # Logging termcolor = "1.1"