From 29f354020e4733ab3a173c80e4929d215ad380e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Wed, 10 Jun 2020 14:32:09 +0000 Subject: [PATCH 1/3] Remove compilation optimisations on 1.36.0 --- ci/script.sh | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/ci/script.sh b/ci/script.sh index 7b86e52aa6..c9a9c05027 100644 --- a/ci/script.sh +++ b/ci/script.sh @@ -36,6 +36,12 @@ main() { mkdir -p ci/builds + # Current MSRV cannot handle profiles, remove compilation optimisations + if [[ $TRAVIS_RUST_VERSION == 1.*.* ]]; then + echo "Removing optimisation profiles" + sed -i '/^\[profile.*build-override]$/,/^$/{/^#/!{/^$/!d}}' Cargo.toml + fi + if [ $T = x86_64-unknown-linux-gnu ]; then if [[ $TRAVIS_RUST_VERSION == 1.*.* ]]; then # test on a fixed version (MSRV) to avoid problems with changes in rustc diagnostics From a8a003fb89d30f29f5fb6681c60ae95637e480c6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henrik=20Tj=C3=A4der?= Date: Wed, 10 Jun 2020 15:01:07 +0000 Subject: [PATCH 2/3] Disable optimisation profiles in GHA for 1.36.0 --- .github/workflows/build.yml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index e6abe374ba..8468ceb77c 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -59,6 +59,10 @@ jobs: target: ${{ matrix.target }} override: true + - name: Disable optimisation profiles + if: matrix.toolchain == '1.36.0' + run: sed -i '/^\[profile.*build-override]$/,/^$/{/^#/!{/^$/!d}}' Cargo.toml + - name: cargo check uses: actions-rs/cargo@v1 with: @@ -268,6 +272,11 @@ jobs: toolchain: ${{ matrix.toolchain }} target: ${{ matrix.target }} override: true + + - name: Disable optimisation profiles + if: matrix.toolchain == '1.36.0' + run: sed -i '/^\[profile.*build-override]$/,/^$/{/^#/!{/^$/!d}}' Cargo.toml + - name: cargo check uses: actions-rs/cargo@v1 with: @@ -287,6 +296,10 @@ jobs: toolchain: 1.36.0 target: thumbv7m-none-eabi override: true + + - name: Disable optimisation profiles + run: sed -i '/^\[profile.*build-override]$/,/^$/{/^#/!{/^$/!d}}' Cargo.toml + - uses: actions-rs/cargo@v1 with: use-cross: false @@ -305,6 +318,10 @@ jobs: toolchain: 1.36.0 target: thumbv6m-none-eabi override: true + + - name: Disable optimisation profiles + run: sed -i '/^\[profile.*build-override]$/,/^$/{/^#/!{/^$/!d}}' Cargo.toml + - uses: actions-rs/cargo@v1 with: use-cross: false From d44f5582d96d2eb73da18502fe3018196559fb59 Mon Sep 17 00:00:00 2001 From: KENTARO OKUDA Date: Thu, 11 Jun 2020 09:45:53 -0400 Subject: [PATCH 3/3] Update resources.md --- book/en/src/by-example/resources.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/book/en/src/by-example/resources.md b/book/en/src/by-example/resources.md index b33ca9bbba..db7630ea36 100644 --- a/book/en/src/by-example/resources.md +++ b/book/en/src/by-example/resources.md @@ -11,7 +11,7 @@ All resources are declared as a single `struct` within the `#[app]` pseudo-module. Each field in the structure corresponds to a different resource. Resources can optionally be given an initial value using the `#[init]` attribute. Resources that are not given an initial value are referred to as -*late* resources and are covered in more detail in a follow up section in this +*late* resources and are covered in more detail in a follow-up section in this page. Each context (task handler, `init` or `idle`) must declare the resources it @@ -31,7 +31,7 @@ access to a resource named `shared`. $ cargo run --example resource {{#include ../../../../ci/expected/resource.run}}``` -Note that the `shared` resource cannot accessed from `idle`. Attempting to do +Note that the `shared` resource cannot be accessed from `idle`. Attempting to do so results in a compile error. ## `lock` @@ -75,14 +75,14 @@ $ cargo run --example lock ## Late resources -Late resources are resources that are not given an initial value at compile -using the `#[init]` attribute but instead are initialized are runtime using the +Late resources are resources that are not given an initial value at compile time +using the `#[init]` attribute but instead are initialized at runtime using the `init::LateResources` values returned by the `init` function. Late resources are useful for *moving* (as in transferring the ownership of) peripherals initialized in `init` into interrupt handlers. -The example below uses late resources to stablish a lockless, one-way channel +The example below uses late resources to establish a lockless, one-way channel between the `UART0` interrupt handler and the `idle` task. A single producer single consumer [`Queue`] is used as the channel. The queue is split into consumer and producer end points in `init` and then each end point is stored