From f8f9a02d56c297a51f42802e5e962bbd4a3142ed Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 1 Apr 2020 14:49:18 +0200 Subject: [PATCH] Updates in March 2020 --- .../content/status-update/2020-04-01/index.md | 69 ++++++++++++++++++ .../2020-04-01/qemu-vga-crate.png | Bin 0 -> 6577 bytes blog/static/css/main.css | 4 + 3 files changed, 73 insertions(+) create mode 100644 blog/content/status-update/2020-04-01/index.md create mode 100644 blog/content/status-update/2020-04-01/qemu-vga-crate.png diff --git a/blog/content/status-update/2020-04-01/index.md b/blog/content/status-update/2020-04-01/index.md new file mode 100644 index 00000000..34213352 --- /dev/null +++ b/blog/content/status-update/2020-04-01/index.md @@ -0,0 +1,69 @@ ++++ +title = "Updates in March 2020" +date = 2020-04-01 ++++ + +This post gives an overview of the recent updates to the _Writing an OS in Rust_ blog and the corresponding libraries and tools. + +I focused my time this month on finishing the long-planned post about [**Async/Await**]. In addition to that, there were a few updates to the crates behind the scenes, including some great contributions and a new `vga` crate. + +[**Async/Await**]: @/second-edition/posts/12-async-await/index.md + +As mentioned in the _Async/Await_ post, I'm currently looking for job in Karlsruhe (Germany) or remote, so please let me know if you're interested. + +## `blog_os` + +The repository of the _Writing an OS in Rust_ blog received the following updates: + +- [Update linked_list_allocator to v0.8.0](https://github.com/phil-opp/blog_os/pull/763) +- [Update x86_64 dependency to version 0.9.6](https://github.com/phil-opp/blog_os/pull/764) +- [New post about Async/Await](https://github.com/phil-opp/blog_os/pull/767) +- [Discuss the approach of storing offsets for self-referential structs](https://github.com/phil-opp/blog_os/pull/774) +- [Use a static counter for assigning task IDs](https://github.com/phil-opp/blog_os/pull/782) + +In addition to the changes above, there were a lot of [typo fixes] by external contributors. Thanks a lot! + +[typo fixes]: https://github.com/phil-opp/blog_os/pulls?q=is%3Apr+is%3Aclosed+created%3A2020-03-01..2020-04-02+-author%3Aphil-opp+ + +## `x86_64` + +The `x86_64` crate provides support for CPU-specific instructions, registers, and data structures of the `x86_64` architecture. In March, there was only a single addition, which was required for the _Async/Await_ post: + +- [Add an enable_interrupts_and_hlt function that executes `sti; hlt`](https://github.com/rust-osdev/x86_64/pull/138) (released as v0.9.6) + +## `bootloader` + +The bootloader crate received two contributions this month: + +- [Implement boot-info-address](https://github.com/rust-osdev/bootloader/pull/101) by [@Darksecond](https://github.com/Darksecond) (released as v0.8.9) +- [Identity-map complete vga region (0xa0000 to 0xc0000)](https://github.com/rust-osdev/bootloader/pull/104) by [@RKennedy9064](https://github.com/RKennedy9064) (released as v0.9.0) + +## `bootimage` + +The `bootimage` tool builds the `bootloader` and creates a bootable disk image from a kernel. It received a RUSTFLAGS-related bugfix: + +- [Set empty RUSTFLAGS to ensure that no .cargo/config applies](https://github.com/rust-osdev/bootimage/pull/51) + + + +## `vga` + +There is a new crate under the `rust-osdev` organization: [`vga`](https://github.com/rust-osdev/vga) created by [@RKennedy9064](https://github.com/RKennedy9064). The purpose of the library is to provide abstractions for the VGA hardware. For example, the crate allows to switch the VGA hardware to graphics mode, which makes it possible to draw on a pixel-based framebuffer: + +![QEMU printing a box with "Hello World" in it](qemu-vga-crate.png) + +For more information about the crate, check out its [API documentation](https://docs.rs/vga/0.2.2/vga/) and the [GitHub repository](https://github.com/rust-osdev/vga). diff --git a/blog/content/status-update/2020-04-01/qemu-vga-crate.png b/blog/content/status-update/2020-04-01/qemu-vga-crate.png new file mode 100644 index 0000000000000000000000000000000000000000..b3eac57f37d40cd8f1627a0d3995f8b6abcdb91d GIT binary patch literal 6577 zcmeAS@N?(olHy`uVBq!ia0y~yV4A|fz@*Q?#=yXE>X3IA0|Ns~v6E*A2L}g74M$1` z0|SF(iEBhjaDG}zd16s2Lwa6*ZmMo^a#3n(UU5c#$$RGgb_@&*S|CNvMX8A;nfZAN zA(^?U48EBP28Ifb1w{%*21W)7hQ?N=rdCEq3eK*lpHMu+2&;GZ&v-hP5C7<5FbPU8K0 zH`BlA)7JHKjZ*);+3ffCy|R0s%+-uHncYkbABwK!n0?NvuKun6Zr}I%KQA{P-#7Qk z`M)>U?+>+j*r6G$w=dz_%f3cJ7-;~wZ z_ginF59AEoBAU*?tdd!8>g-hK7{0-0U8(bH$EF*3v{&dc6kXWMf3{(_S8 zDhvm-Pt4mAzrR_Cfg!GE0Sm)|C8_oP3=9ps+$Nn|ye;+4hPR%ReCO(B=H{Q=w<9w! zfQdoofLhOsQBp9=wJiDZP1f%A4NH^#d9st|uaTPmRknG0ZIckg0|wLA9cO2j ze`({9{`Bbegvagq=WnjRIp;Fp{YkF^>iQ`BH&;B$CCYoA`a-_1+wHy&;? zDZXg<+PE?$d|k9<;(_On7RoR*FrQhYZ1&w+E&j!u>pAD5`)}Ah_`K1HQ|61G?cXzV zY+uijG5mUB%eq>t?>fJy|9R1FzI69)Yu&?bPiJMXf4}+s_Wh-ybw5APe`-Ace^B4d zx}14Ye^dUwOrEahnKt+Lwmq+H-+NE0dANDL&+Th#e;)e3$LRmB7pG$W#sBx7^kf64 zaM97w|LN_28Q2cB2*%DV|B@HK{_mt`@_QBc=gH3HWv=jFx`2f*>-k)JbMd{eAN@)F z`s&Y{zT3rjUiY8h!o)u zXs$mw!!UVs>1*T4yIWpnn$6BMk&-kn%el2J@9y*Gtb2;)T9*dTuU3nGR&On7r4wtv z%Ota2&&*wJ+BEKc^K!ENuk+hqurB*CA?@7EU6$ARA1uwEzNfMI+Ki3K#Rvb?d!(nQ z@B47yZl?75-*NlC>^z_HbycY4&-ZE1X1qN9t?%udHz#Db|K0I@e(Bom$tubGlCwko z|5*0ADIfQlKTpLn?ba8YkI#=++sWTvfBg;oFrt=>pCvQtrxW7_Yqp|tg#^ZbK7Q6MHYp&m6A8q#ij`5b--{02k zD36@sq%IEHRu07CF)rfW+C0{ zwrltH^ry=F>9;l>fBGVM+0u&{Pad|*y^&?!uwKUMkE+s#o4hZ7J#4=e^W8&Ac=`7u zPuh-ODm`8AGq3jJZ{6ejuWbC*RISn29G2{Ho^|fr{d3p;yfbZ~^Z#G}ugJ>E?tJ+B zx|-*y=VwnEUhX@)>)N$@-jAAuDk^V_zdtEB<$z<(+gYZb zlRmb~Zae(#0ERR-e!4!c@D-Ew*J zr-|*CZ{ECVz3k?jpWM|Er{n*7$(rR6*O{CYcvpi28Zr@XI$ZPJGO-34WiIy!hgYPGdj6 z^78U&cWbZfeU~rxIRAH|?Ay1IAa(EFodYFw_y1oCZq2XVmVV}j^QLvBxwFouEt4@c zRd)Y&=a1dn8;>WcWY3Q?j#$pVhiU7!?J3F6FWB9V*85SF?^CAxFJPBg{fqVAL*hPs zwR>z{#&>pCS-dpMhUnSm`KR96?^6{&6F;H;&zt9){=C~=bmwFKiHYlNwXVnizWe9t z%Bz`@W;&imH9tDe*uBr)`+Hr@lZW?2PksCLZOiuU&mXeOpAdAHo9QlBr}6gfThA)J z%JPzuC-dU}djC7CY5e)(>3^F2>uOY%|G9m6vdaD+H~qhVjAUltoHi+bd*8{M>u

y5#WJn|m^Y{p^3g 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 MUHx3vIVCg!09q7?jsO4v literal 0 HcmV?d00001 diff --git a/blog/static/css/main.css b/blog/static/css/main.css index 2e2df2c2..ce3b8496 100644 --- a/blog/static/css/main.css +++ b/blog/static/css/main.css @@ -441,3 +441,7 @@ h5 { .gray { color: gray; } + +a strong { + color: #268bd2; +}