|
| 1 | +# Embedded Working Group Meeting Notes |
| 2 | + |
| 3 | +* [Coordination Repository] |
| 4 | +* Meetings: Tuesday 8pm Europe/Berlin time |
| 5 | +* [Join the Chat] |
| 6 | +* Today's meeting: 2020-04-28 |
| 7 | + |
| 8 | +[Coordination Repository]: https://github.com/rust-embedded/wg |
| 9 | +[Join the Chat]: https://riot.im/app/#/room/#rust-embedded:matrix.org |
| 10 | +[Meeting Agenda]: # |
| 11 | + |
| 12 | +## Attendance |
| 13 | + |
| 14 | +Write your GH username or Matrix handle here! |
| 15 | + |
| 16 | +* jamesmunns |
| 17 | +* adamgreig |
| 18 | +* therealprof |
| 19 | +* cr1901 |
| 20 | + |
| 21 | +## Agenda |
| 22 | + |
| 23 | +* Focus Projects Check-in |
| 24 | +* Request for review/assistance: |
| 25 | + * Review the [concurrency](https://github.com/rust-embedded/embedonomicon/pull/48) chapter for correctness. |
| 26 | + * Review [MSRV RFC](https://github.com/rust-embedded/wg/pull/449) |
| 27 | + * Help needed with embedonomicon assembly changes: https://github.com/rust-embedded/embedonomicon/pull/66 |
| 28 | +* Lang team has requested "lang item wish list" items, before a push to a 2021 edition of Rust. |
| 29 | +* Use of Github Actions for WG repositories |
| 30 | + |
| 31 | +## Action Items |
| 32 | + |
| 33 | +* [ ] MSRV CI Focus Project: A couple more crates need to be tackled! |
| 34 | +* [ ] Still need feedback on https://github.com/ra-kete/dma-poc/issues/1 |
| 35 | + * [ ] @adamgreig to do a stm32f0 impl check |
| 36 | + * [ ] @jamesmunns to do a nrf52 impl check |
| 37 | + |
| 38 | +* [ ] Next Week's Agenda: https://github.com/rust-embedded/wg/issues/450 |
| 39 | + |
| 40 | +## Last Week's Agenda |
| 41 | + |
| 42 | +* Check up on focus projects |
| 43 | + * DMA |
| 44 | + * Feedback needed! See action items |
| 45 | + * MSRV CI |
| 46 | + * Progress going well |
| 47 | +* The Road to 1.0 |
| 48 | + * bare-metal - https://github.com/rust-embedded/bare-metal/issues/22 |
| 49 | +* ? |
| 50 | + |
| 51 | +## Last Week's Action Items |
| 52 | + |
| 53 | +* [ ] Feedback needed on [DMA traits](https://github.com/ra-kete/dma-poc/issues/1) |
| 54 | +* [ ] Help wanted on [MSRV CI task](https://github.com/rust-embedded/wg/issues/445)! |
| 55 | +* [ ] Next week's agenda: https://github.com/rust-embedded/wg/issues/447 |
| 56 | + |
| 57 | +## Embedded Lang Item Wish List |
| 58 | + |
| 59 | +Note, this was a brainstorming session during one meeting. We plan to iterate on this, prioritize, etc. |
| 60 | + |
| 61 | +Link to chat log, wish list discussion starts here: https://freenode.logbot.info/rust-embedded/20200428#c3752795 |
| 62 | + |
| 63 | +### Items |
| 64 | + |
| 65 | +* `Sync` and `Send` on non-hosted, multi core systems |
| 66 | + * https://github.com/rust-embedded/wg/blob/master/rfcs/0419-multi-core-soundness.md - TL;DR: |
| 67 | + * TL;DR: `Send` and `Sync` only work within one "environment". On hosted applications, the operating system handles this (via virtual memory). On non-hosted applications (bare metal, multicore processors), `Send` and `Sync` are not "good enough" for this use case |
| 68 | + * Today on a single core processor, we use `Send` and `Sync` to model the main application and each interrupt context as separate "threads" (which never run concurrently). |
| 69 | + * In the future, we want to define our own `MulticoreSend` and `MulticoreSync` which are usable in a bare metal, multicore processor |
| 70 | +* 'Non-contiguous pointers' or 'pointers of incompatible type's |
| 71 | + * near/far pointers |
| 72 | + * `__flash` pointers on AVR, or disjoint addr spaces in general |
| 73 | + * Relevant for: |
| 74 | + * Multi Core devices with disparate address spaces |
| 75 | + * Weird architectures |
| 76 | + * Arm SecureZone |
| 77 | + * WASM (spec defines multiple addr spaces) |
| 78 | +* Certain attributes/flags should probably require unsafe |
| 79 | + * `#[link_section]` |
| 80 | + * `#[no_mangle]` |
| 81 | + * Deprecated in favor of the "needs/provides thing"? |
| 82 | + * `-Clink-args` |
| 83 | + * `-C linker="unsafe { rust-lld }"` /s |
| 84 | +* Const generics |
| 85 | +* Const trait bounds |
| 86 | +* Inline ASM |
| 87 | +* Arbitrary size types (a la the recent C/C++ proposals) |
| 88 | + * Successor to https://github.com/rust-lang/rfcs/pull/2581 ? |
| 89 | + * Also/inclusive of bitfields? (some contention around this) |
| 90 | +* `#[link_args]` (to avoid requiring `.cargo/config`) |
| 91 | +* Placing/allocation within a certain linker section within `const` context/`static` items, e.g. `static S: &str = "foo";` |
| 92 | + * Right now you can state where `S` is placed (just the reference), but you can't place `"foo"` |
| 93 | + |
| 94 | +### Items - maybe not? |
| 95 | + |
| 96 | +* MMIO/dereferencable thing |
| 97 | + * Are raw pointers good enough? |
| 98 | + * is `&raw` relevant? |
| 99 | + * `UndereferencableCell` /s ? |
| 100 | +* Panic Formatting |
| 101 | +* Some libs requests, like: |
| 102 | + * non-global allocators |
| 103 | + * allow for defining a global allocator stable-y |
| 104 | +* Breaking changes to `std` to allow for easier move/reuse in `core`? |
| 105 | + * `Read`, `Write`, `Error` traits? |
0 commit comments