├── .github ├── CODEOWNERS ├── bors.toml └── workflows │ └── ci.yml ├── .gitignore ├── CODE_OF_CONDUCT.md ├── README.md ├── config.toml ├── content ├── 2018-03-15-newsletter-1.md ├── 2018-03-29-newsletter-2.md ├── 2018-04-14-newsletter-3.md ├── 2018-04-28-newsletter-4.md ├── 2018-05-13-the-path-towards-stable.md ├── 2018-05-15-newsletter-5.md ├── 2018-05-28-newsletter-6.md ├── 2018-07-15-newsletter-7.md ├── 2018-07-29-newsletter-8.md ├── 2018-08-12-newsletter-9.md ├── 2018-08-28-newsletter-10.md ├── 2018-08-2x-psa-cortex-m-breakage.md ├── 2018-09-09-newsletter-11.md ├── 2018-09-25-newsletter-12.md ├── 2018-10-09-newsletter-13.md ├── 2018-10-28-newsletter-14.md ├── 2018-11-14-this-year-in-embedded-rust.md ├── 2019-02-20-newsletter-15.md ├── 2019-03-06-newsletter-16.md ├── 2019-03-20-newsletter-17.md ├── 2019-05-07-embedded-rust-in-2019.md ├── 2019-07-02-newsletter-18.md ├── 2019-10-03-newsletter-19.md ├── 2019-11-05-newsletter-20.md ├── 2019-11-28-newsletter-21.md ├── 2020-01-01-newsletter-22.md ├── 2020-02-01-newsletter-23.md ├── 2020-08-17-newsletter-24.md ├── 2020-08-24-newsletter-25.md ├── 2021-02-16-newsletter-26.md ├── 2021-03-16-newsletter-27.md ├── 2021-04-20-newsletter-28.md ├── 2021-07-27-newsletter-29.md ├── 2021-11-16-newsletter-30.md ├── 2021-12-28-this-year-in-embedded-rust-2021.md ├── 2022-03-22-newsletter-31.md ├── 2024-01-09-embedded-hal-v1.md ├── _index.md ├── embedded-ferris-soldering.png ├── newsletter-next.md └── spi-shared-bus.svg ├── newsletter-template.md ├── static ├── ewg-logo-blue-white-on-transparent-256x256.png ├── ewg-logo-blue-white-on-transparent.svg └── screenshot-cortex-a.png ├── templates └── rss.xml ├── themes └── hyde │ ├── .gitignore │ ├── LICENSE │ ├── README.md │ ├── config.toml │ ├── content │ ├── some-article.md │ └── some-other-article.md │ ├── sass │ ├── hyde.scss │ ├── poole.scss │ └── print.scss │ ├── screenshot.png │ ├── static │ └── .gitkeep │ ├── templates │ ├── index.html │ └── page.html │ └── theme.toml └── triagebot.toml /.github/CODEOWNERS: -------------------------------------------------------------------------------- 1 | * @rust-embedded/resources 2 | 3 | -------------------------------------------------------------------------------- /.github/bors.toml: -------------------------------------------------------------------------------- 1 | block_labels = ["needs-decision"] 2 | delete_merged_branches = true 3 | required_approvals = 1 4 | status = ["build"] 5 | -------------------------------------------------------------------------------- /.github/workflows/ci.yml: -------------------------------------------------------------------------------- 1 | name: CI 2 | 3 | on: 4 | push: 5 | branches: [ staging, trying, master ] 6 | pull_request: 7 | 8 | jobs: 9 | build: 10 | runs-on: ubuntu-20.04 11 | steps: 12 | - uses: actions/checkout@v2 13 | - uses: actions-rs/toolchain@v1 14 | with: 15 | profile: minimal 16 | toolchain: stable 17 | 18 | - name: Install Python dependencies 19 | run: | 20 | pip3 install --user python-dateutil linkchecker 21 | 22 | - name: Download and install Zola 23 | run: | 24 | wget https://github.com/getzola/zola/releases/download/v0.13.0/zola-v0.13.0-x86_64-unknown-linux-gnu.tar.gz 25 | tar xvf zola-v0.13.0-x86_64-unknown-linux-gnu.tar.gz 26 | 27 | - name: Put pip binary directory into path 28 | run: echo "~/.local/bin" >> $GITHUB_PATH 29 | 30 | - name: Build book 31 | run: ./zola build 32 | 33 | - name: Check links 34 | run: linkchecker public/ 35 | 36 | - name: Deploy book 37 | if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/master' }} 38 | uses: peaceiris/actions-gh-pages@v3 39 | with: 40 | github_token: ${{ secrets.GITHUB_TOKEN }} 41 | publish_dir: public 42 | force_orphan: true 43 | cname: blog.rust-embedded.org 44 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /public -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # The Rust Code of Conduct 2 | 3 | ## Conduct 4 | 5 | **Contact**: [Embedded WG][wg] 6 | 7 | * We are committed to providing a friendly, safe and welcoming environment for all, regardless of level of experience, gender identity and expression, sexual orientation, disability, personal appearance, body size, race, ethnicity, age, religion, nationality, or other similar characteristic. 8 | * On IRC, please avoid using overtly sexual nicknames or other nicknames that might detract from a friendly, safe and welcoming environment for all. 9 | * Please be kind and courteous. There's no need to be mean or rude. 10 | * Respect that people have differences of opinion and that every design or implementation choice carries a trade-off and numerous costs. There is seldom a right answer. 11 | * Please keep unstructured critique to a minimum. If you have solid ideas you want to experiment with, make a fork and see how it works. 12 | * We will exclude you from interaction if you insult, demean or harass anyone. That is not welcome behavior. We interpret the term "harassment" as including the definition in the [Citizen Code of Conduct](http://citizencodeofconduct.org/); if you have any lack of clarity about what might be included in that concept, please read their definition. In particular, we don't tolerate behavior that excludes people in socially marginalized groups. 13 | * Private harassment is also unacceptable. No matter who you are, if you feel you have been or are being harassed or made uncomfortable by a community member, please contact one of the channel ops or any of the [Embedded WG][wg] immediately. Whether you're a regular contributor or a newcomer, we care about making this community a safe place for you and we've got your back. 14 | * Likewise any spamming, trolling, flaming, baiting or other attention-stealing behavior is not welcome. 15 | 16 | ## Moderation 17 | 18 | These are the policies for upholding our community's standards of conduct. 19 | 20 | 1. Remarks that violate the Rust standards of conduct, including hateful, hurtful, oppressive, or exclusionary remarks, are not allowed. (Cursing is allowed, but never targeting another user, and never in a hateful manner.) 21 | 2. Remarks that moderators find inappropriate, whether listed in the code of conduct or not, are also not allowed. 22 | 3. Moderators will first respond to such remarks with a warning. 23 | 4. If the warning is unheeded, the user will be "kicked," i.e., kicked out of the communication channel to cool off. 24 | 5. If the user comes back and continues to make trouble, they will be banned, i.e., indefinitely excluded. 25 | 6. Moderators may choose at their discretion to un-ban the user if it was a first offense and they offer the offended party a genuine apology. 26 | 7. If a moderator bans someone and you think it was unjustified, please take it up with that moderator, or with a different moderator, **in private**. Complaints about bans in-channel are not allowed. 27 | 8. Moderators are held to a higher standard than other community members. If a moderator creates an inappropriate situation, they should expect less leeway than others. 28 | 29 | In the Rust community we strive to go the extra step to look out for each other. Don't just aim to be technically unimpeachable, try to be your best self. In particular, avoid flirting with offensive or sensitive issues, particularly if they're off-topic; this all too often leads to unnecessary fights, hurt feelings, and damaged trust; worse, it can drive people away from the community entirely. 30 | 31 | And if someone takes issue with something you said or did, resist the urge to be defensive. Just stop doing what it was they complained about and apologize. Even if you feel you were misinterpreted or unfairly accused, chances are good there was something you could've communicated better — remember that it's your responsibility to make your fellow Rustaceans comfortable. Everyone wants to get along and we are all here first and foremost because we want to talk about cool technology. You will find that people will be eager to assume good intent and forgive as long as you earn their trust. 32 | 33 | The enforcement policies listed above apply to all official embedded WG venues; including official IRC channels (#rust-embedded); GitHub repositories under rust-embedded; and all forums under rust-embedded.org (forum.rust-embedded.org). 34 | 35 | *Adapted from the [Node.js Policy on Trolling](http://blog.izs.me/post/30036893703/policy-on-trolling) as well as the [Contributor Covenant v1.3.0](https://www.contributor-covenant.org/version/1/3/0/).* 36 | 37 | [wg]: https://github.com/rust-embedded/wg#organization 38 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # The Embedded Rust Working Group Blog 2 | 3 | Content for [the Rust Embedded WG blog](https://blog.rust-embedded.org/). 4 | 5 | This blog is a collaborative effort publishing news about embedded development with the Rust programming language. 6 | 7 | ## Contributing 8 | 9 | To contribute please find the latest entry in the [content directory](https://github.com/rust-embedded/blog/tree/master/content) of this repo which contains the draft for the next blog post, do the desired edits (via GitHub editor is fine) and create a PR (Pull Request) with your change(s). 10 | 11 | ## Rules 12 | 13 | * Any content concerning Rust and embedded devices is relevant and welcome 14 | * Proposed content can come from the original author or a third party 15 | * Content with commercial background is fine, too, unless it's a plain advertisement 16 | * Please mind the [Code of Conduct](CODE_OF_CONDUCT.md) 17 | -------------------------------------------------------------------------------- /config.toml: -------------------------------------------------------------------------------- 1 | # The URL the site will be built for 2 | base_url = "https://blog.rust-embedded.org" 3 | 4 | title = "Rust Embedded Working Group" 5 | description = """ 6 | Blog of the Embedded Rust Working Group 7 | """ 8 | 9 | # Whether to automatically compile all Sass files in the sass directory 10 | compile_sass = true 11 | 12 | # Whether to build a search index to be used later on by a JavaScript library 13 | build_search_index = true 14 | 15 | theme = "hyde" 16 | 17 | generate_feed = true 18 | feed_filename = "rss.xml" 19 | 20 | # Whether to do syntax highlighting 21 | [markdown] 22 | highlight_code = true 23 | 24 | [extra] 25 | hyde_links = [ 26 | {url = "https://rust-lang.org", name = "The Rust Language"}, 27 | {url = "https://github.com/rust-embedded/wg", name = "Embedded WG"}, 28 | {url = "https://github.com/rust-embedded/blog", name = "The Blog on GitHub"}, 29 | {url = "https://blog.rust-embedded.org/rss.xml", name = "RSS Feed"}, 30 | ] 31 | -------------------------------------------------------------------------------- /content/2018-03-15-newsletter-1.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 1" 3 | date = 2018-03-15 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | aliases = ["2018-03-15/"] 8 | +++ 9 | 10 | This is the first newsletter of the [Embedded WG]! We will be releasing this newsletter on a bi-weekly basis, and we are looking to highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 11 | 12 | 13 | 14 | If you want to mention something in [the next newsletter], make sure to leave a comment on the issue! 15 | 16 | ## Highlights 17 | 18 | * [Tock-OS] has released the [1.0 of their kernel], gotten the Rust Userspace library back in order, and are working on a [new register interface] 19 | * [Emilgardis], [jamesmunns] and [ryankurte] have become collaborators of the [svd] and [svd2rust] projects. 20 | * [hannobraun], [ilya-epifanov], [thejpster], [therealprof] have become collaborators of the [embedded-hal] project. 21 | * [dvc94ch] has created the [riscv-rust] organization for all your embedded RISCV needs! 22 | * [dylanmckay] has begun [rebasing][avr-rust-rebase] the avr-rust/rust fork onto a recent rust-lang/rust version, bringing in LLVM 6.0 support. 23 | 24 | ## Embedded Projects 25 | 26 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to mention it on the tracking issue for [the next newsletter], we would love to show it off! 27 | 28 | ### `embedded-hal` drivers 29 | 30 | This is a list of recently released drivers that are part of the [Weekly Driver Initiative]. There are currently 5 Released Drivers, 14 WIP Drivers, and lots of TODOs! 31 | 32 | * [pcein] has [released][pcein-blog] the third weekly driver for the [`adc-mcp3008`], an 8-channel 10-bit ADC. 33 | * [japaric] has [released][enc-blog] the fourth weekly driver for the [`enc28j60`], an Ethernet controller with SPI interface. 34 | * [dbrgn] has [released][mcp-blog] the fifth weekly driver for the [`mcp3425`], a 16-bit ADC with I2C interface. 35 | 36 | ## Thanks 37 | 38 | * Thanks to everyone who has been commenting on the [Embedded WG Issues], especially for the [Embedded Rust Book] tracking issue! 39 | * [varkor] has fixed a [long standing LLVM bug][gh41315], that artificially increased the binary size of Rust programs, and backported the patch to rustc. 40 | * LLD is now being shipped with the Rust toolchain. [FenrirWolf] [patched Xargo][xargo-lld] so that Xargo users can make use of it too. 41 | 42 | ## Help Wanted 43 | 44 | If you have an embedded project that could use contributors or maintainers, leave a comment for [the next newsletter]! 45 | 46 | * We are [pretty close][cortex-m-rt-lld] to being able to use LLD to link Rust programs compiled for ARM Cortex-M but there are some [LLD bugs][lld-issues] that still need to be fixed. Help reporting these bugs upstream would be greatly appreciated! 47 | * Incremental compilation is in the roadmap for this year but it doesn't work with `no_std` binaries due to an [old rustc bug][gh18807] related to linking. Help us fix it! There's a proposed solution [here]. 48 | * We want to explore stabilizing some assembly operations in core as an alternative to the unstable asm! macro. We would love some help identifying the assembly operations that need to be provided this way as some can be implemented in external assembly files without losing 49 | semantics. Details in issue [#63]. 50 | 51 | [#63]: https://github.com/rust-lang-nursery/embedded-wg/issues/63 52 | [1.0 of their kernel]: https://www.tockos.org/blog/2018/talking-tock-35/ 53 | [`adc-mcp3008`]: https://crates.io/crates/adc-mcp3008 54 | [`enc28j60`]: https://crates.io/crates/enc28j60 55 | [`mcp3425`]: https://crates.io/crates/mcp3425 56 | [avr-rust-rebase]: https://github.com/avr-rust/rust/pull/91 57 | [cortex-m-rt-lld]: https://github.com/japaric/cortex-m-rt/issues/53 58 | [dbrgn]: https://github.com/dbrgn 59 | [dvc94ch]: https://github.com/dvc94ch 60 | [dylanmckay]: https://github.com/dylanmckay 61 | [Embedded Rust Book]: https://github.com/rust-lang-nursery/embedded-wg/issues/56 62 | [Embedded WG Issues]: https://github.com/rust-lang-nursery/embedded-wg/issues 63 | [Embedded WG]: https://github.com/rust-lang-nursery/embedded-wg 64 | [embedded-hal]: https://github.com/japaric/embedded-hal 65 | [Emilgardis]: https://github.com/Emilgardis 66 | [enc-blog]: http://blog.japaric.io/wd-4-enc28j60/ 67 | [FenrirWolf]: https://github.com/FenrirWolf 68 | [gh18807]: https://github.com/rust-lang/rust/issues/18807 69 | [gh41315]: https://github.com/rust-lang/rust/issues/41315 70 | [hannobraun]: https://github.com/hannobraun 71 | [here]: https://github.com/rust-lang/rust/issues/47074#issuecomment-354588718 72 | [ilya-epifanov]: https://github.com/ilya-epifanov 73 | [jamesmunns]: https://github.com/jamesmunns 74 | [japaric]: https://github.com/japaric 75 | [lld-issues]: https://github.com/japaric/cortex-m-rt/issues/53#issuecomment-371972935 76 | [mcp-blog]: https://blog.dbrgn.ch/2018/3/13/rust-mcp3425-driver/ 77 | [new register interface]: https://www.tockos.org/blog/2018/talking-tock-36/ 78 | [pcein]: https://github.com/pcein 79 | [pcein-blog]: http://pramode.in/2018/02/24/an-introduction-to-writing-embedded-hal-based-drivers-in-rust/ 80 | [riscv-rust]: https://github.com/riscv-rust 81 | [ryankurte]: https://github.com/ryankurte 82 | [svd2rust]: https://github.com/japaric/svd2rust 83 | [svd]: https://github.com/japaric/svd 84 | [the next newsletter]: https://github.com/rust-lang-nursery/embedded-wg/issues/65 85 | [thejpster]: https://github.com/thejpster 86 | [therealprof]: https://github.com/therealprof 87 | [Tock-OS]: https://github.com/helena-project/tock 88 | [varkor]: https://github.com/varkor 89 | [Weekly Driver Initiative]: https://github.com/rust-lang-nursery/embedded-wg/issues/39 90 | [xargo-lld]: https://github.com/japaric/xargo/pull/200 -------------------------------------------------------------------------------- /content/2018-04-14-newsletter-3.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 3" 3 | date = 2018-04-14 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | aliases = ["2018-04-14/"] 8 | +++ 9 | 10 | This is the third bi-weekly newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 11 | 12 | 13 | 14 | If you want to mention something in [the next newsletter], make sure to leave a comment on the issue. 15 | 16 | [the next newsletter]: https://github.com/rust-lang-nursery/embedded-wg/issues/84 17 | [Embedded WG]: https://github.com/rust-lang-nursery/embedded-wg 18 | 19 | ## Highlights 20 | 21 | * Crates for the Embedded Rust Ecosystem are now being tracked in the [Awesome Embedded Rust] repository 22 | * Progress has been made as part of the [Embedded Rust on Stable] initiative, including: 23 | * `extern crate compiler_builtins` is [now included in the no_std prelude] 24 | * [xargo no longer needed] for ARM Cortex-M development 25 | * We also made some progress on simplifying the embedded development setup: You can now link Embedded Rust programs [using lld] 26 | * [Wilfried] kicked off a blog series about [using embedded rust] 27 | * [Andre Richter] is writing a tutorial for using Rust to write [bare metal Raspberry Pi 3] applications 28 | * The Embedonomicon and the Embedded Rust Books are [now kept] in the [Embedded WG] repository, and pull requests are welcome! 29 | 30 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 31 | [Embedded Rust on Stable]: https://github.com/rust-lang-nursery/embedded-wg/issues/42 32 | [now included in the no_std prelude]: https://users.rust-lang.org/t/psa-breaking-change-extern-crate-compiler-builtins-is-now-included-in-no-std-crates/16704 33 | [xargo no longer needed]: https://users.rust-lang.org/t/psa-you-no-longer-need-xargo-to-do-arm-cortex-m-development/16703 34 | [using lld]: https://users.rust-lang.org/t/cortex-m-rt-v0-4-0-now-you-can-link-arm-cortex-m-programs-using-lld/16751 35 | [Wilfried]: https://github.com/ithinuel 36 | [using embedded rust]: http://ithinuel.me/embedded-rust-why/ 37 | [Andre Richter]: https://github.com/andre-richter 38 | [bare metal Raspberry Pi 3]: https://github.com/andre-richter/rust-raspi3-tutorial 39 | [now kept]: https://github.com/rust-lang-nursery/embedded-wg/pull/78 40 | 41 | ## Embedded Projects 42 | 43 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to mention it on the tracking issue for [the next newsletter], we would love to show it off! 44 | 45 | * [japaric] released an initial version of [cargo-binutils], which will allow you to use LLVM's binutils (like `nm`, `size`, `objcopy`, etc.) in the format `cargo objcopy` (once [issue 49584] has landed) 46 | * [myeisha] released the first version of their [thumb2-stack-size] tool, which helps determine the maximum stack size used in embedded code 47 | 48 | [japaric]: https://github.com/japaric 49 | [cargo-binutils]: https://github.com/japaric/cargo-binutils 50 | [issue 49584]: https://github.com/rust-lang/rust/issues/49584 51 | [myeisha]: https://github.com/myeisha 52 | [thumb2-stack-size]: https://crates.io/crates/thumb2-stack-size 53 | 54 | ### `embedded-hal` Ecosystem Crates 55 | 56 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 57 | 58 | | Type | Status | Count | 59 | | :--- | :----- | :---- | 60 | | [Device Crates] | released | 13 | 61 | | [HAL Impl Crates] | released | 10 | 62 | | [Driver Crates Released] | released | 7 | 63 | | [Driver Crates WIP] | WIP | 26 | 64 | 65 | [Weekly Driver Initiative]: https://github.com/rust-lang-nursery/embedded-wg/issues/39 66 | [Device Crates]: https://github.com/rust-embedded/awesome-embedded-rust#device-crates 67 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 68 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 69 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 70 | 71 | ## Help Wanted 72 | 73 | * We need help working on [RFC2070], stabilizing usage of custom Panic behavior. [nagisa] is willing to mentor! 74 | * If you use inline assembly in your Embedded Rust programs, help us capture what assembly operations are [used most often] so we can stabilize them as intrinsics 75 | 76 | [RFC2070]: https://github.com/rust-lang/rust/issues/44489#issuecomment-381324623 77 | [nagisa]: https://github.com/nagisa 78 | [used most often]: https://github.com/rust-lang-nursery/embedded-wg/issues/63#issue-305114817 79 | -------------------------------------------------------------------------------- /content/2018-04-28-newsletter-4.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 4" 3 | date = 2018-04-28 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | aliases = ["2018-04-28/"] 8 | +++ 9 | 10 | This is the fourth bi-weekly newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 11 | 12 | 13 | 14 | If you want to mention something in [the next newsletter], make sure to leave a comment on the issue. 15 | 16 | [the next newsletter]: https://github.com/rust-lang-nursery/embedded-wg/issues/93 17 | [Embedded WG]: https://github.com/rust-lang-nursery/embedded-wg 18 | 19 | ## Highlights 20 | 21 | * The [Embedded WG] IRC meetings are now explicitly public, and the agendas for the next meeting can be found in the [WG Issues], like [this issue] for the next meeting 22 | * [David] shared his utility [`Form`], which takes a single `lib.rs` (like those created by `svd2rust` or `bindgen`), and splits it into structured modules. Check out the [`nrf52`] Chip Support Crate as an example, and try it out for your generated projects! 23 | * [astro] shared [`managed`], A library that provides a way to logically own objects, whether or not heap allocation is available 24 | 25 | [WG Issues]: https://github.com/rust-lang-nursery/embedded-wg/issues 26 | [this issue]: https://github.com/rust-lang-nursery/embedded-wg/issues/91 27 | [David]: https://github.com/djmcgill 28 | [`Form`]: https://github.com/djmcgill/form 29 | [`nrf52`]: https://github.com/jamesmunns/nrf52/tree/master/src 30 | [astro]: https://github.com/astro 31 | [`managed`]: https://crates.io/crates/managed 32 | 33 | 34 | ## Embedded Projects 35 | 36 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to mention it on the tracking issue for [the next newsletter], we would love to show it off! 37 | 38 | * [Daniel] started work on [`bluetooth-hci`], an abstraction layer for HCI based Bluetooth Controllers, and is using it in his [`bluenrg`] crate for STMicro's BlueNRG RF modules 39 | * [cr1901] shared his [`AT2XT`] project, an adapter that allows use of low cost PS2 keyboards with older computers that expect (now very expensive) XT keyboards. The firmware for this project is based on `rtfm`, and runs on an `msp430` microcontroller. Check out the [short blurb] by [cr1901] summarizing the project 40 | * [hannobraun] released v0.3 of his [`lpc82x`] Chip Support Crate for NXP's LPC82x family of microcontrollers, as well as v0.1 of [`lpc82x-hal`]. Check out the [lpc82x-hal announcement] here! 41 | * [japaric] released v0.3.1 of [`heapless`] which now contains fixed capacity implementations of `HashMap` and `HashSet` that work on `no_std`, do not require an allocator, and use `u32` hashes (instead of the default `u64`). 42 | 43 | [`AT2XT`]: https://github.com/cr1901/AT2XT 44 | [cr1901]: https://github.com/cr1901 45 | [japaric]: https://github.com/japaric 46 | [`heapless`]: https://crates.io/crates/heapless 47 | [Daniel]: https://github.com/danielgallagher0 48 | [`bluetooth-hci`]: https://github.com/danielgallagher0/bluetooth-hci 49 | [`bluenrg`]: https://github.com/danielgallagher0/bluenrg 50 | [hannobraun]: https://github.com/hannobraun 51 | [`lpc82x`]: https://crates.io/crates/lpc82x 52 | [`lpc82x-hal`]: https://crates.io/crates/lpc82x-hal 53 | [lpc82x-hal announcement]: https://users.rust-lang.org/t/lpc82x-hal-0-1-hardware-abstraction-layer-for-nxp-lpc82x-mcus/17116 54 | [short blurb]: https://github.com/rust-lang-nursery/embedded-wg/pull/94#issuecomment-385172043 55 | 56 | ### `embedded-hal` Ecosystem Crates 57 | 58 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 59 | 60 | | Type | Status | Count | 61 | | :--- | :----- | :---- | 62 | | [Device Crates] | released | 12 | 63 | | [HAL Impl Crates] | released | 10 | 64 | | [Board Support Crates] | released | 6 | 65 | | [Driver Crates Released] | released | 7 | 66 | | [Driver Crates WIP] | WIP | 27 | 67 | 68 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 69 | [Weekly Driver Initiative]: https://github.com/rust-lang-nursery/embedded-wg/issues/39 70 | [Device Crates]: https://github.com/rust-embedded/awesome-embedded-rust#device-crates 71 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 72 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 73 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 74 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 75 | 76 | ## Help Wanted 77 | 78 | * The [Embedded WG] is looking for contributors for the [Rustfest Impl Period]. If you will be attending RustFest in Paris, let us know! 79 | * Progress is being made towards [Stable Embedded Rust], try out the current preview, and we would love some feedback! 80 | 81 | [Stable Embedded Rust]: https://github.com/rust-lang-nursery/embedded-wg/issues/42#issuecomment-384524779 82 | [Rustfest Impl Period]: https://github.com/rust-lang-nursery/embedded-wg/issues/90 83 | -------------------------------------------------------------------------------- /content/2018-05-15-newsletter-5.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 5" 3 | date = 2018-05-15 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | aliases = ["2018-05-15/"] 8 | +++ 9 | 10 | This is the fifth bi-weekly newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 11 | 12 | 13 | 14 | If you want to mention something in [the next newsletter], make sure to leave a comment on the issue. 15 | 16 | [the next newsletter]: https://github.com/rust-lang-nursery/embedded-wg/issues/98 17 | [Embedded WG]: https://github.com/rust-lang-nursery/embedded-wg 18 | 19 | ## Highlights 20 | 21 | * We had a bonus Embedded-WG Newsletter this week about the [path forward] towards stable Embedded Rust, and what you can do as a crate maintainer to help with the effort! 22 | * The Tock-OS project posted about their [MMIO Registers], contrasting them to crates generated by `svd2rust` 23 | * There were a couple of great posts about developing with Rust on Embedded targets from [219 Design] and [nercury] 24 | * If Game Boy Advance development with Rust sounds interesting to you, make sure you check out the [rusty-TONC] and [stdgba] projects 25 | 26 | [path forward]: https://users.rust-lang.org/t/cortex-m-library-development-now-possible-on-beta-and-the-path-towards-stable-embedded-rust/17420 27 | [MMIO Registers]: https://www.tockos.org/blog/2018/mmio-registers/ 28 | 29 | [219 Design]: https://www.219design.com/rust-on-the-stmicro-nucleo/ 30 | [nercury]: https://nercury.github.io/rust/embedded/experiments/2018/04/29/rust-embedded-01-discovery-vl-flipping-bits.html 31 | 32 | [rusty-TONC]: https://github.com/tbelaire/rusty-TONC 33 | [stdgba]: https://github.com/jkarns275/stdgba 34 | 35 | ## Embedded Projects 36 | 37 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to mention it on the tracking issue for [the next newsletter], we would love to show it off! 38 | 39 | * [Kjetil Kjeka] shared their crate [uX] pronounced as "unsigned X" for working with non standard integer types (like `u7`, `u63`, etc) which act like the built in unsigned integer types 40 | * [Adam Greig] shared two crates: 41 | * [stm32-rs], a tool for cleaning up Chip Support Crates for STM32 microcontrollers and making it easier to work between multiple devices 42 | * [blethrs], an ethernet bootloader for STM32F4 chips, using the [smoltcp] networking stack 43 | * [James Waples] released a driver for [ssd1306] based OLED displays, read the [announcement blog] for more info 44 | * [John Scarrott] released a Chip Support Crate for the [nRF52840] chip from Nordic Semiconductor 45 | * [Kerem] posted a new Chip Support Crate for the Nordic Semiconductor nRF51, and joined development of the existing [nrf51-hal] HAL Impl Crate 46 | * [Teo Röijezon] released a combo of a [stm32f0x0] Chip Support Crate, as well as a [stm32f0x0-hal] HAL Impl Crate 47 | * [Rahul Thakoor] shipped a driver crate for [mma7660fc] based 3-axis accelerometers. Check out the [mma7660fc blog] announcement 48 | * [whitequark] shared their [log_buffer] crate for storing UTF-8 text in a ring buffer, and accessing it as `&str`s 49 | * [Michael] shared [proptest], a tool for performing Property Based Testing, which now has no_std support thanks to a PR from [Zack Pierce] 50 | * [theJPster] has been working on [Monotron] - a small 8-bit style home computer with a ROM written in Rust - ready for his talk at [RustFest]. For this, he's been working on crates for [generating VGA video], [decoding PS/2 keyboard scancodes] and [interactive text-based menu systems]. 51 | 52 | [Kjetil Kjeka]: https://github.com/kjetilkjeka 53 | [uX]: https://crates.io/crates/ux 54 | 55 | [Adam Greig]: https://github.com/adamgreig 56 | [stm32-rs]: https://github.com/adamgreig/stm32-rs 57 | [blethrs]: https://github.com/AirborneEngineering/blethrs 58 | [smoltcp]: https://github.com/m-labs/smoltcp 59 | 60 | [James Waples]: https://github.com/jamwaffles 61 | [ssd1306]: https://crates.io/crates/ssd1306 62 | [announcement blog]: https://wapl.es/electronics/rust/2018/04/30/ssd1306-driver.html 63 | 64 | [John Scarrott]: https://github.com/jscarrott 65 | [nRF52840]: https://crates.io/crates/nrf52840 66 | 67 | [Kerem]: https://github.com/krk 68 | [nrf51-hal]: https://crates.io/crates/nrf51-hal 69 | 70 | [Teo Röijezon]: https://github.com/teozkr 71 | [stm32f0x0]: https://crates.io/crates/stm32f0x0 72 | [stm32f0x0-hal]: https://crates.io/crates/stm32f0x0-hal 73 | 74 | [Rahul Thakoor]: https://github.com/rahul-thakoor 75 | [mma7660fc]: https://crates.io/crates/mma7660fc 76 | [mma7660fc blog]: https://rahul-thakoor.github.io/an-i2c-rust-driver-for-mma7660fc-based-3-axis-digital-accelerometer/ 77 | 78 | [whitequark]: https://github.com/whitequark 79 | [log_buffer]: https://github.com/whitequark/rust-log_buffer 80 | 81 | [Michael]: https://github.com/memoryruins 82 | [proptest]: https://github.com/AltSysrq/proptest 83 | [Zack Pierce]: https://github.com/ZackPierce 84 | 85 | [theJPster]: https://github.com/thejpster 86 | [Monotron]: https://github.com/thejpster/monotron 87 | [RustFest]: https://paris.rustfest.eu/ 88 | [generating VGA video]: https://github.com/thejpster/vga-framebuffer-rs 89 | [decoding PS/2 keyboard scancodes]: https://github.com/thejpster/pc-keyboard 90 | [interactive text-based menu systems]: https://github.com/thejpster/menu 91 | 92 | 93 | ### `embedded-hal` Ecosystem Crates 94 | 95 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 96 | 97 | | Type | Status | Count | 98 | | :--- | :----- | :---- | 99 | | [Device Crates] | released | 12 | 100 | | [HAL Impl Crates] | released | 10 | 101 | | [Board Support Crates] | released | 6 | 102 | | [Driver Crates Released] | released | 9 | 103 | | [Driver Crates WIP] | WIP | 29 | 104 | 105 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 106 | [Weekly Driver Initiative]: https://github.com/rust-lang-nursery/embedded-wg/issues/39 107 | [Device Crates]: https://github.com/rust-embedded/awesome-embedded-rust#device-crates 108 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 109 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 110 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 111 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 112 | 113 | ## Help Wanted 114 | 115 | * Make sure to check out the [path forward] post, and report any issues you find! 116 | * Raspberry Fields is a festival of digital making, centered around the Raspberry Pi. It's taking place on Saturday 30 June and Sunday 1 July, in Cambridge, England. [theJPster] would love to set up a Rust stall, to talk to everyone about the advantages Rust offers and how they can get in to Rust on the Raspberry Pi. But to make that work, he needs your help! If you're interested, contact [@therealjpster] on Twitter or email . 117 | * Some members of the embedded WG will attend the [RustFest] impl days in two weeks. If you want to make Rust awesome for embedded development come help us! We have [tasks with mentors and some hardware to give away!][impl-days]. Let us know if you are interested in helping out by commenting on that issue. 118 | 119 | [@therealjpster]: https://twitter.com/therealjpster 120 | [impl-days]: https://github.com/rust-lang-nursery/embedded-wg/issues/90#issuecomment-389321129 121 | -------------------------------------------------------------------------------- /content/2018-05-28-newsletter-6.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 6" 3 | date = 2018-07-01 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | aliases = ["2018-07-01/"] 8 | +++ 9 | 10 | This is the sixth newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 11 | 12 | 13 | 14 | This newsletter covers the past ~6 weeks. 15 | 16 | If you want to mention something in [the next newsletter], make sure to leave a comment on the issue. 17 | 18 | [the next newsletter]: https://github.com/rust-lang-nursery/embedded-wg/issues/103 19 | [Embedded WG]: https://github.com/rust-lang-nursery/embedded-wg 20 | 21 | ## Highlights 22 | 23 | * [Jacob Creedon] gave an introduction talk about using Rust with embedded systems at the [Teardown Conference] in Portland, check out [Jacob's Slides] or the [Video of Jacob's Talk] 24 | * The [Embedded WG]'s own [theJPster] talked about the [Monotron] at [RustFest Paris], you can see [JP's Slides], or check out the [Video of JP's Talk] 25 | * [Jorge Aparicio], [Vadzim Dambrouski] and [Hanno Braun] from the embedded WG also attended RustFest Paris and the following impl days. They worked towards embedded Rust on stable, better embedded Rust tooling and better MSP430 support; gave away some hardware; and chatted with lots of people interested in embedded Rust. 26 | * The `#[panic_implementation]` feature has [landed][panic-impl-pr] and has been proposed for stabilization ([FCP merge][panic-impl-fcp]). This feature lets you define the behavior of `panic!` in `#[no_std]` context and it's the final piece for making embedded Rust development possible on the stable channel. :tada: 27 | * The [Discovery] book has been updated to work with the [preview of stable embedded Rust]. 28 | * A new [`llvm-tools` rustup component] is now available on recent nightly releases. It contains LLVM tools to inspect Rust binaries regardless of their target architecture. One set of tools for ARM Cortex-M, MSP430, x86_64 and other architectures! 29 | 30 | [theJPster]: https://github.com/thejpster 31 | [Monotron]: https://github.com/thejpster/monotron 32 | [RustFest Paris]: https://paris.rustfest.eu/ 33 | [JP's Slides]: http://railwayelectronics.blogspot.co.uk/2018/05/talking-about-monotron-at-rustfest.html 34 | [Video of JP's Talk]: https://media.ccc.de/v/rustfest18-11-monotron_making_a_80s_style_computer_with_a_20_dev_kit 35 | 36 | [Jacob Creedon]: https://github.com/jcreedon 37 | [Jacob's Slides]: http://github.jcreedon.com/static/EmbeddedWithRustSlidesTeardown2018.pdf 38 | [Video of Jacob's Talk]: http://youtu.be/g25xsK3HKkE 39 | [Teardown Conference]: https://www.crowdsupply.com/teardown/portland-2018 40 | 41 | [Jorge Aparicio]: https://github.com/japaric 42 | [Vadzim Dambrouski]: https://github.com/pftbest 43 | [Hanno Braun]: https://github.com/hannobraun 44 | 45 | [panic-impl-pr]: https://github.com/rust-lang/rust/pull/50338 46 | [panic-impl-fcp]: https://github.com/rust-lang/rust/issues/44489#issuecomment-398965878 47 | 48 | [Discovery]: https://github.com/japaric/discovery 49 | [preview of stable embedded Rust]: https://users.rust-lang.org/t/cortex-m-library-development-now-possible-on-beta-and-the-path-towards-stable-embedded-rust/17420 50 | 51 | [`llvm-tools` rustup component]: https://internals.rust-lang.org/t/llvm-tools-a-new-rustup-component-for-binary-inspection-objdump-nm-size-and-profiling-prota/7830 52 | 53 | ## Embedded Projects 54 | 55 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to mention it on the tracking issue for [the next newsletter], we would love to show it off! 56 | 57 | * [rudihorn] shared [light-cli], a lightweight, no_std, and heapless CLI tool 58 | * [Paolo Teti] shared [ti-hercules-bsp], a board support package for Texas Instruments TMS570 MCUs, used by safety critical industries such as automotive and aerospace 59 | * [Marcel Buesing] posted their driver crate for the [bme680] environmental sensor 60 | * [Roy Smeding] is working on support for the [stm32f334] chip from STMicro 61 | * The [Embedded WG]'s own [Jonathan Soo] announced his project, [Bobbin SDK], a set of tools to make it easier to share code between different chips from the same or different vendors 62 | * [Eitan Mosenkis] did [a major update] of their [esp-rs] script which produces a project to compile Rust code for the ESP8266 via the [mrustc] Rust to C compiler. 63 | * [Hanno Braun] released v0.2 of [lpc82x-hal], which includes a radical simplification of the API, allowing for stronger compile-time state guarantees. Check out the [lpc82x-hal announcement] for more info! 64 | 65 | [rudihorn]: https://github.com/rudihorn 66 | [light-cli]: https://github.com/rudihorn/light-cli 67 | 68 | [Paolo Teti]: https://github.com/paoloteti 69 | [ti-hercules-bsp]: https://github.com/paoloteti/ti-hercules-bsp 70 | 71 | [Marcel Buesing]: https://github.com/marcelbuesing 72 | [bme680]: https://github.com/marcelbuesing/bme680 73 | 74 | [Jonathan Soo]: https://github.com/jcsoo 75 | [Bobbin SDK]: http://www.bobbin.io/blog/post/bobbin_sdk_richer_hardware/ 76 | 77 | [Roy Smeding]: https://github.com/roysmeding 78 | [stm32f334]: https://github.com/roysmeding/stm32f334/ 79 | 80 | [Eitan Mosenkis]: https://github.com/emosenkis 81 | [a major update]: https://users.rust-lang.org/t/rust-on-esp8266/12933/8 82 | [esp-rs]: https://github.com/emosenkis/esp-rs 83 | [mrustc]: https://github.com/thepowersgang/mrustc 84 | 85 | [lpc82x-hal]: https://github.com/braun-robotics/rust-lpc82x-hal 86 | [lpc82x-hal announcement]: https://users.rust-lang.org/t/lpc82x-hal-0-2-rust-on-lpc82x-microcontrollers/18144 87 | 88 | ### `embedded-hal` Ecosystem Crates 89 | 90 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 91 | 92 | | Type | Status | Count | 93 | | :--- | :----- | :---- | 94 | | [Device Crates] | released | 14 | 95 | | [HAL Impl Crates] | released | 11 | 96 | | [Board Support Crates] | released | 6 | 97 | | [Driver Crates Released] | released | 9 | 98 | | [Driver Crates WIP] | WIP | 30 | 99 | 100 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 101 | [Weekly Driver Initiative]: https://github.com/rust-lang-nursery/embedded-wg/issues/39 102 | [Device Crates]: https://github.com/rust-embedded/awesome-embedded-rust#device-crates 103 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 104 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 105 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 106 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 107 | 108 | ## Help Wanted 109 | 110 | * We are seeking [input about the user interface] the [`cargo-binutils`] subcommands should expose. These subcommands provide access to the LLVM tools provided by the `llvm-tools` rustup component mentioned above. 111 | * Are you using embedded Rust in production? We are [collecting commercial testimonials] about embedded Rust for the webpage the embedded WG will have on the revamped rust-lang.org website. Even if you can't give details about the product you are building we would still love to hear from you! 112 | 113 | [input about the user interface]: https://github.com/japaric/cargo-binutils/issues 114 | [`cargo-binutils`]: https://github.com/japaric/cargo-binutils 115 | 116 | [collecting commercial testimonials]: https://github.com/rust-lang-nursery/embedded-wg/issues/108 117 | -------------------------------------------------------------------------------- /content/2018-07-15-newsletter-7.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 7" 3 | date = 2018-07-15 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | aliases = ["2018-07-15/"] 8 | +++ 9 | 10 | This is the seventh newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 11 | 12 | 13 | 14 | If you want to mention something in [the next newsletter], make sure to leave a comment on the issue. 15 | 16 | [the next newsletter]: https://github.com/rust-lang-nursery/embedded-wg/issues/121 17 | [Embedded WG]: https://github.com/rust-lang-nursery/embedded-wg 18 | 19 | ## Highlights 20 | 21 | * We have launched the [Embedded WG Twitter]! We'll be publishing things like our newsletter here, so go ahead and follow to stay up to date. If you have something you're working on and want to share, feel free to @ us so we can retweet it! 22 | * Work started on [porting] MUSL's `libm` (for math functions like `sin`, `cos`, etc.) has started, and already has [26 of 32 functions] ported! This crate will hopefully be included in the `core` of Rust, so it can be used by `no_std` targets such as embedded or wasm. 23 | * The Atomic\*.{load,store} API is [now available] for the thumbv6m and msp430 targets. 24 | 25 | [Embedded WG Twitter]: https://twitter.com/rustembedded 26 | [26 of 32 functions]: https://github.com/japaric/libm/issues?q=is%3Aopen+is%3Aissue+milestone%3Awasm 27 | [porting]: https://github.com/japaric/libm 28 | [now available]: https://github.com/rust-lang/rust/pull/51953 29 | 30 | ## Embedded Projects 31 | 32 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to mention it on the tracking issue for [the next newsletter], we would love to show it off! 33 | 34 | * This week we have two Multirotor Flight Controller projects starting in Rust! They are both based on the [stm32f3] family of chips from STMicro. 35 | * [Emil Fresk] posted [on Twitter] about his project [TrustFlight], which is an open source, Rust based software library for controlling the [TrustFlight HW] he designed. 36 | * [Josh Mcguigan] announced in his [Blog Post] that he is planning to develop a firmware package for the [BetaFPV F3], which is an off the shelf flight controller 37 | * We also have two projects aiming to make use of Rust on the Raspberry Pi a little easier: 38 | * [Adam Gausmann] shared his [Rustberry] project [on Reddit], which includes register maps and an I/O library for the Raspberry Pi 39 | * [Rahul Thakoor] shared his [rust_gpiozero] crate [on Medium], which is based on the Python library of similar name. He has also started writing [a series of tutorials] for developers new to working with physical hardware. 40 | 41 | 42 | [stm32f3]: https://github.com/japaric/stm32f30x-hal 43 | [Emil Fresk]: https://github.com/korken89 44 | [on Twitter]: https://twitter.com/korken89/status/1016975023930830848 45 | [TrustFlight]: https://github.com/korken89/trustflight_firmware 46 | [TrustFlight HW]: https://github.com/korken89/trustflight_hardware 47 | [Josh Mcguigan]: https://github.com/JoshMcguigan 48 | [Blog Post]: https://www.joshmcguigan.com/blog/betafpv-drone-flight-controller-hello-rust/ 49 | [BetaFPV F3]: https://betafpv.com/products/beta75-bnf-tiny-whoop-quadcopter 50 | 51 | [Adam Gausmann]: https://gitlab.com/AGausmann 52 | [Rustberry]: https://gitlab.com/AGausmann/rustberry 53 | [on Reddit]: https://www.reddit.com/r/rust/comments/8x1ayd/calling_all_raspberry_pi_owners_rustberry_010_has/ 54 | [Rahul Thakoor]: https://github.com/rahul-thakoor 55 | [rust_gpiozero]: https://github.com/rahul-thakoor/rust_gpiozero 56 | [on Medium]: https://medium.com/@rahulthakoor/physical-computing-with-rust-on-raspberry-pi-a7b6f34261a6 57 | [a series of tutorials]: https://rahul-thakoor.github.io/physical-computing-rust/ 58 | 59 | ### `embedded-hal` Ecosystem Crates 60 | 61 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 62 | 63 | | Type | Status | Count | Diff | 64 | | :--- | :----- | :---- | :--- | 65 | | [Device Crates] | released | 14 | 0 | 66 | | [HAL Impl Crates] | released | 11 | 0 | 67 | | [Board Support Crates] | released | 6 | 0 | 68 | | [Driver Crates Released] | released | 9 | 0 | 69 | | [Driver Crates WIP] | WIP | 30 | 0 | 70 | 71 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 72 | [Weekly Driver Initiative]: https://github.com/rust-lang-nursery/embedded-wg/issues/39 73 | [Device Crates]: https://github.com/rust-embedded/awesome-embedded-rust#device-crates 74 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 75 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 76 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 77 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 78 | 79 | ## Help Wanted 80 | 81 | * Help contribute to development of [Rust's libm] to get math functions built in to `core` for `no_std` targets! 82 | 83 | [Rust's libm]: https://github.com/japaric/libm 84 | -------------------------------------------------------------------------------- /content/2018-07-29-newsletter-8.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 8" 3 | date = 2018-07-29 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | aliases = ["2018-07-29/"] 8 | +++ 9 | 10 | This is the eighth newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 11 | 12 | 13 | 14 | If you want to mention something in [the next newsletter], make sure to leave a comment on the issue. 15 | 16 | [the next newsletter]: https://github.com/rust-lang-nursery/embedded-wg/issues/134 17 | [Embedded WG]: https://github.com/rust-lang-nursery/embedded-wg 18 | 19 | ## Highlights 20 | 21 | * [libm], the `no_std` port of MUSL's math library led by [japaric] has finished its' first release! It can now be used by embedded (or `wasm`!) targets that need support for math functions. 22 | * [droogmic] is working on [microrust], a port of [japaric]'s Discovery book for the BBC MicroBit, based on the Nordic nRF51 23 | * [Hideki Sekine] and [Vaishali Thakkar] have landed initial support for an [Embedded CI Harness] in the [`rust-lang/rust`] repo as part of the [Increasing Rust's Reach] project. This opens the door for tests that will help prevent regressions in `rustc` and `cargo` for ARM Cortex-M targets 24 | * [CMSIS intrinsics] for ARM Cortex processors have landed in [stdsimd]. Check out the [the docs] in nightly soon for info, thanks to [Paolo Teti] and [japaric]! 25 | * [Ashley Williams] released [cargo-generate], a CLI tool for generating Cargo projects from a template, reducing the need to manually write boilerplate code. If you write some embedded templates, [let us know]! 26 | 27 | †: The CMSIS intrinsics will show up in the docs after the next successful nightly build (after 2018-07-30) 28 | 29 | [japaric]: https://github.com/japaric 30 | [libm]: https://github.com/japaric/libm#libm 31 | 32 | [droogmic]: https://github.com/droogmic 33 | [microrust]: https://droogmic.github.io/microrust 34 | 35 | [Embedded CI Harness]: https://github.com/rust-lang/rust/pull/52465 36 | [Increasing Rust's Reach]: http://reach.rust-lang.org/ 37 | [Hideki Sekine]: https://github.com/sekineh 38 | [Vaishali Thakkar]: https://github.com/nerdyvaishali 39 | [`rust-lang/rust`]: https://github.com/rust-lang/rust 40 | 41 | [Ashley Williams]: https://github.com/ashleygwilliams 42 | [cargo-generate]: https://crates.io/crates/cargo-generate 43 | [her tweet]: https://twitter.com/ag_dubs/status/1022191996293865472 44 | [let us know]: https://twitter.com/rustembedded 45 | 46 | [CMSIS intrinsics]: https://github.com/rust-lang-nursery/stdsimd/pull/518 47 | [stdsimd]: https://github.com/rust-lang-nursery/stdsimd 48 | [the docs]: https://doc.rust-lang.org/nightly/core/arch/arm/index.html 49 | [Paolo Teti]: https://github.com/paoloteti 50 | 51 | ## Embedded Projects 52 | 53 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to mention it on the tracking issue for [the next newsletter], we would love to show it off! 54 | 55 | * [David McGillicuddy] has released his crate, [eight-segment], an `embedded-hal` driver for displaying digits on 8 segment displays like the HDSP H-101 56 | * [James Waples] announced the newest release of his [embedded-graphics] library [in a tweet]. This version fixes some small issues, as well as provides functionality to save memory 57 | * [Mart Roosmaa] released [bolos-rs], a 3rd party Rust SDK for the Ledger Nano cryptocurrency wallet. Check out his [Medium post] for more info! 58 | * The [cc1101] crate can now recieve radio packets! Check out [the reddit post] by [Daniel Svensson], as well as [his blog post] for more info 59 | 60 | [cc1101]: https://crates.io/crates/cc1101 61 | [the reddit post]: https://www.reddit.com/r/rust/comments/8zk03w/cc1101_crate_can_now_receive_radio_packets/ 62 | [Daniel Svensson]: https://github.com/dsvensson 63 | [his blog post]: https://dsvensson.github.io/posts/2018-07-13-Electrosmog-trapping-with-CC1101.html#article 64 | 65 | [David McGillicuddy]: https://github.com/djmcgill 66 | [eight-segment]: https://crates.io/crates/eight-segment 67 | 68 | [James Waples]: https://github.com/jamwaffles 69 | [in a tweet]: https://twitter.com/jam_waffles/status/1022837939041132545 70 | [embedded-graphics]: https://crates.io/crates/embedded-graphics 71 | 72 | [Mart Roosmaa]: https://github.com/roosmaa 73 | [Medium post]: https://medium.com/@roosmaa/bringing-rust-to-ledger-hardware-wallet-ccf1356a7de1 74 | [bolos-rs]: https://github.com/roosmaa/bolos-rs 75 | 76 | 77 | ### `embedded-hal` Ecosystem Crates 78 | 79 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 80 | 81 | | Type | Status | Count | Diff | 82 | | :--- | :----- | :---- | :--- | 83 | | [Device Crates] | released | 14 | 0 | 84 | | [HAL Impl Crates] | released | 11 | 0 | 85 | | [Board Support Crates] | released | 8 | +2 | 86 | | [Driver Crates Released] | released | 11 | +2 | 87 | | [Driver Crates WIP] | WIP | 35 | +5 | 88 | | [no-std crates] | released | 12 | +12 | 89 | 90 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 91 | [Weekly Driver Initiative]: https://github.com/rust-lang-nursery/embedded-wg/issues/39 92 | [Device Crates]: https://github.com/rust-embedded/awesome-embedded-rust#device-crates 93 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 94 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 95 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 96 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 97 | [no-std crates]: https://github.com/rust-embedded/awesome-embedded-rust#no-std-crates 98 | 99 | ## Help Wanted 100 | 101 | * The Embedded-WG is looking for someone to write an [RFC for ARM Intrinsics] to get them stabilized 102 | * [Jonathan Pallant] is looking for ideas to implement for the Monotron project. Check out the [monotron blog post] for more details! 103 | * The [libm] project is looking for help with [refactoring] in order to better support chips without hardware double-floating-point support 104 | 105 | [Jonathan Pallant]: https://github.com/thejpster 106 | [RFC for ARM Intrinsics]: https://github.com/rust-lang-nursery/embedded-wg/issues/63#issuecomment-408509178 107 | [monotron blog post]: http://railwayelectronics.blogspot.com/2018/07/where-next-for-monotron.html 108 | [refactoring]: https://github.com/japaric/libm/milestone/3 -------------------------------------------------------------------------------- /content/2018-08-12-newsletter-9.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 9" 3 | date = 2018-08-12 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | aliases = ["2018-08-12/"] 8 | +++ 9 | 10 | This is the ninth newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 11 | 12 | 13 | 14 | If you want to mention something in [the next newsletter], make sure to leave a comment on the issue. 15 | 16 | [the next newsletter]: https://github.com/rust-embedded/wg/issues/164 17 | [Embedded WG]: https://github.com/rust-embedded/wg 18 | 19 | ## Highlights 20 | 21 | * The Embedded Working Group has moved! You can find our new coordination repo at [rust-embedded/wg] on GitHub, and crates maintained by the working group in the [rust-embedded] organization 22 | * The Embedded Working Group has grown! We are now 18 people grouped in the following 6 teams to allow for better focus on these topics: 23 | * The **Cortex-M** team develops and maintains the core of the Cortex-M crate ecosystem 24 | * The **HAL team** develops and maintains crates that ease the development of Hardware Abstraction Layers, Board Support Crates and drivers 25 | * The **MS430 team** develops and maintains the core of the MSP430 crate ecosystem 26 | * The **RISCV team** develops and maintains the core of the RISCV crate ecosystem 27 | * The **Resources team** develops, maintains and curates resources on embedded Rust 28 | * The **Tools team** maintains and develops core embedded tools 29 | 30 | [rust-embedded/wg]: https://github.com/rust-embedded/wg 31 | [rust-embedded]: https://github.com/rust-embedded 32 | 33 | ## Embedded Projects 34 | 35 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to mention it on the tracking issue for [the next newsletter], we would love to show it off! 36 | 37 | * [rust-lang/rust#52787] has landed, adding support in `nightly` for the RISC-V architecture as a bare-metal target! 38 | 39 | [rust-lang/rust#52787]: https://github.com/rust-lang/rust/pull/52787 40 | 41 | ### `embedded-hal` Ecosystem Crates 42 | 43 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 44 | 45 | | Type | Status | Count | Diff | 46 | | :--- | :----- | :---- | :--- | 47 | | [Device Crates] | released | 14 | 0 | 48 | | [HAL Impl Crates] | released | 11 | 0 | 49 | | [Board Support Crates] | released | 9 | +1 | 50 | | [Driver Crates Released] | released | 11 | 0 | 51 | | [Driver Crates WIP] | WIP | 38 | +3 | 52 | | [no-std crates] | released | 12 | 0 | 53 | 54 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 55 | [Weekly Driver Initiative]: https://github.com/rust-lang-nursery/embedded-wg/issues/39 56 | [Device Crates]: https://github.com/rust-embedded/awesome-embedded-rust#device-crates 57 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 58 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 59 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 60 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 61 | [no-std crates]: https://github.com/rust-embedded/awesome-embedded-rust#no-std-crates 62 | 63 | ## Help Wanted 64 | 65 | * We're considering changing to LLD as the default linker for `thumb` targets. Check out the RFC at [rust-embedded/wg#160], and let us know what you think 66 | 67 | [rust-embedded/wg#160]: https://github.com/rust-embedded/wg/issues/160 68 | -------------------------------------------------------------------------------- /content/2018-08-28-newsletter-10.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 10" 3 | date = 2018-08-28 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | This is the tenth newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 10 | 11 | [Embedded WG]: https://github.com/rust-embedded/wg 12 | 13 | Discuss on [internals.rust-lang.org], [on twitter], or [on reddit]! 14 | 15 | [internals.rust-lang.org]: https://internals.rust-lang.org/t/the-10th-embedded-wg-newsletter-and-a-new-blog/8326 16 | [on twitter]: https://twitter.com/rustembedded/status/1034765727423717376 17 | [on reddit]: https://www.reddit.com/r/rust/comments/9b8gry/the_10th_embedded_wg_newsletter_and_a_new_blog/ 18 | 19 | 20 | 21 | If you want to mention something in [the next newsletter], make sure to leave a comment on the issue. 22 | 23 | [the next newsletter]: https://github.com/rust-embedded/blog/issues/6 24 | 25 | ## Highlights 26 | 27 | * We have [a blog]! We'll be posting newsletters, notices for upcoming changes, and embedded related articles there in the upcoming future. Use RSS? It has an [RSS feed]! Check out the [blog on github] to make any corrections or to contribute an article 28 | * Nightly Rust has [switched to `lld`] for Cortex-M targets as a default. See the blog post for how to handle this change 29 | * There have been updates to [`cortex-m`], [`cortex-m-rt`], and [`cortex-m-quickstart`]! Check out the linked changelogs to see what is new. Also, the latest release of each of these no longer require `arm-none-eabi-gcc`! 30 | 31 | [a blog]: https://rust-embedded.github.io/blog/ 32 | [RSS feed]: https://rust-embedded.github.io/blog/rss.xml 33 | [blog on github]: https://github.com/rust-embedded/blog 34 | [switched to `lld`]: https://rust-embedded.github.io/blog/2018-08-2x-psa-cortex-m-breakage/ 35 | [landed upstream]: https://github.com/rust-lang/rust/commit/898950caf1a7bc9b6c41e74bbfac9591724f307c 36 | [`cortex-m`]: https://github.com/rust-embedded/cortex-m/blob/master/CHANGELOG.md#v056---2018-08-27 37 | [`cortex-m-rt`]: https://github.com/rust-embedded/cortex-m-rt/blob/master/CHANGELOG.md#v053---2018-08-27 38 | [`cortex-m-quickstart`]: https://github.com/rust-embedded/cortex-m-quickstart/blob/master/CHANGELOG.md#v034---2018-08-27 39 | 40 | ## Embedded Projects 41 | 42 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to mention it on the tracking issue for [the next newsletter], we would love to show it off! 43 | 44 | * Support for `aarch64-unknown-none` has [landed upstream]! It is now possible to write bare-metal Rust code for 64-bit ARM architectures 45 | 46 | ### `embedded-hal` Ecosystem Crates 47 | 48 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 49 | 50 | | Type | Status | Count | Diff | 51 | | :--- | :----- | :---- | :--- | 52 | | [Device Crates] | released | 14 | 0 | 53 | | [HAL Impl Crates] | released | 12 | +1 | 54 | | [Board Support Crates] | released | 9 | 0 | 55 | | [Driver Crates Released] | released | 11 | 0 | 56 | | [Driver Crates WIP] | WIP | 39 | +1 | 57 | | [no-std crates] | released | 13 | +1 | 58 | 59 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 60 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 61 | [Device Crates]: https://github.com/rust-embedded/awesome-embedded-rust#device-crates 62 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 63 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 64 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 65 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 66 | [no-std crates]: https://github.com/rust-embedded/awesome-embedded-rust#no-std-crates 67 | 68 | ## Help Wanted 69 | 70 | * Take a minute to check out the [wg help wanted issues] as labeled on our issue tracker! 71 | 72 | [wg help wanted issues]: https://github.com/search?q=org%3Arust-embedded+is%3Aissue+is%3Aopen+milestone%3Arc1+label%3A%22help+wanted%22&type=Issues 73 | -------------------------------------------------------------------------------- /content/2018-08-2x-psa-cortex-m-breakage.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "PSA: Cortex-M Breakage (LLD as the default linker)" 3 | date = 2018-08-28 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | The default linker for the 4 ARM Cortex-M targets listed below has changed from 10 | `arm-none-eabi-gcc` to `rust-lld` in the latest nightly. 11 | 12 | - `thumbv6m-none-eabi` 13 | - `thumbv7m-none-eabi` 14 | - `thumbv7em-none-eabi` 15 | - `thumbv7em-none-eabihf` 16 | 17 | This will break the builds of *binaries* and *cdylibs* that were using the 18 | old default linker (`arm-none-eabi-gcc`) *and* additionally pass extra flags to 19 | the linker using any of these rustc flags: `-C link-arg`, `-C link-args`, `-Z 20 | pre-link-arg` or `-Z pre-link-args`. Building libraries (`rlib`s and 21 | `staticlib`s) is not affected by this change. 22 | 23 | 24 | 25 | This change won't affect stable users when it reaches the 1.30 release because, 26 | as of 1.28, it's not possible to build binaries or cdylibs for those targets on 27 | the stable channel. Building libraries for those targets is possible on stable 28 | but it's not affected by this change. 29 | 30 | ### Rationale 31 | 32 | This breaking change was intentional. 33 | 34 | We, the [embedded WG], wanted to reduce the number of external tools required to 35 | build embedded programs for the ARM Cortex-M architecture. By switching the 36 | default linker to the LLD linker that's shipped with the Rust toolchain the user 37 | no longer needs to install an ARM linker (like `arm-none-eabi-gcc` or 38 | `arm-none-eabi-ld`) to build Rust programs. 39 | 40 | [embedded WG]: https://github.com/rust-embedded/wg 41 | 42 | Before landing this change we first [consulted] with the community if they 43 | thought this breaking change was worth it. We received over 20 positive responses 44 | representing the Cortex-M team (part of the embedded WG), the Tock OS project, 45 | the embed-rs organization and independent developers. 46 | 47 | The consensus was that it was worth to make the default configuration more self 48 | contained and that if we were to make the change it had to be made before it 49 | became possible to build binaries on stable otherwise it wouldn't be possible 50 | to make this change without breaking stable builds. 51 | 52 | [consulted]: https://github.com/rust-embedded/wg/issues/160 53 | 54 | ### How to fix your build 55 | 56 | If you are affected by this change you'll observe a linker error with a message 57 | similar to one shown below: 58 | 59 | ``` console 60 | $ # these are the custom linker flags of the project 61 | $ cat .cargo/config 62 | ``` 63 | 64 | ``` toml 65 | [target.thumbv7m-none-eabi] 66 | runner = 'arm-none-eabi-gdb' 67 | rustflags = [ 68 | "-C", "link-arg=-Wl,-Tlink.x", 69 | "-C", "link-arg=-nostartfiles", 70 | ] 71 | 72 | [build] 73 | target = "thumbv7m-none-eabi" 74 | ``` 75 | 76 | ``` 77 | $ cargo build 78 | error: linking with `rust-lld` failed: exit code: 1 79 | | 80 | = note: "rust-lld" "-flavor" "gnu" (..) 81 | = note: rust-lld: error: unknown argument: -Wl,-Tlink.x 82 | rust-lld: error: unknown argument: -nostartfiles 83 | ``` 84 | 85 | There are two ways to fix the problem. 86 | 87 | #### Option A: switch back to GCC 88 | 89 | The easiest way is to switch back to using `arm-none-eabi-gcc` as the linker. To 90 | do so pass the flag `-C linker=arm-none-eabi-gcc` to rustc. In the above example 91 | you can do that in the `.cargo/config` file. 92 | 93 | ``` console 94 | $ # these are the custom linker flags of the project 95 | $ cat .cargo/config 96 | ``` 97 | 98 | ``` toml 99 | [target.thumbv7m-none-eabi] 100 | runner = 'arm-none-eabi-gdb' 101 | rustflags = [ 102 | "-C", "linker=arm-none-eabi-gcc", # ADDED 103 | "-C", "link-arg=-Wl,-Tlink.x", 104 | "-C", "link-arg=-nostartfiles", 105 | ] 106 | 107 | [build] 108 | target = "thumbv7m-none-eabi" 109 | ``` 110 | 111 | ``` 112 | $ cargo build && echo It works now 113 | It works now 114 | ``` 115 | 116 | #### Option B: tweak the additional linker arguments 117 | 118 | The other option is to tweak the additional linker arguments so they'll be 119 | accepted by LLD. In the above example the `-nostartfiles` flag can be dropped 120 | because that's the default behavior of LLD, and the flags prefixed by `-Wl,` 121 | will have to lose their prefix. 122 | 123 | ``` console 124 | $ # these are the custom linker flags of the project 125 | $ cat .cargo/config 126 | ``` 127 | 128 | ``` toml 129 | [target.thumbv7m-none-eabi] 130 | runner = 'arm-none-eabi-gdb' 131 | rustflags = [ 132 | "-C", "link-arg=-Tlink.x", # CHANGED 133 | # "-C", "link-arg=-nostartfiles", # REMOVED 134 | ] 135 | 136 | [build] 137 | target = "thumbv7m-none-eabi" 138 | ``` 139 | 140 | ``` console 141 | $ cargo build && echo It works now 142 | It works now 143 | ``` 144 | 145 | With this approach your build will no longer depend on an external linker. 146 | 147 | #### Should I prefer option A or B? 148 | 149 | If you are linking to a system installed C library like `newlib-arm-none-eabi` 150 | then you should continue to use GCC. The default library search path of 151 | `arm-none-eabi-gcc` includes the path to those libraries. 152 | 153 | If you are not linking to any C code then you should prefer LLD then you won't 154 | need to install the `arm-none-eabi` toolchain. 155 | -------------------------------------------------------------------------------- /content/2018-09-09-newsletter-11.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 11" 3 | date = 2018-09-09 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | This is the eleventh newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 10 | 11 | [Embedded WG]: https://github.com/rust-embedded/wg 12 | 13 | Discuss on [internals.rust-lang.org], [on twitter], or [on reddit]! 14 | 15 | [internals.rust-lang.org]: https://internals.rust-lang.org/t/the-embedded-working-group-newsletter-11/8377 16 | [on twitter]: https://twitter.com/rustembedded/status/1039055481946492928 17 | [on reddit]: https://www.reddit.com/r/rust/comments/9eku70/rust_embedded_working_group_newsletter_11_cortexr/ 18 | 19 | 20 | 21 | If you want to mention something in [the next newsletter], make sure to leave a comment on the issue. 22 | 23 | [the next newsletter]: https://github.com/rust-embedded/blog/issues/12 24 | 25 | ## Highlights 26 | 27 | * `rustc` now supports 4 **Cortex-R** targets thanks to the work of [paoloteti] in the Cortex-R space! You can build programs for these targets using nothing but the Rust toolchain 28 | * [James Munns] gave a talk [at RustConf 2018], covering the basics of embedded systems, and how Rust's Zero Cost Abstractions are a perfect match for bare metal systems 29 | 30 | [paoloteti]: https://github.com/paoloteti 31 | 32 | [at RustConf 2018]: https://www.youtube.com/watch?v=t99L3JHhLc0 33 | [James Munns]: https://github.com/jamesmunns 34 | 35 | ## Embedded Projects 36 | 37 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to mention it on the tracking issue for [the next newsletter], we would love to show it off! 38 | 39 | * Support for the Arduino MKRZERO board [has landed] in the [atsamd21-rs] repository! This is a Board Support Crate for various development board based on the Atmel/Microchip samd21 Cortex-M microcontroller 40 | * [Branan Riley] is working on the [fourth chapter] of his [Exploring Rust on Teensy] series, which will focus on using `futures-rs` to represent DMA transfers 41 | * [Emil Fresk] shared some shots of his next [Visual Inertial PCB], which includes an STM32 running control algorithms written in Rust! 42 | * [Jonathan Pallant] added a bare-metal [four-channel synthesizer] for his Monotron project, and even included a short [demo audio clip]! 43 | 44 | [fourth chapter]: https://twitter.com/branan/status/1038222375790161920 45 | [Exploring Rust on Teensy]: https://branan.github.io/teensy/ 46 | [Branan Riley]: https://github.com/branan 47 | 48 | [Visual Inertial PCB]: https://twitter.com/korken89/status/1038494310830952449 49 | [Emil Fresk]: https://github.com/korken89 50 | 51 | [four-channel synthesizer]: https://twitter.com/therealjpster/status/1036298070022086656 52 | [Jonathan Pallant]: https://github.com/thejpster 53 | [demo audio clip]: https://www.youtube.com/watch?v=NvfyFhFK11g 54 | 55 | [has landed]: https://twitter.com/gonadic_io/status/1035916949287575552 56 | [atsamd21-rs]: https://github.com/wez/atsamd21-rs 57 | 58 | 59 | ### `embedded-hal` Ecosystem Crates 60 | 61 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 62 | 63 | | Type | Status | Count | Diff | 64 | | :--- | :----- | :---- | :--- | 65 | | [Device Crates] | released | 16 | +2 | 66 | | [HAL Impl Crates] | released | 12 | 0 | 67 | | [Board Support Crates] | released | 9 | 0 | 68 | | [Driver Crates Released] | released | 11 | 0 | 69 | | [Driver Crates WIP] | WIP | 41 | +2 | 70 | | [no-std crates] | released | 13 | 0 | 71 | 72 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 73 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 74 | [Device Crates]: https://github.com/rust-embedded/awesome-embedded-rust#device-crates 75 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 76 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 77 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 78 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 79 | [no-std crates]: https://github.com/rust-embedded/awesome-embedded-rust#no-std-crates 80 | 81 | ## Help Wanted 82 | 83 | * Take a minute to check out the [wg help wanted issues] as labeled on our issue tracker! 84 | 85 | [wg help wanted issues]: https://github.com/search?q=org%3Arust-embedded+is%3Aissue+is%3Aopen+milestone%3Arc1+label%3A%22help+wanted%22&type=Issues 86 | -------------------------------------------------------------------------------- /content/2018-09-25-newsletter-12.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 12" 3 | date = 2018-09-25 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | This is the twelfth newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 10 | 11 | [Embedded WG]: https://github.com/rust-embedded/wg 12 | 13 | Discuss on [users.rust-lang.org], [on twitter], or [on reddit]! 14 | 15 | [users.rust-lang.org]: https://users.rust-lang.org/t/the-embedded-working-group-newsletter-12/20749 16 | [on twitter]: https://twitter.com/rustembedded/status/1044930201925439490 17 | [on reddit]: https://www.reddit.com/r/rust/comments/9j2620/the_embedded_working_group_newsletter_12/ 18 | 19 | 20 | 21 | If you want to mention something in [the next newsletter], make sure to leave a comment on the issue. 22 | 23 | [the next newsletter]: https://github.com/rust-embedded/blog/issues/15 24 | 25 | ## Highlights 26 | 27 | * We now have a category for Embedded on the [users.rust-lang.org forum]! This is a great place to ask larger questions, or to share more details about your projects! 28 | * You can now build embedded [binaries on stable] with the `1.30-beta` release of Rust! Check it out and [open an issue] if you run in to any issues with your projects! 29 | 30 | [users.rust-lang.org forum]: https://users.rust-lang.org/c/embedded 31 | 32 | [binaries on stable]: https://twitter.com/japaricious/status/1042440110418153473 33 | [open an issue]: https://github.com/rust-embedded/wg/issues 34 | 35 | ## Embedded Projects 36 | 37 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to mention it on the tracking issue for [the next newsletter], we would love to show it off! 38 | 39 | * [Diego Barrios Romero] has released his [eeprom24x] crate, an `embedded-hal` compatible driver for EEPROM memory chips such as the Microchip/Atmel `AT24C32`, `24AA32A`, `AT24C256`, or STMicroelectronics' `M24C32` 40 | * [Trangar] managed to drive [56 ArtNet Torches] using Rust, based on his [ArtNet Protocol] crate 41 | * The `no_std` synthesizer from the last newsletter has been implemented on-hardware by [Jonathan Pallant], giving the [Monotron] a [PWM audio driver]! 42 | 43 | [Diego Barrios Romero]: https://github.com/eldruin 44 | [eeprom24x]: https://blog.eldruin.com/24x-serial-eeprom-driver-in-rust/ 45 | 46 | [Trangar]: https://github.com/trangar/ 47 | [ArtNet Protocol]: https://github.com/Trangar/artnet_protocol 48 | [56 ArtNet Torches]: https://twitter.com/victorkoenders/status/1042786930335903745 49 | 50 | [Jonathan Pallant]: https://github.com/thejpster 51 | [Monotron]: https://github.com/thejpster/monotron 52 | [PWM audio driver]: https://twitter.com/therealjpster/status/1043942194015555584 53 | 54 | ### `embedded-hal` Ecosystem Crates 55 | 56 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 57 | 58 | | Type | Status | Count | Diff | 59 | | :--- | :----- | :---- | :--- | 60 | | [Device Crates] | released | 16 | 0 | 61 | | [HAL Impl Crates] | released | 12 | 0 | 62 | | [Board Support Crates] | released | 9 | 0 | 63 | | [Driver Crates Released] | released | 12 | +1 | 64 | | [Driver Crates WIP] | WIP | 40 | -1 | 65 | | [no-std crates] | released | 13 | 0 | 66 | 67 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 68 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 69 | [Device Crates]: https://github.com/rust-embedded/awesome-embedded-rust#device-crates 70 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 71 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 72 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 73 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 74 | [no-std crates]: https://github.com/rust-embedded/awesome-embedded-rust#no-std-crates 75 | 76 | ## Help Wanted 77 | 78 | * Interested in implementing a new target for Embedded Rust? Nuvoton has a [development board] for the Cortex-M23. Check out the [thumbv8m tracking issue] if you want to help! 79 | 80 | [development board]: https://direct.nuvoton.com/de/numaker-pfm-m2351 81 | [thumbv8m tracking issue]: https://github.com/rust-embedded/wg/issues/88 -------------------------------------------------------------------------------- /content/2018-10-09-newsletter-13.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 13" 3 | date = 2018-10-09 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | This is the thirteenth newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 10 | 11 | [Embedded WG]: https://github.com/rust-embedded/wg 12 | 13 | Discuss on [users.rust-lang.org], [on twitter], or [on reddit]! 14 | 15 | [users.rust-lang.org]: https://users.rust-lang.org/t/the-embedded-working-group-newsletter-13/21137 16 | [on twitter]: https://twitter.com/rustembedded/status/1049739952601395201 17 | [on reddit]: https://www.reddit.com/r/rust/comments/9ms5jk/embedded_wg_newsletter_13_industrial_io_bluetooth/ 18 | 19 | 20 | 21 | If you want to mention something in [the next newsletter], make sure to leave a comment on the issue. 22 | 23 | [the next newsletter]: https://github.com/rust-embedded/blog/issues/17 24 | 25 | ## Highlights 26 | 27 | * The `min_const_fn` feature [has landed], allowing for stable use of `const fn` functions in an embedded context in the upcoming 1.31 release of Rust! 28 | * [Frank Pagliughi] has kicked off [`rust-industrial-io`], a crate providing an interface to `libiio` on linux, which is used for communication with industrial sensors and actuators 29 | * [gregokent] has started development on [`cortex-r-rt`], a runtime crate for Cortex-R processors 30 | * The HAL Impl crate for the Texas Instruments TM4C123 now [works on 1.30-beta]! **Now is a great time to ensure that your embedded crates will work flawlessly with the 2018 Edition of Rust!** 31 | 32 | [has landed]: https://github.com/rust-lang/rust/pull/54835 33 | 34 | [Frank Pagliughi]: https://github.com/fpagliughi 35 | [`rust-industrial-io`]: https://github.com/fpagliughi/rust-industrial-io 36 | 37 | [gregokent]: https://github.com/gregokent 38 | [`cortex-r-rt`]: https://github.com/gregokent/cortex-r-rt 39 | 40 | [works on 1.30-beta]: https://twitter.com/therealjpster/status/1047872901628792832 41 | 42 | ## Embedded Projects 43 | 44 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to mention it on the tracking issue for [the next newsletter], we would love to show it off! 45 | 46 | * [e-matteson] has released their [`keypad` driver], which can be used with keypad matrix circuits. Check out more [details on reddit] 47 | * [Daniel Gallagher] has recently released two handy Bluetooth crates in an [intro blog] post: 48 | * [`bluenrg`], an embedded-hal crate used to interface with STMicro's series of microcontrollers 49 | * [Bluetooth HCI], a helper crate for interfacing with the Bluetooth Host-Controller interface 50 | 51 | [`keypad` driver]: https://github.com/e-matteson/keypad 52 | [details on reddit]: https://www.reddit.com/r/rust/comments/9j42o9/weekly_driver_keypad_matrix_circuits/ 53 | [e-matteson]: https://github.com/e-matteson 54 | 55 | [Daniel Gallagher]: https://github.com/danielgallagher0 56 | [`bluenrg`]: https://crates.io/crates/bluenrg 57 | [Bluetooth HCI]: https://crates.io/crates/bluetooth-hci 58 | [intro blog]: https://219design.com/bluetooth-low-energy-with-rust/ 59 | 60 | ### `embedded-hal` Ecosystem Crates 61 | 62 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 63 | 64 | | Type | Status | Count | Diff | 65 | | :--- | :----- | :---- | :--- | 66 | | [Device Crates] | released | 16 | 0 | 67 | | [HAL Impl Crates] | released | 13 | +1 | 68 | | [Board Support Crates] | released | 11 | +2 | 69 | | [Driver Crates Released] | released | 15 | +3 | 70 | | [Driver Crates WIP] | WIP | 40 | 0 | 71 | | [no-std crates] | released | 14 | +1 | 72 | 73 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 74 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 75 | [Device Crates]: https://github.com/rust-embedded/awesome-embedded-rust#device-crates 76 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 77 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 78 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 79 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 80 | [no-std crates]: https://github.com/rust-embedded/awesome-embedded-rust#no-std-crates 81 | 82 | ## Help Wanted 83 | 84 | * Interested in implementing a new target for Embedded Rust? Nuvoton has a [development board] for the Cortex-M23. Check out the [thumbv8m tracking issue] if you want to help! 85 | 86 | [development board]: https://direct.nuvoton.com/de/numaker-pfm-m2351 87 | [thumbv8m tracking issue]: https://github.com/rust-embedded/wg/issues/88 88 | -------------------------------------------------------------------------------- /content/2018-11-14-this-year-in-embedded-rust.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "This Year in Embedded Rust" 3 | date = 2018-11-14 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | This year the [Embedded WG] set out to build the solid foundation that the 10 | embedded Rust ecosystem requires to thrive. As we approach the date of the 2018 11 | edition release we reflect on our progress and share our achievements with you 12 | in this post. 13 | 14 | [Embedded WG]: https://github.com/rust-embedded/wg 15 | 16 | Discuss on [users.rust-lang.org], [on twitter], or [on reddit]! 17 | 18 | [users.rust-lang.org]: https://users.rust-lang.org/t/the-embedded-wg-this-year-in-embedded-rust/22263 19 | [on twitter]: https://twitter.com/rustembedded/status/1062664608538918913 20 | [on reddit]: https://www.reddit.com/r/rust/comments/9wz716/the_embedded_wg_this_year_in_embedded_rust/ 21 | 22 | 23 | 24 | ## Embedded Rust on stable 25 | 26 | Stability -- AKA "my crate should not break when moving to a newer toolchain" -- 27 | was the single most requested feature by the embedded community during the 2018 28 | roadmap planning phase. 29 | 30 | Embedded development has been tied to the nightly 31 | channel since its very beginning, and the people that have been doing embedded 32 | development for a while have endured many breaking changes. Thankfully, those 33 | days are over: Rust 1.30 marks the first stable release where you can build 34 | fully working embedded programs without relying on unstable features. 35 | 36 | Furthermore, we now have some [unit][] [tests] that check embedded code in the 37 | compiler test suite so unintentional breakage will be caught before it makes its 38 | way into the nightly channel. 39 | 40 | [unit]: https://github.com/rust-lang/rust/pull/53996 41 | [tests]: https://github.com/rust-lang/rust/pull/53190 42 | 43 | ## A smooth starting point 44 | 45 | "How do I get started with embedded Rust?" has been a common question on IRC for 46 | a long time. It has not been an easy question to answer, though: maintaining 47 | documentation that relies on unstable features for a long period of time has 48 | been an uphill battle so newcomers have often run into outdated docs. 49 | 50 | But now that stable embedded Rust is here we have put together an authoritative 51 | resource for getting started with embedded Rust: [The Embedded Rust Book]. We 52 | have put a lot of effort in making the first experience as frictionless as 53 | possible with the help of [templates] and [tooling]. 54 | 55 | [The Embedded Rust Book]: https://docs.rust-embedded.org/book 56 | [templates]: https://github.com/rust-embedded/cortex-m-quickstart 57 | [tooling]: https://github.com/rust-embedded/cargo-binutils 58 | 59 | The embedded Rust book is not just a getting started guide; it's also meant 60 | to be the document that teaches you how to effectively use the language to write 61 | correct embedded software. We are currently amassing all our hard earned 62 | experience into patterns and tips that we are adding to this book. 63 | 64 | ## Resources for everyone 65 | 66 | The Embedded Rust Book is aimed at people that have some experience with 67 | embedded development, but we recognize that Rust has great potential for 68 | becoming people's first choice for getting their feet wet with embedded 69 | development so we have updated and will continue to work on resources, like [the 70 | Discovery book], that are aimed at that demographic. 71 | 72 | [the Discovery book]: https://docs.rust-embedded.org/discovery 73 | 74 | We also recognize that the target audience for embedded Rust has different 75 | levels of expertise with embedded systems and a varied set of interests 76 | so we are also building advances resources like [the embedonomicon] 77 | and collecting more targeted resources, like crates, in the 78 | [awesome-embedded-rust] list. You can find these and other of our resources in 79 | our [docs webpage][docs]. 80 | 81 | [the embedonomicon]: https://docs.rust-embedded.org/embedonomicon 82 | [awesome-embedded-rust]: https://github.com/rust-embedded/awesome-embedded-rust 83 | [docs]: https://docs.rust-embedded.org 84 | 85 | ## An organized community effort 86 | 87 | All this has been accomplished with the hard work of many volunteers, both [WG 88 | members] and other community members. The WG members, in particular, are 89 | committed to maintaining the [core crates] and [documentation] that the 90 | ecosystem relies on. All these resources have been taken under the umbrella of 91 | the [rust-embedded] organization. 92 | 93 | [WG members]: https://github.com/rust-embedded/wg#organization 94 | [rust-embedded]: https://github.com/rust-embedded 95 | [core crates]: https://github.com/rust-embedded/wg#projects-1 96 | [documentation]: https://github.com/rust-embedded/wg#projects-8 97 | 98 | ## WG teams 99 | 100 | The embedded space is huge: there are several architectures used in 101 | this space, many application areas, and embedded developers work with different 102 | sets of constraints: real-time constraints, memory constraints, energy / power 103 | constraints, etc. 104 | 105 | For this reason we have been creating and growing specialized teams within the 106 | WG by adding members with different areas of expertise. This ensures that we 107 | have different perspectives when making API design decisions in core crates and 108 | when communicating the needs of the embedded community to the other Rust teams. 109 | Having specialized teams also means that the crates developed by the org can be 110 | assigned to the people with the right technical background. 111 | 112 | ## On the upcoming 2018 edition 113 | 114 | In this last sprint towards the 2018 edition we are focusing our efforts in 115 | our [documentation][docs]! 116 | 117 | You can help us by proofreading our docs, reporting errors, giving feedback on 118 | the existing content, requesting new topics and writing about topics that have 119 | not yet been covered. Every little bit of help is greatly appreciated! 120 | 121 | One important note: our documentation makes use of the 2018 edition which 122 | requires you to use the beta channel until 1.31 is released in early December. 123 | We suggest that you use the beta channel until then to get the best experience. 124 | 125 | ## Beyond 2018 126 | 127 | Our work doesn't stop the day Rust 1.31 comes out; the 2018 edition is just the 128 | starting line of embedded Rust. As we continue to learn how to effectively use 129 | Rust for embedded development we'll continue to refine and expand our 130 | documentation as well as the core crates we maintain and develop. 131 | 132 | Also, at this point in time ARM Cortex-M is our most mature target architecture 133 | and the majority of crates on crates.io target this architecture, but we have 134 | laid the groundwork for supporting other targets like bare metal ARM Cortex-A, 135 | ARM Cortex-R, MSP430 and RISCV. We'll continue to work on getting these 136 | targets on parity with the ARM Cortex-M target during the next year. 137 | 138 | Finally, we'd love to hear what **you** would like to see happen in the embedded 139 | space in 2019. We are collecting a ["wishlist"] of things the embedded community 140 | would like to see get done, fixed and / or stabilized in 2019. Need some API in 141 | core to be stabilized? Would like to get some Cargo bug / papercut fixed? Let us 142 | know and we'll look into making it happen! We'll use this data to set out an 143 | embedded Rust roadmap for 2019. 144 | 145 | ["wishlist"]: https://github.com/rust-embedded/wg/issues/256 146 | 147 | Here's to a 2019 with *more* embedded Rust success stories (yes, "more"; wait 148 | for the upcoming revamped rust-lang website ;-)). Happy embedded hacking! 149 | -------------------------------------------------------------------------------- /content/2019-03-06-newsletter-16.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 16" 3 | date = 2019-03-06 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | This is the sixteenth newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 10 | 11 | [Embedded WG]: https://github.com/rust-embedded/wg 12 | 13 | Discuss on [users.rust-lang.org], [on twitter], or [on reddit]! 14 | 15 | [users.rust-lang.org]: https://users.rust-lang.org/t/the-embedded-working-group-newsletter-16/25987 16 | [on twitter]: https://twitter.com/rustembedded/status/1103416332786302977 17 | [on reddit]: https://www.reddit.com/r/rust/comments/ay4js3/embedded_wg_newsletter_16_not_yet_awesome/ 18 | 19 | 20 | 21 | If you want to mention something in [the next newsletter], send us a pull request! 22 | 23 | [the next newsletter]: https://github.com/rust-embedded/blog/edit/master/content/2019-03-20-newsletter-17.md 24 | 25 | ## Highlights 26 | 27 | - Know of something that isn't awesome in embedded Rust yet? Let us know by adding it to the [Not *Yet* Awesome Embedded Rust List][nyaer]! 28 | 29 | [nyaer]: https://github.com/rust-embedded/not-yet-awesome-embedded-rust 30 | 31 | - The Embedded WG continues to receive [submissions] for [the embedded showcase][showcase]. We are looking for cool embedded Rust projects (applications, not libraries or tools) with visuals (pictures or videos) that can serve as examples of what can be done in Rust. 32 | 33 | [submissions]: https://github.com/rust-embedded/showcase#submit-your-project 34 | [showcase]: https://github.com/rust-embedded/showcase 35 | 36 | - [42 Technology](https://www.42technology.com) [announced](https://twitter.com/42Technology/status/1099009843967471617) that they have got Rust running on the new Cortex-M33 powered [Nordic nRF9160 LTE SiP](https://www.nordicsemi.com/Products/Low-power-cellular-IoT/nRF9160). 37 | 38 | - [James Munns](https://twitter.com/bitshiftmask) has posted the [first video](https://www.youtube.com/watch?v=S0VI70nY6Vo) of a [series of streams](https://www.youtube.com/playlist?list=PLX44HkctSkTewrL9frlUz0yeKLKecebT1) developing a home wireless sensor node network. The stream focuses on teaching embedded, Rust, and IoT topics. 39 | 40 | ## Embedded Projects 41 | 42 | - [@hannobraun](https://github.com/hannobraun) published [`dwm1001`](https://crates.io/crates/dwm1001), a board support crate for the Decawave DWM1001 module, which features a Nordic nRF52832 microcontroller and a Decawave DW1000 radio transceiver. 43 | 44 | - The RTFM (Real Time For the Masses) team has released [`cortex-m-rtfm`][rtfm] [v0.4.2][rtfm-changelog]; the most important new feature in this release are reproducible builds. They are also looking for user input on several open [RFCs][rtfm-rfcs]. 45 | 46 | [rtfm]: https://crates.io/crates/cortex-m-rtfm 47 | [rtfm-changelog]: https://github.com/japaric/cortex-m-rtfm/blob/master/CHANGELOG.md#v042---2019-02-27 48 | [rtfm-rfcs]: https://github.com/japaric/cortex-m-rtfm/issues?q=is%3Aissue+is%3Aopen+label%3ARFC 49 | 50 | - [@japaric] has [released][call-stack-twitter] [`cargo-call-stack`][call-stack-crates-io] [v0.1.1]. `cargo-call-stack` is a static, whole program stack analysis tool; this version ships many new improvements: filtering, cleaner graphs, support for programs that use recursion, dynamic dispatch or function pointer calls, plus numerous bug fixes. 51 | 52 | [@japaric]: https://github.com/japaric/ 53 | [call-stack-twitter]: https://mobile.twitter.com/japaricious/status/1102275637606338562 54 | [call-stack-crates-io]: https://crates.io/crates/cargo-call-stack 55 | [v0.1.1]: https://github.com/japaric/cargo-call-stack/blob/master/CHANGELOG.md#v011---2019-03-03 56 | 57 | - [@jamwaffles] has published version v0.4.7 of the [`embedded-graphics`][eg-crates-io] crate. This version ships with BMP support! For more details read [the announcement blog post][eg-blog]. 58 | 59 | [@jamwaffles]: https://github.com/jamwaffles 60 | [eg-crates-io]: https://crates.io/crates/embedded-graphics/0.4.7 61 | [eg-blog]: https://wapl.es/rust/2019/03/04/embedded-graphics-0.4.7-bmp-support.html 62 | 63 | - [@tarcieri] extracted the [`micromath`][micromath-crates-io] crate out of the [`accelerometer`][accelerometer-crates-io] crate. It provides a fast, embedded-friendly arithmetic library (utilizing approximations which trade precision for improved performance and reduced code size), 2D/3D vector types, and statistical analysis functions. 64 | 65 | [@tarcieri]: https://github.com/tarcieri 66 | [micromath-crates-io]: https://crates.io/crates/micromath 67 | [accelerometer-crates-io]: https://crates.io/crates/accelerometer 68 | 69 | - [@shella] created [`pyportal`][pyportal-pr], a board support crate for the [Adafruit PyPortal], which features an ILI9341 LCD touchscreen and ESP32 Wifi controller. 70 | 71 | [@shella]: https://github.com/shella 72 | [pyportal-pr]: https://github.com/atsamd-rs/atsamd/pull/55 73 | [Adafruit PyPortal]: https://www.adafruit.com/product/4116 74 | 75 | If you have an embedded project or blog post you would like to have featured in the next Embedded WG Newsletter, make sure to add it to [the next newsletter], we would love to show it off! 76 | 77 | ## `embedded-hal` Ecosystem Crates 78 | 79 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 80 | 81 | | Type | Status | Count | Diff | 82 | | :--- | :----- | :---- | :--- | 83 | | [Peripheral Access Crates] | released | 19 | +3 | 84 | | [HAL Impl Crates] | released | 18 | +3 | 85 | | [Board Support Crates] | released | 13 | ~ | 86 | | [Driver Crates Released] | released | 20 | +1 | 87 | | [Driver Crates WIP] | WIP | 61 | +2 | 88 | | [no-std crates] | released | 24 | +1 | 89 | 90 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 91 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 92 | [Peripheral Access Crates]: https://github.com/rust-embedded/awesome-embedded-rust#peripheral-access-crates 93 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 94 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 95 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 96 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 97 | [no-std crates]: https://github.com/rust-embedded/awesome-embedded-rust#no-std-crates 98 | -------------------------------------------------------------------------------- /content/2019-03-20-newsletter-17.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 17" 3 | date = 2019-03-22 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | This is the seventeenth newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 10 | 11 | [Embedded WG]: https://github.com/rust-embedded/wg 12 | 13 | Discuss on [users.rust-lang.org], [on twitter], or [on reddit]! 14 | 15 | [users.rust-lang.org]: https://users.rust-lang.org/t/the-embedded-working-group-newsletter-17/26551 16 | [on twitter]: https://twitter.com/rustembedded/status/1109141455510097922 17 | [on reddit]: https://www.reddit.com/r/rust/comments/b47pl7/embedded_wg_newsletter_17_the_embedded_rust/ 18 | 19 | 20 | 21 | If you want to mention something in [the next newsletter], send us a pull request! 22 | 23 | [the next newsletter]: https://github.com/rust-embedded/blog/edit/master/content/2019-04-05.md 24 | 25 | ## Highlights 26 | 27 | - The [embedded showcase] gained its first entry! The [rusty clock] project, an alarm clock that features pressure, temperature and humidity on an e-paper display and 5 programmable alarms. We are still looking for cool embedded projects to serve that can serve as examples of what can be done in Rust. Don't hesitate to [submit] yours! 28 | - [OxidizeConf], the first embedded Rust conference, has announced speakers! Check out [the lineup here]! 29 | - [Antoine van Gelder] wrote about using Peripheral Access Crates to [program interrupts] on the STM32F3 Discovery board 30 | - [James Munns] gave a talk at Rust Berlin about what happens [before `main()`] in embedded Rust projects 31 | 32 | [embedded showcase]: https://rust-embedded.github.io/showcase/ 33 | [rusty clock]: https://github.com/TeXitoi/rusty-clock 34 | [submit]: https://github.com/rust-embedded/showcase#submit-your-project 35 | 36 | [OxidizeConf]: https://oxidizeconf.com 37 | [the lineup here]: https://oxidizeconf.com/schedule/ 38 | 39 | [Antoine van Gelder]: https://twitter.com/antvangelder 40 | [program interrupts]: https://flowdsp.io/blog/stm32f3-01-interrupts/ 41 | 42 | [James Munns]: https://github.com/jamesmunns 43 | [before `main()`]: https://www.youtube.com/watch?v=RIHVoNDxNuk 44 | 45 | ## Embedded Projects 46 | 47 | - [@jjkt](https://github.com/jjkt) is working on [`zmu`](https://github.com/jjkt/zmu), an emulator for microcontroller based systems. Zmu is work in progress but can already emulate substantial parts of Cortex M - based MCUs core architecture features. 48 | 49 | - [@japaric][] [released][call-stack-twitter] [v0.1.2][call-stack-changelog] of [`cargo-call-stack`][call-stack-crates-io], a static stack usage analyzer, and published a [blog post][call-stack-blog-post] with details about its implementation. 50 | 51 | - [Wesley Moore] wrote [a blog post] about getting Rust running on the TI SensorTag, see the [project on sourcehut]! 52 | 53 | - [@tarcieri][] [released][trellis-twitter] a board support crate for the [Adafruit NeoTrellis M4][trellis-info] along with a platform-independent driver for its [adxl343] accelerometer and support for using the accelerometer to detect the [device's orientation][trellis-orientation]. 54 | 55 | [@tarcieri]: https://github.com/tarcieri 56 | [trellis-twitter]: https://twitter.com/bascule/status/1105455019959058433 57 | [trellis-info]: https://github.com/rust-embedded/wg/issues/286 58 | [adxl343]: https://github.com/atsamd-rs/atsamd/pull/47 59 | [trellis-orientation]: https://github.com/atsamd-rs/atsamd/pull/48 60 | 61 | [Wesley Moore]: https://twitter.com/wezm 62 | [a blog post]: https://www.wezm.net/technical/2019/03/sensortag-embedded-rust-coding-retreat/ 63 | [project on sourcehut]: https://git.sr.ht/~wezm/sensortag 64 | 65 | [@japaric]: https://github.com/japaric 66 | [call-stack-twitter]: https://twitter.com/japaricious/status/1105368938018267136 67 | [call-stack-changelog]: https://github.com/japaric/cargo-call-stack/blob/master/CHANGELOG.md#v012---2019-03-12 68 | [call-stack-crates-io]: https://crates.io/crates/cargo-call-stack/0.1.2 69 | [call-stack-blog-post]: https://blog.japaric.io/stack-analysis/ 70 | 71 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to add it to [the next newsletter], we would love to show it off! 72 | 73 | ## `embedded-hal` Ecosystem Crates 74 | 75 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 76 | 77 | 78 | 79 | | Type | Status | Count | Diff | 80 | | :--- | :----- | :---- | :--- | 81 | | [Peripheral Access Crates] | released | 18 | ~ | 82 | | [HAL Impl Crates] | released | 19 | ~ | 83 | | [Board Support Crates] | released | 13 | ~ | 84 | | [Driver Crates Released] | released | 21 | +1 | 85 | | [Driver Crates WIP] | WIP | 63 | +2 | 86 | | [no-std crates] | released | 25 | +1 | 87 | 88 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 89 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 90 | [Peripheral Access Crates]: https://github.com/rust-embedded/awesome-embedded-rust#peripheral-access-crates 91 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 92 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 93 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 94 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 95 | [no-std crates]: https://github.com/rust-embedded/awesome-embedded-rust#no-std-crates 96 | -------------------------------------------------------------------------------- /content/2019-05-07-embedded-rust-in-2019.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "Embedded Rust in 2019" 3 | date = 2019-05-07 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | It's been a busy year for many of the members of the Embedded-WG this year, and we had a chance to catch up at OxidizeConf a few weeks ago. We discussed two main things, Moving off of Mozilla IRC, and our goals for (part of) 2019. 10 | 11 | 12 | 13 | ## Goals for 2019 14 | 15 | In 2018, the Embedded WG pushed hard to get the Cortex-M targets supported as stable targets in the upstream Rust project. Since then, due to work and life responsibilities, a number of us have been particularly busy in 2019. 16 | 17 | At Oxidize, we discussed what our 2019 goals should be. There were suggestions to get some the foundational level crates like `cortex-m`, `cortex-m-rt`, and tools like `svd2rust` to a "1.0 state". However, while there were a number of improvements we could think of, we couldn't draw any clear lines of what it would take for us to be comfortable cutting a 1.0 release of these projects. 18 | 19 | Based on the two points above, we discussed a slightly different plan: **Focusing on building out the ecosystem in 2019**, by building more "fun" stuff, like example projects, cool applications, and extracting and publishing reusable components from these projects to fill in the embedded Rust ecosystem. 20 | 21 | By focusing on building out, instead of trying to perfect what we already have, we hope to find out the things we don't know we are missing, and inspire other members of the community to begin working and building with Embedded Rust. We'll keep this as a focus through the summer (until September or October 2019). This can be thought of as a parallel to the upstream ["Libs Blitz"](https://blog.rust-lang.org/2017/05/05/libz-blitz.html) that the Rust project successfully completed in 2017. 22 | 23 | Our weekly meetings will likely relax a bit, and will generally change focus to quickly discuss any high priority issues, then open up to a more informal "show and tell", where people can discuss the things they have been building and would like to share. We hope you'll all join us to share the wonderful things you build this summer in embedded Rust! 24 | 25 | ## Moving off Mozilla IRC 26 | 27 | At the end of April, Mozilla announced that they would be shutting down `irc.mozilla.org`. The Rust project as a whole will generally be moving on to other platforms such as Discord and Zulip. 28 | 29 | The Embedded Working Group is actually one of the few (if not only) working groups that still primarily rely on IRC. We have a few hundred people who idle in the room, and tend to have fairly active discussions there, including our weekly status meetings. We have discussed moving to other platforms previously, but have been unable to get any sort of consensus on what to move to instead. Those discussions lead to a fruitful evaluation of alternatives and led to a pre-selection of suitable services. 30 | 31 | To move things forward [RFC 0351 Chat Vote](https://github.com/rust-embedded/wg/blob/master/rfcs/0351-chat-vote.md) has been proposed and accepted by the WG which was subsequently implemented by opening [voting issue](https://github.com/rust-embedded/wg/issues/357) to poll the public opinion on this matter. Anyone with a GitHub account is invited to cast vote(s) until **23:59 CEST on Sunday, 2019-06-23**, the detailed rules are explained in the issue and fair discussion is very welcome. 32 | -------------------------------------------------------------------------------- /content/2019-07-02-newsletter-18.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 18" 3 | date = 2019-07-02 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | This is the eighteenth newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 10 | 11 | [Embedded WG]: https://github.com/rust-embedded/wg 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | ## The winner of the Chat Vote: Matrix 28 | 29 | About a month ago, due to Mozilla's plans to discontinue Mozilla IRC, we released [RFC 0351: Chat Vote] and started a [public vote] on which chat platform to use for the Rust Embedded Working Group in the future. 30 | 31 | The winner of that vote was __Matrix__, with 160 votes, followed by IRC with 103 votes and Discord with 74 votes. As Matrix has won by more than 3 votes, it will become the new official chat platform for Rust Embedded! The name of our new channel is [`#rust-embedded:matrix.org`](https://matrix.to/#/#rust-embedded:matrix.org), and you can join it right now using a client like [Riot](https://about.riot.im/). 32 | 33 | We will be trialling the new Matrix channel for the next two weeks, using it as our primary and official communication channel. After the trial period, we will evaluate any issues that came up during it, and decide how to proceed. More details about the organization of the channel can be found in the [operational notes]. 34 | 35 | Since IRC ended in second place, and it's our current platform, we'll also be establishing a bridge between the Matrix channel and IRC during the trial. This way, users have the option to continue using IRC if they so desire. 36 | 37 | To avoid the administrative overhead of having to switch bridged channels later, we will soon bridge directly to the `#rust-embedded` channel on Freenode, *not* to the Mozilla IRC channel. The bridge will be activated once we've worked out the Freenode channel registration. 38 | 39 | While Matrix is a federated protocol, we are not planning on running our own infrastructure for now - instead, we will be using the `matrix.org` IRC bridge, and users are free to register on `matrix.org` or any other homeserver of their choosing. If this turns out to be a problem during the trial period, we may reconsider this decision. 40 | 41 | We're also looking into a static log viewer, that would allow us to publish search-engine-indexable channel logs for public reading, similar to the public logs that we currently have. This may require us to self-host a static log generator such as [matrix-static]. Suggestions for other solutions are welcome! 42 | 43 | [RFC 0351: Chat Vote]: https://github.com/rust-embedded/wg/blob/master/rfcs/0351-chat-vote.md 44 | [public vote]: https://github.com/rust-embedded/wg/issues/357 45 | [operational notes]: https://github.com/rust-embedded/wg/blob/matrix/ops/matrix.md 46 | [matrix-static]: https://github.com/matrix-org/matrix-static 47 | 48 | ## Highlights 49 | 50 | - We've had a bunch of Embedded Rust related events over the past couple of months. EWG member @thejpster was at ACCU 2019 (the Association of C and C++ Users Annual Conference), in Bristol, UK, on 12 April, delivering a talk on Embeddded Rust and the Monotron. Jonathan was then speaking at the Centre for Computing History in Cambridge, UK on 18 April, followed by hosting Oxidize at the end of April! Next up, Monotron is visiting Rust Conf in Portland, USA in late August. Don't forget, if you've been giving or attending Embedded Rust talks, drop us a line for the next newsletter! 51 | 52 | - [The embedded showcase](https://rust-embedded.github.io/showcase/) gained 3 new entries! We are still looking for cool embedded projects to serve that can serve as examples of what can be done in Rust. Don't hesitate to [submit yours](https://github.com/rust-embedded/showcase#submit-your-project)! 53 | 54 | ## Embedded Projects 55 | 56 | - [@laanwj], [@Disasm] and [@burrbull] are working on [Rust support for the Kendryte K210 RISC-V chips](https://github.com/riscv-rust/k210-crates). 57 | 58 | - [@Disasm] and [@almindor] updated [riscv-rust-quickstart]: now you can run Rust on the HiFive1 Rev B board. 59 | 60 | - [@Disasm] released [stm32-usbd]: a fork of [stm32f103xx-usb] adopted for multiple STM32 device families. 61 | 62 | [@almindor]: https://github.com/almindor 63 | [@burrbull]: https://github.com/burrbull 64 | [@Disasm]: https://github.com/Disasm 65 | [@laanwj]: https://github.com/laanwj 66 | [riscv-rust-quickstart]: https://github.com/riscv-rust/riscv-rust-quickstart 67 | [stm32-usbd]: https://crates.io/crates/stm32-usbd 68 | [stm32f103xx-usb]: https://github.com/mvirkkunen/stm32f103xx-usb 69 | 70 | ## `embedded-hal` Ecosystem Crates 71 | 72 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 73 | 74 | 75 | 76 | | Type | Status | Count | Diff | 77 | | :--- | :----- | :---- | :--- | 78 | | [Peripheral Access Crates] | released | 22 | +4 | 79 | | [HAL Impl Crates] | released | 25 | +6 | 80 | | [Board Support Crates] | released | 18 | +5 | 81 | | [Driver Crates Released] | released | 25 | +4 | 82 | | [Driver Crates WIP] | WIP | 67 | +4 | 83 | | [no-std crates] | released | 26 | +1 | 84 | 85 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 86 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 87 | [Peripheral Access Crates]: https://github.com/rust-embedded/awesome-embedded-rust#peripheral-access-crates 88 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 89 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 90 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 91 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 92 | [no-std crates]: https://github.com/rust-embedded/awesome-embedded-rust#no-std-crates 93 | -------------------------------------------------------------------------------- /content/2019-10-03-newsletter-19.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 19" 3 | date = 2019-10-03 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | This is the 19th newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 10 | 11 | [Embedded WG]: https://github.com/rust-embedded/wg 12 | 13 | Discuss on [users.rust-lang.org], [on twitter], or [on reddit]! 14 | 15 | [users.rust-lang.org]: https://users.rust-lang.org/t/the-embedded-working-group-newsletter-19/33253 16 | [on twitter]: https://twitter.com/rustembedded/status/1179902902116241410 17 | [on reddit]: https://www.reddit.com/r/rust/comments/dcz96x/the_embedded_working_group_newsletter_19/ 18 | 19 | 20 | 21 | If you want to mention something in [the next newsletter], send us a pull request! 22 | 23 | [the next newsletter]: https://github.com/rust-embedded/blog/edit/master/content/2019-10-31-newsletter-20.md 24 | 25 | ## Embedded Projects 26 | 27 | - Google is working on a [Coreboot](https://www.coreboot.org/) replacement called [Oreboot](https://github.com/oreboot/oreboot), i.e. Coreboot minus the 'C'. Slides for a talk [about oreboot](https://osfc.io/uploads/talk/paper/23/Oreboot.pdf) are also available. 28 | 29 | - [@eldruin] released a platform-agnostic [driver for the VEML6075][veml6075-driver] UVA and UVB light sensor (so you can optimize your suntan) and published a [blog post][veml6075-blog-post] with some pictures of the device in action. 30 | 31 | - [@therealprof] wrote a [blog post][digital::v2 blog post] about porting an [Embedded HAL][embedded-hal] impl of the digital::v1 traits for GPIOs to digital::v2. 32 | 33 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to add it to [the next newsletter], we would love to show it off! 34 | 35 | [@eldruin]: https://github.com/eldruin 36 | [veml6075-driver]: https://crates.io/crates/veml6075 37 | [veml6075-blog-post]: https://blog.eldruin.com/veml6075-uva-uvb-uv-index-light-sensor-driver-in-rust/ 38 | [@therealprof]: https://github.com/therealprof 39 | [embedded-hal]: https://github.com/rust-embedded/embedded-hal/ 40 | [digital::v2 blog post]: https://therealprof.github.io/blog/digital-v1-to-digital-v2/ 41 | 42 | ## `embedded-hal` Ecosystem Crates 43 | 44 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 45 | 46 | 47 | | Type | Status | Count | Diff | 48 | | :--- | :----- | :---- | :--- | 49 | | [Peripheral Access Crates] | released | 30 | +8 | 50 | | [HAL Impl Crates] | released | 26 | +1 | 51 | | [Board Support Crates] | released | 19 | +1 | 52 | | [Driver Crates Released] | released | 27 | +2 | 53 | | [Driver Crates WIP] | WIP | 68 | +1 | 54 | | [no-std crates] | released | 28 | +2 | 55 | 56 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 57 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 58 | [Peripheral Access Crates]: https://github.com/rust-embedded/awesome-embedded-rust#peripheral-access-crates 59 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 60 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 61 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 62 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 63 | [no-std crates]: https://github.com/rust-embedded/awesome-embedded-rust#no-std-crates 64 | -------------------------------------------------------------------------------- /content/2019-11-05-newsletter-20.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 20" 3 | date = 2019-11-05 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | This is the 20th newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 10 | 11 | [Embedded WG]: https://github.com/rust-embedded/wg 12 | 13 | Discuss on [users.rust-lang.org], [on twitter], or [on reddit]! 14 | 15 | [users.rust-lang.org]: https://users.rust-lang.org/t/the-embedded-working-group-newsletter-20/34341 16 | [on twitter]: https://twitter.com/rustembedded/status/1191816369798561793 17 | [on reddit]: https://www.reddit.com/r/rust/comments/ds55s6/the_20th_embedded_rust_working_group_newsletter/ 18 | 19 | 20 | 21 | If you want to mention something in [the next newsletter], send us a pull request! 22 | 23 | [the next newsletter]: https://github.com/rust-embedded/blog/edit/master/content/2019-11-28-newsletter-21.md 24 | 25 | ## Embedded Projects 26 | 27 | 28 | * [Jens Reimann] has assembled a [docker image] for developing Rust on the ESP8266 and ESP32 series of devices, including stable `alloc` support! 29 | 30 | [Jens Reimann]: https://github.com/ctron/ 31 | [docker image]: https://github.com/ctron/rust-esp-container/ 32 | 33 | * [Lucas Brendel] working on peripheral access crates as well as a shared embedded HAL for the Infineon XMC4 series of microcontrollers in the [xmc-rs organization]. Peripheral access crates are available and the HAL is in the very early stages of development. 34 | 35 | [Lucas Brendel]: http://github.com/lucasbrendel/ 36 | [xmc-rs organization]: https://github.com/xmc-rs/ 37 | 38 | * [42 Technology] have published the source code for their Nordic [nRF9160 demonstration application], along with a Rust crate which wraps up Nordic's proprietary C driver library. They also have a piece comparing Embedded Rust and Embedded C published in the German language magazine [IOT Design] this month. 39 | 40 | [42 Technology]: https://www.42technology.com 41 | [nRF9160 demonstration application]: https://github.com/42-technology-ltd 42 | [IOT Design]: https://www.iot-design.de/allgemein/robuste-entwicklung-mit-rust/ 43 | 44 | * [theJPster]'s [Monotron] got a write-up in [Hackaday]. Moves are also afoot for a next-generation Monotron - codename [Neotron 1000] - complete with a book! Check it out if you're interested developing a modern-day version of CP/M, written in Rust. 45 | 46 | [theJPster]: https://github.com/thejpster 47 | [Monotron]: https://github.com/thejpster/monotron 48 | [Hackaday]: https://hackaday.com/2019/10/05/the-monotron-a-rusty-retrocomputer/ 49 | [Neotron 1000]: https://github.com/Neotron-Compute/Neotron-Book/blob/master/src/SUMMARY.md 50 | 51 | * [probe-rs] finally has released on crates.io. The library enables you to inspect, debug and flash ARM cores. Flash the ARM core your future embedded Rust project with [cargo-flash], fully integrated into cargo. Flashing works for the **nRF51822, nRF52832, nRF52840, STMF042 and STMF429xI** using a **DAPLink** or an **ST-Link**. 52 | The upcomming 0.3.0 release will also enable your to flash any ARM core (provided an an ARM CMSIS-Pack exists in a known registry). 53 | 54 | [probe-rs]: https://github.com/probe-rs/probe-rs 55 | [cargo-flash]: https://github.com/probe-rs/probe-rs/tree/master/cargo-flash 56 | 57 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to add it to [the next newsletter], we would love to show it off! 58 | 59 | ## `embedded-hal` Ecosystem Crates 60 | 61 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 62 | 63 | 64 | 65 | | Type | Status | Count | Diff | 66 | | :--- | :----- | :---- | :--- | 67 | | [Peripheral Access Crates] | released | 31 | +1 | 68 | | [HAL Impl Crates] | released | 28 | +2 | 69 | | [Board Support Crates] | released | 19 | 0 | 70 | | [Driver Crates Released] | released | 28 | +1 | 71 | | [Driver Crates WIP] | WIP | 70 | +2 | 72 | | [no-std crates] | released | 28 | 0 | 73 | | [no-std crates WIP] | WIP | 3 | +3 | 74 | 75 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 76 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 77 | [Peripheral Access Crates]: https://github.com/rust-embedded/awesome-embedded-rust#peripheral-access-crates 78 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 79 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 80 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 81 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 82 | [no-std crates]: https://github.com/rust-embedded/awesome-embedded-rust#no-std-crates 83 | [no-std crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip-1 84 | -------------------------------------------------------------------------------- /content/2019-11-28-newsletter-21.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 21" 3 | date = 2019-11-30 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | This is the 21st newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 10 | 11 | [Embedded WG]: https://github.com/rust-embedded/wg 12 | 13 | 14 | Discuss on [#rust-embedded:matrix.org], [users.rust-lang.org], [on twitter], or [on reddit]! 15 | 16 | [#rust-embedded:matrix.org]: https://matrix.to/#/#rust-embedded:matrix.org 17 | [users.rust-lang.org]: https://users.rust-lang.org/t/the-embedded-working-group-newsletter-21/35191 18 | [on twitter]: https://twitter.com/rustembedded/status/1200762672117166081 19 | [on reddit]: https://www.reddit.com/r/rust/comments/e3w3bz/the_21st_embedded_working_group_newsletter/ 20 | 21 | 22 | 23 | If you want to mention something in [the next newsletter], send us a pull request! 24 | 25 | [the next newsletter]: https://github.com/rust-embedded/blog/edit/master/content/2019-12-26-newsletter-22.md 26 | 27 | ## Highlights 28 | 29 | - Don't forget to join our [Community Chat on Matrix], with more than 250 Embedded Rustaceans! 30 | - [@andre-richter] added two new tutorials for the `Operating System development tutorials in Rust on the Raspberry Pi` series: 31 | - Tutorial 11: [Virtual Memory](https://github.com/rust-embedded/rust-raspi3-OS-tutorials/tree/master/11_virtual_memory) 32 | - Tutorial 12: [CPU Exceptions: Part 1](https://github.com/rust-embedded/rust-raspi3-OS-tutorials/tree/master/12_cpu_exceptions_part1) 33 | - [@jamesmunns] streamed some work on developing interrupt and panic code [on youtube] 34 | 35 | [Community Chat on Matrix]: https://matrix.to/#/#rust-embedded:matrix.org 36 | [@andre-richter]: https://github.com/andre-richter 37 | [@jamesmunns]: https://github.com/jamesmunns 38 | [on youtube]: https://www.youtube.com/watch?v=KT6VnwuouPY 39 | 40 | ## Embedded Projects 41 | 42 | - [@eldruin] released a platform-agnostic [driver for the OPT300x][opt300x-driver] family of ambient light sensors and published a [blog post][opt300x-blog-post] with a picture of the device taking lux measurements. 43 | - @mciantyre published a custom runtime and peripheral access crates to support development on the Teensy 4. Check out [the repo][teensy4-rs] to see how it works, discuss the approach, and try it out. 44 | - [@japaric] released version v0.1.0 of [`ufmt`], a smaller (6-40x) and faster (2-9x) alternative to `core::fmt` that's free of dynamic dispatch, recursion (where possible) and panicking branches. `ufmt` is *not* a drop-in replacement for `core::fmt` but it provides `uDebug` and `uDisplay` traits and a family of `uwrite!` macros. In this release the `uwrite!` macros, and the rest of the crate, work on the stable channel. 45 | - [@jamesmunns] released two embedded crates: 46 | - [`panic-persist`]: A panic handler crate inspired by `panic-ramdump` that logs panic messages to a region of RAM defined by the user, allowing for discovery of panic messages post-mortem using normal program control flow. 47 | - [`cmim`], or Cortex-M Interrupt Move: A crate for Cortex-M devices to move data to interrupt context, without needing a critical section to access the data within an interrupt, and to remove the need for the "mutex dance" 48 | - [@tarcieri] released [`aead`] v0.2, providing generic traits for Authenticated Encryption with Associated Data (AEAD) ciphers, which now supports [ergonomic `alloc`-free operation][aead-heapless] via an integration with the [`heapless`] crate. This trait is now implemented by [several crates providing pure Rust implementations of AEAD modes][aead-crates] which may be interesting to embedded users seeking to encrypt/data data in `heapless` buffers, including the [`chacha20poly1305`] and [`aes-siv`] crates (and forthcoming support in the [`aes-ccm`] crate). 49 | 50 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to add it to [the next newsletter], we would love to show it off! 51 | 52 | [@eldruin]: https://github.com/eldruin 53 | [opt300x-driver]: https://crates.io/crates/opt300x 54 | [opt300x-blog-post]: https://blog.eldruin.com/opt300x-ambient-light-sensor-driver-in-rust/ 55 | [teensy4-rs]: https://github.com/mciantyre/teensy4-rs 56 | [@japaric]: https://github.com/japaric 57 | [`ufmt`]: https://crates.io/crates/ufmt/0.1.0 58 | [@tarcieri]: https://github.com/tarcieri 59 | [`aead`]: https://docs.rs/aead 60 | [`heapless`]: https://docs.rs/heapless 61 | [aead-heapless]: https://docs.rs/chacha20poly1305/0.3.0/chacha20poly1305/#in-place-usage-eliminates-alloc-requirement 62 | [`panic-persist`]: https://crates.io/crates/panic-persist 63 | [`cmim`]: https://crates.io/crates/cmim 64 | [aead-crates]: https://github.com/rustcrypto/aeads#crates 65 | [`chacha20poly1305`]: https://docs.rs/chacha20poly1305/ 66 | [`aes-siv`]: https://docs.rs/aes-siv/ 67 | [`aes-ccm`]: https://github.com/martindisch/aes-ccm/issues/2 68 | 69 | ## `embedded-hal` Ecosystem Crates 70 | 71 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 72 | 73 | | Type | Status | Count | Diff | 74 | | :--- | :----- | :---- | :--- | 75 | | [Peripheral Access Crates] | released | 32 | +1 | 76 | | [HAL Impl Crates] | released | 29 | +1 | 77 | | [Board Support Crates] | released | 19 | 0 | 78 | | [Driver Crates Released] | released | 30 | +1 | 79 | | [Driver Crates WIP] | WIP | 69 | -1 | 80 | | [no-std crates] | released | 30 | +2 | 81 | | [no-std crates WIP] | WIP | 3 | 0 | 82 | 83 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 84 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 85 | [Peripheral Access Crates]: https://github.com/rust-embedded/awesome-embedded-rust#peripheral-access-crates 86 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 87 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 88 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 89 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 90 | [no-std crates]: https://github.com/rust-embedded/awesome-embedded-rust#no-std-crates 91 | [no-std crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip-1 92 | -------------------------------------------------------------------------------- /content/2020-02-01-newsletter-23.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 23" 3 | date = 2020-02-01 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | This is the 23rd newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 10 | 11 | [Embedded WG]: https://github.com/rust-embedded/wg 12 | 13 | Discuss on [#rust-embedded:matrix.org], [users.rust-lang.org], [on twitter], or [on reddit]! 14 | 15 | [#rust-embedded:matrix.org]: https://matrix.to/#/#rust-embedded:matrix.org 16 | [users.rust-lang.org]: https://users.rust-lang.org/t/the-embedded-working-group-newsletter-23/37708 17 | [on twitter]: https://twitter.com/rustembedded/status/1223606976527114240 18 | [on reddit]: https://www.reddit.com/r/rust/comments/ex6ike/the_23rd_embedded_working_group_newsletter/ 19 | 20 | 21 | 22 | If you want to mention something in [the next newsletter], send us a pull request! 23 | 24 | [the next newsletter]: https://github.com/rust-embedded/blog/edit/master/content/2020-02-29-newsletter-24.md 25 | 26 | ## Highlights 27 | 28 | - [@lupyuen] has been doing very cool things with Rust and the PineTime smart watch - see [Porting druid Rust Widgets to PineTime Smart Watch] and [Optimising PineTime’s Display Driver with Rust and Mynewt]. 29 | - [The Raspberry Pi OS dev tutorial] got a new chapter on Kernel Unit, Integration and Console tests using QEMU 30 | - Google announced [OpenSK], an open source security key based on [TockOS] in Embedded Rust 31 | - [Ferrous Systems] announced the second iteration of [Oxidize], an embedded Rust conference in Berlin Germany, will take place in July of 2020. Read the [Announcement Blog Post] for more details 32 | - [PLCnext] shared a [Sample Rust Runtime] and a how-to guide for running deterministic real-time Rust 33 | on an industrial Linux device 34 | 35 | ## Embedded Projects 36 | 37 | - [@almindor] released a platform-agnostic [driver for the MAX7219][max7219-driver] segmented display and published a [blog post][max7219-blog-post] including a picture of an example setup. 38 | - [embedded-hal-mock] has released 0.7.1 on crates.io with [support for error expectations]. This means that you can now unit test the error handling logic of your embedded-hal driver crates. 39 | - [@rubberduck203][@rubberduck203] added VS Code configurations to the [cortex-m-quickstart][cortex-m-quickstart] and published a [blog post][vscode-blog]. Debugging Cortex-M projects in editor with VS Code now works out of the box. 40 | - [@rubberduck203][@rubberduck203] released a [quickstart template for the STM32F3DISCOVERY board][stm32f3-quickstart] with pre-configured linker script & build targets. 41 | - [@jkristell] released version 0.6 of the [Infrared][infrared] crate and published a [blog post][infrared-blog] on how to add remote control support to an embedded Rust project. 42 | - Steven Walter gave a talk at [Rust Belt Rust][rust-belt-rust] about [introducing Rust into an existing embedded Linux project][introducing-rust-into-legacy]. 43 | - [@arosspope] released an implementation of [the game snake for the stm32f3 discovery board] using RTFM. 44 | - Rust firmware for [Stabilizer] has been released. [Stabilizer][stabilizer-wiki] is an open hardware, high speed, multi channel, STM32H743 based feedback controller for Quantum Physics applications. The firmware features [RTFM v0.5] and [smoltcp]. Support for several analog front end mezzanines like current stabilization or Pound-Drever-Hall locks is being developed. 45 | - [@42technology] announced they have ported Cloudflare's Rust-language [QUIC] library (known as '[quiche]') to the Nordic nRF9160, producing possibly the world's first QUIC demonstration on that platform. 46 | - [atsamd-hal] 0.8.2 released, which includes work by [@twitchyliquid64] and [@jacobrosenthal] implementing USB support for SAMD21 and SAMD51 devices. 47 | - [@Disasm] released [longan-nano] and [seedstudio-gd32v] board support crates with examples for the corresponding RISC-V boards. 48 | 49 | 50 | 51 | [@42technology]: https://twitter.com/42technology 52 | [@almindor]: https://github.com/almindor 53 | [@arosspope]: https://github.com/arosspope 54 | [@Disasm]: https://github.com/Disasm 55 | [@jacobrosenthal]: https://github.com/jacobrosenthal 56 | [@jkristell]: https://github.com/jkristell 57 | [@lupyuen]: https://github.com/lupyuen 58 | [@rubberduck203]: https://twitter.com/Rubberduck203 59 | [@twitchyliquid64]: https://github.com/twitchyliquid64 60 | [Ferrous Systems]: https://ferrous-systems.com 61 | [PLCnext]: https://github.com/PLCnext/ 62 | 63 | [Announcement Blog Post]: https://ferrous-systems.com/blog/oxidize-2020/ 64 | [atsamd-hal]: https://github.com/atsamd-rs/atsamd 65 | [cortex-m-quickstart]: https://github.com/rust-embedded/cortex-m-quickstart 66 | [embedded-hal-mock]: https://github.com/dbrgn/embedded-hal-mock/ 67 | [infrared-blog]: https://jott.se/blog/infrared 68 | [infrared]: https://github.com/jkristell/infrared 69 | [introducing-rust-into-legacy]: https://www.youtube.com/watch?v=EoV94cg_Tug 70 | [longan-nano]: https://github.com/riscv-rust/longan-nano/ 71 | [max7219-blog-post]: https://blog.katona.me/2019/12/22/MAX7219-segmented-display-driver-in-Rust/ 72 | [max7219-driver]: https://crates.io/crates/max7219 73 | [OpenSK]: https://security.googleblog.com/2020/01/say-hello-to-opensk-fully-open-source.html 74 | [Optimising PineTime’s Display Driver with Rust and Mynewt]: https://medium.com/@ly.lee/optimising-pinetimes-display-driver-with-rust-and-mynewt-3ba269ea2f5c 75 | [Oxidize]: https://oxidizeconf.com 76 | [Porting druid Rust Widgets to PineTime Smart Watch]: https://medium.com/@ly.lee/porting-druid-rust-widgets-to-pinetime-smart-watch-7e1d5a5d977a 77 | [QUIC]: https://en.wikipedia.org/wiki/QUIC 78 | [quiche]: https://github.com/cloudflare/quiche 79 | [RTFM v0.5]: https://github.com/rtfm-rs/cortex-m-rtfm 80 | [rust-belt-rust]: http://www.rust-belt-rust.com/ 81 | [Sample Rust Runtime]: https://github.com/PLCnext/rust-sample-runtime 82 | [seedstudio-gd32v]: https://github.com/riscv-rust/seedstudio-gd32v 83 | [smoltcp]: https://github.com/m-labs/smoltcp 84 | [stabilizer-wiki]: https://github.com/sinara-hw/Stabilizer/wiki 85 | [Stabilizer]: https://github.com/quartiq/stabilizer 86 | [stm32f3-quickstart]: https://github.com/rubberduck203/stm32f3-discovery-quickstart 87 | [support for error expectations]: https://docs.rs/embedded-hal-mock/0.7.1/embedded_hal_mock/i2c/index.html#testing-error-handling 88 | [the game snake for the stm32f3 discovery board]: https://github.com/arosspope/usnake 89 | [The Raspberry Pi OS dev tutorial]: https://github.com/rust-embedded/rust-raspi3-OS-tutorials/tree/master/13_integrated_testing 90 | [TockOS]: https://www.tockos.org/ 91 | [vscode-blog]: https://christopherjmcclellan.wordpress.com/2019/12/31/debugging-rust-cortex-m-with-vs-code-take-2/ 92 | 93 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to add it to [the next newsletter], we would love to show it off! 94 | 95 | ## `embedded-hal` Ecosystem Crates 96 | 97 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 98 | 99 | | Type | Status | Count | Diff | 100 | | :--- | :----- | :---- | :--- | 101 | | [Peripheral Access Crates] | released | 42 | +3 | 102 | | [HAL Impl Crates] | released | 32 | +1 | 103 | | [Board Support Crates] | released | 21 | +2 | 104 | | [Driver Crates Released] | released | 36 | +3 | 105 | | [Driver Crates WIP] | WIP | 71 | +4 | 106 | | [no-std crates] | released | 34 | +2 | 107 | | [no-std crates WIP] | WIP | 3 | 0 | 108 | 109 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 110 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 111 | [Peripheral Access Crates]: https://github.com/rust-embedded/awesome-embedded-rust#peripheral-access-crates 112 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 113 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 114 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 115 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 116 | [no-std crates]: https://github.com/rust-embedded/awesome-embedded-rust#no-std-crates 117 | [no-std crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip-1 118 | -------------------------------------------------------------------------------- /content/2020-08-17-newsletter-24.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 24" 3 | date = 2020-08-17 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | This is the 24th newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 10 | 11 | We've been on an unscheduled hiatus for the past six months or so, but it's time for us to return! Today we're doing a quick fast-forward of all of the great things that have been released while we've been on break. 12 | 13 | For the next few weeks, we'll be doing a special "catch-up" schedule, meaning we'll be releasing articles weekly until we've caught up with all of the recent changes. Once we've wrapped that up, we'll go back to a regular monthly cadence. 14 | 15 | We've also added a few new folks to the [resources team](https://github.com/rust-embedded/wg#the-resources-team) say hello to [@hargoniX](https://github.com/hargonix/), [@eldruin](https://github.com/eldruin) and [@kalkyl](https://github.com/kalkyl) who will be helping out with the newsletter! 16 | 17 | Want to have your project mentioned? Make sure you [let us know][the next newsletter] so we can include it! 18 | 19 | [Embedded WG]: https://github.com/rust-embedded/wg 20 | 21 | Discuss on [#rust-embedded:matrix.org], [users.rust-lang.org], [on twitter], or [on reddit]! 22 | 23 | [#rust-embedded:matrix.org]: https://matrix.to/#/#rust-embedded:matrix.org 24 | [users.rust-lang.org]: https://users.rust-lang.org/t/the-embedded-working-group-newsletter-24/47405 25 | [on twitter]: https://twitter.com/rustembedded/status/1295330780688809986 26 | [on reddit]: https://www.reddit.com/r/rust/comments/ibcvnz/the_embedded_working_group_newsletter_24/ 27 | 28 | 29 | 30 | If you want to mention something in [the next newsletter], send us a pull request! 31 | 32 | [the next newsletter]: https://github.com/rust-embedded/blog/edit/master/content/2020-08-24-newsletter-25.md 33 | 34 | ## The Great Catch-Up! 35 | 36 | Here's a whirlwind overview of some of the things that have been released and changed over the past six months or so! 37 | We'll cover some of these updates in more detail over the coming weeks! 38 | 39 | ### Renames 40 | 41 | * The RTFM framework has been renamed to RTIC - Real Time Interrupt-driven Concurrency! 42 | 43 | ### Resources 44 | 45 | * We've added [phil's OS blog](https://os.phil-opp.com/) to our list of resources 46 | * [@hargoniX](https://github.com/hargonix) has added a blog post on [embedded driver writing](https://hboeving.dev/blog/rust-2c-driver-p1/) 47 | 48 | ### Tooling 49 | 50 | * the [probe-rs organization](https://probe.rs) has added a lot of wonderful new tooling, including [cargo-flash](https://crates.io/crates/cargo-flash) and [cargo-embed](https://crates.io/crates/cargo-embed) 51 | * [cargo-hf2](https://crates.io/crates/cargo-hf2) for "A small cargo subcommand to download cargo builds to Microsoft UF2 bootloaders via HID USB" 52 | * The [Knurling-rs](https://github.com/knurling-rs/meta) project for embedded tooling has kicked off by releasing [probe-run](https://github.com/knurling-rs/probe-run) 53 | 54 | ### Bindings 55 | 56 | * [FreeRTOS-rust](https://crates.io/crates/freertos-rust) as RTOS bindings (not to be confused with [FreeRTOS.rs](https://crates.io/crates/freertos_rs) ) 57 | 58 | ### New Possibilities 59 | 60 | * It is [now possible](https://ferrous-systems.com/blog/stable-async-on-embedded/) to run [async/await on embedded](https://blog.rust-lang.org/2020/06/04/Rust-1.44.0.html)! 61 | * Applications can now be compiled for [AVR in mainline Rust nightly builds](https://github.com/rust-lang/rust/issues/44052#issuecomment-663394401)! 62 | 63 | ### PACs 64 | 65 | * [msp430fr2355 PAC](https://crates.io/crates/msp430fr2355) has been added 66 | * [ambiq-apollo1-pac](https://crates.io/crates/ambiq-apollo1-pac), [ambiq-apollo2-pac](https://crates.io/crates/ambiq-apollo2-pac) and [ambiq-apollo3p-pac](https://crates.io/crates/ambiq-apollo3p-pac) have been added 67 | 68 | ### HALs 69 | 70 | * [msp430fr2x5x-hal](https://crates.io/crates/msp430fr2x5x-hal) has been added 71 | 72 | ### BSPs 73 | 74 | * a [BSP for the onebitsy](https://crates.io/crates/onebitsy) 75 | * Several Adafruit BSPs: 76 | * [metro_m0](https://crates.io/crates/metro_m0) 77 | * [pygamer](https://crates.io/crates/pygamer) 78 | * [feather-f405](https://crates.io/crates/feather-f405) 79 | * [feather_m0](https://crates.io/crates/feather_m0) 80 | * [feather_m4](https://crates.io/crates/feather_m4) 81 | * [circuit_playground_express](https://crates.io/crates/circuit_playground_express) 82 | * [edgebadge](https://crates.io/crates/edgebadge) 83 | * [gemma_m0](https://crates.io/crates/gemma_m0) 84 | * [itsybitsy_m0](https://crates.io/crates/itsybitsy_m0) 85 | * [itsybitsy_m4](https://crates.io/crates/itsybitsy_m4) 86 | * [trinket_m0](https://crates.io/crates/trinket_m0) 87 | * Several arduino BSPs: 88 | * [arduino_mkrvidor4000](https://crates.io/crates/arduino_mkrvidor4000) 89 | * [arduino_mkrzero](https://crates.io/crates/arduino_mkrzero) 90 | * [arduino_nano33iot](https://crates.io/crates/arduino_nano33iot) 91 | * The [samd21_mini BSP](https://crates.io/crates/samd21_mini) 92 | * The [xiao_m0 BSP](https://crates.io/crates/xiao_m0) 93 | 94 | ### General abstraction crates 95 | 96 | * The [atat crate](https://github.com/BlackbirdHQ/atat) for parsing AT commands 97 | 98 | ### Drivers 99 | 100 | * [ADXL313](https://crates.io/crates/adxl313) 101 | * [AnyLeaf](https://crates.io/crates/anyleaf) 102 | * [dht-sensor](https://crates.io/crates/dht-sensor) 103 | * [MAX6955](https://crates.io/crates/max6955) 104 | * [MCP25LCXX](https://crates.io/crates/microchip-eeprom-25lcxx) 105 | * [TC72](https://crates.io/crates/microchip-tc72r-rs) 106 | * [ST7789](http://crates.io/crates/st7789) 107 | * [DW1000](https://crates.io/crates/dw1000) 108 | * [Adafruit-7segment](https://crates.io/crates/adafruit-7segment) 109 | 110 | ### WIP Drivers 111 | 112 | * [BMI160](https://crates.io/crates/bmi160) 113 | * [epd-waveshare](https://crates.io/crates/epd-waveshare) 114 | * [HRS3300](https://crates.io/crates/hrs3300) 115 | * [HDC20xx](https://crates.io/crates/hdc20xx) 116 | * [ISL29125](https://crates.io/crates/isl29125) 117 | * [LSM9DS1](https://crates.io/crates/lsm9ds1) 118 | * [ltr-559](https://crates.io/crates/ltr-559) 119 | * [lvgl](https://github.com/rafaelcaricio/lvgl-rs) 120 | * [MAX170xx](https://github.com/eldruin/max170xx-rs) 121 | * [MAX3010x](https://crates.io/crates/max3010x) 122 | * [MCP4725](https://crates.io/crates/mcp4725) 123 | * [MLX9061x](https://crates.io/crates/mlx9061x) 124 | * [ublox-cellular-rs](https://github.com/BlackbirdHQ/ublox-cellular-rs) 125 | 126 | ### no_std crates 127 | 128 | * [debouncr](https://crates.io/crates/debouncr) 129 | * [embedded-crc-macros](https://crates.io/crates/embedded-crc-macros) 130 | * [embedded-websocket](https://crates.io/crates/embedded-websocket) 131 | * [endian_codec](https://crates.io/crates/endian_codec) 132 | * [gdbstub](https://crates.io/crates/gdbstub) 133 | * [microfft](https://crates.io/crates/microfft) 134 | * [smbus-pec](https://crates.io/crates/smbus-pec) 135 | 136 | 137 | ## `embedded-hal` Ecosystem Crates 138 | 139 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 140 | 141 | | Type | Status | Count | Diff | 142 | | :--- | :----- | :---- | :--- | 143 | | [Peripheral Access Crates] | released | 46 | +4 | 144 | | [HAL Impl Crates] | released | 33 | +1 | 145 | | [Board Support Crates] | released | 38 | +17 | 146 | | [Driver Crates Released] | released | 45 | +9 | 147 | | [Driver Crates WIP] | WIP | 84 | +13 | 148 | | [no-std crates] | released | 41 | +7 | 149 | | [no-std crates WIP] | WIP | 3 | +0 | 150 | 151 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 152 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 153 | [Peripheral Access Crates]: https://github.com/rust-embedded/awesome-embedded-rust#peripheral-access-crates 154 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 155 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 156 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 157 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 158 | [no-std crates]: https://github.com/rust-embedded/awesome-embedded-rust#no-std-crates 159 | [no-std crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip-1 160 | -------------------------------------------------------------------------------- /content/2020-08-24-newsletter-25.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 25" 3 | date = 2020-08-24 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | This is the 25th newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 10 | 11 | As a note, some of these stories have happened over the past months. We're still working on catching up, but wanted to share them with you! 12 | 13 | [Embedded WG]: https://github.com/rust-embedded/wg 14 | 15 | Discuss on [#rust-embedded:matrix.org], [users.rust-lang.org], [on twitter], or [on reddit]! 16 | 17 | [#rust-embedded:matrix.org]: https://matrix.to/#/#rust-embedded:matrix.org 18 | [users.rust-lang.org]: https://users.rust-lang.org/t/the-embedded-working-group-newsletter-25/47744 19 | [on twitter]: https://twitter.com/rustembedded/status/1298004492475150338 20 | [on reddit]: https://www.reddit.com/r/rust/comments/ifxv2h/the_embedded_working_group_newsletter_25/ 21 | 22 | 23 | 24 | If you want to mention something in [the next newsletter], send us a pull request! 25 | 26 | [the next newsletter]: https://github.com/rust-embedded/blog/edit/master/content/2020-08-31-newsletter-26.md 27 | 28 | ## Highlights 29 | 30 | - [@hannobraun][@braun-embedded] wrote an [article about his DW1000 driver][dw1000]. 31 | - [@andre-richter] added a new tutorial to the [Operating System development tutorials in Rust on the Raspberry Pi] series: 32 | - [Tutorial 14: Exceptions Part 2: Peripheral IRQs] - Including drivers for the BCM and GICv2 interrupt controllers. 33 | - In recent nightlies,`rust-std` support for the two `bare-metal` `aarch64` targets [has landed][aarch64-rust-std]. 34 | - Add them using `rustup target add aarch64-unknown-none-softfloat` or `rustup target add aarch64-unknown-none`. 35 | - [See it in action here][os-dev-rust-std] for building a kernel without the need for third-party tools like `xbuild` or `xargo`. 36 | - [@therealprof][@therealprof] wrote an [introduction article about the "USB-C pill"][USB-C pill]. 37 | - [@bobmcwhirter][@bobmcwhirter] wrote an article about using an [ESP8266 as a WiFi offload with an STM32F401RE][wifi-offload] 38 | - [Ferrous Systems] released [defmt], a highly efficient Rust logging framework for embedded devices 39 | 40 | ## Embedded Projects 41 | 42 | - [@rubberduck203][@rubberduck203] released the experimental [switch-hal crate][switch-hal], which provides a zero-cost abstraction over Active High/Active Low GPIO, allowing application developers to more clearly express their intent and for drivers to avoid making runtime decisions about driving a line high or low based on the pin's active level. 43 | - [@rubberduck203][@rubberduck203] has also released the [stm32f3-discovery board support crate][stm32f3-discovery] as an alternative to the unmaintained `f3` crate. 44 | - The [stm32f3-discovery-quickstart][stm32f3-discovery-quickstart] template has been updated to utilize both the [stm32f3-discovery board support crate][stm32f3-discovery] and the [switch-hal crate][switch-hal]. It also now includes VS Code tasks for cleaning, building examples, and building in release mode. 45 | - [@proman21][@proman21] has released a beta version of [samd-timer][samd-timer], an abstraction for the Timer peripherals present on Atmel SAM microcontrollers. This library provides lower-level control over these timers than [atsamd-hal][atsamd-hal], while remaining compatible with the HAL clock system. 46 | - [@dbrgn][@dbrgn] and [@rnestler][@rnestler] released a first version of the [shtcx](https://docs.rs/shtcx/) embedded-hal driver for Sensirion SHTCx series humidity/temperature sensors. The driver is feature-complete, but currently supports only a blocking API. The crate will be updated with an alternative non-blocking API soon. 47 | - [@ra-kete][@ra-kete] released the [microfft crate][microfft], a library for computing fast fourier transforms on embedded devices. 48 | - [@dajamante][@dajamante] added an [obstacle avoiding robot](https://github.com/Dajamante/avr-car) with more [details in this article](https://github.com/Dajamante/avr-car/blob/master/article.md). 49 | - [@therealprof][@therealprof] released the [display-interface crate][display-interface], an abstraction over the different possibilities to drive a display. 50 | - [@bugadani][@bugadani] released the [embedded-text crate][embedded-text], a text rendering library built on top of [embedded-graphics][embedded-graphics]. 51 | - [@bobmcwhirter][@bobmcwhirter] released the [drogue-esp8266][drogue-esp8266], a WiFi-offload embedded-nal implementation crate. 52 | 53 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to add it to [the next newsletter], we would love to show it off! 54 | 55 | [@rubberduck203]: https://twitter.com/Rubberduck203 56 | [@proman21]: https://github.com/proman21 57 | [@dbrgn]: https://github.com/dbrgn 58 | [@rnestler]: https://github.com/rnestler 59 | [@ra-kete]: https://github.com/ra-kete 60 | [@braun-embedded]: http://github.com/braun-embedded 61 | [@andre-richter]: https://github.com/andre-richter 62 | [@dajamante]:https://github.com/dajamante 63 | [@therealprof]:https://github.com/therealprof 64 | [@bugadani]: https://github.com/bugadani 65 | [@bobmcwhirter]: https://github.com/bobmcwhirter 66 | [Ferrous Systems]: https://ferrous-systems.com 67 | 68 | [switch-hal]: https://crates.io/crates/switch-hal 69 | [stm32f3-discovery]: https://crates.io/crates/stm32f3-discovery 70 | [stm32f3-discovery-quickstart]: https://github.com/rubberduck203/stm32f3-discovery-quickstart/ 71 | [samd-timer]: https://github.com/proman21/samd-timer/ 72 | [atsamd-hal]: https://github.com/atsamd-rs/atsamd/ 73 | [microfft]: https://crates.io/crates/microfft 74 | [dw1000]: https://braun-embedded.com/dw1000/ 75 | [Operating System development tutorials in Rust on the Raspberry Pi]: https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials 76 | [Tutorial 14: Exceptions Part 2: Peripheral IRQs]: https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials/tree/master/14_exceptions_part2_peripheral_IRQs 77 | [aarch64-rust-std]: https://github.com/rust-lang/rust/pull/68334 78 | [os-dev-rust-std]: https://github.com/rust-embedded/rust-raspberrypi-OS-tutorials/commit/c4f9432e131f6aa6dd58b9ba795d67ec3bfd3c7f 79 | [display-interface]: https://crates.io/crates/display-interface 80 | [embedded-graphics]: https://github.com/jamwaffles/embedded-graphics 81 | [embedded-text]: https://github.com/bugadani/embedded-text 82 | [USB-C pill]: https://therealprof.github.io/blog/usb-c-pill-part1/ 83 | [wifi-offload]: https://blog.drogue.io/wifi-offload/ 84 | [drogue-esp8266]: https://crates.io/crates/drogue-esp8266 85 | [defmt]: https://ferrous-systems.com/blog/defmt/ 86 | 87 | ## `embedded-hal` Ecosystem Crates 88 | 89 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. Here is a current snapshot of what is available there: 90 | 91 | | Type | Status | Count | Diff | 92 | | :--- | :----- | :---- | :--- | 93 | | [Peripheral Access Crates] | released | 47 | +1 | 94 | | [HAL Impl Crates] | released | 33 | 0 | 95 | | [Board Support Crates] | released | 38 | 0 | 96 | | [Driver Crates Released] | released | 52 | +7 | 97 | | [Driver Crates WIP] | WIP | 85 | +1 | 98 | | [no-std crates] | released | 41 | 0 | 99 | | [no-std crates WIP] | WIP | 3 | 0 | 100 | 101 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 102 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 103 | [Peripheral Access Crates]: https://github.com/rust-embedded/awesome-embedded-rust#peripheral-access-crates 104 | [HAL Impl Crates]: https://github.com/rust-embedded/awesome-embedded-rust#hal-implementation-crates 105 | [Board Support Crates]: https://github.com/rust-embedded/awesome-embedded-rust#board-support-crates 106 | [Driver Crates Released]: https://github.com/rust-embedded/awesome-embedded-rust#driver-crates 107 | [Driver Crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip 108 | [no-std crates]: https://github.com/rust-embedded/awesome-embedded-rust#no-std-crates 109 | [no-std crates WIP]: https://github.com/rust-embedded/awesome-embedded-rust#wip-1 110 | -------------------------------------------------------------------------------- /content/2021-02-16-newsletter-26.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 26" 3 | date = 2021-02-16 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | ## Highlights 10 | 11 | - [@cecton] wrote a blog post targeted to experienced developers but embedded development beginners: [Rust, Arduino and Embedded Development as a Beginner: Part 1] 12 | 13 | - [@brainstorm] and [@joshajohnson] Created a RTIC example for an HID mouse with a blackberry trackball [bbtrackball-rs]. 14 | 15 | - The [knurling-rs] tooling initiative by [Ferrous Systems] has grown: after [`defmt`], the project has publicly released three new tools: 16 | * [`flip-link`], a linker wrapper that adds zero-cost stack overflow protection to your project 17 | * [`probe-run`], a Cargo runner that seamlessly runs embedded programs on your target device as if they were native ones 18 | * [`defmt-test`], a proc-macro to write and run unit tests on embedded devices 19 | 20 | - The Rust Embedded Working Group's MSRV (Minimum Supported Rust Version) 21 | policy has been updated and now only requires that crates build on the 22 | latest stable Rust release. See [msrv] for more details. 23 | 24 | 25 | 26 | ## Embedded Projects 27 | 28 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to add it to [the next newsletter], we would love to show it off! 29 | 30 | - [@eldruin] released a platform-agnostic [driver for the CCS811][ccs811-driver] indoor air quality sensor and published a [blog post][ccs811-blog-post] including example setups. 31 | - [@diondokter] released a first version of [device-driver] which can aid driver developers in developing device drivers. For now only register interfaces are supported as is laid out in [this twitter thread][device-driver-thread]. 32 | - [@dbrgn] released version 0.2 of the [debouncr] crate. It now supports stateful debouncing, meaning that the user can now choose whether every bouncing→stable transition should be detected as an edge, or only high↔︎low transitions. 33 | 34 | 35 | 36 | [@cecton]: https://twitter.com/CecileTonglet 37 | [@brainstorm]: https://twitter.com/braincode 38 | [@joshajohnson]: https://twitter.com/_joshajohnson 39 | [Rust, Arduino and Embedded Development as a Beginner: Part 1]: https://blog.cecton.com/posts/rust-and-arduino-part1/ 40 | [bbtrackball-rs]: https://github.com/brainstorm/bbtrackball-rs 41 | 42 | [Ferrous Systems]: https://ferrous-systems.com 43 | [knurling-rs]: https://github.com/knurling-rs/meta 44 | [`defmt`]: https://ferrous-systems.com/blog/defmt/ 45 | [`flip-link`]: https://github.com/knurling-rs/flip-link 46 | [`probe-run`]: https://github.com/knurling-rs/probe-run 47 | [`defmt-test`]: https://github.com/knurling-rs/defmt-test 48 | 49 | [@eldruin]: https://github.com/eldruin 50 | [ccs811-driver]: https://crates.io/crates/embedded-ccs811 51 | [ccs811-blog-post]: https://blog.eldruin.com/ccs811-indoor-air-quality-sensor-driver-in-rust/ 52 | 53 | [@diondokter]: https://github.com/diondokter 54 | [device-driver]: https://crates.io/crates/device-driver 55 | [device-driver-thread]: https://twitter.com/Geoxion/status/1303849776665026561 56 | 57 | [@dbrgn]: https://twitter.com/dbrgn/ 58 | 59 | [msrv]: https://github.com/rust-embedded/wg/pull/523 60 | 61 | [debouncr]: https://docs.rs/debouncr/ 62 | 63 | ## Get Involved 64 | 65 | This is the 26th newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 66 | 67 | [Embedded WG]: https://github.com/rust-embedded/wg 68 | 69 | Discuss on [#rust-embedded:matrix.org]! 70 | 71 | [#rust-embedded:matrix.org]: https://matrix.to/#/#rust-embedded:matrix.org 72 | 73 | If you want to mention something in [the next newsletter], send us a pull request! 74 | 75 | [the next newsletter]: https://github.com/rust-embedded/blog/edit/master/content/2021-03-16-newsletter-27.md 76 | -------------------------------------------------------------------------------- /content/2021-03-16-newsletter-27.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 27" 3 | date = 2021-03-16 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | ## Highlights 10 | 11 | - [@hannobraun](https://github.com/hannobraun) published [Last Month in Flott - March 2021](https://flott-motion.org/news/last-month-in-flott-march-2021/), the monthly newsletter for Flott. Flott is an open source toolkit for motion control software in Rust (designed to run everywhere, including microcontrollers). 12 | 13 | - The [cortex-m crate](https://github.com/rust-embedded/cortex-m) has been 14 | updated to 0.7, including a recent release of 0.7.2, please update your 15 | dependencies and let us know if you encounter any issues! 16 | 17 | - The Embedded Rust documentation and books have moved URLs, and are now all 18 | available from https://docs.rust-embedded.org. 19 | 20 | - This blog has also moved URLs, and is now available at 21 | https://blog.rust-embedded.org 22 | 23 | - Our weekly meetings continue at 8PM Berlin Time on our Matrix channel, 24 | [#rust-embedded:matrix.org]. Join us to catch up on the latest developments 25 | in the Embedded Rust ecosystem! 26 | 27 | [#rust-embedded:matrix.org]: https://matrix.to/#/#rust-embedded:matrix.org 28 | 29 | 30 | 31 | ## Embedded Projects 32 | 33 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to add it to [the next newsletter], we would love to show it off! 34 | 35 | - [@hannobraun](https://github.com/hannobraun) released [RampMaker 0.2](https://flott-motion.org/news/ramp-maker-0-2/), a library for generating stepper motor acceleration profiles, and [Stepper 0.5](https://flott-motion.org/news/stepper-0-5/), the universal stepper motor interface. Both libraries are part of the [Flott](https://flott-motion.org/) motion control toolkit. 36 | - [embassy](https://github.com/embassy-rs/embassy), an async/await executor 37 | designed for embedded usage and currently supporting nRF and STM32F4 devices, 38 | is nearing its first crates.io release. Feedback and testing would be welcome! 39 | 40 | ## `embedded-hal` Ecosystem Crates 41 | 42 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. 43 | 44 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 45 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 46 | 47 | ## Get Involved 48 | 49 | This is the 27th newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 50 | 51 | [Embedded WG]: https://github.com/rust-embedded/wg 52 | 53 | 54 | 55 | 56 | 57 | 58 | 59 | 60 | 61 | 62 | If you want to mention something in [the next newsletter], send us a pull request! 63 | 64 | 65 | 66 | [the next newsletter]: https://github.com/rust-embedded/blog/edit/master/content/2021-04-16-newsletter-28.md 67 | -------------------------------------------------------------------------------- /content/2021-04-20-newsletter-28.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 28" 3 | date = 2021-04-20 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | ## Highlights 10 | 11 | - [Last Month in Flott](https://flott-motion.org/news/last-month-in-flott-april-2021/), the monthly newsletter for Flott has been published. Flott is an open source toolkit for motion control software in Rust (designed to run everywhere, including microcontrollers). 12 | 13 | 14 | 15 | ## Embedded Projects 16 | 17 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to add it to [the next newsletter], we would love to show it off! 18 | 19 | - Crate [device-driver] has released version 0.2.0! 20 | (Since 0.1.0, added customizable bit ordering and more pac-like write and modify interface) 21 | - After almost a year [stm32f4xx-hal] has released version 0.9.0! Get it while it's hot. 🔥🌶️ 22 | - [embedded-graphics 0.7.0-beta.1 released] as the first stable step towards the long awaited 0.7.0! 23 | There should be no major/breaking changes after this release as we work mostly on documentation, bugfixes and polish. See the release notes [here](https://github.com/embedded-graphics/embedded-graphics/releases/tag/embedded-graphics-v0.7.0-beta.1). 24 | - [svd2rust 0.18.0] was released, bringing a number of changes to PAC 25 | generation; if you maintain a PAC please try it out! 26 | - [shared-bus 0.2.1] was released, with support for concurrency frameworks like RTIC. Check the [relevant documentation](https://docs.rs/shared-bus/latest/shared_bus/type.BusManagerAtomicCheck.html) for more details. 27 | 28 | 29 | [device-driver]: https://crates.io/crates/device-driver 30 | [stm32f4xx-hal]: https://crates.io/crates/stm32f4xx-hal 31 | [embedded-foo 1.0.0 released]: https://example.com/blog/... 32 | [embedded-graphics 0.7.0-beta.1 released]: https://crates.io/crates/embedded-graphics/0.7.0-beta.1 33 | [svd2rust 0.18.0]: https://crates.io/crates/svd2rust 34 | [shared-bus 0.2.1]: https://crates.io/crates/shared-bus 35 | 36 | ## `embedded-hal` Ecosystem Crates 37 | 38 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. 39 | 40 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 41 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 42 | 43 | ## Get Involved 44 | 45 | This is the 28th newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 46 | 47 | [Embedded WG]: https://github.com/rust-embedded/wg 48 | 49 | Discuss on [#rust-embedded:matrix.org]! 50 | 51 | [#rust-embedded:matrix.org]: https://matrix.to/#/#rust-embedded:matrix.org 52 | 53 | If you want to mention something in [the next newsletter], send us a pull request! 54 | 55 | 56 | 57 | [the next newsletter]: https://github.com/rust-embedded/blog/edit/master/content/2021-05-07-newsletter-29.md 58 | -------------------------------------------------------------------------------- /content/2021-07-27-newsletter-29.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 29" 3 | date = 2021-07-27 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | ## Highlights 10 | 11 | - [Last Month in Flott](https://flott-motion.org/news/last-month-in-flott-may-2021/), the monthly newsletter for Flott has been published. Flott is an open source toolkit for motion control software in Rust (designed to run everywhere, including microcontrollers). 12 | 13 | - The [microbit crate](https://crates.io/crates/microbit) has released v0.9.0, moved under the [nrf-rs](https://github.com/nrf-rs/microbit) organisational umbrella, **and** gained [micro:bit v2](https://github.com/nrf-rs/microbit/pull/44) support. 🎉 14 | - The [switch-hal crate](https://crates.io/crates/switch-hal) released v0.4.0, adding [StatefulOutputSwitch](https://docs.rs/switch-hal/0.4.0/switch_hal/trait.StatefulOutputSwitch.html) for platforms that support `StatefulOutputPin`. 15 | - The [probe-rs](https://probe.rs) project, which provides debugging and flash programming for a variety of embedded targets, released version [v0.11.0](https://probe.rs/blog/release-0-11-0/), with a number of performance and functionality improvements. 16 | - [cortex-m](https://crates.io/crates/cortex-m) released version 0.7.3, improving ease-of-use for the `Delay` implementation and fixing native builds on non-x86 hosts. 17 | - [cortex-m-rt](https://crates.io/crates/cortex-m-rt) released version 0.6.15, backporting various fixes to the linker script and helping prepare for a new 0.7 release soon. 18 | - [cross](https://github.com/rust-embedded/cross) has posted a [call for help](https://github.com/rust-embedded/cross/issues/574) looking for new maintainers: if you use cross and would like to help out, please check it out! 19 | 20 | 21 | 22 | ## Embedded Projects 23 | 24 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to add it to [the next newsletter], we would love to show it off! 25 | 26 | - [Windfisch] published their [Midikraken], an extensible up-to-16-port MIDI-USB-Interface that also will support standalone operation (e.g. MIDI routing) soon. The project uses Rust's RTIC framework to drive a STM32F103 microcontroller board (a.k.a. "Blue Pill") and is open-source and open-hardware. The firmware is in active development and lots of cool new features are down the way! Kits for self-assembly will likely be sold some day in the future. 27 | 28 | [Windfisch]: https://windfis.ch 29 | [MidiKraken]: https://github.com/Windfisch/midikraken 30 | 31 | ## `embedded-hal` Ecosystem Crates 32 | 33 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. 34 | 35 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 36 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 37 | 38 | This is the 29th newsletter of the [Embedded WG] where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 39 | 40 | [Embedded WG]: https://github.com/rust-embedded/wg 41 | 42 | ## Get Involved 43 | 44 | If you want to mention something in [the next newsletter], send us a pull request! 45 | 46 | [the next newsletter]: https://github.com/rust-embedded/blog/edit/master/content/2021-08-24-newsletter-30.md 47 | -------------------------------------------------------------------------------- /content/2021-11-16-newsletter-30.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 30" 3 | date = 2021-11-16 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | 10 | 11 | ## Highlights 12 | 13 | - [@dkhayes117] joined the embedded working group's RISC-V team 14 | - Rust std support [added for the ESP32](https://github.com/rust-lang/rust/pull/87666) 15 | - [Rust on Espressif chips update](https://mabez.dev/blog/posts/esp-rust-18-10-2021/) 16 | - [State of LoRaWAN support](https://blog.drogue.io/lorawan-update/) 17 | 18 | 19 | 20 | ## Embedded Projects 21 | 22 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to add it to [the next newsletter], we would love to show it off! 23 | 24 | - [cortex-m-rt] v0.7.0 was released, with a number of bug fixes. 25 | - [embedded-hal] 0.2.6 released with some backports from the upcoming 1.0 26 | release: the new Transactional SPI and I2C interface, 10-bit I2C addressing 27 | mode, `set_state` method for `OutputPin`, and new `IoPin` trait. 28 | - [embedded-hal] 1.0.0-alpha.5 released, with a number of new features and 29 | changes as we work towards the final 1.0 release. 30 | - [linux-embedded-hal] 0.3.1 and 0.3.2 released with some backports and updates including 31 | an implementation of the Transactional SPI and I2C interface and a bugfix 32 | for active-low output pins. 33 | - [linux-embedded-hal] 0.4.0-alpha.1 released adapted to the `embedded-hal` 1.0.0-alpha.5 34 | release and a bugfix for active-low output pins. 35 | - [gpio-cdev] 0.5.0 released with some updates, including updating to `tokio` 1.0. 36 | - [sysfs-gpio] 0.6.0 released with some updates, including updating to `tokio` 1.0. 37 | - [i2cdev] 0.5.0 released with some updates. 38 | - [spidev] 0.5.0 released with some updates. 39 | - [drogue-tls] 0.3.0 released with some updates. 40 | 41 | 42 | [@dkhayes117]: https://github.com/dkhayes117 43 | [cortex-m-rt]: https://crates.io/crates/cortex-m-rt 44 | [embedded-hal]: https://crates.io/crates/embedded-hal 45 | [linux-embedded-hal]: https://crates.io/crates/linux-embedded-hal 46 | [gpio-cdev]: https://crates.io/crates/gpio-cdev 47 | [sysfs-gpio]: https://crates.io/crates/sysfs-gpio 48 | [i2cdev]: https://crates.io/crates/i2cdev 49 | [spidev]: https://crates.io/crates/spidev 50 | [drogue-tls]: https://crates.io/crates/drogue-tls 51 | 52 | ## `embedded-hal` Ecosystem Crates 53 | 54 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. 55 | 56 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 57 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 58 | 59 | ## Get Involved 60 | 61 | This [Embedded WG] blog is where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 62 | 63 | [Embedded WG]: https://github.com/rust-embedded/wg 64 | 65 | Discuss on [#rust-embedded:matrix.org]! 66 | 67 | [#rust-embedded:matrix.org]: https://matrix.to/#/#rust-embedded:matrix.org 68 | 69 | If you want to mention something in [the next newsletter], send us a pull request! 70 | 71 | [the next newsletter]: https://github.com/rust-embedded/blog/edit/master/content/newsletter-next.md -------------------------------------------------------------------------------- /content/2021-12-28-this-year-in-embedded-rust-2021.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "This Year in Embedded Rust: 2021" 3 | date = 2021-12-28 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | As 2021 draws to a close, we thought we'd take a look back at what's happened 10 | over the last year in Embedded Rust, both within the working group and in the 11 | larger community. 12 | 13 | 14 | 15 | ## Meetings 16 | 17 | We continued our weekly Rust Embedded Working Group meetings on [our Matrix channel](#rust-embedded:matrix.org). They take place at 8pm Berlin time every Tuesday, and are open to the public. You can find all the [minutes on Github]. 18 | 19 | [#rust-embedded:matrix.org]: https://matrix.to/#/#rust-embedded:matrix.org 20 | [minutes on Github]: https://github.com/rust-embedded/wg/tree/master/minutes 21 | 22 | ## Newsletters 23 | 24 | The [blog] saw five new newsletters posted, keeping everyone up to date with what's hot in Embedded Rust. Make sure you bookmark or subscribe with your favourite RSS reader so you never miss an update! Please do also keep your contributions coming, as we love hearing about what everyone gets up to in Embedded Rust outside of the official Rust Embedded Working Group projects. 25 | 26 | [blog]: https://blog.rust-embedded.org/ 27 | 28 | ## Platform Support 29 | 30 | Outside of the working group, platform support communities provide vendor-specific support for particular microcontrollers and development boards. 31 | 32 | 2021 saw a brand-new microcontroller vendor hit the scene - Raspberry Pi! Their debut RP2040 microcontroller has two Cortex-M0 cores, and certainly made us all think about how we can try to make our software safe to use on multi-core systems. A new [rp-rs] community sprang up and continues to make good progress supporting all areas of the RP2040 with good quality examples. 33 | 34 | [rp-rs]: https://github.com/rp-rs 35 | 36 | This year also saw Espressif officially adopt Rust and [they hired @mabez] from the [esp-rs] community to help out! 37 | 38 | [they hired @mabez]: https://mabez.dev/blog/posts/esp-rust-espressif/ 39 | [esp-rs]: https://github.com/esp-rs 40 | 41 | Other platform support communities continued to develop this year: 42 | 43 | * [atsamd-rs](https://github.com/atsamd-rs) for Atmel ARM SAM-D and SAM-E microcontrollers ([Matrix chat](https://matrix.to/#/#atsamd-rs_community:gitter.im)) 44 | * [avr-rust](https://github.com/avr-rust) for Atmel AVR microcontrollers ([Matrix chat](https://matrix.to/#/#avr-rust_Lobby:gitter.im)) 45 | * [esp-rs](https://github.com/esp-rs) for Espressif ESP8266 and ESP32 Wi-Fi chips ([Matrix chat](https://matrix.to/#/#esp-rs:matrix.org)) 46 | * [imxrt-rs](https://github.com/imxrt-rs) for NXP ARM iMX.RT microcontrollers 47 | * [lpc55](https://github.com/lpc55) for NXP ARM LPC55xx microcontrollers ([Matrix chat](https://matrix.to/#/#lpc55:matrix.org)) 48 | * [nrf-rs](https://github.com/nrf-rs) for Nordic ARM nRF51, 52 and 9160 Bluetooth/LTE devices ([Matrix chat](https://matrix.to/#/#nrf-rs:matrix.org)) 49 | * [riscv-rust](https://github.com/riscv-rust) for all kinds of RISC-V devices 50 | * [rp-rs](https://github.com/rp-rs) for Raspberry Pi's RP2040 microcontroller ([Matrix chat](https://matrix.to/#/#rp-rs:matrix.org)) 51 | * [stm32-rs](https://github.com/stm32-rs) for all of ST Micro's 32-bit ARM microcontrollers ([Matrix chat](https://matrix.to/#/#stm32-rs:matrix.org)) 52 | 53 | If you're a platform support community not on the list please get in touch, we'd love to hear from you! 54 | 55 | ## Other Embedded Projects 56 | 57 | While not officially part of the Embedded Working Group, the following projects all continued to develop over 2021: 58 | 59 | * The concurrency framework [RTIC](https://rtic.rs) ([GitHub](https://github.com/rtic-rs), [Matrix](https://matrix.to/#/#rtic:matrix.org)) hit version 1.0! 60 | * The async framework [Embassy](https://embassy.dev) ([GitHub](https://github.com/embassy-rs), [Matrix](https://matrix.to/#/#embassy-rs:matrix.org)) has been under heavy development and now supports STM32, nRF and RP2040 platforms. 61 | * The debug and programming library and tools from [probe-rs](https://probe.rs) ([GitHub](https://github.com/probe-rs), [Matrix](https://matrix.to/#/#probe-rs:matrix.org)) released v0.11 and v0.12 of their library and tools including [cargo-embed](https://github.com/probe-rs/cargo-embed). 62 | * The [Knurling](https://knurling.ferrous-systems.com/) project ([GitHub](https://github.com/knurling-rs)) has had several releases of their tools such as [probe-run](https://github.com/knurling-rs/probe-run). 63 | * The [smoltcp](https://github.com/smoltcp-rs/smoltcp) embedded TCP/IP stack released v0.7 and v0.8, with many improvements including to the DHCP client and adding IEEE 802.15.4 support. 64 | * [embedded-graphics](https://github.com/embedded-graphics) ([Matrix](https://matrix.to/#/#rust-embedded-graphics:matrix.org)), a graphics library for embedded applications, had a major new v0.7 release (see the [migration notes](https://github.com/embedded-graphics/embedded-graphics/blob/master/MIGRATING-0.6-0.7.md)). 65 | * The [Hubris](https://oxidecomputer.github.io/hubris/) RTOS and its companion debugger Humility, by [Oxide Computer](https://oxide.computer/), had their first release. 66 | 67 | ## Our Repositories 68 | 69 | We continued to work on and maintain a number of key Embedded Rust repositories. The following repos all had commits during 2021: 70 | 71 | * [embedded-hal](https://github.com/rust-embedded/embedded-hal): The Embedded Hardware Abstraction Layer is a set of traits for describing common peripherals in a hardware-independent way. It continues its march towards 1.0 status, with a series of 1.0-alpha releases. It should hit 1.0 milestone some time in 2022! 120 commits over 27 files this year. 72 | * [discovery](https://github.com/rust-embedded/discovery): This book on Discovering Embedded Programming using Rust had a re-write this year - it's now based around the BBC micro:Bit! 251 commits over 187 files this year. 73 | * [book](https://github.com/rust-embedded/book): Our guide to all things Embedded Rust continues to be updated and improved, with 39 commits this year. 74 | * [embedonomicon](https://github.com/rust-embedded/embedonomicon): Our guide to all the low-down details on how to bring-up a new `#[no_std]` platform with Rust saw 15 commits this year. 75 | * [svd2rust](https://github.com/rust-embedded/svd2rust): This tool generates our 'Peripheral Access Crates' from a [System View Description](https://www.keil.com/pack/doc/CMSIS/SVD/html/index.html) file of the chip provided by the manufacturer. 122 commits over 17 files this year. 76 | * [svd](https://github.com/rust-embedded/svd): The core libraries used by svd2rust and other tools to manipulate SVD files had 103 commits over 39 files this year. 77 | * [awesome-embedded-rust](https://github.com/rust-embedded/awesome-embedded-rust): Our list of the very best in Embedded Rust keeps growing with 97 commits this year. 78 | * [cortex-m](https://github.com/rust-embedded/cortex-m), [cortex-m-rt](https://github.com/rust-embedded/cortex-m-rt), and [cortex-m-quickstart](https://github.com/rust-embedded/cortex-m-quickstart): Our platform support crates for the Arm Cortex-M architecture saw continued development, with 93 and 54 commits respectively, and a new v0.7 of cortex-m-rt released this year. 79 | * [cortex-a](https://github.com/rust-embedded/cortex-a): Our platform support crate for the Arm Cortex-A architecture saw 25 commits this year. 80 | * [riscv](https://github.com/rust-embedded/riscv) and [riscv-rt](https://github.com/rust-embedded/riscv-rt): Our platform support crates for the RISC-V architecture saw 74 and 12 commits respectively this year, with a v0.7 release of riscv. 81 | * [msp430](https://github.com/rust-embedded/msp430) and [msp430-rt](https://github.com/rust-embedded/msp430): Our platform support crates for the MSP430 architecture. 82 | * [gpio-cdev](https://github.com/rust-embedded/gpio-cdev), [rust-spidev](https://github.com/rust-embedded/rust-spidev), [rust-sysfs-gpio](https://github.com/rust-embedded/rust-sysfs-gpio), [rust-i2cdev](https://github.com/rust-embedded/rust-i2cdev), and [linux-embedded-hal](https://github.com/rust-embedded/linux-embedded-hal): Support for embedded Linux continued with 177 commits across these projects. 83 | * [r0](https://github.com/rust-embedded/r0) was a cross-platform initialisation library, but we deprecated it this year to move such initialisation into platform-specific libraries such as cortex-m-rt. 84 | -------------------------------------------------------------------------------- /content/2022-03-22-newsletter-31.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 31" 3 | date = 2022-03-22 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | ## Highlights 10 | 11 | - AdaCore and Ferrous Systems have joined forces to support Rust in safety- and mission-critical environments. 12 | - [Announcement from AdaCore](https://blog.adacore.com/adacore-and-ferrous-systems-joining-forces-to-support-rust) 13 | - [Announcement from Ferrous Systems](https://ferrous-systems.com/blog/ferrous-systems-adacore-joining-forces/) 14 | - AUTOSAR announces [new Working Group for Programming Language Rust in Automotive Software context](https://www.autosar.org/news-events/details/autosar-announces-new-working-group-for-programming-language-rust-in-automotive-software-context-202/). 15 | 16 | 17 | 18 | ## Embedded Projects 19 | 20 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to add it to [the next newsletter], we would love to show it off! 21 | 22 | - [svd2rust](https://crates.io/crates/svd2rust) released v0.20.0. 23 | - The new version of the [Discovery book](https://docs.rust-embedded.org/discovery) 24 | targeting the micro:bit development board was released. 25 | - [embedded-hal] 1.0.0-alpha.6 and 1.0.0-alpha.7 released, with a number of new features and 26 | changes as we work towards the final 1.0 release. Most notably, 27 | CAN (Controller Area Network) traits were added and some traits 28 | with unconstrained associated types were removed. 29 | - [embedded-hal] 0.2.7 released, including CAN (Controller Area Network) traits which were backported. 30 | - [embedded-dma] 0.2.0 released, including const generics support and resolves some confusion around `'static`. 31 | - A project to develop asynchronous versions of the `embedded-hal` traits has been started. 32 | See the current [roadmap](https://github.com/rust-embedded/embedded-hal/issues/356) and please join the effort! 33 | - [linux-embedded-hal] 0.4.0-alpha.2 released updating `embedded-hal` to version 1.0.0-alpha.7. 34 | - New Rust Embedded ecosystem for the radiation-hardened Vorago VA108xx family of devices: 35 | [va108xx](https://egit.irs.uni-stuttgart.de/rust/va108xx) PAC, 36 | [va108xx-hal](https://egit.irs.uni-stuttgart.de/rust/va108xx-hal) HAL 37 | and [vorago-reb1](https://egit.irs.uni-stuttgart.de/rust/vorago-reb1) BSP 38 | with [blogpost](https://robamu.github.io/post/rust-ecosystem/) 39 | - New [device driver crate](https://egit.irs.uni-stuttgart.de/rust/max116xx-10bit) for the MAX116xx 40 | 10-bit ADC devices with [blogpost](https://robamu.github.io/post/max11619-driver-rust/) 41 | - The RIOT operating system now [has upstream support for Rust applications](https://doc.riot-os.org/using-rust.html). 42 | 43 | This encompasses support in the build system, 44 | high-level [wrappers](https://crates.io/crates/riot-wrappers) that make the OS's C mechanisms safe and idiomatic to use, 45 | and [additional examples](https://gitlab.com/etonomy/riot-examples) maintained externally. 46 | The wrappers implement high-level traits (e.g. from [embedded-hal](https://crates.io/crates/embedded-hal), [embedded-nal](https://crates.io/crates/embedded-nal) and [mutex-traits](https://crates.io/crates/mutex-traits)) where practical. 47 | - A [blog post by Tweede Golf](https://tweedegolf.nl/en/blog/65/async-rust-vs-rtos-showdown) about comparing Embassy with FreeRTOS. 48 | - [eeprom24x] I2C EEPROM driver 0.5.0 released, adding support for STM M24C01 and M24C02 devices as well as implementing the [`embedded-storage`](https://github.com/rust-embedded-community/embedded-storage) traits. 49 | - [measurements] 0.10.4 and 0.11.0 released, most notably adding support for humidity and density. 50 | - [9names] released a platform-agnostic [driver for Wii Extension Controllers][wii-ext] and published a [blog post][wii-ext-post]. This driver supports Nunchuk controllers as well as the many variants of the Classic Controller (Original/Pro/NES/SNES). 51 | - Drogue Device now features an [async Bluetooth Mesh stack](https://blog.drogue.io/bluetooth-mesh/). 52 | 53 | [9names]: https://github.com/9names 54 | 55 | [embedded-hal]: https://crates.io/crates/embedded-hal 56 | [linux-embedded-hal]: https://crates.io/crates/linux-embedded-hal 57 | [embedded-dma]: https://crates.io/crates/embedded-dma 58 | [eeprom24x]: https://crates.io/crates/eeprom24x 59 | [measurements]: https://crates.io/crates/measurements 60 | [wii-ext]: https://crates.io/crates/wii-ext 61 | [wii-ext-post]: https://9names.github.io/driver/embedded/rust/2022/02/14/wii-ext-rs.html 62 | 63 | ## `embedded-hal` Ecosystem Crates 64 | 65 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. 66 | 67 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 68 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 69 | 70 | ## Get Involved 71 | 72 | This [Embedded WG] blog is where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 73 | 74 | [Embedded WG]: https://github.com/rust-embedded/wg 75 | 76 | Discuss on [#rust-embedded:matrix.org]! 77 | 78 | [#rust-embedded:matrix.org]: https://matrix.to/#/#rust-embedded:matrix.org 79 | 80 | If you want to mention something in [the next newsletter], send us a pull request! 81 | 82 | [the next newsletter]: https://github.com/rust-embedded/blog/edit/master/content/newsletter-next.md 83 | -------------------------------------------------------------------------------- /content/2024-01-09-embedded-hal-v1.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "embedded-hal v1.0 now released!" 3 | date = 2024-01-09 4 | draft = false 5 | in_search_index = true 6 | template = "page.html" 7 | +++ 8 | 9 | The Rust Embedded Working Group is proud to announce the release of `embedded-hal` version 1.0 together with the 10 | companion crates `embedded-hal-bus`, `embedded-hal-async` and `embedded-hal-nb`. 11 | 12 | Check out the [repository](https://github.com/rust-embedded/embedded-hal), the [API documentation](https://github.com/rust-embedded/embedded-hal#crates) and the [migration guide](https://github.com/rust-embedded/embedded-hal/blob/master/docs/migrating-from-0.2-to-1.0.md). 13 | 14 | The `embedded-hal` crates provide traits (interfaces) for using peripherals commonly available in microcontrollers 15 | such as GPIO, UART, SPI or I2C. They allow writing drivers (for sensors, displays, actuators, network adapters, etc.) in 16 | a generic way, so they work on any microcontroller with an `embedded-hal` implementation without 17 | modifying them. It's a central piece of the Embedded Rust ecosystem, ensuring interoperability throughout. 18 | 19 | The 1.0 release has been in the works since 2020. Now that it's out, we consider all 20 | traits in it to be *stable*. The plan is to extend `embedded-hal` with more traits in future 1.x releases, 21 | not doing more breaking changes (i.e. there are no plans for a 2.0 release). This will provide a stable 22 | base for building HALs and drivers. 23 | 24 | So, what's new in `embedded-hal` 1.0? 25 | 26 | 27 | 28 | ![Ferris soldering embedded stuff](../embedded-ferris-soldering.png) 29 | *Ferris with a soldering iron by [Barnaby Walters](https://waterpigs.co.uk/notes/5UrMgn/).* 30 | 31 | ## Focus on drivers 32 | 33 | Previous versions of `embedded-hal` had a dual goal of standardizing HAL APIs for end users, and allowing writing generic drivers. 34 | Experience has shown that these goals sometimes conflict with each other. As the latter brings much more value, 1.0 focuses on that. 35 | 36 | We've simplified some traits and merged others to remove interoperability gotchas. 37 | 38 | We've removed traits that were found to not be usable for generic drivers (most notably timers). The plan is to add 39 | them back in the future, with a better design. See the [migration guide](https://github.com/rust-embedded/embedded-hal/blob/master/docs/migrating-from-0.2-to-1.0.md) for details and links to the tracking issues. 40 | 41 | ## Async 42 | 43 | A new addition is the `embedded-hal-async` crate, containing async versions of the traits. With the Rust 1.75 release, 44 | async traits are available on Rust stable. They can be used without heap allocations or dynamic 45 | dispatch (unlike previous macro-based polyfills like the `async-trait` crate), so they are a great fit for bare-metal embedded usage. 46 | 47 | Most `embedded-hal-async` traits are async versions of their blocking counterparts. 48 | 49 | However, one highlight is the [`digital::Wait`](https://docs.rs/embedded-hal-async/1.0.0/embedded_hal_async/digital/trait.Wait.html) trait, with methods like `wait_for_high()` and `wait_for_low()`. This trait adds support for using "IRQ" GPIO pins typically used by SPI and I2C devices to send an interrupt to the microcontroller. This frequently-requested feature turned out to be hard to abstract with traits, but is now feasible in an ergonomic way with async. 50 | 51 | ## SPI bus sharing 52 | 53 | ![SPI bus/device diagram](../spi-shared-bus.svg) 54 | 55 | The [`SpiDevice`](https://docs.rs/embedded-hal/1.0.0/embedded_hal/spi/index.html) trait now allows sharing a SPI bus between multiple devices, each selected with its own CS pin. The design allows for unrelated drivers to talk to different devices in the same bus without conflicts and without being aware of each other. 56 | 57 | The trait is agnostic about the kind of mutex/locking mechanism. The [`embedded-hal-bus`](https://docs.rs/embedded-hal-bus/0.1.0/embedded_hal_bus/spi/index.html) crate provides implementations for commonly used mutexes, but it is possible to write your own for e.g. the mutex of your favourite RTOS. 58 | 59 | ## Error handling 60 | 61 | Generic drivers can now inspect errors, thanks to them being required to implement an `Error` trait 62 | that allows querying the error "kind" out of a pre-selected set. HAL implementations can still use custom error types, 63 | and map errors that don't fit in these categories to the `Other` kind. 64 | 65 | All error types are also required to implement `Debug`, so `.unwrap()` and similar are now always available in generic drivers. 66 | 67 | ## embedded-io 68 | 69 | The `embedded-hal` project also hosts the `embedded-io` crates. They provide traits for byte-oriented I/O streams. Since serial 70 | ports (UART) are essentially byte streams, the serial-specific traits in `embedded-hal` have been removed in favor of `embedded-io`. 71 | 72 | `embedded-io` has not reached 1.0 yet, but we expect that to happen in 2024. 73 | 74 | ## Thanks 75 | 76 | Thanks to the HAL team ([@therealprof](https://github.com/therealprof), [@ryankurte](https://github.com/ryankurte), [@eldruin](https://github.com/eldruin), [@dirbaio](https://github.com/Dirbaio), [@MabezDev](https://github.com/MabezDev)), and to everyone who helped with testing, feedback and contributions for making `embedded-hal` 1.0 possible. 77 | 78 | Thanks to the Rust Foundation for sponsoring Dario Nieuwenhuis ([@dirbaio](https://github.com/Dirbaio))'s work on `embedded-hal` through the [Fellowship grants program](https://foundation.rust-lang.org/news/announcing-the-rust-foundation-s-2023-fellows/). 79 | 80 | And lastly, thanks to all the people releasing and maintaining HAL implementations and drivers using `embedded-hal`. *You* are the ones who make `embedded-hal` actually useful in the real world! 81 | -------------------------------------------------------------------------------- /content/_index.md: -------------------------------------------------------------------------------- 1 | +++ 2 | # Whether to sort by "date", "order", "weight" or "none". More on that below 3 | sort_by = "date" 4 | 5 | # Template to use to render this section page 6 | template = "index.html" 7 | 8 | # How many pages to be displayed per paginated page. 9 | # No pagination will happen if this isn't set or if the value is 0 10 | paginate_by = 5 11 | 12 | # If set, will be the path used by paginated page and the page number will be appended after it. 13 | # For example the default would be page/1 14 | paginate_path = "page" 15 | 16 | # Whether the section pages should be in the search index. This is only used if 17 | # `build_search_index` is set to true in the config 18 | in_search_index = true 19 | 20 | # Whether to render that section homepage or not. 21 | # Useful when the section is only there to organize things but is not meant 22 | # to be used directly 23 | render = true 24 | +++ 25 | -------------------------------------------------------------------------------- /content/embedded-ferris-soldering.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rust-embedded/blog/66069dba906f1e830c867a1ea16a70d9fbe96de7/content/embedded-ferris-soldering.png -------------------------------------------------------------------------------- /content/newsletter-next.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - 32" 3 | date = 2022-04-30 4 | draft = true 5 | in_search_index = false 6 | template = "page.html" 7 | +++ 8 | 9 | 10 | 11 | ## Highlights 12 | 13 | 21 | 22 | - TODO(remove, this is an example) "const generics" has landed in nightly! 23 | - TODO(remove, this is an example) the Rust compiler has gained cross compilation support for the Xtensa architecture! 24 | 25 | * Drogue IoT article series on firmware updates: 26 | * [Part 1 - Bootloader](https://blog.drogue.io/firmware-updates-part-1/) 27 | * [Part 2 - Protocols](https://blog.drogue.io/firmware-updates-part-2/) 28 | 29 | 30 | 31 | 32 | ## Embedded Projects 33 | 34 | 42 | 43 | * [reqwless](https://crates.io/crates/reqwless) - an async HTTP client using embedded-io traits. 44 | * [ector](https://crates.io/crates/ector) - no-alloc actor framework for embedded devices based on embassy. 45 | * [embedded-update](https://crates.io/crates/embedded-update) - a pluggable firmware update protocol for embedded devices. 46 | 47 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to add it to [the next newsletter], we would love to show it off! 48 | 49 | - TODO(remove, this is an example) Crate embedded-foo has released version 1.0.0! 50 | 51 | 52 | 53 | 59 | [someusername]: https://github.com/... 60 | [@sometwittername]: https://twitter.com/... 61 | 62 | 65 | 66 | ## `embedded-hal` Ecosystem Crates 67 | 68 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. 69 | 70 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 71 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 72 | 73 | ## Get Involved 74 | 75 | This [Embedded WG] blog is where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 76 | 77 | [Embedded WG]: https://github.com/rust-embedded/wg 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 | 87 | 88 | If you want to mention something in [the next newsletter], send us a pull request! 89 | 90 | [the next newsletter]: https://github.com/rust-embedded/blog/edit/master/content/newsletter-next.md 91 | -------------------------------------------------------------------------------- /newsletter-template.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "The Embedded Working Group Newsletter - $TODO" 3 | date = 20??-$TODO 4 | draft = true 5 | in_search_index = false 6 | template = "page.html" 7 | +++ 8 | 9 | 10 | 11 | ## Highlights 12 | 13 | 21 | 22 | - TODO(remove, this is an example) "const generics" has landed in nightly! 23 | 24 | - TODO(remove, this is an example) the Rust compiler has gained cross compilation support for the Xtensa architecture! 25 | 26 | 27 | 28 | ## Embedded Projects 29 | 30 | 38 | 39 | If you have an embedded project or blog post you would like to have featured in the Embedded WG Newsletter, make sure to add it to [the next newsletter], we would love to show it off! 40 | 41 | - TODO(remove, this is an example) Crate embedded-foo has released version 1.0.0! 42 | 43 | 44 | 45 | 51 | [someusername]: https://github.com/... 52 | [@sometwittername]: https://twitter.com/... 53 | 54 | 57 | [embedded-foo 1.0.0 released]: https://example.com/blog/... 58 | 59 | ## `embedded-hal` Ecosystem Crates 60 | 61 | As part of the [Weekly Driver Initiative], crates that are part of the `embedded-hal` ecosystem are now tracked in the [Awesome Embedded Rust] repository. 62 | 63 | [Awesome Embedded Rust]: https://github.com/rust-embedded/awesome-embedded-rust 64 | [Weekly Driver Initiative]: https://github.com/rust-embedded/wg/issues/39 65 | 66 | ## Get Involved 67 | 68 | This [Embedded WG] blog is where we highlight new progress, celebrate cool projects, thank the community, and advertise projects that need help! 69 | 70 | [Embedded WG]: https://github.com/rust-embedded/wg 71 | 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | If you want to mention something in [the next newsletter], send us a pull request! 82 | 83 | [the next newsletter]: https://github.com/rust-embedded/blog/edit/master/content/newsletter-next.md 84 | -------------------------------------------------------------------------------- /static/ewg-logo-blue-white-on-transparent-256x256.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rust-embedded/blog/66069dba906f1e830c867a1ea16a70d9fbe96de7/static/ewg-logo-blue-white-on-transparent-256x256.png -------------------------------------------------------------------------------- /static/screenshot-cortex-a.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rust-embedded/blog/66069dba906f1e830c867a1ea16a70d9fbe96de7/static/screenshot-cortex-a.png -------------------------------------------------------------------------------- /templates/rss.xml: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | {{ config.title }} 5 | {{ config.base_url | safe }} 6 | {{ config.description }} 7 | Zola 8 | {{ config.default_language }} 9 | 10 | {{ last_updated | date(format="%a, %d %b %Y %H:%M:%S %z") }} 11 | {% for page in pages %} 12 | 13 | {{ page.title }} 14 | {{ page.date | date(format="%a, %d %b %Y %H:%M:%S %z") }} 15 | {{ page.permalink | safe }} 16 | {{ page.permalink | safe }} 17 | {{ page.content }} 18 | 19 | {% endfor %} 20 | 21 | 22 | -------------------------------------------------------------------------------- /themes/hyde/.gitignore: -------------------------------------------------------------------------------- 1 | .idea/ 2 | public 3 | -------------------------------------------------------------------------------- /themes/hyde/LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 Vincent Prouillet 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /themes/hyde/README.md: -------------------------------------------------------------------------------- 1 | # hyde 2 | Hyde is a brazen two-column [Gutenberg](https://github.com/Keats/gutenberg) based on the Jekyll theme of the same name that pairs a prominent sidebar with uncomplicated content. 3 | 4 | ![Hyde screenshot](https://f.cloud.github.com/assets/98681/1831228/42af6c6a-7384-11e3-98fb-e0b923ee0468.png) 5 | 6 | 7 | ## Contents 8 | 9 | - [Installation](#installation) 10 | - [Options](#options) 11 | - [Sidebar menu](#sidebar-menu) 12 | - [Sticky sidebar content](#sticky-sidebar-content) 13 | - [Themes](#themes) 14 | - [Reverse layout](#reverse-layout) 15 | 16 | ## Installation 17 | First download this theme to your `themes` directory: 18 | 19 | ```bash 20 | $ cd themes 21 | $ git clone https://github.com/Keats/hyde.git 22 | ``` 23 | and then enable it in your `config.toml`: 24 | 25 | ```toml 26 | theme = "hyde" 27 | ``` 28 | 29 | ## Options 30 | 31 | ### Sidebar menu 32 | Set a field in `extra` with a key of `hyde_links`: 33 | ```toml 34 | [extra] 35 | hyde_links = [ 36 | {url = "https://google.com", name = "Google.com"}, 37 | {url = "https://google.fr", name = "Google.fr"}, 38 | ] 39 | ``` 40 | Each link needs to have a `url` and a `name`. 41 | 42 | ### Sticky sidebar content 43 | By default Hyde ships with a sidebar that affixes it's content to the bottom of the sidebar. You can optionally disable this by setting `hyde_sticky` to false in your `config.toml`. 44 | 45 | ### Themes 46 | Hyde ships with eight optional themes based on the [base16 color scheme](https://github.com/chriskempson/base16). Apply a theme to change the color scheme (mostly applies to sidebar and links). 47 | 48 | ![Hyde in red](https://f.cloud.github.com/assets/98681/1831229/42b0b354-7384-11e3-8462-31b8df193fe5.png) 49 | 50 | There are eight themes available at this time. 51 | 52 | ![Hyde theme classes](https://f.cloud.github.com/assets/98681/1817044/e5b0ec06-6f68-11e3-83d7-acd1942797a1.png) 53 | 54 | To use a theme, set the `hyde_theme` field in `config.toml` to any of the themes name: 55 | 56 | ```toml 57 | [extra] 58 | hyde_theme = "theme-base-08" 59 | ``` 60 | 61 | To create your own theme, look to the Themes section of [included CSS file](https://github.com/poole/hyde/blob/master/public/css/hyde.css). Copy any existing theme (they're only a few lines of CSS), rename it, and change the provided colors. 62 | 63 | ### Reverse layout 64 | 65 | ![Hyde with reverse layout](https://f.cloud.github.com/assets/98681/1831230/42b0d3ac-7384-11e3-8d54-2065afd03f9e.png) 66 | 67 | Hyde's page orientation can be reversed by setting `hyde_reverse` to `true` in the `config.toml`. 68 | -------------------------------------------------------------------------------- /themes/hyde/config.toml: -------------------------------------------------------------------------------- 1 | base_url = "https://gutenberg-hyde.netlify.com" 2 | compile_sass = true 3 | title = "Hyde theme" 4 | description = "A clean blogging theme" 5 | 6 | [extra] 7 | hyde_sticky = true 8 | hyde_reverse = false 9 | hyde_theme = "" 10 | hyde_links = [ 11 | {url = "https://google.com", name = "About"}, 12 | ] 13 | -------------------------------------------------------------------------------- /themes/hyde/content/some-article.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "What is Gutenberg" 3 | date = 2017-09-24 4 | +++ 5 | 6 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc eu feugiat sapien. Aenean ligula nunc, laoreet id sem in, interdum bibendum felis. Donec vel dui neque. Praesent ac sem ut justo volutpat rutrum a imperdiet tellus. Nam lobortis massa non hendrerit hendrerit. Vivamus porttitor dignissim turpis, eget aliquam urna tincidunt non. Aliquam et fringilla turpis. Nullam eros est, eleifend in ornare sed, hendrerit eget est. Aliquam tellus felis, suscipit vitae ex vel, fringilla tempus massa. Nulla facilisi. Pellentesque lobortis consequat lectus. Maecenas ac libero elit. 7 | 8 | Ut luctus dolor ut tortor hendrerit, sed hendrerit augue scelerisque. Suspendisse quis sodales dui, at tempus ante. Nulla at tempor metus. Aliquam vitae rutrum diam. Curabitur iaculis massa dui, quis varius nulla finibus a. Praesent eu blandit justo. Suspendisse pharetra, arcu in rhoncus rutrum, magna magna viverra erat, eget vestibulum enim tellus id dui. Nunc vel dui et arcu posuere maximus. Mauris quam quam, bibendum sed libero nec, tempus hendrerit arcu. Suspendisse sed gravida orci. Fusce tempor arcu ac est pretium porttitor. Aenean consequat risus venenatis sem aliquam, at sollicitudin nulla semper. Aenean bibendum cursus hendrerit. Nulla congue urna nec finibus bibendum. Donec porta tincidunt ligula non ultricies. 9 | 10 | Sed vulputate tristique elit, eget pharetra elit sodales sed. Proin dignissim ipsum lorem, at porta eros malesuada sed. Proin tristique eros eu quam ornare, suscipit luctus mauris lobortis. Phasellus ut placerat enim. Donec egestas faucibus maximus. Nam quis efficitur eros. Cras tincidunt, lacus ac pretium porta, dui dolor varius elit, eget laoreet justo justo vitae metus. Morbi eget nisi ut ex scelerisque lobortis ut in lorem. Vestibulum et lorem quis ipsum feugiat varius. Mauris nec nulla viverra nisi porttitor efficitur. Morbi vel purus eleifend, finibus erat non, placerat ipsum. Mauris et augue vel nisi volutpat aliquam. Curabitur malesuada tortor est, at condimentum neque eleifend in. 11 | 12 | Morbi id ornare lacus. Suspendisse ultrices rutrum posuere. Nullam porttitor libero quis ligula finibus semper. Mauris iaculis magna et nisl tristique, eget maximus ex feugiat. Nam eu felis leo. Quisque ultrices varius purus in molestie. Duis non accumsan ligula. Vivamus dignissim malesuada metus, vel hendrerit tellus viverra id. Curabitur posuere, mauris vitae dignissim dictum, velit mi condimentum lorem, nec varius velit arcu a mi. In dolor sapien, condimentum sed aliquam at, dignissim id purus. Cras lorem leo, vulputate ac ante sed, molestie tempus lectus. Curabitur efficitur libero quam, rhoncus faucibus libero pharetra nec. Curabitur lobortis ullamcorper nisl eu imperdiet. Duis porttitor interdum magna, ac eleifend orci consequat vitae. Aliquam augue felis, faucibus vel blandit sed, maximus non turpis. 13 | 14 | Quisque viverra a eros id auctor. Proin id nibh ut nisl dignissim pellentesque et ac mi. Nullam mattis urna quis consequat bibendum. Donec pretium dui elit, a semper purus tristique et. Mauris euismod nisl eu vehicula facilisis. Maecenas facilisis non massa non scelerisque. Integer malesuada cursus erat eu viverra. Duis ligula mi, eleifend vel justo id, laoreet porttitor ex. Etiam ultricies lacus lorem, sed aliquam nulla blandit in. Maecenas vel facilisis neque, vitae fringilla eros. In justo nibh, pellentesque sed faucibus nec, varius sit amet risus. 15 | -------------------------------------------------------------------------------- /themes/hyde/content/some-other-article.md: -------------------------------------------------------------------------------- 1 | +++ 2 | title = "A first theme for Gutenberg" 3 | date = 2017-09-25 4 | +++ 5 | 6 | Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc eu feugiat sapien. Aenean ligula nunc, laoreet id sem in, interdum bibendum felis. Donec vel dui neque. Praesent ac sem ut justo volutpat rutrum a imperdiet tellus. Nam lobortis massa non hendrerit hendrerit. Vivamus porttitor dignissim turpis, eget aliquam urna tincidunt non. Aliquam et fringilla turpis. Nullam eros est, eleifend in ornare sed, hendrerit eget est. Aliquam tellus felis, suscipit vitae ex vel, fringilla tempus massa. Nulla facilisi. Pellentesque lobortis consequat lectus. Maecenas ac libero elit. 7 | 8 | Ut luctus dolor ut tortor hendrerit, sed hendrerit augue scelerisque. Suspendisse quis sodales dui, at tempus ante. Nulla at tempor metus. Aliquam vitae rutrum diam. Curabitur iaculis massa dui, quis varius nulla finibus a. Praesent eu blandit justo. Suspendisse pharetra, arcu in rhoncus rutrum, magna magna viverra erat, eget vestibulum enim tellus id dui. Nunc vel dui et arcu posuere maximus. Mauris quam quam, bibendum sed libero nec, tempus hendrerit arcu. Suspendisse sed gravida orci. Fusce tempor arcu ac est pretium porttitor. Aenean consequat risus venenatis sem aliquam, at sollicitudin nulla semper. Aenean bibendum cursus hendrerit. Nulla congue urna nec finibus bibendum. Donec porta tincidunt ligula non ultricies. 9 | 10 | Sed vulputate tristique elit, eget pharetra elit sodales sed. Proin dignissim ipsum lorem, at porta eros malesuada sed. Proin tristique eros eu quam ornare, suscipit luctus mauris lobortis. Phasellus ut placerat enim. Donec egestas faucibus maximus. Nam quis efficitur eros. Cras tincidunt, lacus ac pretium porta, dui dolor varius elit, eget laoreet justo justo vitae metus. Morbi eget nisi ut ex scelerisque lobortis ut in lorem. Vestibulum et lorem quis ipsum feugiat varius. Mauris nec nulla viverra nisi porttitor efficitur. Morbi vel purus eleifend, finibus erat non, placerat ipsum. Mauris et augue vel nisi volutpat aliquam. Curabitur malesuada tortor est, at condimentum neque eleifend in. 11 | 12 | Morbi id ornare lacus. Suspendisse ultrices rutrum posuere. Nullam porttitor libero quis ligula finibus semper. Mauris iaculis magna et nisl tristique, eget maximus ex feugiat. Nam eu felis leo. Quisque ultrices varius purus in molestie. Duis non accumsan ligula. Vivamus dignissim malesuada metus, vel hendrerit tellus viverra id. Curabitur posuere, mauris vitae dignissim dictum, velit mi condimentum lorem, nec varius velit arcu a mi. In dolor sapien, condimentum sed aliquam at, dignissim id purus. Cras lorem leo, vulputate ac ante sed, molestie tempus lectus. Curabitur efficitur libero quam, rhoncus faucibus libero pharetra nec. Curabitur lobortis ullamcorper nisl eu imperdiet. Duis porttitor interdum magna, ac eleifend orci consequat vitae. Aliquam augue felis, faucibus vel blandit sed, maximus non turpis. 13 | 14 | Quisque viverra a eros id auctor. Proin id nibh ut nisl dignissim pellentesque et ac mi. Nullam mattis urna quis consequat bibendum. Donec pretium dui elit, a semper purus tristique et. Mauris euismod nisl eu vehicula facilisis. Maecenas facilisis non massa non scelerisque. Integer malesuada cursus erat eu viverra. Duis ligula mi, eleifend vel justo id, laoreet porttitor ex. Etiam ultricies lacus lorem, sed aliquam nulla blandit in. Maecenas vel facilisis neque, vitae fringilla eros. In justo nibh, pellentesque sed faucibus nec, varius sit amet risus. 15 | -------------------------------------------------------------------------------- /themes/hyde/sass/hyde.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * __ __ 3 | * /\ \ /\ \ 4 | * \ \ \___ __ __ \_\ \ __ 5 | * \ \ _ `\/\ \/\ \ /'_` \ /'__`\ 6 | * \ \ \ \ \ \ \_\ \/\ \_\ \/\ __/ 7 | * \ \_\ \_\/`____ \ \___,_\ \____\ 8 | * \/_/\/_/`/___/> \/__,_ /\/____/ 9 | * /\___/ 10 | * \/__/ 11 | * 12 | * Designed, built, and released under MIT license by @mdo. Learn more at 13 | * https://github.com/poole/hyde. 14 | */ 15 | 16 | 17 | /* 18 | * Contents 19 | * 20 | * Global resets 21 | * Sidebar 22 | * Container 23 | * Reverse layout 24 | * Themes 25 | */ 26 | 27 | 28 | /* 29 | * Global resets 30 | * 31 | * Update the foundational and global aspects of the page. 32 | */ 33 | 34 | html { 35 | font-family: "PT Sans", Helvetica, Arial, sans-serif; 36 | } 37 | @media (min-width: 48em) { 38 | html { 39 | font-size: 16px; 40 | } 41 | } 42 | @media (min-width: 58em) { 43 | html { 44 | font-size: 20px; 45 | } 46 | } 47 | 48 | 49 | /* 50 | * Sidebar 51 | * 52 | * Flexible banner for housing site name, intro, and "footer" content. Starts 53 | * out above content in mobile and later moves to the side with wider viewports. 54 | */ 55 | 56 | .sidebar { 57 | text-align: center; 58 | padding: 2rem 1rem; 59 | color: rgba(255,255,255,.5); 60 | background-color: #202020; 61 | } 62 | @media (min-width: 48em) { 63 | .sidebar { 64 | position: fixed; 65 | top: 0; 66 | left: 0; 67 | bottom: 0; 68 | width: 18rem; 69 | text-align: left; 70 | } 71 | } 72 | 73 | /* Sidebar links */ 74 | .sidebar a { 75 | color: #fff; 76 | } 77 | 78 | /* About section */ 79 | .sidebar-about h1 { 80 | color: #fff; 81 | margin-top: 0; 82 | font-family: "Abril Fatface", serif; 83 | font-size: 3.25rem; 84 | } 85 | 86 | /* Sidebar nav */ 87 | .sidebar-nav { 88 | padding-left: 0; 89 | list-style: none; 90 | } 91 | .sidebar-nav-item { 92 | display: block; 93 | } 94 | a.sidebar-nav-item:hover, 95 | a.sidebar-nav-item:focus { 96 | text-decoration: underline; 97 | } 98 | .sidebar-nav-item.active { 99 | font-weight: bold; 100 | } 101 | 102 | /* Sticky sidebar 103 | * 104 | * Add the `sidebar-sticky` class to the sidebar's container to affix it the 105 | * contents to the bottom of the sidebar in tablets and up. 106 | */ 107 | 108 | @media (min-width: 48em) { 109 | .sidebar-sticky { 110 | position: absolute; 111 | right: 1rem; 112 | bottom: 1rem; 113 | left: 1rem; 114 | } 115 | } 116 | 117 | 118 | /* Container 119 | * 120 | * Align the contents of the site above the proper threshold with some margin-fu 121 | * with a 25%-wide `.sidebar`. 122 | */ 123 | 124 | .content { 125 | padding-top: 4rem; 126 | padding-bottom: 4rem; 127 | } 128 | 129 | @media (min-width: 48em) { 130 | .content { 131 | max-width: 38rem; 132 | margin-left: 20rem; 133 | margin-right: 2rem; 134 | } 135 | } 136 | 137 | @media (min-width: 64em) { 138 | .content { 139 | margin-left: 22rem; 140 | margin-right: 4rem; 141 | } 142 | } 143 | 144 | 145 | /* 146 | * Reverse layout 147 | * 148 | * Flip the orientation of the page by placing the `.sidebar` on the right. 149 | */ 150 | 151 | @media (min-width: 48em) { 152 | .layout-reverse .sidebar { 153 | left: auto; 154 | right: 0; 155 | } 156 | .layout-reverse .content { 157 | margin-left: 2rem; 158 | margin-right: 20rem; 159 | } 160 | } 161 | 162 | @media (min-width: 64em) { 163 | .layout-reverse .content { 164 | margin-left: 4rem; 165 | margin-right: 22rem; 166 | } 167 | } 168 | 169 | 170 | 171 | /* 172 | * Themes 173 | * 174 | * As of v1.1, Hyde includes optional themes to color the sidebar and links 175 | * within blog posts. To use, add the class of your choosing to the `body`. 176 | */ 177 | 178 | /* Base16 (http://chriskempson.github.io/base16/#default) */ 179 | 180 | /* Red */ 181 | .theme-base-08 .sidebar { 182 | background-color: #ac4142; 183 | } 184 | .theme-base-08 .content a, 185 | .theme-base-08 .related-posts li a:hover { 186 | color: #ac4142; 187 | } 188 | 189 | /* Orange */ 190 | .theme-base-09 .sidebar { 191 | background-color: #d28445; 192 | } 193 | .theme-base-09 .content a, 194 | .theme-base-09 .related-posts li a:hover { 195 | color: #d28445; 196 | } 197 | 198 | /* Yellow */ 199 | .theme-base-0a .sidebar { 200 | background-color: #f4bf75; 201 | } 202 | .theme-base-0a .content a, 203 | .theme-base-0a .related-posts li a:hover { 204 | color: #f4bf75; 205 | } 206 | 207 | /* Green */ 208 | .theme-base-0b .sidebar { 209 | background-color: #90a959; 210 | } 211 | .theme-base-0b .content a, 212 | .theme-base-0b .related-posts li a:hover { 213 | color: #90a959; 214 | } 215 | 216 | /* Cyan */ 217 | .theme-base-0c .sidebar { 218 | background-color: #75b5aa; 219 | } 220 | .theme-base-0c .content a, 221 | .theme-base-0c .related-posts li a:hover { 222 | color: #75b5aa; 223 | } 224 | 225 | /* Blue */ 226 | .theme-base-0d .sidebar { 227 | background-color: #6a9fb5; 228 | } 229 | .theme-base-0d .content a, 230 | .theme-base-0d .related-posts li a:hover { 231 | color: #6a9fb5; 232 | } 233 | 234 | /* Magenta */ 235 | .theme-base-0e .sidebar { 236 | background-color: #aa759f; 237 | } 238 | .theme-base-0e .content a, 239 | .theme-base-0e .related-posts li a:hover { 240 | color: #aa759f; 241 | } 242 | 243 | /* Brown */ 244 | .theme-base-0f .sidebar { 245 | background-color: #8f5536; 246 | } 247 | .theme-base-0f .content a, 248 | .theme-base-0f .related-posts li a:hover { 249 | color: #8f5536; 250 | } 251 | -------------------------------------------------------------------------------- /themes/hyde/sass/poole.scss: -------------------------------------------------------------------------------- 1 | /* 2 | * ___ 3 | * /\_ \ 4 | * _____ ___ ___\//\ \ __ 5 | * /\ '__`\ / __`\ / __`\\ \ \ /'__`\ 6 | * \ \ \_\ \/\ \_\ \/\ \_\ \\_\ \_/\ __/ 7 | * \ \ ,__/\ \____/\ \____//\____\ \____\ 8 | * \ \ \/ \/___/ \/___/ \/____/\/____/ 9 | * \ \_\ 10 | * \/_/ 11 | * 12 | * Designed, built, and released under MIT license by @mdo. Learn more at 13 | * https://github.com/poole/poole. 14 | */ 15 | 16 | 17 | /* 18 | * Contents 19 | * 20 | * Body resets 21 | * Custom type 22 | * Messages 23 | * Container 24 | * Masthead 25 | * Posts and pages 26 | * Footnotes 27 | * Pagination 28 | * Reverse layout 29 | * Themes 30 | */ 31 | 32 | 33 | /* 34 | * Body resets 35 | * 36 | * Update the foundational and global aspects of the page. 37 | */ 38 | 39 | * { 40 | -webkit-box-sizing: border-box; 41 | -moz-box-sizing: border-box; 42 | box-sizing: border-box; 43 | } 44 | 45 | html, 46 | body { 47 | margin: 0; 48 | padding: 0; 49 | } 50 | 51 | html { 52 | font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; 53 | font-size: 16px; 54 | line-height: 1.5; 55 | } 56 | @media (min-width: 38em) { 57 | html { 58 | font-size: 20px; 59 | } 60 | } 61 | 62 | body { 63 | color: #515151; 64 | background-color: #fff; 65 | -webkit-text-size-adjust: 100%; 66 | -ms-text-size-adjust: 100%; 67 | } 68 | 69 | /* No `:visited` state is required by default (browsers will use `a`) */ 70 | a { 71 | color: #268bd2; 72 | text-decoration: none; 73 | } 74 | /* `:focus` is linked to `:hover` for basic accessibility */ 75 | a:hover, 76 | a:focus { 77 | text-decoration: underline; 78 | } 79 | 80 | /* Headings */ 81 | h1, h2, h3, h4, h5, h6 { 82 | margin-bottom: .5rem; 83 | font-weight: bold; 84 | line-height: 1.25; 85 | color: #313131; 86 | text-rendering: optimizeLegibility; 87 | } 88 | h1 { 89 | font-size: 2rem; 90 | } 91 | h2 { 92 | margin-top: 1rem; 93 | font-size: 1.5rem; 94 | } 95 | h3 { 96 | margin-top: 1.5rem; 97 | font-size: 1.25rem; 98 | } 99 | h4, h5, h6 { 100 | margin-top: 1rem; 101 | font-size: 1rem; 102 | } 103 | 104 | /* Body text */ 105 | p { 106 | margin-top: 0; 107 | margin-bottom: 1rem; 108 | } 109 | 110 | strong { 111 | color: #303030; 112 | } 113 | 114 | 115 | /* Lists */ 116 | ul, ol, dl { 117 | margin-top: 0; 118 | margin-bottom: 1rem; 119 | } 120 | 121 | dt { 122 | font-weight: bold; 123 | } 124 | dd { 125 | margin-bottom: .5rem; 126 | } 127 | 128 | /* Misc */ 129 | hr { 130 | position: relative; 131 | margin: 1.5rem 0; 132 | border: 0; 133 | border-top: 1px solid #eee; 134 | border-bottom: 1px solid #fff; 135 | } 136 | 137 | abbr { 138 | font-size: 85%; 139 | font-weight: bold; 140 | color: #555; 141 | text-transform: uppercase; 142 | } 143 | abbr[title] { 144 | cursor: help; 145 | border-bottom: 1px dotted #e5e5e5; 146 | } 147 | 148 | /* Code */ 149 | code, 150 | pre { 151 | font-family: Menlo, Monaco, "Courier New", monospace; 152 | } 153 | code { 154 | padding: .25em .5em; 155 | font-size: 85%; 156 | color: #bf616a; 157 | background-color: #f9f9f9; 158 | border-radius: 3px; 159 | } 160 | pre { 161 | display: block; 162 | margin-top: 0; 163 | margin-bottom: 1rem; 164 | padding: 1rem; 165 | font-size: .8rem; 166 | line-height: 1.4; 167 | overflow-x: scroll; 168 | background-color: #f9f9f9; 169 | } 170 | pre code { 171 | padding: 0; 172 | font-size: 100%; 173 | color: inherit; 174 | background-color: transparent; 175 | } 176 | .highlight { 177 | margin-bottom: 1rem; 178 | border-radius: 4px; 179 | } 180 | .highlight pre { 181 | margin-bottom: 0; 182 | } 183 | 184 | /* Quotes */ 185 | blockquote { 186 | padding: .5rem 1rem; 187 | margin: .8rem 0; 188 | color: #7a7a7a; 189 | border-left: .25rem solid #e5e5e5; 190 | } 191 | blockquote p:last-child { 192 | margin-bottom: 0; 193 | } 194 | @media (min-width: 30em) { 195 | blockquote { 196 | padding-right: 5rem; 197 | padding-left: 1.25rem; 198 | } 199 | } 200 | 201 | img { 202 | display: block; 203 | margin: 0 0 1rem; 204 | border-radius: 5px; 205 | max-width: 100%; 206 | } 207 | 208 | /* Tables */ 209 | table { 210 | margin-bottom: 1rem; 211 | width: 100%; 212 | border: 1px solid #e5e5e5; 213 | border-collapse: collapse; 214 | } 215 | td, 216 | th { 217 | padding: .25rem .5rem; 218 | border: 1px solid #e5e5e5; 219 | } 220 | tbody tr:nth-child(odd) td, 221 | tbody tr:nth-child(odd) th { 222 | background-color: #f9f9f9; 223 | } 224 | 225 | 226 | /* 227 | * Custom type 228 | * 229 | * Extend paragraphs with `.lead` for larger introductory text. 230 | */ 231 | 232 | .lead { 233 | font-size: 1.25rem; 234 | font-weight: 300; 235 | } 236 | 237 | 238 | /* 239 | * Messages 240 | * 241 | * Show alert messages to users. You may add it to single elements like a `

