+++
title = "Updates in July 2019"
date = 2019-08-02
+++

This post gives an overview of the recent updates to the _Writing an OS in Rust_ blog and the used libraries and tools.

Since I'm still very busy with my master thesis, I haven't had the time to work on a new post. But there were quite a few maintenance updates this month and also a few new features such as the new `OffsetPageTable` type in the `x86_64` crate.

We also had some great contributions this month. Thanks to the efforts of [@64](https://github.com/64), we were able to considerably lower the compile times of the `x86_64` and `bootloader` crates. Thanks to [@Aehmlo](https://github.com/Aehmlo), the `cargo-xbuild` crate now has a  `cargo xdoc` subcommands and support for the `cargo {c, b, t, r}` aliases.

The following list gives a short overview of notable changes to the different projects.

## blog_os

- [Fix a lot of dead links in both the second and first edition](https://github.com/phil-opp/blog_os/pull/638)
- [Update paging introduction post to use page fault error code](https://github.com/phil-opp/blog_os/pull/644)

## x86_64

- [Reexport MappedPageTable on non-x86_64 platforms too](https://github.com/rust-osdev/x86_64/pull/82)
- [Update GDT docs, add user_data_segment function and WRITABLE flag](https://github.com/rust-osdev/x86_64/pull/78) by [@64](https://github.com/64) (published as version 0.7.2)
- [Add a new `OffsetPageTable` mapper type](https://github.com/rust-osdev/x86_64/pull/83) (published as version 0.7.3)
- [Update integration tests to use new testing framework](https://github.com/rust-osdev/x86_64/pull/86)
- [Remove raw-cpuid dependency and use rdrand intrinsics](https://github.com/rust-osdev/x86_64/pull/85) by [@64](https://github.com/64) (published as version 0.7.4)

## bootloader

- [Remove stabilized publish-lockfile feature](https://github.com/rust-osdev/bootloader/pull/62) (published as version 0.6.2)
- [Update CI badge, use latest version of x86_64 crate and rustfmt](https://github.com/rust-osdev/bootloader/pull/63) by [@64](https://github.com/64) (published as version 0.6.3)
- [Use volatile accesses in VGA code and make font dependency optional](https://github.com/rust-osdev/bootloader/pull/67) by [@64](https://github.com/64)
  - Making the dependency optional should improve compile times when the VGA text mode is used
  - Published as version 0.6.4
- **Breaking**: [Only include dependencies when `binary` feature is enabled](https://github.com/rust-osdev/bootloader/pull/68) (published as version 0.7.0)

## bootimage

- [If the bootloader has a feature named `binary`, enable it](https://github.com/rust-osdev/bootimage/pull/43) (published as version 0.7.6)
    - This is required for building `bootloader 0.7.0` or later

## cargo-xbuild

- [Add `cargo xdoc` command for invoking `cargo doc`](https://github.com/rust-osdev/cargo-xbuild/pull/39) by [@Aehmlo](https://github.com/Aehmlo) (published as version 0.5.13)
- [Don't append a `--sysroot` argument to `RUSTFLAGS` if it already contains one](https://github.com/rust-osdev/cargo-xbuild/pull/40) (published as version 0.5.14)
- [Add xb, xt, xc, and xr subcommands](https://github.com/rust-osdev/cargo-xbuild/pull/42) by [@Aehmlo](https://github.com/Aehmlo) (published as version 0.5.15)
