2017-05-09 15:38:35 +02:00
# Change Log
All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning ](http://semver.org/ ).
## [Unreleased]
2021-11-09 10:35:58 +01:00
## [v0.6.0-rc.4] - 2021-11-09
- Updated to use the new generic `Monotonic` trait
2021-11-08 20:28:57 +01:00
## [v0.6.0-rc.3] - 2021-11-08
2021-11-08 18:39:09 +01:00
### Fixed
- Match rtic-syntax Analysis-struct updates from https://github.com/rtic-rs/rtic-syntax/pull/61
2021-09-28 10:56:36 +02:00
## [v0.6.0-rc.2] - 2021-09-28
- Fixed issue with `cortex_m` being used by the codegen instead of using the `rtic::export::...` which could make an app not compile if Systick is used and the user did not have the cortex-m crate as a dependency
2021-09-27 12:01:31 +02:00
## [v0.6.0-rc.1] - 2021-09-27
- Documentation updates
- Monotonic handlers default to maximum priority instead of minimum (to follow RTIC 0.5)
- Better support for `rust-analyzer`
2021-11-08 20:28:57 +01:00
## [v0.5.9] - 2021-09-27
- Removed the `cortex-m-rt` dependency
- Docs updates
## [v0.5.8] - 2021-08-19
- Feature flag was added to support `cortex-m v0.7.x`
- MSRV raised to 1.38.
2021-07-09 12:52:35 +02:00
## [v0.6.0-alpha.5] - 2021-07-09
### Changed
- The new resources syntax is implemented.
2021-11-08 20:28:57 +01:00
## [v0.5.7] - 2021-07-05
- Backport: "you must enable the rt feature" compile time detection
2021-05-28 09:07:21 +02:00
## [v0.6.0-alpha.4] - 2021-05-27
2021-05-27 18:06:28 +02:00
### Fixed
- Fixed codegen structure to not have issues with local paths
- Default paths for monotonics now work properly
- New `embedded-time` version to `0.11`
2021-05-28 09:07:21 +02:00
## [v0.6.0-alpha.3] - 2021-0X-XX
- Lost in the ether...
2021-05-27 18:06:28 +02:00
## [v0.6.0-alpha.2] - 2021-04-08
2021-04-08 10:27:54 +02:00
### Added
- Cancel and reschedule support to the monotonics
### Fixed
- UB in `spawn_at`
- `#[cfg]` and other attributes now work on hardware tasks
- Type aliases now work in `mod app`
### Changed
- The access to monotonic static methods was for example `MyMono::now()` , and is now `monotonics::MyMono::now()`
2021-05-27 18:06:28 +02:00
## [v0.6.0-alpha.1] - 2021-03-04
2021-04-08 10:27:54 +02:00
2020-11-14 16:16:45 +01:00
### Added
- Support for multi-locks, see `examples/multilock.rs` for syntax.
2021-04-08 10:27:54 +02:00
- New monotonic syntax and support, see `#[monotonic]`
2020-11-14 16:16:45 +01:00
2021-11-08 20:28:57 +01:00
## [v0.5.6] - 2021-03-03
- **Security** Use latest security patched heapless
2020-11-14 13:58:49 +01:00
## [v0.6.0-alpha.0] - 2020-11-14
2020-10-22 19:02:03 +02:00
### Added
- Allow annotating resources to activate special resource locking behaviour.
- `#[lock_free]` , there might be several tasks with the same priority accessing
the resource without critical section.
- `#[task_local]` , there must be only one task, similar to a task local
resource, but (optionally) set-up by init. This is similar to move.
2020-10-24 19:38:49 +02:00
- Improved ergonomics allowing separation of task signatures to actual implementation in extern block `extern "Rust" { #[task(..)] fn t(..); }` .
2020-10-22 19:02:03 +02:00
### Changed
- [breaking-change] [PR 400] Move dispatchers from extern block to app argument.
[PR 400]: https://github.com/rtic-rs/cortex-m-rtic/pull/400
2020-11-14 13:58:49 +01:00
- [breaking-change] [PR 399] Locking resources are now always required to achieve a symmetric UI.
[PR 399]: https://github.com/rtic-rs/cortex-m-rtic/pull/399
2020-10-22 19:02:03 +02:00
- [breaking-change] [PR 390] Rework whole spawn/schedule, support `foo::spawn( ... )` ,
`foo::schedule( ... )` .
[PR 390]: https://github.com/rtic-rs/cortex-m-rtic/pull/390
- [breaking-change] [PR 368] `struct Resources` changed to attribute `#[resources]` on a struct.
- [breaking-change] [PR 368] Mod over const, instead of `const APP: () = {` use `mod app {` .
- [breaking-change] [PR 372] Init function always return `LateResources` for a symmetric API.
- [PR 355] Multi-core support was removed to reduce overall complexity.
[PR 368]: https://github.com/rtic-rs/cortex-m-rtic/pull/368
[PR 372]: https://github.com/rtic-rs/cortex-m-rtic/pull/372
[PR 355]: https://github.com/rtic-rs/cortex-m-rtic/pull/355
2020-10-23 10:35:56 +02:00
2020-08-27 14:45:29 +02:00
## [v0.5.5] - 2020-08-27
- Includes the previous soundness fix.
- Fixes wrong use of the `cortex_m` crate which can cause some projects to stop compiling.
## [v0.5.4] - 2020-08-26 - YANKED
2020-08-26 12:41:39 +02:00
- **Soundness fix in RTIC**, it was previously possible to get the `cortex_m::Peripherals` more than once, causing UB.
2020-06-12 09:32:43 +02:00
## [v0.5.3] - 2020-06-12
2020-06-12 09:51:09 +02:00
- Added migration guide from `cortex-m-rtfm` to `cortex-m-rtic`
2020-06-12 09:32:43 +02:00
- No code changes, only a version compatibility release with `cortex-m-rtfm` to ease the transition
for users.
2020-06-11 18:57:56 +02:00
## [v0.5.2] - 2020-06-11
- Using safe `DWT` interface
- Using GitHub Actions now
- Improved CI speed
- Now `main` can be used as function name
- Fixed so one can `cfg` -out resources when using a newer compiler
2019-11-19 15:46:07 +01:00
## [v0.5.1] - 2019-11-19
2020-10-22 19:02:03 +02:00
2019-11-18 16:36:17 +01:00
- Fixed arithmetic wrapping bug in src/cyccntr.rs
elapsed and duration could cause an internal overflow trap
on subtraction in debug mode.
2019-11-19 15:46:07 +01:00
- Fixed bug in SysTick implementation where the SysTick could be disabled by
accident
## [v0.5.0] - 2019-11-14
2019-09-17 19:47:29 +02:00
### Added
- Experimental support for homogeneous and heterogeneous multi-core
microcontrollers has been added. Support is gated behind the `homogeneous` and
`heterogeneous` Cargo features.
2019-04-21 20:02:59 +02:00
### Changed
2020-10-22 19:02:03 +02:00
- [breaking-change] [RFC 155] "explicit `Context` parameter" has been
2019-04-21 20:02:59 +02:00
implemented.
2020-06-11 19:18:29 +02:00
[RFC 155]: https://github.com/rtic-rs/cortex-m-rtic/issues/155
2019-04-21 20:02:59 +02:00
2020-10-22 19:02:03 +02:00
- [breaking-change] [RFC 147] "all functions must be safe" has been
2019-04-21 20:02:59 +02:00
implemented.
2020-06-11 19:18:29 +02:00
[RFC 147]: https://github.com/rtic-rs/cortex-m-rtic/issues/147
2019-04-21 20:02:59 +02:00
- All the queues internally used by the framework now use `AtomicU8` indices
instead of `AtomicUsize` ; this reduces the static memory used by the
framework.
2020-10-22 19:02:03 +02:00
- [breaking-change] when the `capacity` argument is omitted, the capacity of
2019-09-17 19:47:29 +02:00
the task is assumed to be `1` . Before, a reasonable (but hard to predict)
capacity was computed based on the number of `spawn` references the task had.
2020-10-22 19:02:03 +02:00
- [breaking-change] resources that are appear as exclusive references
2019-09-17 19:47:29 +02:00
(`& mut-`) no longer appear behind the `Exclusive` newtype.
2020-10-22 19:02:03 +02:00
- [breaking-change] the `timer-queue` Cargo feature has been removed. The
2019-09-17 19:47:29 +02:00
`schedule` API can be used without enabling any Cargo feature.
2020-10-22 19:02:03 +02:00
- [breaking-change] when the `schedule` API is used the type of
2019-09-17 19:47:29 +02:00
`init::Context.core` changes from `cortex_m::Peripherals` to
2020-06-11 19:18:29 +02:00
`rtic::Peripherals` . The fields of `rtic::Peripherals` do not change when
2019-09-17 19:47:29 +02:00
Cargo features are enabled.
2020-10-22 19:02:03 +02:00
- [breaking-change] the monotonic timer used to implement the `schedule` API
2019-10-16 01:44:49 +02:00
is now user configurable via the `#[app(monotonic = ..)]` argument. IMPORTANT:
it is now the responsibility of the application author to configure and
initialize the chosen `monotonic` timer during the `#[init]` phase.
2019-09-17 19:47:29 +02:00
2020-10-22 19:02:03 +02:00
- [breaking-change] the `peripherals` field is not include in `init::Context`
2019-09-17 19:47:29 +02:00
by default. One must opt-in using the `#[app(peripherals = ..)]` argument.
2020-10-22 19:02:03 +02:00
- [breaking-change] the `#[exception]` and `#[interrupt]` attributes have been
2019-09-17 19:47:29 +02:00
removed. Hardware tasks are now declared using the `#[task(binds = ..)]`
attribute.
2020-10-22 19:02:03 +02:00
- [breaking-change] the syntax to declare resources has changed. Instead of
2019-09-17 19:47:29 +02:00
using a `static [mut]` variable for each resource, all resources must be
declared in a `Resources` structure.
2019-04-21 20:02:59 +02:00
### Removed
- [breaking-change] the integration with the `owned_singleton` crate has been
removed. You can use `heapless::Pool` instead of `alloc_singleton` .
- [breaking-change] late resources can no longer be initialized using the assign
syntax. `init::LateResources` is the only method to initialize late resources.
See [PR #140 ] for more details.
2020-06-11 19:18:29 +02:00
[PR #140 ]: https://github.com/rtic-rs/cortex-m-rtic/pull/140
2019-04-21 20:02:59 +02:00
2019-04-21 18:20:57 +02:00
## [v0.4.3] - 2019-04-21
### Changed
- Checking that the specified priorities are supported by the target device is
now done at compile time.
### Fixed
- Building this crate with the "nightly" feature and a recent compiler has been
fixed.
2019-02-27 00:56:56 +01:00
## [v0.4.2] - 2019-02-27
### Added
- `Duration` now has an `as_cycles` method to get the number of clock cycles
contained in it.
- An opt-in "nightly" feature that reduces static memory usage, shortens
initialization time and reduces runtime overhead has been added. To use this
feature you need a nightly compiler!
- [RFC 128] has been implemented. The `exception` and `interrupt` have gained a
`binds` argument that lets you give the handler an arbitrary name. For
example:
2020-06-11 19:18:29 +02:00
[RFC 128]: https://github.com/rtic-rs/cortex-m-rtic/issues/128
2019-02-27 00:56:56 +01:00
``` rust
// on v0.4.1 you had to write
#[interrupt]
fn USART0() { .. }
// on v0.4.2 you can write
#[interrupt(binds = USART0)]
fn on_new_frame() { .. }
```
### Changed
- Builds are now reproducible. `cargo build; cargo clean; cargo build` will
produce binaries that are exactly the same (after `objcopy -O ihex` ). This
wasn't the case before because we used randomly generated identifiers for
memory safety but now all the randomness is gone.
### Fixed
- Fixed a `non_camel_case_types` warning that showed up when using a recent
nightly.
- Fixed a bug that allowed you to enter the `capacity` and `priority` arguments
in the `task` attribute more than once. Now all arguments can only be stated
once in the list, as it should be.
2019-02-12 11:28:34 +01:00
## [v0.4.1] - 2019-02-12
### Added
2020-06-11 19:18:29 +02:00
- The RTIC book has been translated to Russian. You can find the translation
online at https://japaric.github.io/cortex-m-rtic/book/ru/
2019-02-12 11:28:34 +01:00
- `Duration` now implements the `Default` trait.
### Changed
2020-10-22 19:02:03 +02:00
- [breaking-change] [soundness-fix] `init` can not contain any early return as
2019-02-12 11:28:34 +01:00
that would result in late resources not being initialized and thus undefined
behavior.
2019-01-09 00:56:21 +01:00
- Use an absolute link to the book so it works when landing from crates.io
documentation page
2019-02-12 15:27:08 +01:00
- The initialization function can now be written as `fn init() ->
init::LateResources` when late resources are used. This is preferred over the
2019-02-12 17:28:16 +01:00
old `fn init()` form. See the section on late resources (resources chapter) in
the book for more details.
2019-02-12 15:27:08 +01:00
2019-02-12 11:28:34 +01:00
### Fixed
- `#[interrupt]` and `#[exception]` no longer produce warnings on recent nightlies.
## [v0.4.0] - 2018-11-03 - YANKED
Yanked due to a soundness issue in `init` ; the issue has been mostly fixed in v0.4.1.
2018-11-03 20:14:01 +01:00
### Changed
2018-12-16 19:34:16 +01:00
- This crate now compiles on stable 1.31.
2018-11-03 20:14:01 +01:00
- [breaking-change] The `app!` macro has been transformed into an attribute. See
the documentation for details.
- [breaking-change] Applications that use this library must be written using the
2018 edition.
- [breaking-change] The `Resource` trait has been renamed to `Mutex` .
`Resource.claim_mut` has been renamed to `Mutex.lock` and its signature has
changed (no `Threshold` token is required).
2020-06-11 19:18:29 +02:00
- [breaking-change] The name of the library has changed to `rtic` . The package
name is still `cortex-m-rtic` .
2018-11-03 20:14:01 +01:00
2020-06-11 19:18:29 +02:00
- [breaking-change] `cortex_m_rtic::set_pending` has been renamed to
`rtic::pend` .
2018-11-03 20:14:01 +01:00
### Added
- Software tasks, which can be immediately spawn and scheduled to run in the
future.
- `Instant` and `Duration` API.
- Integration with the [`Singleton`] abstraction.
[`Singleton`]: https://docs.rs/owned-singleton/0.1.0/owned_singleton/
### Removed
- [breaking-change] The `Threshold` token has been removed.
- [breaking-change] The `bkpt` and `wfi` re-exports have been removed.
2020-06-11 19:18:29 +02:00
- [breaking-change] `rtic::atomic` has been removed.
2018-11-03 20:14:01 +01:00
2018-08-27 14:54:45 +02:00
## [v0.3.4] - 2018-08-27
### Changed
- The documentation link to point to GH pages.
2018-08-24 16:48:33 +02:00
## [v0.3.3] - 2018-08-24
### Fixed
- Compilation with latest nightly
2018-04-16 23:22:01 +02:00
## [v0.3.2] - 2018-04-16
### Added
- Span information to error messages
### Changed
- Some non fatal error messages have become warning messages. For example, specifying an empty list
of resources now produces a warning instead of a hard error.
2018-01-16 00:25:25 +01:00
## [v0.3.1] - 2018-01-16
### Fixed
- Documentation link
2018-01-15 23:26:07 +01:00
## [v0.3.0] - 2018-01-15
### Added
- [feat] `&'static mut` references can be safely created by assigning resources to `init` . See the
`init.resources` section of the `app!` macro documentation and the `safe-static-mut-ref` example
for details.
### Changed
- [breaking-change] svd2rust dependency has been bumped to v0.12.0
- [breaking-change] resources assigned to tasks, or to idle, that were not declared in the top
`resources` field generate compiler errors. Before these were assumed to be peripherals, that's no
longer the case.
- [breaking-change] the layout of `init::Peripherals` has changed. This struct now has two fields:
`core` and `device` . The value of the `core` field is a struct that owns all the core peripherals
of the device and the value of the `device` field is a struct that owns all the device specific
peripherals of the device.
2017-11-22 09:27:14 +01:00
## [v0.2.2] - 2017-11-22
### Added
- Support for runtime initialized resources ("late" resources).
2017-07-29 08:50:04 +02:00
## [v0.2.1] - 2017-07-29
### Fixed
- Link to `app!` macro documentation.
2017-07-29 08:16:11 +02:00
## [v0.2.0] - 2017-07-29
### Added
- The `app!` macro, a macro to declare the tasks and resources of an
application.
- The `Resource` trait, which is used to write generic code that deals with
resources.
2017-07-29 08:57:45 +02:00
- Support for system handlers like SYS_TICK.
2017-07-29 08:16:11 +02:00
### Changed
- [breaking-change] The signature of the `atomic` function has changed.
- [breaking-change] The threshold token has become a concrete type and lost its
`raise` method.
### Removed
- [breaking-change] The `tasks!` and `peripherals!` macros.
- [breaking-change] The ceiling and priority tokens.
- [breaking-change] The `Local` , `Resource` and `Peripheral` structs.
- [breaking-change] The traits related to type level integers.
2017-06-06 04:05:29 +02:00
## [v0.1.1] - 2017-06-05
### Changed
- `peripherals!` : The `register_block` field is now optional
2017-05-09 15:38:35 +02:00
## v0.1.0 - 2017-05-09
- Initial release
2021-11-09 10:35:58 +01:00
[Unreleased]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.6.0-rc.4...HEAD
[v0.6.0-rc.4]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.6.0-rc.3...v0.6.0-rc.4
2021-11-08 20:40:59 +01:00
[v0.6.0-rc.3]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.6.0-rc.2...v0.6.0-rc.3
[v0.6.0-rc.2]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.6.0-rc.1...v0.6.0-rc.2
[v0.6.0-rc.1]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.6.0-rc.0...v0.6.0-rc.1
[v0.6.0-rc.0]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.6.0-alpha.5...v0.6.0-rc.0
[v0.6.0-alpha.5]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.6.0-alpha.4...v0.6.0-alpha.5
[v0.6.0-alpha.4]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.6.0-alpha.3...v0.6.0-alpha.4
[v0.6.0-alpha.3]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.6.0-alpha.2...v0.6.0-alpha.3
[v0.6.0-alpha.2]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.6.0-alpha.1...v0.6.0-alpha.2
[v0.6.0-alpha.1]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.6.0-alpha.0...v0.6.0-alpha.1
[v0.6.0-alpha.0]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.5.5...v0.6.0-alpha.0
2021-11-08 20:28:57 +01:00
[v0.5.x unreleased]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.5.8...v0.5.x
[v0.5.9]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.5.8...v0.5.9
[v0.5.8]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.5.7...v0.5.8
[v0.5.7]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.5.6...v0.5.7
[v0.5.6]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.5.5...v0.5.6
2020-08-27 14:45:29 +02:00
[v0.5.5]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.5.4...v0.5.5
2020-08-26 12:41:39 +02:00
[v0.5.4]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.5.3...v0.5.4
2020-06-12 09:32:43 +02:00
[v0.5.3]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.5.2...v0.5.3
2020-06-11 19:18:29 +02:00
[v0.5.2]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.5.1...v0.5.2
[v0.5.1]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.5.0...v0.5.1
[v0.5.0]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.4.3...v0.5.0
[v0.4.3]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.4.2...v0.4.3
[v0.4.2]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.4.1...v0.4.2
[v0.4.1]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.4.0...v0.4.1
[v0.4.0]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.3.4...v0.4.0
[v0.3.4]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.3.3...v0.3.4
[v0.3.3]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.3.2...v0.3.3
[v0.3.2]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.3.1...v0.3.2
[v0.3.1]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.3.0...v0.3.1
[v0.3.0]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.2.2...v0.3.0
[v0.2.2]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.2.1...v0.2.2
[v0.2.1]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.2.0...v0.2.1
[v0.2.0]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.1.1...v0.2.0
[v0.1.1]: https://github.com/rtic-rs/cortex-m-rtic/compare/v0.1.0...v0.1.1