`, 242 | * or to a parent if there are multiple elements to show. 243 | */ 244 | 245 | .message { 246 | margin-bottom: 1rem; 247 | padding: 1rem; 248 | color: #717171; 249 | background-color: #f9f9f9; 250 | } 251 | 252 | 253 | /* 254 | * Container 255 | * 256 | * Center the page content. 257 | */ 258 | 259 | .container { 260 | max-width: 38rem; 261 | padding-left: 1rem; 262 | padding-right: 1rem; 263 | margin-left: auto; 264 | margin-right: auto; 265 | } 266 | 267 | 268 | /* 269 | * Masthead 270 | * 271 | * Super small header above the content for site name and short description. 272 | */ 273 | 274 | .masthead { 275 | padding-top: 1rem; 276 | padding-bottom: 1rem; 277 | margin-bottom: 3rem; 278 | } 279 | .masthead-title { 280 | margin-top: 0; 281 | margin-bottom: 0; 282 | color: #505050; 283 | } 284 | .masthead-title a { 285 | color: #505050; 286 | } 287 | .masthead-title small { 288 | font-size: 75%; 289 | font-weight: 400; 290 | color: #c0c0c0; 291 | letter-spacing: 0; 292 | } 293 | 294 | 295 | /* 296 | * Posts and pages 297 | * 298 | * Each post is wrapped in `.post` and is used on default and post layouts. Each 299 | * page is wrapped in `.page` and is only used on the page layout. 300 | */ 301 | 302 | .page, 303 | .post { 304 | margin-bottom: 4em; 305 | } 306 | 307 | /* Blog post or page title */ 308 | .page-title, 309 | .post-title, 310 | .post-title a { 311 | color: #303030; 312 | } 313 | .page-title, 314 | .post-title { 315 | margin-top: 0; 316 | } 317 | 318 | /* Meta data line below post title */ 319 | .post-date { 320 | display: block; 321 | margin-top: -.5rem; 322 | margin-bottom: 1rem; 323 | color: #9a9a9a; 324 | } 325 | 326 | /* Related posts */ 327 | .related { 328 | padding-top: 2rem; 329 | padding-bottom: 2rem; 330 | border-top: 1px solid #eee; 331 | } 332 | .related-posts { 333 | padding-left: 0; 334 | list-style: none; 335 | } 336 | .related-posts h3 { 337 | margin-top: 0; 338 | } 339 | .related-posts li small { 340 | font-size: 75%; 341 | color: #999; 342 | } 343 | .related-posts li a:hover { 344 | color: #268bd2; 345 | text-decoration: none; 346 | } 347 | .related-posts li a:hover small { 348 | color: inherit; 349 | } 350 | 351 | 352 | /* Footnotes */ 353 | .footnote-definition:first-of-type { 354 | border-top: 1px solid; 355 | padding-top: 1rem; 356 | } 357 | .footnote-definition { 358 | margin-top: 1rem; 359 | } 360 | .footnote-definition sup { 361 | margin-left: -1rem; 362 | float: left; 363 | } 364 | 365 | 366 | /* 367 | * Pagination 368 | * 369 | * Super lightweight (HTML-wise) blog pagination. `span`s are provide for when 370 | * there are no more previous or next posts to show. 371 | */ 372 | 373 | .pagination { 374 | overflow: hidden; /* clearfix */ 375 | margin-left: -1rem; 376 | margin-right: -1rem; 377 | font-family: "PT Sans", Helvetica, Arial, sans-serif; 378 | color: #ccc; 379 | text-align: center; 380 | } 381 | 382 | /* Pagination items can be `span`s or `a`s */ 383 | .pagination-item { 384 | display: block; 385 | padding: 1rem; 386 | border: 1px solid #eee; 387 | } 388 | .pagination-item:first-child { 389 | margin-bottom: -1px; 390 | } 391 | 392 | /* Only provide a hover state for linked pagination items */ 393 | a.pagination-item:hover { 394 | background-color: #f5f5f5; 395 | } 396 | 397 | @media (min-width: 30em) { 398 | .pagination { 399 | margin: 3rem 0; 400 | } 401 | .pagination-item { 402 | float: left; 403 | width: 50%; 404 | } 405 | .pagination-item:first-child { 406 | margin-bottom: 0; 407 | border-top-left-radius: 4px; 408 | border-bottom-left-radius: 4px; 409 | } 410 | .pagination-item:last-child { 411 | margin-left: -1px; 412 | border-top-right-radius: 4px; 413 | border-bottom-right-radius: 4px; 414 | } 415 | } 416 | -------------------------------------------------------------------------------- /themes/hyde/sass/print.scss: -------------------------------------------------------------------------------- 1 | .sidebar { 2 | display: none !important; 3 | } 4 | 5 | .content { 6 | margin: 0 auto; 7 | width: 100%; 8 | float: none; 9 | display: initial; 10 | } 11 | 12 | .container { 13 | width: 100%; 14 | float: none; 15 | display: initial; 16 | padding-left: 1rem; 17 | padding-right: 1rem; 18 | margin: 0 auto; 19 | } 20 | -------------------------------------------------------------------------------- /themes/hyde/screenshot.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rust-embedded/blog/66069dba906f1e830c867a1ea16a70d9fbe96de7/themes/hyde/screenshot.png -------------------------------------------------------------------------------- /themes/hyde/static/.gitkeep: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/rust-embedded/blog/66069dba906f1e830c867a1ea16a70d9fbe96de7/themes/hyde/static/.gitkeep -------------------------------------------------------------------------------- /themes/hyde/templates/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | {% block twitter_meta %} 12 | 13 | 14 | 15 | 16 | 17 | {%endblock twitter_meta %} 18 | 19 | {% block title %}{{ config.title }}{% endblock title %} 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | {% if config.generate_rss %} 28 | 29 | {% endif %} 30 | 31 | {% block extra_head %} 32 | {% endblock extra_head %} 33 | 34 | 35 | 36 | {% block sidebar %} 37 |

59 | {% endblock sidebar %} 60 | 61 |
62 | {% block content %} 63 |
64 | {% for page in paginator.pages %} 65 |
66 |

67 | 68 | {{ page.title }} 69 | 70 |

71 | 72 | 73 | {{ page.summary | safe }} 74 | 75 | 76 | Read More 77 | 78 |
79 | {% endfor %} 80 | {% if paginator.previous %}< < Back{% endif %} 81 | {% if paginator.next and paginator.previous %}|{% endif %} 82 | {% if paginator.next %}Next > >{% endif %} 83 |
84 | {% endblock content %} 85 |
86 | 87 | 88 | 89 | 90 | -------------------------------------------------------------------------------- /themes/hyde/templates/page.html: -------------------------------------------------------------------------------- 1 | {% extends "index.html" %} 2 | 3 | 4 | {% block twitter_meta %} 5 | 6 | 7 | 8 | 9 | 10 | {%endblock twitter_meta %} 11 | 12 | {% block content %} 13 |
14 |

{{ page.title }}

15 | 16 | {{ page.content | safe }} 17 |
18 | {% endblock content %} 19 | 20 | -------------------------------------------------------------------------------- /themes/hyde/theme.toml: -------------------------------------------------------------------------------- 1 | name = "hyde" 2 | description = "A classic blog theme" 3 | license = "MIT" 4 | homepage = "https://github.com/Keats/gutenberg-hyde" 5 | min_version = "0.4" 6 | demo = "https://gutenberg-hyde.netlify.com" 7 | 8 | [extra] 9 | hyde_sticky = true 10 | hyde_reverse = false 11 | hyde_theme = "" 12 | hyde_links = [ 13 | ] 14 | 15 | [author] 16 | name = "Vincent Prouillet" 17 | homepage = "https://vincent.is" 18 | 19 | [original] 20 | author = "mdo" 21 | homepage = "http://markdotto.com/" 22 | repo = "https://www.github.com/mdo/hyde" 23 | -------------------------------------------------------------------------------- /triagebot.toml: -------------------------------------------------------------------------------- 1 | [assign] 2 | --------------------------------------------------------------------------------