diff --git a/CHANGELOG.md b/CHANGELOG.md index a1c69cf..ec0ef4e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,10 +1,63 @@ +# 0.3.0-beta.0 (2024-11-16) + +This beta release features a very large number of improvements and API changes, +including: + +- Add a gRPC server for remote execution ([#12], [#24], [#25], [#26], [#29], + [#43]) +- 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 ([#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]) + +[#12]: https://github.com/asynchronics/nexosim/pull/12 +[#24]: https://github.com/asynchronics/nexosim/pull/24 +[#25]: https://github.com/asynchronics/nexosim/pull/25 +[#26]: https://github.com/asynchronics/nexosim/pull/26 +[#27]: https://github.com/asynchronics/nexosim/pull/27 +[#29]: https://github.com/asynchronics/nexosim/pull/29 +[#30]: https://github.com/asynchronics/nexosim/pull/30 +[#32]: https://github.com/asynchronics/nexosim/pull/32 +[#43]: https://github.com/asynchronics/nexosim/pull/43 +[#47]: https://github.com/asynchronics/nexosim/pull/47 +[#48]: https://github.com/asynchronics/nexosim/pull/48 +[#51]: https://github.com/asynchronics/nexosim/pull/51 +[#54]: https://github.com/asynchronics/nexosim/pull/54 +[#57]: https://github.com/asynchronics/nexosim/pull/57 +[#58]: https://github.com/asynchronics/nexosim/pull/58 +[#60]: https://github.com/asynchronics/nexosim/pull/60 +[#62]: https://github.com/asynchronics/nexosim/pull/62 +[#63]: https://github.com/asynchronics/nexosim/pull/63 + +# 0.2.3 (2024-08-24) + +- Force the waker VTable to be uniquely instantiated to re-enable the + `will_wake` optimisation after its implementation was changed in `std` ([#38]) +- Ignore broadcast error when sending to a closed `EventStream` ([#37]) + +[#37]: https://github.com/asynchronics/nexosim/pull/37 +[#38]: https://github.com/asynchronics/nexosim/pull/38 + # 0.2.2 (2024-04-04) - Add `serde` feature and serialization support for `MonotonicTime` ([#19]). - Update `multishot` dependency due to soundness issue in older version ([#23]). -[#19]: https://github.com/asynchronics/asynchronix/pull/19 -[#23]: https://github.com/asynchronics/asynchronix/pull/23 +[#19]: https://github.com/asynchronics/nexosim/pull/19 +[#23]: https://github.com/asynchronics/nexosim/pull/23 # 0.2.1 (2024-03-06) @@ -13,8 +66,8 @@ - Add support for custom clocks and provide an optional real-time clock ([#9], [#15]). -[#9]: https://github.com/asynchronics/asynchronix/pull/9 -[#15]: https://github.com/asynchronics/asynchronix/pull/15 +[#9]: https://github.com/asynchronics/nexosim/pull/9 +[#15]: https://github.com/asynchronics/nexosim/pull/15 ### Misc @@ -33,9 +86,9 @@ `schedule_*event` method that accept either a `Duration` or a `MonotonicTime` ([#7]). -[#5]: https://github.com/asynchronics/asynchronix/pull/5 -[#6]: https://github.com/asynchronics/asynchronix/pull/6 -[#7]: https://github.com/asynchronics/asynchronix/pull/7 +[#5]: https://github.com/asynchronics/nexosim/pull/5 +[#6]: https://github.com/asynchronics/nexosim/pull/6 +[#7]: https://github.com/asynchronics/nexosim/pull/7 # 0.1.0 (2023-01-16) diff --git a/README.md b/README.md index 0620ac6..9d851ad 100644 --- a/README.md +++ b/README.md @@ -5,9 +5,9 @@ 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. -[![Cargo](https://img.shields.io/crates/v/asynchronix.svg)](https://crates.io/crates/asynchronix) -[![Documentation](https://docs.rs/asynchronix/badge.svg)](https://docs.rs/asynchronix) -[![License](https://img.shields.io/badge/license-MIT%2FApache--2.0-blue.svg)](https://github.com/asynchronics/asynchronix#license) +[![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) ## Overview @@ -53,16 +53,25 @@ More fleshed out examples can also be found in the dedicated [simulator](nexosim/examples) and [utilities](nexosim-util/examples) directories. -[API]: https://docs.rs/asynchronix +[API]: https://docs.rs/nexosim ## Usage -Note that this page documents version `0.3.0-beta` of NeXosim, which is -not available on crates.io yet. +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. -For the last official release (sill under the name `asynchronix`), add -this to your `Cargo.toml`: +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`: ```toml [dependencies] diff --git a/nexosim-util/Cargo.toml b/nexosim-util/Cargo.toml index 014904c..0e29650 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.2.2", path = "../nexosim"} +nexosim = {version = "0.3.0-beta.0", path = "../nexosim"} diff --git a/nexosim/Cargo.toml b/nexosim/Cargo.toml index ba0c9d3..b3d1d30 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.2.2" +version = "0.3.0-beta.0" edition = "2021" rust-version = "1.77.0" license = "MIT OR Apache-2.0"