|
| 1 | ++++ |
| 2 | +title = "This Month in Rust OSDev (September 2021)" |
| 3 | +date = 2021-10-07 |
| 4 | + |
| 5 | +[extra] |
| 6 | +month = "September 2021" |
| 7 | +authors = [ |
| 8 | + "phil-opp", |
| 9 | + "phip1611", |
| 10 | + # add yourself here |
| 11 | +] |
| 12 | ++++ |
| 13 | + |
| 14 | +Welcome to a new issue of _"This Month in Rust OSDev"_. In these posts, we give a regular overview of notable changes in the Rust operating system development ecosystem. |
| 15 | + |
| 16 | +<!-- more --> |
| 17 | + |
| 18 | +This series is openly developed [on GitHub](https://github.com/rust-osdev/homepage/). Feel free to open pull requests there with content you would like to see in the next issue. If you find some issues on this page, please report them by [creating an issue](https://github.com/rust-osdev/homepage/issues/new) or using our [_comment form_](#comment-form) at the bottom of this page. |
| 19 | + |
| 20 | +<!-- |
| 21 | + This is a draft for the upcoming "This Month in Rust OSDev (September 2021)" post. |
| 22 | + Feel free to create pull requests against the `next` branch to add your |
| 23 | + content here. |
| 24 | + Please take a look at the past posts on https://rust-osdev.com/ to see the |
| 25 | + general structure of these posts. |
| 26 | +--> |
| 27 | + |
| 28 | +## Project Updates |
| 29 | + |
| 30 | +In this section, we give an overview of notable changes to the projects hosted under the [`rust-osdev`] organization. |
| 31 | + |
| 32 | +[`rust-osdev`]: https://github.com/rust-osdev/about |
| 33 | + |
| 34 | +### [`x86_64`](https://github.com/rust-osdev/x86_64) |
| 35 | + |
| 36 | +The `x86_64` crate provides various abstractions for `x86_64` systems, including wrappers for CPU instructions, access to processor-specific registers, and abstraction types for architecture-specific structures such as page tables and descriptor tables. |
| 37 | + |
| 38 | +In September, we merged the following changes: |
| 39 | + |
| 40 | +- [Add `clean_up` and `clean_up_with_filter`](https://github.com/rust-osdev/x86_64/pull/264) for deallocating unused page tables |
| 41 | +- [Add exception vector type](https://github.com/rust-osdev/x86_64/pull/303) |
| 42 | +- [Bump `bit_field` to 0.10.1](https://github.com/rust-osdev/x86_64/pull/306) |
| 43 | +- [Release version 0.14.5](https://github.com/rust-osdev/x86_64/pull/304) |
| 44 | +- [Move segment types into a new registers::segmentation module](https://github.com/rust-osdev/x86_64/pull/309) |
| 45 | +- [Release version 0.14.6](https://github.com/rust-osdev/x86_64/pull/310) |
| 46 | + |
| 47 | +Thanks to [@Freax13](https://github.com/Freax13), [@npmccallum](https://github.com/npmccallum), and [@mkroening](https://github.com/mkroening) for their contributions! |
| 48 | + |
| 49 | + |
| 50 | +### [`uefi-rs`](https://github.com/rust-osdev/uefi-rs) |
| 51 | + |
| 52 | +The `uefi` crate provides safe and performant wrappers for [UEFI](https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface), the successor to the BIOS. |
| 53 | + |
| 54 | +This month, we merged the following changes: |
| 55 | + |
| 56 | +- [Improve macro errors](https://github.com/rust-osdev/uefi-rs/pull/277) |
| 57 | +- [Implement missing methods of `DebugSupport`](https://github.com/rust-osdev/uefi-rs/pull/290) |
| 58 | +- [macros: add compilation tests](https://github.com/rust-osdev/uefi-rs/pull/286) |
| 59 | +- [Remove attribute to enable `const_panic`](https://github.com/rust-osdev/uefi-rs/pull/296) |
| 60 | +- [Add a test command to build.py and also use it in the CI](https://github.com/rust-osdev/uefi-rs/pull/283) |
| 61 | + |
| 62 | +Thanks to [@necauqua](https://github.com/necauqua) and [@timrobertsdev](https://github.com/timrobertsdev) for their contributions! |
| 63 | + |
| 64 | +### [`bootloader`](https://github.com/rust-osdev/bootloader) |
| 65 | + |
| 66 | +The `bootloader` crate implements a custom Rust-based bootloader for easy loading of 64-bit ELF executables. |
| 67 | + |
| 68 | +We finally merged a long-desired feature this month: |
| 69 | + |
| 70 | +- [Framebuffer configuration](https://github.com/rust-osdev/bootloader/pull/179) <span class="gray">(published as `v0.10.9`)</span> |
| 71 | + |
| 72 | +Thanks to [@anellie](https://github.com/anellie) for this contribution! |
| 73 | + |
| 74 | +### [`multboot2`](https://github.com/rust-osdev/multiboot2) |
| 75 | + |
| 76 | +The `multiboot2` crate provides abstraction types for the boot information of multiboot2 bootloaders. |
| 77 | + |
| 78 | +It is now part of a workspace and lives next to the new crate `multiboot2-header`. |
| 79 | + |
| 80 | +The following changes were merged this month: |
| 81 | + |
| 82 | +- [Code style improvements + optional CI job (clippy, rustfmt, rustdoc)](https://github.com/rust-osdev/multiboot2/pull/92) |
| 83 | +- [std in tests; hash for TagType](https://github.com/rust-osdev/multiboot2/pull/94) |
| 84 | +- [editorconfig file](https://github.com/rust-osdev/multiboot2/pull/93) |
| 85 | +- [prepared cargo workspace, as discussed in PR #79](https://github.com/rust-osdev/multiboot2/pull/86) |
| 86 | + |
| 87 | +The changes were published as <span class="gray">`v0.12.2`</span>. |
| 88 | + |
| 89 | + |
| 90 | +### [`multboot2-header`](https://github.com/rust-osdev/multiboot2) (**new**) |
| 91 | + |
| 92 | +The `multiboot2-header` crate provides abstraction types for the Multiboot2 header |
| 93 | +and a builder struct to construct these headers. The corresponding repository was |
| 94 | +prepared ([#86](https://github.com/rust-osdev/multiboot2/pull/86)) and the initial release |
| 95 | +is expected in early October. See [#95](https://github.com/rust-osdev/multiboot2/pull/95) for more details. |
| 96 | + |
| 97 | + |
| 98 | +## Call for Participation |
| 99 | + |
| 100 | +Want to contribute to a Rust OSDev project, but don't know where to start? Pick up one of these outstanding |
| 101 | +issues in one of our projects and get started! |
| 102 | + |
| 103 | +<!-- |
| 104 | +Please use the following template for adding items: |
| 105 | +- [(`repo_name`) Issue Description](https://example.com/link-to-issue) |
| 106 | +--> |
| 107 | + |
| 108 | +- [(`phil-opp/blog_os`) Looking for a reviewer for a French translation](https://github.com/phil-opp/blog_os/pull/1053) |
| 109 | + |
| 110 | +<!-- |
| 111 | +<span class="gray"> |
| 112 | +
|
| 113 | +_No tasks were proposed for this section._ |
| 114 | +
|
| 115 | +</span> |
| 116 | +--> |
| 117 | + |
| 118 | +If you maintain a Rust OSDev project and are looking for contributors, especially for tasks suited to people |
| 119 | +getting started in this space, please [create a PR](https://github.com/rust-osdev/homepage/pulls) against the |
| 120 | +`next` branch with the tasks you want to include in the next issue. |
| 121 | + |
| 122 | + |
| 123 | +## Personal Projects |
| 124 | + |
| 125 | +In this section, we describe updates to personal projects that are not directly related to the `rust-osdev` organization. Feel free to [create a pull request](https://github.com/rust-osdev/homepage/pulls) with the updates of your OS project for the next post. |
| 126 | + |
| 127 | +### [`phil-opp/blog_os`](https://github.com/phil-opp/blog_os) |
| 128 | + |
| 129 | +<span class="gray">(Section written by [@phil-opp](https://github.com/phil-opp))</span> |
| 130 | + |
| 131 | +We merged two small fixes to the [_Writing an OS in Rust_](https://os.phil-opp.com/) blog this month: |
| 132 | + |
| 133 | +- [Fix typos in code examples in Async/Await post](https://github.com/phil-opp/blog_os/pull/1051) |
| 134 | +- [Fix link syntax in Russian translation](https://github.com/phil-opp/blog_os/pull/1046) |
| 135 | + |
| 136 | +Thanks to [@jongillham](https://github.com/jongillham) and [@non-descriptive](https://github.com/non-descriptive) for these contributions! |
| 137 | + |
| 138 | +I don't have any notable news about the upcoming third edition of the blog yet, but I'm doing my best to get back up to speed soon. |
| 139 | + |
| 140 | +## Join Us? |
| 141 | + |
| 142 | +Are you interested in Rust-based operating system development? Our `rust-osdev` organization is always open to new members and new projects. Just let us know if you want to join! A good way for getting in touch is our [gitter channel](https://gitter.im/rust-osdev/Lobby). |
0 commit comments