+++ title = "Updates in December 2019" date = 2020-01-07 +++ Happy New Year! This post gives an overview of the recent updates to the _Writing an OS in Rust_ blog and the corresponding libraries and tools. ## `blog_os` The repository of the _Writing an OS in Rust_ blog received the following updates: - Update `x86_64` dependency to version 0.8.1. This included the [dependency update](https://github.com/phil-opp/blog_os/pull/701) itself, an [update of the frame allocation code](https://github.com/phil-opp/blog_os/pull/703), and an [update of the blog](https://github.com/phil-opp/blog_os/pull/704). - [License the `blog/content` folder under CC BY-NC](https://github.com/phil-opp/blog_os/pull/705) - [Reword sentence in first post](https://github.com/phil-opp/blog_os/pull/709) by [@pamolloy](https://github.com/pamolloy) Further, we're still working on adding [Experimental Support for Community Translations](https://github.com/phil-opp/blog_os/pull/692) to the blog, starting with [Simplified Chinese](https://github.com/phil-opp/blog_os/pull/694) and [Traditional Chinese](https://github.com/phil-opp/blog_os/pull/699). Any help is appreciated! ## `bootloader` There were no updates to the bootloader this month. I'm currently working on rewriting the 16-bit/32-bit stages in Rust and making the bootloader more modular in the process. This should make it much easier to add support for UEFI and GRUB booting later. ## `bootimage` There were no updates to the `bootimage` tool this month. ## `x86_64` We landed a number of breaking changes this month: - [Replace `ux` dependency with custom wrapper structs](https://github.com/rust-osdev/x86_64/pull/91) - [Add new UnusedPhysFrame type and use it in Mapper::map_to](https://github.com/rust-osdev/x86_64/pull/89) - [Make Mapper trait object safe by adding `Self: Sized` bounds on generic functions](https://github.com/rust-osdev/x86_64/pull/84) - [Rename divide_by_zero field of IDT to divide_error](https://github.com/rust-osdev/x86_64/pull/108) - [Introduce new diverging handler functions for exceptions classified as "abort"](https://github.com/rust-osdev/x86_64/pull/109) These changes were released an version 0.8.0. Unfortunately, there was a missing re-export for the new `UnusedPhysFrame` type. We fixed it in [#110](https://github.com/rust-osdev/x86_64/pull/110) and released the fix as version 0.8.1. There was one more addition to the `x86_64` crate afterwards: - [Add support for cr4 control register (with complete documentation)](https://github.com/rust-osdev/x86_64/pull/111) by [@KarimAllah](https://github.com/KarimAllah) (released as version 0.8.2). There were also a few changes related to continuous integration: - [Remove bors from this repo](https://github.com/rust-osdev/x86_64/pull/103) - [Run 'push' builds only for master branch](https://github.com/rust-osdev/x86_64/pull/104) - [Remove Travis CI and Azure Pipelines scripts](https://github.com/rust-osdev/x86_64/pull/105) - [Add caching of cargo crates to GitHub Actions CI](https://github.com/rust-osdev/x86_64/pull/100) ## `cargo-xbuild` The `cargo-xbuild` crate, which cross-compiles the sysroot, received the following updates this month: - [Add `--quiet` flag that suppresses "waiting for file lock" message](https://github.com/rust-osdev/cargo-xbuild/pull/43) by [@Nils-TUD](https://github.com/Nils-TUD) (published as version 0.5.19) - [Fix wrong feature name for memcpy=false](https://github.com/rust-osdev/cargo-xbuild/pull/50) (released as version 0.5.20)