1
0
forked from ROMEO/nexosim

Prepare release v0.3.0

This commit is contained in:
Serge Barral 2025-01-21 02:58:58 +01:00
parent 2a4b389977
commit ff7d9de5e2
6 changed files with 55 additions and 22 deletions

View File

@ -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) # 0.3.0-beta.0 (2024-11-16)
This beta release features a very large number of improvements and API changes, This beta release features a very large number of improvements and API changes,

View File

@ -1,6 +1,6 @@
The MIT License (MIT) 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 Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal of this software and associated documentation files (the "Software"), to deal

View File

@ -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 small, simple simulations to very large simulation benches with complex
time-driven state machines. 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) [![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) [![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) [![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 ## Usage
Note that this page currently documents the latest beta version for the upcoming To use the latest version, add to your `Cargo.toml`:
`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 ```toml
[dependencies] [dependencies]
nexosim = "0.3.0-beta.0" nexosim = "0.3.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]
asynchronix = "0.2.4"
``` ```
@ -149,8 +141,6 @@ assert_eq!(output_slot.next(), None);
simu.step()?; simu.step()?;
assert_eq!(simu.time(), t0 + Duration::from_secs(2)); assert_eq!(simu.time(), t0 + Duration::from_secs(2));
assert_eq!(output_slot.next(), Some(14.0)); assert_eq!(output_slot.next(), Some(14.0));
Ok(())
``` ```
# Implementation notes # Implementation notes

View File

@ -4,4 +4,4 @@ version = "0.1.0"
edition = "2021" edition = "2021"
[dependencies] [dependencies]
nexosim = {version = "0.3.0-beta.0", path = "../nexosim"} nexosim = { version = "0.3.0", path = "../nexosim" }

View File

@ -10,7 +10,7 @@ name = "nexosim"
# - Update if necessary copyright notice in LICENSE-MIT # - Update if necessary copyright notice in LICENSE-MIT
# - Create a "vX.Y.Z" git tag # - Create a "vX.Y.Z" git tag
authors = ["Serge Barral <serge.barral@asynchronics.com>"] authors = ["Serge Barral <serge.barral@asynchronics.com>"]
version = "0.3.0-beta.0" version = "0.3.0"
edition = "2021" edition = "2021"
rust-version = "1.77.0" rust-version = "1.77.0"
license = "MIT OR Apache-2.0" license = "MIT OR Apache-2.0"

View File

@ -402,7 +402,7 @@
//! //!
//! ```toml //! ```toml
//! [dependencies] //! [dependencies]
//! nexosim = { version = "0.3.0-beta.0", features = ["tracing"] } //! nexosim = { version = "0.3.0", features = ["tracing"] }
//! ``` //! ```
//! //!
//! See the [`tracing`] module for more information. //! See the [`tracing`] module for more information.
@ -414,7 +414,7 @@
//! //!
//! ```toml //! ```toml
//! [dependencies] //! [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. //! See the [`registry`] and [`server`] modules for more information.