248: update the changelog and fix some links r=korken89 a=japaric



Co-authored-by: Jorge Aparicio <jorge@japaric.io>
This commit is contained in:
bors[bot] 2019-09-17 18:41:45 +00:00 committed by GitHub
commit 38306389ea
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 53 additions and 18 deletions

View file

@ -5,7 +5,13 @@ This project adheres to [Semantic Versioning](http://semver.org/).
## [Unreleased] ## [Unreleased]
## v0.5.0 - 2019-??-?? (ALPHA pre-release) ## v0.5.0 - 2019-09-?? (currently in beta pre-release)
### Added
- Experimental support for homogeneous and heterogeneous multi-core
microcontrollers has been added. Support is gated behind the `homogeneous` and
`heterogeneous` Cargo features.
### Changed ### Changed
@ -23,6 +29,35 @@ This project adheres to [Semantic Versioning](http://semver.org/).
instead of `AtomicUsize`; this reduces the static memory used by the instead of `AtomicUsize`; this reduces the static memory used by the
framework. framework.
- [breaking-change][] when the `capacity` argument is omitted, the capacity of
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.
- [breaking-change][] resources that are appear as exclusive references
(`&mut-`) no longer appear behind the `Exclusive` newtype.
- [breaking-change][] the `timer-queue` Cargo feature has been removed. The
`schedule` API can be used without enabling any Cargo feature.
- [breaking-change][] when the `schedule` API is used the type of
`init::Context.core` changes from `cortex_m::Peripherals` to
`rtfm::Peripherals`. The fields of `rtfm::Peripherals` do not change when
Cargo features are enabled.
- [breaking-change][] the monotonic timer used to implement the `schedule` API
is now user configurable via the `#[app(monotonic = ..)]` argument.
- [breaking-change][] the `peripherals` field is not include in `init::Context`
by default. One must opt-in using the `#[app(peripherals = ..)]` argument.
- [breaking-change][] the `#[exception]` and `#[interrupt]` attributes have been
removed. Hardware tasks are now declared using the `#[task(binds = ..)]`
attribute.
- [breaking-change][] the syntax to declare resources has changed. Instead of
using a `static [mut]` variable for each resource, all resources must be
declared in a `Resources` structure.
### Removed ### Removed
- [breaking-change] the integration with the `owned_singleton` crate has been - [breaking-change] the integration with the `owned_singleton` crate has been

View file

@ -13,9 +13,9 @@ point to a *peripheral access crate* (PAC) generated using [`svd2rust`]
**v0.14.x** or newer. The `app` attribute will expand into a suitable entry **v0.14.x** or newer. The `app` attribute will expand into a suitable entry
point so it's not required to use the [`cortex_m_rt::entry`] attribute. point so it's not required to use the [`cortex_m_rt::entry`] attribute.
[`app`]: ../../api/cortex_m_rtfm_macros/attr.app.html [`app`]: ../../../api/cortex_m_rtfm_macros/attr.app.html
[`svd2rust`]: https://crates.io/crates/svd2rust [`svd2rust`]: https://crates.io/crates/svd2rust
[`cortex_m_rt::entry`]: ../../api/cortex_m_rt_macros/attr.entry.html [`cortex_m_rt::entry`]: ../../../api/cortex_m_rt_macros/attr.entry.html
> **ASIDE**: Some of you may be wondering why we are using a `const` item as a > **ASIDE**: Some of you may be wondering why we are using a `const` item as a
> module and not a proper `mod` item. The reason is that using attributes on > module and not a proper `mod` item. The reason is that using attributes on

View file

@ -46,8 +46,8 @@ instead of a reference. This resource proxy is a structure that implements the
[`Mutex`] trait. The only method on this trait, [`lock`], runs its closure [`Mutex`] trait. The only method on this trait, [`lock`], runs its closure
argument in a critical section. argument in a critical section.
[`Mutex`]: ../../api/rtfm/trait.Mutex.html [`Mutex`]: ../../../api/rtfm/trait.Mutex.html
[`lock`]: ../../api/rtfm/trait.Mutex.html#method.lock [`lock`]: ../../../api/rtfm/trait.Mutex.html#method.lock
The critical section created by the `lock` API is based on dynamic priorities: The critical section created by the `lock` API is based on dynamic priorities:
it temporarily raises the dynamic priority of the context to a *ceiling* it temporarily raises the dynamic priority of the context to a *ceiling*
@ -89,7 +89,7 @@ consumer and producer end points in `init` and then each end point is stored
in a different resource; `UART0` owns the producer resource and `idle` owns in a different resource; `UART0` owns the producer resource and `idle` owns
the consumer resource. the consumer resource.
[`Queue`]: ../../api/heapless/spsc/struct.Queue.html [`Queue`]: ../../../api/heapless/spsc/struct.Queue.html
``` rust ``` rust
{{#include ../../../../examples/late.rs}} {{#include ../../../../examples/late.rs}}

View file

@ -20,7 +20,7 @@ type (see [`core::time::Duration`]) and this `Duration` type must implement the
integer. If the result of the conversion doesn't fit in a 32-bit number then the integer. If the result of the conversion doesn't fit in a 32-bit number then the
operation must return an error, any error type. operation must return an error, any error type.
[`Monotonic`]: ../../api/rtfm/trait.Monotonic.html [`Monotonic`]: ../../../api/rtfm/trait.Monotonic.html
[std-instant]: https://doc.rust-lang.org/std/time/struct.Instant.html [std-instant]: https://doc.rust-lang.org/std/time/struct.Instant.html
[`core::time::Duration`]: https://doc.rust-lang.org/core/time/struct.Duration.html [`core::time::Duration`]: https://doc.rust-lang.org/core/time/struct.Duration.html

View file

@ -16,7 +16,7 @@ one can write a generic function that operates on generic resources and call it
from different tasks to perform some operation on the same set of resources. from different tasks to perform some operation on the same set of resources.
Here's one such example: Here's one such example:
[`rtfm::Exclusive`]: ../../api/rtfm/struct.Exclusive.html [`rtfm::Exclusive`]: ../../../api/rtfm/struct.Exclusive.html
``` rust ``` rust
{{#include ../../../../examples/generics.rs}} {{#include ../../../../examples/generics.rs}}

View file

@ -5,14 +5,14 @@
# Preface # Preface
This book contains user level documentation for the Real Time For the Masses This book contains user level documentation for the Real Time For the Masses
(RTFM) framework. The API reference can be found [here](../../api/rtfm/index.html). (RTFM) framework. The API reference can be found [here](../../api/).
There is a translation of this book in [Russian]. There is a translation of this book in [Russian].
[Russian]: ../ru/index.html [Russian]: ../ru/index.html
This is the documentation of v0.5.x of RTFM; for the documentation of version This is the documentation of v0.5.x of RTFM; for the documentation of version
v0.4.x go [here](../../0.4/book/en). v0.4.x go [here](/0.4).
**HEADS UP** This is a **beta** pre-release; there may be breaking changes in **HEADS UP** This is a **beta** pre-release; there may be breaking changes in
the API and semantics before a proper release is made. the API and semantics before a proper release is made.

View file

@ -13,9 +13,9 @@
[`svd2rust`] **v0.14.x**. Атрибут `app` развернется в удобную точку входа, [`svd2rust`] **v0.14.x**. Атрибут `app` развернется в удобную точку входа,
поэтому нет необходимости использовать атрибут [`cortex_m_rt::entry`]. поэтому нет необходимости использовать атрибут [`cortex_m_rt::entry`].
[`app`]: ../../api/cortex_m_rtfm_macros/attr.app.html [`app`]: ../../../api/cortex_m_rtfm_macros/attr.app.html
[`svd2rust`]: https://crates.io/crates/svd2rust [`svd2rust`]: https://crates.io/crates/svd2rust
[`cortex_m_rt::entry`]: ../../api/cortex_m_rt_macros/attr.entry.html [`cortex_m_rt::entry`]: ../../../api/cortex_m_rt_macros/attr.entry.html
> **ОТСТУПЛЕНИЕ**: Некоторые из вас удивятся, почему мы используем ключевое слово `const` как > **ОТСТУПЛЕНИЕ**: Некоторые из вас удивятся, почему мы используем ключевое слово `const` как
> модуль, а не правильное `mod`. Причина в том, что использование атрибутов на > модуль, а не правильное `mod`. Причина в том, что использование атрибутов на

View file

@ -51,7 +51,7 @@ API критической секции, предоставляемое фрей
включая все соперничающие за ресурс, но будут позволять запуск обработчиков с включая все соперничающие за ресурс, но будут позволять запуск обработчиков с
большим приоритетом не соперничащих за ресурс. большим приоритетом не соперничащих за ресурс.
[`Mutex`]: ../../api/rtfm/trait.Mutex.html [`Mutex`]: ../../../api/rtfm/trait.Mutex.html
В примере ниже у нас есть 3 обработчика прерываний с приоритетами от одного В примере ниже у нас есть 3 обработчика прерываний с приоритетами от одного
до трех. Два обработчика с низким приоритетом соперничают за ресурс `SHARED`. до трех. Два обработчика с низким приоритетом соперничают за ресурс `SHARED`.
@ -61,7 +61,7 @@ API критической секции, предоставляемое фрей
с наивысшим приоритетом может свободно вытеснять критическую секцию, с наивысшим приоритетом может свободно вытеснять критическую секцию,
созданную обработчиком с низшим приоритетом. созданную обработчиком с низшим приоритетом.
[`lock`]: ../../api/rtfm/trait.Mutex.html#method.lock [`lock`]: ../../../api/rtfm/trait.Mutex.html#method.lock
``` rust ``` rust
{{#include ../../../../examples/lock.rs}} {{#include ../../../../examples/lock.rs}}
@ -90,7 +90,7 @@ $ cargo run --example lock
расположен в отдельном ресурсе; `UART0` владеет ресурсом произодителя, а `idle` расположен в отдельном ресурсе; `UART0` владеет ресурсом произодителя, а `idle`
владеет ресурсом потребителя. владеет ресурсом потребителя.
[`Queue`]: ../../api/heapless/spsc/struct.Queue.html [`Queue`]: ../../../api/heapless/spsc/struct.Queue.html
``` rust ``` rust
{{#include ../../../../examples/late.rs}} {{#include ../../../../examples/late.rs}}

View file

@ -9,7 +9,7 @@
планируется, момент ([`Instant`]), в который задачу нужно запустить, нужно передать планируется, момент ([`Instant`]), в который задачу нужно запустить, нужно передать
как первый аргумент вызова `schedule`. как первый аргумент вызова `schedule`.
[`Instant`]: ../../api/rtfm/struct.Instant.html [`Instant`]: ../../../api/rtfm/struct.Instant.html
Рантайм RTFM включает монотонный, растущий только вверх, 32-битный таймер, Рантайм RTFM включает монотонный, растущий только вверх, 32-битный таймер,
значение которого можно запросить конструктором `Instant::now`. Время ([`Duration`]) значение которого можно запросить конструктором `Instant::now`. Время ([`Duration`])
@ -18,7 +18,7 @@
значение `Instant(0 /* циклов тактовой частоты */)`; таймер включается сразу перед значение `Instant(0 /* циклов тактовой частоты */)`; таймер включается сразу перед
включением прерываний и запуском `idle`. включением прерываний и запуском `idle`.
[`Duration`]: ../../api/rtfm/struct.Duration.html [`Duration`]: ../../../api/rtfm/struct.Duration.html
В примере ниже две задачи планируются из `init`: `foo` и `bar`. `foo` - В примере ниже две задачи планируются из `init`: `foo` и `bar`. `foo` -
запланирована на запуск через 8 миллионов тактов в будущем. Кроме того, `bar` запланирована на запуск через 8 миллионов тактов в будущем. Кроме того, `bar`

View file

@ -5,7 +5,7 @@
# Введение # Введение
Эта книга содержит документацию уровня пользователя фреймворком Real Time For the Masses Эта книга содержит документацию уровня пользователя фреймворком Real Time For the Masses
(RTFM). Описание API можно найти [здесь](../api/rtfm/index.html). (RTFM). Описание API можно найти [здесь](../../api/rtfm/index.html).
{{#include README_RU.md:5:44}} {{#include README_RU.md:5:44}}