# Change Log

All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/).

## [Unreleased]

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

- `peripherals` is now enabled (*true*) by default, you no longer need to give `#[app(..., peripherals = true))`. This is the common case, and if forgotten it results in an error which may be confusing to the user.

- Improved ergonomics allowing separation of task signatures to actual implementation in extern block `extern "Rust" { #[task(..)] fn t(..); }`.

- Added type alias definitions to the `App` struct.


### Changed

- [breaking-change] Move of dispatchers (interrupts) from `extern` to app arguments.
  `app(..., dispatchers = [SSI0,...])`
  This should also work for ram functions and other attributes, see `examples/ramfunc.rs`.

- [breaking-change] Rework whole spawn/schedule, support `foo::spawn( ... )`,
  `foo::schedule( ... )`.

- [breaking-change] `struct Resources` changed to attribute `#[resources]` on a struct.

- [breaking-change] Mod over const, instead of `const APP: () = {` use `mod app {`.

- [breaking-change] Init function always return `LateResources` for a symmetric API.

- Multi-core support was removed to reduce overall complexity.

- CI Changed from Travis to GitHub Actions.

- [breaking-change] rtfm-syntax is now known as rtic-syntax.

## [v0.4.0] - 2019-11-14

### Added

- Several tests were ported from the cortex-m-rtic repository (pre-v0.5.0 state)

### Changed

- [breaking-change] syn, quote and proc-macro2 dependencies were bumped to
  version 1.0.

- [breaking-change] syntax was changed to match RFCs approved for cortex-m-rtic
  v0.5.0 release. The field of most structures changed as well as their APIs.

## [v0.3.4] - 2018-08-28

### Fixed

- The build with recent nightlies

## [v0.3.3] - 2018-04-28

### Fixed

- A compilation error on the latest nightly

## [v0.3.2] - 2018-04-23

### Changed

- Disabled the default features of the `either` dependency

## [v0.3.1] - 2018-04-23

### Changed

- Relax the version requirement of the `either` dependency

## [v0.3.0] - 2018-04-16

### Changed

- Updated the `syn` dependency to a recent release. Error and warning messages are now raised on
  parsing and checking issues.
- [breaking-change] Changed the parsing and checking API (structs).
- The checking pass now checks the specification to, for example, reject a specification where a
  task declares that it has access to a resource that wasn't declared in the top level `resources`
  field.

## [v0.2.1] - 2018-01-15

### Added

- An optional `init.resources` field

## [v0.2.0] - 2017-09-22

### Changed

- [breaking-change] The `Static.expr` field is now optional.

## v0.1.0 - 2017-07-28

- Initial release

[Unreleased]: https://github.com/rtic-rs/rtic-syntax/compare/v0.4.0...HEAD
[v0.4.0]: https://github.com/rtic-rs/rtic-syntax/compare/v0.3.4...v0.4.0
[v0.3.4]: https://github.com/rtic-rs/rtic-syntax/compare/v0.3.3...v0.3.4
[v0.3.3]: https://github.com/rtic-rs/rtic-syntax/compare/v0.3.2...v0.3.3
[v0.3.2]: https://github.com/rtic-rs/rtic-syntax/compare/v0.3.1...v0.3.2
[v0.3.1]: https://github.com/rtic-rs/rtic-syntax/compare/v0.3.0...v0.3.1
[v0.3.0]: https://github.com/rtic-rs/rtic-syntax/compare/v0.2.1...v0.3.0
[v0.2.1]: https://github.com/rtic-rs/rtic-syntax/compare/v0.2.0...v0.2.1
[v0.2.0]: https://github.com/rtic-rs/rtic-syntax/compare/v0.1.0...v0.2.0
