diff --git a/CHANGELOG.md b/CHANGELOG.md index 91f5cc6..6444a73 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,46 @@ +# 0.3.0 (2025-01-20) + +The final 0.3.0 release features a very large number of improvements and API +changes, including all those in the beta release and a couple more. + +This release is not compatible with the 0.2.* releases, but porting models and benches should be relatively straightforward. + +### Added (mostly API-breaking changes) + +- Add a gRPC server for local (Unix Domain Sockets) and remote (http/2) + execution ([#12], [#24], [#25], [#26], [#29], [#43], [#78], [#79]) +- Single-threaded executor supporting compilation to WebAssembly ([#24]) +- Add support for the `tracing` crate ([#47]) +- Make `Output`s and `Requestor`s `Clone`-able ([#30], [#48]) +- Make the global `Scheduler` an owned `Clone`-able type that can be sent to + other threads ([#30]) +- Add an automatically managed action key for scheduled actions/events ([#27]) +- Enable connection of different input/output pairs with `map_connect()` methods + on `Output` and `Requestor` ([#32]) +- Streamline the creation of data buses (SPI, CAN, MIL-STD-1553, SpaceWire etc.) + with `filter_map_connect()` methods on `Output` and `Requestor` ([#32]) +- Implement deadlock detection ([#51]) +- Streamline the builder pattern for models with a `ProtoModel` trait ([#54]) +- Implement execution timeout ([#57]) +- Return an error when a real-time simulation clock looses synchronization + ([#58]) +- Catch model panics and report them as errors ([#60]) +- Provide additional ordering guaranties when using the global scheduler ([#62]) +- Remove `LineId` line disconnection API ([#63]) +- Implement detection of lost and undelivered messages ([#68], [#70]) +- Provide a `UniRequestor` type for unary requestors ([#69]) +- Add support for intentionally halting an ongoing simulation and add a + `Simulation::step_unbounded` method ([#74], [#77]) + +[#68]: https://github.com/asynchronics/nexosim/pull/68 +[#69]: https://github.com/asynchronics/nexosim/pull/69 +[#70]: https://github.com/asynchronics/nexosim/pull/70 +[#74]: https://github.com/asynchronics/nexosim/pull/74 +[#77]: https://github.com/asynchronics/nexosim/pull/77 +[#78]: https://github.com/asynchronics/nexosim/pull/78 +[#79]: https://github.com/asynchronics/nexosim/pull/79 + + # 0.3.0-beta.0 (2024-11-16) This beta release features a very large number of improvements and API changes, diff --git a/LICENSE-MIT b/LICENSE-MIT index f460005..b777500 100644 --- a/LICENSE-MIT +++ b/LICENSE-MIT @@ -1,6 +1,6 @@ The MIT License (MIT) -Copyright (c) 2024 Asynchronics sp. z o.o. and NeXosim Contributors +Copyright (c) 2025 Asynchronics sp. z o.o. and NeXosim Contributors Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal diff --git a/README.md b/README.md index 59fa8fd..51ef2bb 100644 --- a/README.md +++ b/README.md @@ -5,6 +5,11 @@ discrete-event simulation framework written in Rust. It is meant to scale from small, simple simulations to very large simulation benches with complex time-driven state machines. + +## 🎉🥳 NeXosim 0.3 is out! 🚀🛰️ + +See the [changelog](CHANGELOG.md) for a summary of new features, or head to the extensive [API documentation][API] for the details. + [![Cargo](https://img.shields.io/crates/v/nexosim.svg)](https://crates.io/crates/nexosim) [![Documentation](https://docs.rs/nexosim/badge.svg)](https://docs.rs/nexosim) [![License](https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg)](https://github.com/asynchronics/nexosim#license) @@ -58,24 +63,11 @@ directories. ## Usage -Note that this page currently documents the latest beta version for the upcoming -`0.3.0` release, which contains numerous improvements over the `0.2` branch. -While the API is considered nearly frozen, some minor changes are still -possible. - -To use the beta version, add to your `Cargo.toml`: - -```toml -[dependencies] -nexosim = "0.3.0-beta.0" -``` - -If you would rather stay for now with the last official release (published under -the `asynchronix` name), add this to your `Cargo.toml`: +To use the latest version, add to your `Cargo.toml`: ```toml [dependencies] -asynchronix = "0.2.4" +nexosim = "0.3.0" ``` @@ -149,8 +141,6 @@ assert_eq!(output_slot.next(), None); simu.step()?; assert_eq!(simu.time(), t0 + Duration::from_secs(2)); assert_eq!(output_slot.next(), Some(14.0)); - -Ok(()) ``` # Implementation notes diff --git a/nexosim-util/Cargo.toml b/nexosim-util/Cargo.toml index 0e29650..3c6f541 100644 --- a/nexosim-util/Cargo.toml +++ b/nexosim-util/Cargo.toml @@ -4,4 +4,4 @@ version = "0.1.0" edition = "2021" [dependencies] -nexosim = {version = "0.3.0-beta.0", path = "../nexosim"} +nexosim = { version = "0.3.0", path = "../nexosim" } diff --git a/nexosim/Cargo.toml b/nexosim/Cargo.toml index b0be993..a9ee02c 100644 --- a/nexosim/Cargo.toml +++ b/nexosim/Cargo.toml @@ -10,7 +10,7 @@ name = "nexosim" # - Update if necessary copyright notice in LICENSE-MIT # - Create a "vX.Y.Z" git tag authors = ["Serge Barral "] -version = "0.3.0-beta.0" +version = "0.3.0" edition = "2021" rust-version = "1.77.0" license = "MIT OR Apache-2.0" diff --git a/nexosim/src/lib.rs b/nexosim/src/lib.rs index 06c01d6..5a77904 100644 --- a/nexosim/src/lib.rs +++ b/nexosim/src/lib.rs @@ -402,7 +402,7 @@ //! //! ```toml //! [dependencies] -//! nexosim = { version = "0.3.0-beta.0", features = ["tracing"] } +//! nexosim = { version = "0.3.0", features = ["tracing"] } //! ``` //! //! See the [`tracing`] module for more information. @@ -414,7 +414,7 @@ //! //! ```toml //! [dependencies] -//! nexosim = { version = "0.3.0-beta.0", features = ["server"] } +//! nexosim = { version = "0.3.0", features = ["server"] } //! ``` //! //! See the [`registry`] and [`server`] modules for more information.