NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #4000 most downloaded on crates.io
Deterministic Simulator for distributed systems.
Last release 12 months ago
11 Oct 2025
Release timing varies
gaps range from 9 days to 8 months
Nearly every release is documented
notes for 39 of 39 stable releases
Nothing withdrawn
no release was ever pulled
5 years old
46 releases · first in 2021
One column per quarter.
Name of the default node is changed from main to madsim-main.
main to madsim-main.libc::gethostname now returns the name of the current node, or madsim-node-{id} if it's unnamed.Update dependency toml to v0.9.
toml to v0.9.Fix the problem where random is not deterministic on OSX (#244).
random is not deterministic on OSX (#244).Fix the problem where spawn in drop panics (#228).
Remove Handle::spawn and Handle::spawn_blocking as the implementation is incorrect.
Handle::spawn and Handle::spawn_blocking as the implementation is incorrect.Implement Debug for Handle and AbortHandle.
Debug for Handle and AbortHandle.MADSIM_ALLOW_SYSTEM_THREAD is set, executor won't panic when no task is ready.Fix the problem that Handle::spawn spawns the task in a new node.
Handle::spawn spawns the task in a new node.### Added - Add Runtime::handle().
Runtime::handle().Add a fake runtime::Handle. Note that this is a re-export of madsim::Handle. Tasks spawned with this handle are not correctly associated with the toki
runtime::Handle. Note that this is a re-export of madsim::task::Handle. Tasks spawned with this handle are not correctly associated with the tokio runtime.Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
lookup_host receives an invalid address.Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
restart_on_panic_matching to support auto restarting on panic with certain messages.tonic: fix panic on connection reset
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
time::advance.add metric num_tasks_by_node_by_spawn
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
AbortHandle.RuntimeMetrics.Runtime.tonic: fix the error when server stream is broken
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
SmallRng with Xoshiro256PlusPlus for reproducibility across platforms.remove printing MADSIM_CONFIG_HASH to avoid confusion
MADSIM_CONFIG_HASH to avoid confusionSigned-off-by: Runji Wang wangrunji0408@163.com
*OutputSigned-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
*Output structs.Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
Signed-off-by: Runji Wang wangrunji0408@163.com
clock_gettime(CLOCK_BOOTTIME = 7) on Linux.madsim: Add JoinHandle::{id, is_finished}.
buggify.JoinHandle::{id, is_finished}.signal::ctrl_c and Handle::send_ctrl_c.Handle::is_exit.madsim: Add NetSim::add_dns_record.
NetSim::add_dns_record.madsim: Fix join cancelled tasks.
madsim: No longer initialize the global logger on #[main] or #[test].
#[main] or #[test].Instant interception on ARM64 macOS caused by change in Rust nightly.tokio: Add task::Builder::new_current_thread but panic inside.
task::Builder::new_current_thread but panic inside.service module and Extensions.content-type and date field.madsim: Fix panic on TLS access error.
madsim: Fix internal structure change of nightly std::{SystemTime, Interval}.
std::time::{SystemTime, Interval}.madsim: Expose JoinHandle::cancel_on_drop.
JoinHandle::cancel_on_drop.madsim: Change the default seed to the nanosecond of current time.
Runtime.madsim: Deprecate Network::(dis)connect(2) functions. Rename them to (un)clog_*.
Network::(dis)connect(2) functions. Rename them to (un)clog_*.madsim: Forbid creating system thread in simulation.
Endpoint clonable.madsim: Fix panic from minstant crate on Linux virtual machine.
madsim: Fix lookup_host on 'localhost'.
lookup_host on 'localhost'.madsim: Deprecate spawn_blocking.
task::Builder API.TaskNodeHandle to Spawner.spawn_blocking.madsim: Add basic net::UdpSocket.
net::UdpSocket.tracing. Replace env_logger with tracing-subscriber.TcpStream accepted from TcpListener.madsim-tonic: Add missing methods of Endpoint and Server.
Endpoint and Server.#[tokio::main] no longer requires madsim crate.collections module since we can use std's directly.madsim: Allow user to set the number of CPU cores and simulate std::available_parallelism.
std::thread::available_parallelism.MADSIM_TEST_JOBS environment variable to set the number of jobs to run simultaneously.Builder.Handle::seed.0.0.0.0.Runtime::{enable_determinism_check, take_rand_log}. Replaced by check_determinism.Make deterministic on rand and std::{collections::{HashMap, HashSet}, time::{SystemTime, Instant}}.
Make deterministic on rand and std::{collections::{HashMap, HashSet}, time::{SystemTime, Instant}}.
Exception: rand is not deterministic on linux. use madsim::rand instead.
Migrate a new crate madsim-tokio-postgres for simulation.
madsim-tokio-postgres for simulation.task_local, task::LocalKey, signal::ctrl_c.Request::remote_addr and returning error from server.madsim-tokio: Add task::consume_budget and task::Id.
task::consume_budget and task::Id.full feature.madsim: Add serde API to HashMap.
HashMap.getrandom.#[cfg(feature = "sim")] -> #[cfg(madsim)].Add a new crate madsim-tokio for tokio simulation.
madsim-tokio for tokio simulation.time::interval and task::yield_now.Sleep, Elapsed, JoinError and JoinHandle.Server::layer but don't implement it.JoinHandle to tokio style which won't cancel task on drop.TODO ### Added - A real world backend.
TODO
Fix deadlock on M1 macOS: add epsilon on time increasing
API to get the local socket address.
Remove default time limit (300s) on test.
time::timeout.Basic simulated network and file system.
Your coding agent can read these notes before it upgrades. Set up the MCP server →