From a9bdb5c56b47c0734d0adb61d78619799b480e1c Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 1 May 2019 19:21:15 +0200 Subject: [PATCH] Finish first status update post --- blog/content/news/status-update-001.md | 31 --------------------- blog/content/status-update/2019-05-01.md | 34 ++++++++++++++++++++++++ blog/content/status-update/_index.md | 6 +++++ 3 files changed, 40 insertions(+), 31 deletions(-) delete mode 100644 blog/content/news/status-update-001.md create mode 100644 blog/content/status-update/2019-05-01.md create mode 100644 blog/content/status-update/_index.md diff --git a/blog/content/news/status-update-001.md b/blog/content/news/status-update-001.md deleted file mode 100644 index b14af24c..00000000 --- a/blog/content/news/status-update-001.md +++ /dev/null @@ -1,31 +0,0 @@ -+++ -title = "Changes in April 2019 (working title)" -date = 2019-05-01 -+++ - -TODO - -## Bootloader - -- [Updates for new build system](https://github.com/rust-osdev/bootloader/pull/53) - - Build upon build system rewrite in [#51](https://github.com/rust-osdev/bootloader/pull/51) -- Release versions 0.5.0, 0.5.1, 0.5.2, and 0.5.3 ([changelog](https://github.com/rust-osdev/bootloader/blob/master/Changelog.md#053)) -- [Version 0.6.0](https://github.com/rust-osdev/bootloader/pull/55) - -## Bootimage - -- [Rewrite bootimage for new bootloader build system](https://github.com/rust-osdev/bootimage/pull/34) -- Release versions 0.7.0 and 0.7.1 ([changelog](https://github.com/rust-osdev/bootimage/blob/master/Changelog.md#071)) - -- [New features for `bootimage runner`](https://github.com/rust-osdev/bootimage/pull/36) - - Released as version 0.7.2 ([changelog](https://github.com/rust-osdev/bootimage/blob/master/Changelog.md#072)) - -## Blog OS - -- [Update to new bootloader 0.5.1 and bootimage 0.7.2](https://github.com/phil-opp/blog_os/pull/575) -- [Rewrite the linking section of _"A Freestanding Rust Binary"_](https://github.com/phil-opp/blog_os/pull/577) -- [Migrate from Netlify to Github Pages](https://github.com/phil-opp/blog_os/pull/579) -- [Minimal Rust Kernel: Use a runner to make cargo xrun work](https://github.com/phil-opp/blog_os/pull/582) - - [Add `.cargo/config` file to post-02 branch](https://github.com/phil-opp/blog_os/pull/585) -- [New testing post](https://github.com/phil-opp/blog_os/pull/584) - - [Implement code for new testing post in post-xx branches](https://github.com/phil-opp/blog_os/pull/587) diff --git a/blog/content/status-update/2019-05-01.md b/blog/content/status-update/2019-05-01.md new file mode 100644 index 00000000..5d1c2bd1 --- /dev/null +++ b/blog/content/status-update/2019-05-01.md @@ -0,0 +1,34 @@ ++++ +title = "Updates in April 2019" +date = 2019-05-01 ++++ + +Lot's of things changed in the _Writing an OS in Rust_ series in the past month, both on the blog itself and in the tools behind the scenes. This post gives an overview of the most important updates. + +This post is an experiment inspired by [_This Week in Rust_] and similar series. The goal is to provide a resource that allows following the project more closely and staying up-to-date with the changes in the tools/libraries behind the scenes. If enough people find this useful, I will try to turn this in a semi-regular series. + +[_This Week in Rust_]: https://this-week-in-rust.org/ + +## Bootloader + +- The build system of the bootloader was rewritten to do a proper linking instead of appending the kernel executable manually like before. The relevant pull requests are [_Rewrite build system_](https://github.com/rust-osdev/bootloader/pull/51) and [_Updates for new build system_](https://github.com/rust-osdev/bootloader/pull/53). These (breaking) changes were released as version `0.5.0` ([changelog](https://github.com/rust-osdev/bootloader/blob/master/Changelog.md#050)). +- To make the bootloader work with future versions of `bootimage`, a [`package.metadata.bootloader.target` key was added](https://github.com/rust-osdev/bootloader/commit/33b8ce6059e90485c56883b23d4834d06ddfd517) to the `Cargo.toml` of the bootloader. This key specifies the name of the target JSON file, so that `bootimage` knows which `--target` argument to pass. This change was released as version `0.5.1` ([changelog](https://github.com/rust-osdev/bootloader/blob/master/Changelog.md#051)) +- In the [_Version 0.6.0_](https://github.com/rust-osdev/bootloader/pull/55) pull request, the `#[cfg(not(test))]` attribute was removed from the `entry_point` macro. This makes it possible to use the macro together with `cargo xtest` and a custom test framework. Since the change is breaking, it was released as version `0.6.0` ([changelog](https://github.com/rust-osdev/bootloader/blob/master/Changelog.md#060)). + +## Bootimage + +- The [_Rewrite bootimage for new bootloader build system_](https://github.com/rust-osdev/bootimage/pull/34) pull request completely revamped the implementation of the crate. This was released as version `0.7.0`. See the [changelog](https://github.com/rust-osdev/bootimage/blob/master/Changelog.md#070) for a list of changes. + - The rewrite had the unintended side-effect that `bootimage run` no longer ignored executables named `test-*`, so that an additional `--bin` argument was required for specifying which executable to run. To avoid breaking users of `bootimage test`, we yanked version `0.7.0`. After [fixing the issue](https://github.com/rust-osdev/bootimage/commit/8746c15bf326cf8438a4e64ffdda332fbe59e30d), version `0.7.1` was released ([changelog](https://github.com/rust-osdev/bootimage/blob/master/Changelog.md#071)). +- The [_New features for `bootimage runner`_](https://github.com/rust-osdev/bootimage/pull/36) pull request added support for additional arguments and various functionality for supporting `cargo xtest`. The changes were released as version `0.7.2` ([changelog](https://github.com/rust-osdev/bootimage/blob/master/Charelog.md#072)). +- An argument parsing bug that broke the new `cargo bootimage` subcommand on Windows was [fixed](https://github.com/rust-osdev/bootimage/commit/101eb43de403fd9f3cb3f044e2c263356d2c179a). The fix was released as version `0.7.3`. + +## Blog OS + +- Performed an [_Update to new bootloader 0.5.1 and bootimage 0.7.2_](https://github.com/phil-opp/blog_os/pull/575). Apart from requiring the `llvm-tools-preview` rustup component, this only changes version numbers. +- The [_Rewrite the linking section of "A Freestanding Rust Binary"_](https://github.com/phil-opp/blog_os/pull/577) pull request updated the first post to compile for the bare-metal `thumbv7em-none-eabihf` target instead of adding linker arguments for Linux/Windows/macOS. +- Since the blog came close to the free bandwidth limit of Netlify, we needed to [_Migrate from Netlify to Github Pages_](https://github.com/phil-opp/blog_os/pull/579) to avoid additional fees. +- With the [_Minimal Rust Kernel: Use a runner to make cargo xrun work_](https://github.com/phil-opp/blog_os/pull/582) pull request, we integrated the new `bootimage runner` into the blog. + - The required updates to the `post-02` and `post-03` branches were performed in the [_Add `.cargo/config` file to post-02 branch_](https://github.com/phil-opp/blog_os/pull/585) and [_Merge the changes from #585 into the post-03 branch_](https://github.com/phil-opp/blog_os/pull/586) pull requests. +- In the [_New testing post_](https://github.com/phil-opp/blog_os/pull/584) pull request, we replaced the previous [_Unit Testing_](https://os.phil-opp.com/unit-testing/) and [_Integration Tests_](https://os.phil-opp.com/integration-tests/) with the new [_Testing_](https://os.phil-opp.com/testing/) post, which uses `cargo xtest` and a custom test framework for running tests. + - The required updates for the `post-04` branch were performed in the [_Implement code for new testing post in post-xx branches_](https://github.com/phil-opp/blog_os/pull/587) pull request. The updates for the other `post-*` branches were pushed manually to avoid spamming the repository with pull requests. You can find a list of the commits in the pull request description. +- The [_Avoid generic impl trait parameters in BootInfoFrameAllocator_](https://github.com/phil-opp/blog_os/pull/595) pull request made the `BootInfoFrameAllocator` non-generic by reconstructing the frame iterator on every allocation. This way, we avoid using a `impl Trait` type parameter, which makes it [impossible to store the type in a `static`](https://github.com/phil-opp/blog_os/issues/593). See [rust-lang/rust#60367](https://github.com/rust-lang/rust/issues/60367) for the fundamental problem. diff --git a/blog/content/status-update/_index.md b/blog/content/status-update/_index.md new file mode 100644 index 00000000..867327a1 --- /dev/null +++ b/blog/content/status-update/_index.md @@ -0,0 +1,6 @@ ++++ +title = "News" +page_template = "status-update-page.html" +sort_by = "date" +render = false ++++