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)
This beta release features a very large number of improvements and API changes,

View File

@ -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

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
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`:
To use the latest 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]
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

View File

@ -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" }

View File

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

View File

@ -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.