rtic/CHANGELOG.md

5.4 KiB

Change Log

All notable changes to this project will be documented in this file. This project adheres to Semantic Versioning.

Unreleased

v0.4.1 - 2019-02-12

Added

Changed

  • [breaking-change][] [soundness-fix] init can not contain any early return as that would result in late resources not being initialized and thus undefined behavior.

  • Use an absolute link to the book so it works when landing from crates.io documentation page

  • The initialization function can now be written as fn init() -> init::LateResources when late resources are used. This is preferred over the old fn init() form. See the section on late resources (resources chapter) in the book for more details.

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.

Changed

  • This crate now compiles on stable 1.31.

  • [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).

  • [breaking-change] The name of the library has changed to rtfm. The package name is still cortex-m-rtfm.

  • [breaking-change] cortex_m_rtfm::set_pending has been renamed to rtfm::pend.

Added

  • Software tasks, which can be immediately spawn and scheduled to run in the future.

  • Instant and Duration API.

  • Integration with the Singleton abstraction.

Removed

  • [breaking-change] The Threshold token has been removed.

  • [breaking-change] The bkpt and wfi re-exports have been removed.

  • [breaking-change] rtfm::atomic has been removed.

v0.3.4 - 2018-08-27

Changed

  • The documentation link to point to GH pages.

v0.3.3 - 2018-08-24

Fixed

  • Compilation with latest nightly

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.

v0.3.1 - 2018-01-16

Fixed

  • Documentation link

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.

v0.2.2 - 2017-11-22

Added

  • Support for runtime initialized resources ("late" resources).

v0.2.1 - 2017-07-29

Fixed

  • Link to app! macro documentation.

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.

  • Support for system handlers like SYS_TICK.

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.

v0.1.1 - 2017-06-05

Changed

  • peripherals!: The register_block field is now optional

v0.1.0 - 2017-05-09

  • Initial release