From 3f781c292d568f0b0e307d3cc8c5c3f5d1607a43 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Mon, 11 Jul 2022 10:10:57 +0200 Subject: [PATCH 01/14] Add draft for July release --- content/this-month/2022-07/index.md | 76 +++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 content/this-month/2022-07/index.md diff --git a/content/this-month/2022-07/index.md b/content/this-month/2022-07/index.md new file mode 100644 index 00000000..f30957f4 --- /dev/null +++ b/content/this-month/2022-07/index.md @@ -0,0 +1,76 @@ ++++ +title = "This Month in Rust OSDev: July 2022" +date = 0000-01-01 + +[extra] +month = "July 2022" +authors = [ + "phil-opp", + # add yourself here +] ++++ + +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. + + + +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. + + + +## Project Updates + +In this section, we give an overview of notable changes to the projects hosted under the [`rust-osdev`] organization. + +[`rust-osdev`]: https://github.com/rust-osdev/about + +### [`x86_64`](https://github.com/rust-osdev/x86_64) + +Maintained by [@phil-opp](https://github.com/phil-opp), [@josephlr](https://github.com/orgs/rust-osdev/people/josephlr), [@Freax13](https://github.com/orgs/rust-osdev/people/Freax13), and [@rybot666](https://github.com/orgs/rust-osdev/people/rybot666) + +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. + +In July, … + +## Call for Participation + +Want to contribute to a Rust OSDev project, but don't know where to start? Pick up one of these outstanding +issues in one of our projects and get started! + + + + + +_No tasks were proposed for this section._ + + + +If you maintain a Rust project related to operating system development and are looking for contributors, especially for tasks suited to people getting started in this space, please [create a PR](https://github.com/rust-osdev/homepage/pulls) against the `next` branch with the tasks you want to include in the next issue. + +## Other Projects + +In this section, we describe updates to Rust OS 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. + +### [`phil-opp/blog_os`](https://github.com/phil-opp/blog_os) + +(Section written by [@phil-opp](https://github.com/phil-opp)) + +This month, ... + +## Join Us? + +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). + + + From cb4254ff2b047f5d06c64b9bdb7191a83784a62b Mon Sep 17 00:00:00 2001 From: Philipp Schuster Date: Thu, 28 Jul 2022 10:05:22 +0200 Subject: [PATCH 02/14] 2022-07 allocator comparison (#111) --- content/this-month/2022-07/index.md | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/content/this-month/2022-07/index.md b/content/this-month/2022-07/index.md index f30957f4..717d02aa 100644 --- a/content/this-month/2022-07/index.md +++ b/content/this-month/2022-07/index.md @@ -60,6 +60,37 @@ If you maintain a Rust project related to operating system development and are l In this section, we describe updates to Rust OS 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. +### Comparison between [`phip1611/simple-chunk-allocator`](https://github.com/phip1611/simple-chunk-allocator) and [`rust-osdev/linked-list-allocator`](https://github.com/rust-osdev/linked-list-allocator) + +(Section written by [@phip1611](https://github.com/phip1611)) + +In March 2022, Philipp Schuster proposed his [`simple-chunk-allocator`](https://github.com/phip1611/simple-chunk-allocator) +crate. It focuses on being a very simple-to-use general purpose allocator that "just works" for various workloads +in `no_std` context. However, there are other allocators, such as [`rust-osdev/linked-list-allocator`](https://github.com/rust-osdev/linked-list-allocator). +When you choose an allocator, you should not only consider the API and how to set it up, but actually the runtime +characteristics. OS research has shown us that there is no perfect allocator. You can optimize an allocator for speed, +memory utilization (i.e., prevent fragmentation), code simplicity, and worst case execution time. There exist different +strategies to reach those goals: first-fit, next-fit, best-fit + +Recently, Philipp benchmarked his `simple-chunk-allocator` against [`rust-osdev/linked-list-allocator`](https://github.com/rust-osdev/linked-list-allocator) +to learn under which conditions which performs better. But at first, let's point out some differences. `simple-chunk-allocator` needs +a static backing storage for heap and an additional static backing storage for its internal bookkeeping. `linked-list-allocator` +can solve this better by organizing the heap with the heap backing memory itself. `simple-chunk-allocator` uses a slightly +adjusted variant of best-fit that tries to reduce fragmentation. `linked-list-allocator` is a first-fit allocator that +has a lower performance to more heap is used. + +The relevant outcome is that `simple-chunk-allocator` always outperforms `linked-list-allocator` in median allocation time. +For stress tests with a low heap consumption, thus, no long stress test with 90% and more heap usage, `simple-chunk-allocator` +also outperforms `linked-list-allocator` in average allocation time. However, if the heap is full and frequent allocations +happen, the average (but not the median) allocation time of `linked-list-allocator` is better. Also, `linked-list-allocator` +can come close to 100% heap usage which is not the case for `simple-chunk-allocator`, because it suffers from internal +fragmentation under certain circumstances. Last but not least, even small allocations always takes up a multiple of the +used chunk size in `simple-chunk-allocator`. + +In the end, there is no optimal allocator. You must choose which properties are more relevant for your scenario. +For concrete measurements, please head to the README of [`simple-chunk-allocator`](https://github.com/phip1611/simple-chunk-allocator). + + ### [`phil-opp/blog_os`](https://github.com/phil-opp/blog_os) (Section written by [@phil-opp](https://github.com/phil-opp)) From c4d3b0e9bc84481e498410d5aa6868b6582678f4 Mon Sep 17 00:00:00 2001 From: Colin Finck Date: Fri, 29 Jul 2022 18:36:06 +0200 Subject: [PATCH 03/14] 2022-07: Add a section about my nt-list crate. (#112) --- content/this-month/2022-07/index.md | 16 ++++++++++++++++ content/this-month/2022-07/windbg.png | Bin 0 -> 161407 bytes 2 files changed, 16 insertions(+) create mode 100644 content/this-month/2022-07/windbg.png diff --git a/content/this-month/2022-07/index.md b/content/this-month/2022-07/index.md index 717d02aa..681c428d 100644 --- a/content/this-month/2022-07/index.md +++ b/content/this-month/2022-07/index.md @@ -6,6 +6,7 @@ date = 0000-01-01 month = "July 2022" authors = [ "phil-opp", + "ColinFinck", # add yourself here ] +++ @@ -90,6 +91,21 @@ used chunk size in `simple-chunk-allocator`. In the end, there is no optimal allocator. You must choose which properties are more relevant for your scenario. For concrete measurements, please head to the README of [`simple-chunk-allocator`](https://github.com/phip1611/simple-chunk-allocator). +### [`nt-list`: Windows Linked Lists in idiomatic Rust](https://colinfinck.de/posts/nt-list-windows-linked-lists-in-idiomatic-rust/) + +(Section written by [@ColinFinck](https://github.com/ColinFinck)) + +On his quest to develop a ReactOS/Windows bootloader in Rust, Colin Finck released another building block as a reusable `no_std` crate this month. +After [nt-hive](https://github.com/ColinFinck/nt-hive) for reading Windows registry hive files and [ntfs](https://github.com/ColinFinck/ntfs) to access Microsoft's proprietary NTFS filesystem, the [nt-list](https://github.com/ColinFinck/nt-list) crate provides a type-safe and idiomatic Rust interface to work with Windows Linked Lists, known as [`LIST_ENTRY`](https://docs.microsoft.com/en-us/windows/win32/api/ntdef/ns-ntdef-list_entry) and [`SINGLE_LIST_ENTRY`](https://docs.microsoft.com/en-us/windows/win32/api/ntdef/ns-ntdef-single_list_entry). +This is what Windows, Windows drivers, and components influenced by Windows (e.g. UEFI) have been using for a long time to uniformly handle linked lists. + +[Colin's blog post](https://colinfinck.de/posts/nt-list-windows-linked-lists-in-idiomatic-rust/) goes into detail about some of the differences between textbook and Windows linked lists and the challenges in coming up with a safe Rust implementation. +The final interface provided by nt-list is as simple to use as `Vec` while being fully compatible to the original `LIST_ENTRY`. +The compatibility is proven in a WinDbg debugging session: + +[![Using WinDbg to traverse a Windows Linked List created by the nt-list Rust crate](windbg.png "Using WinDbg to traverse a Windows Linked List created by the nt-list Rust crate")](windbg.png) + +If you want to give it a spin, the crate is available on [crates.io](https://crates.io/crates/nt-list), and make sure to also check the [docs](https://docs.rs/nt-list/). ### [`phil-opp/blog_os`](https://github.com/phil-opp/blog_os) diff --git a/content/this-month/2022-07/windbg.png b/content/this-month/2022-07/windbg.png new file mode 100644 index 0000000000000000000000000000000000000000..0cb31e126ebf8eabe69e2894997aa5f9128ed660 GIT binary patch literal 161407 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 z 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 literal 0 HcmV?d00001 From b244c4e4a8eddd4628b0a3365e7e86b9f1698373 Mon Sep 17 00:00:00 2001 From: Kevin Boos Date: Thu, 4 Aug 2022 12:48:19 -0700 Subject: [PATCH 04/14] Add July update for Theseus OS --- content/this-month/2022-07/index.md | 31 +++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/content/this-month/2022-07/index.md b/content/this-month/2022-07/index.md index 681c428d..aea3d5ed 100644 --- a/content/this-month/2022-07/index.md +++ b/content/this-month/2022-07/index.md @@ -113,6 +113,37 @@ If you want to give it a spin, the crate is available on [crates.io](https://cra This month, ... +### [Theseus OS](https://github.com/theseus-os/Theseus) + +(Section written by [Kevin Boos](https://www.theseus-os.com/kevinaboos/) ([@kevinaboos](https://github.com/kevinaboos)) + +Theseus is a safe-language OS written from scratch in Rust that is in the process of migrating from pure academic research objectives to more general usability and legacy compatibility. + +Theseus dynamically loads and links all components at runtime, and executes everything in a single address space and at a single privilege level. +With this, Theseus employs *intralingual* design principles to maximally leverage the strengths of the Rust language, allowing the compiler to both view and semantically understand (and thus extend its safety checks to) all components from top-level apps to low-level kernel entities. +Theseus strives to not only ensure isolation between different entity components and subsystems in the OS, but also to go further than language safety to provide various invariants that guarantee properties about most system-provided types. +For more, check out [the Theseus OS Book](https://www.theseus-os.com/Theseus/book/index.html) or our [academic papers and presentations](https://www.theseus-os.com/Theseus/book/misc/papers_presentations.html). + +Theseus is fully open-source and always welcomes [contributions](https://www.theseus-os.com/Theseus/book/contribute/contribute.html) from anyone. + +Over the past month (or two), Theseus OS made significant progress on a variety of topics: +* Finished the first known port of Wasmtime to `no_std`, enabling us to [run WASM binary workloads on Theseus](https://github.com/theseus-os/Theseus/pull/556) with relative ease. + * Importantly, this overcomes the classic limitation of safe-language OSes -- that all components must be written in that safe language -- to allow unsafe (e.g., C, C++) programs to run on Theseus in a sandboxed WASM environment. + * See our [blog post with more info](https://www.theseus-os.com/2022/06/21/wasmtime-complete-no_std-port.html) on this endeavor. +* Thanks to funding from Futurewei Technologies, Theseus Systems [hired two developers](https://www.theseus-os.com/2022/04/29/Theseus-Is-Hiring.html) to work on Theseus's next several milestones, [Nathan Royer](https://github.com/NathanRoyer) and [Klim Tsoutsman](https://github.com/tsoutsman/)., + * Thanks to everyone who reached out to us and participated in interviews; we received a lot more interest than expected! +* Began work on porting the Rust `std` library to Theseus. +* Designed a [completely new configuration interface based on cargo features](https://github.com/theseus-os/Theseus/pull/522), which enables one to easily include or exclude specific Theseus crates in a build of Theseus, but in a safe, dependency-aware manner. +* Significantly improved speed and memory usage of our runtime loader and linker: + * Introduced a [custom linker script and linker pass](https://github.com/theseus-os/Theseus/pull/562) that performs partial relinking of object files to merge their per-function/per-data sections together. + * This results in a **30-40%** reduction in object file size and a **15-18x** improvement in loading/linking times. For example, loading and linking the full Wasmtime project (60+ crates) now takes ~100ms instead of 15 seconds. + * [De-duplicated strings in our metadata](https://github.com/theseus-os/Theseus/pull/549) related to crate loading, which reduces heap usage by about 20%. +* Added support for [booting Theseus using the `limine` bootloader](https://github.com/theseus-os/Theseus/pull/541) and for [building Theseus on non-Debian Linux distributions like Fedora](https://github.com/theseus-os/Theseus/pull/536). +* Improved support for the [IXGBE ethernet NIC](https://github.com/theseus-os/Theseus/pull/523). +* [Sped up post-`rustc` build steps by about 15-20 seconds](https://github.com/theseus-os/Theseus/pull/565) with simple Makefile loop parallelization. + +Check out the [Theseus OS blog](https://www.theseus-os.com/) for the latest details. + ## Join Us? 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). From 364ee13b5ac3b05c424620a1c8a244ed2c0b26e5 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 10 Aug 2022 10:44:36 +0200 Subject: [PATCH 05/14] Add updates for rust-osdev repos --- content/this-month/2022-07/index.md | 45 ++++++++++++++++++++++++++--- 1 file changed, 41 insertions(+), 4 deletions(-) diff --git a/content/this-month/2022-07/index.md b/content/this-month/2022-07/index.md index aea3d5ed..d108d83f 100644 --- a/content/this-month/2022-07/index.md +++ b/content/this-month/2022-07/index.md @@ -31,13 +31,51 @@ In this section, we give an overview of notable changes to the projects hosted u [`rust-osdev`]: https://github.com/rust-osdev/about +### [`uefi-rs`](https://github.com/rust-osdev/uefi-rs) + +Maintained by [@GabrielMajeri](https://github.com/GabrielMajeri), [@nicholasbishop](https://github.com/nicholasbishop), and [@phip1611](https://github.com/phip1611) + +The `uefi` crate provides safe and performant wrappers for [UEFI](https://en.wikipedia.org/wiki/Unified_Extensible_Firmware_Interface), the successor to the BIOS. + +We merged the following changes in July: + +- [Protocol safety improvements](https://github.com/rust-osdev/uefi-rs/pull/460) +- [Add MemoryProtection protocol](https://github.com/rust-osdev/uefi-rs/pull/454) +- [`EqStrUntilNul` trait to compare Rust strings (`str`, `String`) against `CStr16` and `CString16`](https://github.com/rust-osdev/uefi-rs/pull/462) +- [cargo: additive panic-handler feature](https://github.com/rust-osdev/uefi-rs/pull/456) (_breaking_) +- [Allow qemu test to work under Windows without WSL](https://github.com/rust-osdev/uefi-rs/pull/463) +- [xtask: Fix channel of cargo operations](https://github.com/rust-osdev/uefi-rs/pull/466) +- [Improve entry macro tests](https://github.com/rust-osdev/uefi-rs/pull/471) + ### [`x86_64`](https://github.com/rust-osdev/x86_64) Maintained by [@phil-opp](https://github.com/phil-opp), [@josephlr](https://github.com/orgs/rust-osdev/people/josephlr), [@Freax13](https://github.com/orgs/rust-osdev/people/Freax13), and [@rybot666](https://github.com/orgs/rust-osdev/people/rybot666) 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. -In July, … +In July, we merged the following changes: + +- [Add getters for the page table frame mapping](https://github.com/rust-osdev/x86_64/pull/385) +- [Release `v0.14.10`](https://github.com/rust-osdev/x86_64/pull/386) +- [Add missing IDT entries `#CP` and `#HV`](https://github.com/rust-osdev/x86_64/pull/387) + +Thanks to [@Zildj1an](https://github.com/Zildj1an) for their contribution! + +### [`xhci`](https://github.com/rust-osdev/xhci) + +Maintained by [@toku-sa-n](https://github.com/toku-sa-n) + +The `xhci` crate provides types of xHCI structires, such as Registers and TRBs. + +We merged the following changes this month: + +- [Remove the line number limitation](https://github.com/rust-osdev/xhci/pull/138) +- [feat: added `TryFrom<[u32; 4]>` to Command/Transfer TRB structs](https://github.com/rust-osdev/xhci/pull/137) +- [Release 0.8.5](https://github.com/rust-osdev/xhci/pull/139) +- [Fix `try_from!` macro not checking MSb of type](https://github.com/rust-osdev/xhci/pull/140) +- [Release 0.8.6](https://github.com/rust-osdev/xhci/pull/141) + +Thanks to [@Demindiro](https://github.com/Demindiro) and [@ytoml](https://github.com/ytoml) for their contributions! ## Call for Participation @@ -49,11 +87,10 @@ Please use the following template for adding items: - [(`repo_name`) Issue Description](https://example.com/link-to-issue) --> - +- [(`rust-osdev/volatile`) Various improvements for the new design](https://github.com/rust-osdev/volatile/pull/28) -_No tasks were proposed for this section._ + We are currently discussing a new design for the `volatile` crate based on raw pointer types in order to avoid potential undefined behavior. The linked pull requests proposes an implementation where the volatile wrapper type is `Copy` and its methods take `self` by value. We haven't reached a decision yet, so if anyone has more input on this, please join the discussion. For more context, see also [PR #22](https://github.com/rust-osdev/volatile/pull/22). - If you maintain a Rust project related to operating system development and are looking for contributors, especially for tasks suited to people getting started in this space, please [create a PR](https://github.com/rust-osdev/homepage/pulls) against the `next` branch with the tasks you want to include in the next issue. From 738d235115a6016b17878a55ea4771df15552170 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 10 Aug 2022 10:45:08 +0200 Subject: [PATCH 06/14] Add section about uefi tier-2 efforts --- content/this-month/2022-07/index.md | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/content/this-month/2022-07/index.md b/content/this-month/2022-07/index.md index d108d83f..7dee1b9b 100644 --- a/content/this-month/2022-07/index.md +++ b/content/this-month/2022-07/index.md @@ -98,6 +98,14 @@ If you maintain a Rust project related to operating system development and are l In this section, we describe updates to Rust OS 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. +### [`rust-lang/rust`](https://github.com/rust-lang/rust/) + +(Section written by [@phil-opp](https://github.com/phil-opp)) + +This Month, [@dvdhrm](https://github.com/dvdhrm) started an initiative to get the `*-unknown-uefi` targets to [Tier-2](https://doc.rust-lang.org/nightly/rustc/platform-support.html#tier-2). As a first step, they [added a detailed description of the platform](https://github.com/rust-lang/rust/pull/99760) to the rustc book. The entry is already published [in the nightly release of the book](https://doc.rust-lang.org/nightly/rustc/platform-support/unknown-uefi.html). + +Please reach out if you would like to help with this! + ### Comparison between [`phip1611/simple-chunk-allocator`](https://github.com/phip1611/simple-chunk-allocator) and [`rust-osdev/linked-list-allocator`](https://github.com/rust-osdev/linked-list-allocator) (Section written by [@phip1611](https://github.com/phip1611)) From f5754a588eed8170fbcc0a5e39fcf5046fc54e8f Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 10 Aug 2022 10:49:51 +0200 Subject: [PATCH 07/14] Create a script to collect the changelog for rust-osdev crates --- collect-changes/.gitignore | 1 + collect-changes/Cargo.lock | 1437 +++++++++++++++++++++++++++++++++++ collect-changes/Cargo.toml | 12 + collect-changes/src/main.rs | 109 +++ 4 files changed, 1559 insertions(+) create mode 100644 collect-changes/.gitignore create mode 100644 collect-changes/Cargo.lock create mode 100644 collect-changes/Cargo.toml create mode 100644 collect-changes/src/main.rs diff --git a/collect-changes/.gitignore b/collect-changes/.gitignore new file mode 100644 index 00000000..eb5a316c --- /dev/null +++ b/collect-changes/.gitignore @@ -0,0 +1 @@ +target diff --git a/collect-changes/Cargo.lock b/collect-changes/Cargo.lock new file mode 100644 index 00000000..1c963fde --- /dev/null +++ b/collect-changes/Cargo.lock @@ -0,0 +1,1437 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 3 + +[[package]] +name = "addr2line" +version = "0.17.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b9ecd88a8c8378ca913a680cd98f0f13ac67383d35993f86c90a70e3f137816b" +dependencies = [ + "gimli", +] + +[[package]] +name = "adler" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f26201604c87b1e01bd3d98f8d5d9a8fcbb815e8cedb41ffccbeb4bf593a35fe" + +[[package]] +name = "android_system_properties" +version = "0.1.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7ed72e1635e121ca3e79420540282af22da58be50de153d36f81ddc6b83aa9e" +dependencies = [ + "libc", +] + +[[package]] +name = "arc-swap" +version = "1.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "983cd8b9d4b02a6dc6ffa557262eb5858a27a0038ffffe21a0f133eaa819a164" + +[[package]] +name = "async-trait" +version = "0.1.57" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "76464446b8bc32758d7e88ee1a804d9914cd9b1cb264c029899680b0be29826f" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "autocfg" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d468802bab17cbc0cc575e9b053f41e72aa36bfa6b7f55e3529ffa43161b97fa" + +[[package]] +name = "backtrace" +version = "0.3.66" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cab84319d616cfb654d03394f38ab7e6f0919e181b1b57e1fd15e7fb4077d9a7" +dependencies = [ + "addr2line", + "cc", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", +] + +[[package]] +name = "base64" +version = "0.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "904dfeac50f3cdaba28fc6f57fdcddb75f49ed61346676a78c4ffe55877802fd" + +[[package]] +name = "bitflags" +version = "1.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bef38d45163c2f1dde094a7dfd33ccf595c92905c8f8f4fdc18d06fb1037718a" + +[[package]] +name = "bumpalo" +version = "3.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37ccbd214614c6783386c1af30caf03192f17891059cecc394b4fb119e363de3" + +[[package]] +name = "bytes" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4872d67bab6358e59559027aa3b9157c53d9358c51423c17554809a8858e0f8" + +[[package]] +name = "cc" +version = "1.0.73" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fff2a6927b3bb87f9595d67196a70493f627687a71d87a0d692242c33f58c11" + +[[package]] +name = "cfg-if" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" + +[[package]] +name = "chrono" +version = "0.4.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f725f340c3854e3cb3ab736dc21f0cca183303acea3b3ffec30f141503ac8eb" +dependencies = [ + "iana-time-zone", + "js-sys", + "num-integer", + "num-traits", + "serde", + "time 0.1.44", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "collect-changes" +version = "0.1.0" +dependencies = [ + "chrono", + "eyre", + "octocrab", + "tokio", +] + +[[package]] +name = "core-foundation" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "194a7a9e6de53fa55116934067c844d9d749312f75c6f6d0980e8c252f8c2146" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "core-foundation-sys" +version = "0.8.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5827cebf4670468b8772dd191856768aedcb1b0278a04f989f7766351917b9dc" + +[[package]] +name = "doc-comment" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fea41bba32d969b513997752735605054bc0dfa92b4c56bf1189f2e174be7a10" + +[[package]] +name = "encoding_rs" +version = "0.8.31" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9852635589dc9f9ea1b6fe9f05b50ef208c85c834a562f0c6abb1c475736ec2b" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "eyre" +version = "0.6.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4c2b6b5a29c02cdc822728b7d7b8ae1bab3e3b05d44522770ddd49722eeac7eb" +dependencies = [ + "indenter", + "once_cell", +] + +[[package]] +name = "fastrand" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7a407cfaa3385c4ae6b23e84623d48c2798d06e3e6a1878f7f59f17b3f86499" +dependencies = [ + "instant", +] + +[[package]] +name = "fnv" +version = "1.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" + +[[package]] +name = "foreign-types" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" +dependencies = [ + "foreign-types-shared", +] + +[[package]] +name = "foreign-types-shared" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" + +[[package]] +name = "form_urlencoded" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5fc25a87fa4fd2094bffb06925852034d90a17f0d1e05197d4956d3555752191" +dependencies = [ + "matches", + "percent-encoding", +] + +[[package]] +name = "futures-channel" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c3083ce4b914124575708913bca19bfe887522d6e2e6d0952943f5eac4a74010" +dependencies = [ + "futures-core", +] + +[[package]] +name = "futures-core" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c09fd04b7e4073ac7156a9539b57a484a8ea920f79c7c675d05d289ab6110d3" + +[[package]] +name = "futures-sink" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21163e139fa306126e6eedaf49ecdb4588f939600f0b1e770f4205ee4b7fa868" + +[[package]] +name = "futures-task" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57c66a976bf5909d801bbef33416c41372779507e7a6b3a5e25e4749c58f776a" + +[[package]] +name = "futures-util" +version = "0.3.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d8b7abd5d659d9b90c8cba917f6ec750a74e2dc23902ef9cd4cc8c8b22e6036a" +dependencies = [ + "futures-core", + "futures-task", + "pin-project-lite", + "pin-utils", +] + +[[package]] +name = "gimli" +version = "0.26.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "22030e2c5a68ec659fde1e949a745124b48e6fa8b045b7ed5bd1fe4ccc5c4e5d" + +[[package]] +name = "h2" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37a82c6d637fc9515a4694bbf1cb2457b79d81ce52b3108bdeea58b07dd34a57" +dependencies = [ + "bytes", + "fnv", + "futures-core", + "futures-sink", + "futures-util", + "http", + "indexmap", + "slab", + "tokio", + "tokio-util", + "tracing", +] + +[[package]] +name = "hashbrown" +version = "0.12.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" + +[[package]] +name = "heck" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2540771e65fc8cb83cd6e8a237f70c319bd5c29f78ed1084ba5d50eeac86f7f9" + +[[package]] +name = "hermit-abi" +version = "0.1.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" +dependencies = [ + "libc", +] + +[[package]] +name = "http" +version = "0.2.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "75f43d41e26995c17e71ee126451dd3941010b0514a81a9d11f3b341debc2399" +dependencies = [ + "bytes", + "fnv", + "itoa", +] + +[[package]] +name = "http-body" +version = "0.4.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d5f38f16d184e36f2408a55281cd658ecbd3ca05cce6d6510a176eca393e26d1" +dependencies = [ + "bytes", + "http", + "pin-project-lite", +] + +[[package]] +name = "httparse" +version = "1.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "496ce29bb5a52785b44e0f7ca2847ae0bb839c9bd28f69acac9b99d461c0c04c" + +[[package]] +name = "httpdate" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4a1e36c821dbe04574f602848a19f742f4fb3c98d40449f11bcad18d6b17421" + +[[package]] +name = "hyper" +version = "0.14.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02c929dc5c39e335a03c405292728118860721b10190d98c2a0f0efd5baafbac" +dependencies = [ + "bytes", + "futures-channel", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "httparse", + "httpdate", + "itoa", + "pin-project-lite", + "socket2", + "tokio", + "tower-service", + "tracing", + "want", +] + +[[package]] +name = "hyper-tls" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6183ddfa99b85da61a140bea0efc93fdf56ceaa041b37d553518030827f9905" +dependencies = [ + "bytes", + "hyper", + "native-tls", + "tokio", + "tokio-native-tls", +] + +[[package]] +name = "hyperx" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5617e92fc2f2501c3e2bc6ce547cad841adba2bae5b921c7e52510beca6d084c" +dependencies = [ + "base64", + "bytes", + "http", + "httpdate", + "language-tags", + "mime", + "percent-encoding", + "unicase", +] + +[[package]] +name = "iana-time-zone" +version = "0.1.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1779539f58004e5dba1c1f093d44325ebeb244bfc04b791acdc0aaeca9c04570" +dependencies = [ + "android_system_properties", + "core-foundation", + "js-sys", + "wasm-bindgen", + "winapi", +] + +[[package]] +name = "idna" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "418a0a6fab821475f634efe3ccc45c013f742efe03d853e8d3355d5cb850ecf8" +dependencies = [ + "matches", + "unicode-bidi", + "unicode-normalization", +] + +[[package]] +name = "indenter" +version = "0.3.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" + +[[package]] +name = "indexmap" +version = "1.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10a35a97730320ffe8e2d410b5d3b69279b98d2c14bdb8b70ea89ecf7888d41e" +dependencies = [ + "autocfg", + "hashbrown", +] + +[[package]] +name = "instant" +version = "0.1.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a5bbe824c507c5da5956355e86a746d82e0e1464f65d862cc5e71da70e94b2c" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "ipnet" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "879d54834c8c76457ef4293a689b2a8c59b076067ad77b15efafbb05f92a592b" + +[[package]] +name = "itoa" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6c8af84674fe1f223a982c933a0ee1086ac4d4052aa0fb8060c12c6ad838e754" + +[[package]] +name = "js-sys" +version = "0.3.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "258451ab10b34f8af53416d1fdab72c22e805f0c92a1136d59470ec0b11138b2" +dependencies = [ + "wasm-bindgen", +] + +[[package]] +name = "jsonwebtoken" +version = "8.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1aa4b4af834c6cfd35d8763d359661b90f2e45d8f750a0849156c7f4671af09c" +dependencies = [ + "base64", + "pem", + "ring", + "serde", + "serde_json", + "simple_asn1", +] + +[[package]] +name = "language-tags" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4345964bb142484797b161f473a503a434de77149dd8c7427788c6e13379388" + +[[package]] +name = "lazy_static" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646" + +[[package]] +name = "libc" +version = "0.2.129" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "64de3cc433455c14174d42e554d4027ee631c4d046d43e3ecc6efc4636cdc7a7" + +[[package]] +name = "lock_api" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "327fa5b6a6940e4699ec49a9beae1ea4845c6bab9314e4f84ac68742139d8c53" +dependencies = [ + "autocfg", + "scopeguard", +] + +[[package]] +name = "log" +version = "0.4.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "abb12e687cfb44aa40f41fc3978ef76448f9b6038cad6aef4259d3c095a2382e" +dependencies = [ + "cfg-if", +] + +[[package]] +name = "matches" +version = "0.1.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a3e378b66a060d48947b590737b30a1be76706c8dd7b8ba0f2fe3989c68a853f" + +[[package]] +name = "memchr" +version = "2.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dffe52ecf27772e601905b7522cb4ef790d2cc203488bbd0e2fe85fcb74566d" + +[[package]] +name = "mime" +version = "0.3.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2a60c7ce501c71e03a9c9c0d35b861413ae925bd979cc7a4e30d060069aaac8d" + +[[package]] +name = "miniz_oxide" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f5c75688da582b8ffc1f1799e9db273f32133c49e048f614d22ec3256773ccc" +dependencies = [ + "adler", +] + +[[package]] +name = "mio" +version = "0.8.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "57ee1c23c7c63b0c9250c339ffdc69255f110b298b901b9f6c82547b7b87caaf" +dependencies = [ + "libc", + "log", + "wasi 0.11.0+wasi-snapshot-preview1", + "windows-sys", +] + +[[package]] +name = "native-tls" +version = "0.2.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fd7e2f3618557f980e0b17e8856252eee3c97fa12c54dff0ca290fb6266ca4a9" +dependencies = [ + "lazy_static", + "libc", + "log", + "openssl", + "openssl-probe", + "openssl-sys", + "schannel", + "security-framework", + "security-framework-sys", + "tempfile", +] + +[[package]] +name = "num-bigint" +version = "0.4.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f93ab6289c7b344a8a9f60f88d80aa20032336fe78da341afc91c8a2341fc75f" +dependencies = [ + "autocfg", + "num-integer", + "num-traits", +] + +[[package]] +name = "num-integer" +version = "0.1.45" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "225d3389fb3509a24c93f5c29eb6bde2586b98d9f016636dff58d7c6f7569cd9" +dependencies = [ + "autocfg", + "num-traits", +] + +[[package]] +name = "num-traits" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "578ede34cf02f8924ab9447f50c28075b4d3e5b269972345e7e0372b38c6cdcd" +dependencies = [ + "autocfg", +] + +[[package]] +name = "num_cpus" +version = "1.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "19e64526ebdee182341572e50e9ad03965aa510cd94427a4549448f285e957a1" +dependencies = [ + "hermit-abi", + "libc", +] + +[[package]] +name = "num_threads" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2819ce041d2ee131036f4fc9d6ae7ae125a3a40e97ba64d04fe799ad9dabbb44" +dependencies = [ + "libc", +] + +[[package]] +name = "object" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21158b2c33aa6d4561f1c0a6ea283ca92bc54802a93b263e910746d679a7eb53" +dependencies = [ + "memchr", +] + +[[package]] +name = "octocrab" +version = "0.16.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8d3731cf8af31e9df81c7f529d3907f8a01c6ffea0cb8a989a637f66a9201a23" +dependencies = [ + "arc-swap", + "async-trait", + "base64", + "bytes", + "chrono", + "hyperx", + "jsonwebtoken", + "once_cell", + "reqwest", + "secrecy", + "serde", + "serde_json", + "serde_path_to_error", + "snafu", + "url", +] + +[[package]] +name = "once_cell" +version = "1.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "18a6dbe30758c9f83eb00cbea4ac95966305f5a7772f3f42ebfc7fc7eddbd8e1" + +[[package]] +name = "openssl" +version = "0.10.41" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "618febf65336490dfcf20b73f885f5651a0c89c64c2d4a8c3662585a70bf5bd0" +dependencies = [ + "bitflags", + "cfg-if", + "foreign-types", + "libc", + "once_cell", + "openssl-macros", + "openssl-sys", +] + +[[package]] +name = "openssl-macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b501e44f11665960c7e7fcf062c7d96a14ade4aa98116c004b2e37b5be7d736c" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "openssl-probe" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff011a302c396a5197692431fc1948019154afc178baf7d8e37367442a4601cf" + +[[package]] +name = "openssl-sys" +version = "0.9.75" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5f9bd0c2710541a3cda73d6f9ac4f1b240de4ae261065d309dbe73d9dceb42f" +dependencies = [ + "autocfg", + "cc", + "libc", + "pkg-config", + "vcpkg", +] + +[[package]] +name = "parking_lot" +version = "0.12.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3742b2c103b9f06bc9fff0a37ff4912935851bee6d36f3c02bcc755bcfec228f" +dependencies = [ + "lock_api", + "parking_lot_core", +] + +[[package]] +name = "parking_lot_core" +version = "0.9.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09a279cbf25cb0757810394fbc1e359949b59e348145c643a939a525692e6929" +dependencies = [ + "cfg-if", + "libc", + "redox_syscall", + "smallvec", + "windows-sys", +] + +[[package]] +name = "pem" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03c64931a1a212348ec4f3b4362585eca7159d0d09cbdf4a7f74f02173596fd4" +dependencies = [ + "base64", +] + +[[package]] +name = "percent-encoding" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4fd5641d01c8f18a23da7b6fe29298ff4b55afcccdf78973b24cf3175fee32e" + +[[package]] +name = "pin-project-lite" +version = "0.2.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e0a7ae3ac2f1173085d398531c705756c94a4c56843785df85a60c1a0afac116" + +[[package]] +name = "pin-utils" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b870d8c151b6f2fb93e84a13146138f05d02ed11c7e7c54f8826aaaf7c9f184" + +[[package]] +name = "pkg-config" +version = "0.3.25" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1df8c4ec4b0627e53bdf214615ad287367e482558cf84b109250b37464dc03ae" + +[[package]] +name = "proc-macro2" +version = "1.0.43" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0a2ca2c61bc9f3d74d2886294ab7b9853abd9c1ad903a3ac7815c58989bb7bab" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "quote" +version = "1.0.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbe448f377a7d6961e30f5955f9b8d106c3f5e449d493ee1b125c1d43c2b5179" +dependencies = [ + "proc-macro2", +] + +[[package]] +name = "redox_syscall" +version = "0.2.16" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fb5a58c1855b4b6819d59012155603f0b22ad30cad752600aadfcb695265519a" +dependencies = [ + "bitflags", +] + +[[package]] +name = "remove_dir_all" +version = "0.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3acd125665422973a33ac9d3dd2df85edad0f4ae9b00dafb1a05e43a9f5ef8e7" +dependencies = [ + "winapi", +] + +[[package]] +name = "reqwest" +version = "0.11.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b75aa69a3f06bbcc66ede33af2af253c6f7a86b1ca0033f60c580a27074fbf92" +dependencies = [ + "base64", + "bytes", + "encoding_rs", + "futures-core", + "futures-util", + "h2", + "http", + "http-body", + "hyper", + "hyper-tls", + "ipnet", + "js-sys", + "lazy_static", + "log", + "mime", + "native-tls", + "percent-encoding", + "pin-project-lite", + "serde", + "serde_json", + "serde_urlencoded", + "tokio", + "tokio-native-tls", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", + "winreg", +] + +[[package]] +name = "ring" +version = "0.16.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3053cf52e236a3ed746dfc745aa9cacf1b791d846bdaf412f60a8d7d6e17c8fc" +dependencies = [ + "cc", + "libc", + "once_cell", + "spin", + "untrusted", + "web-sys", + "winapi", +] + +[[package]] +name = "rustc-demangle" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ef03e0a2b150c7a90d01faf6254c9c48a41e95fb2a8c2ac1c6f0d2b9aefc342" + +[[package]] +name = "ryu" +version = "1.0.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4501abdff3ae82a1c1b477a17252eb69cee9e66eb915c1abaa4f44d873df9f09" + +[[package]] +name = "schannel" +version = "0.1.20" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88d6731146462ea25d9244b2ed5fd1d716d25c52e4d54aa4fb0f3c4e9854dbe2" +dependencies = [ + "lazy_static", + "windows-sys", +] + +[[package]] +name = "scopeguard" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d29ab0c6d3fc0ee92fe66e2d99f700eab17a8d57d1c1d3b748380fb20baa78cd" + +[[package]] +name = "secrecy" +version = "0.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bd1c54ea06cfd2f6b63219704de0b9b4f72dcc2b8fdef820be6cd799780e91e" +dependencies = [ + "zeroize", +] + +[[package]] +name = "security-framework" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dc14f172faf8a0194a3aded622712b0de276821addc574fa54fc0a1167e10dc" +dependencies = [ + "bitflags", + "core-foundation", + "core-foundation-sys", + "libc", + "security-framework-sys", +] + +[[package]] +name = "security-framework-sys" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0160a13a177a45bfb43ce71c01580998474f556ad854dcbca936dd2841a5c556" +dependencies = [ + "core-foundation-sys", + "libc", +] + +[[package]] +name = "serde" +version = "1.0.143" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "53e8e5d5b70924f74ff5c6d64d9a5acd91422117c60f48c4e07855238a254553" +dependencies = [ + "serde_derive", +] + +[[package]] +name = "serde_derive" +version = "1.0.143" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3d8e8de557aee63c26b85b947f5e59b690d0454c753f3adeb5cd7835ab88391" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "serde_json" +version = "1.0.83" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38dd04e3c8279e75b31ef29dbdceebfe5ad89f4d0937213c53f7d49d01b3d5a7" +dependencies = [ + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "serde_path_to_error" +version = "0.1.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "184c643044780f7ceb59104cef98a5a6f12cb2288a7bc701ab93a362b49fd47d" +dependencies = [ + "serde", +] + +[[package]] +name = "serde_urlencoded" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d3491c14715ca2294c4d6a88f15e84739788c1d030eed8c110436aafdaa2f3fd" +dependencies = [ + "form_urlencoded", + "itoa", + "ryu", + "serde", +] + +[[package]] +name = "signal-hook-registry" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e51e73328dc4ac0c7ccbda3a494dfa03df1de2f46018127f60c693f2648455b0" +dependencies = [ + "libc", +] + +[[package]] +name = "simple_asn1" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "adc4e5204eb1910f40f9cfa375f6f05b68c3abac4b6fd879c8ff5e7ae8a0a085" +dependencies = [ + "num-bigint", + "num-traits", + "thiserror", + "time 0.3.13", +] + +[[package]] +name = "slab" +version = "0.4.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4614a76b2a8be0058caa9dbbaf66d988527d86d003c11a94fbd335d7661edcef" +dependencies = [ + "autocfg", +] + +[[package]] +name = "smallvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fd0db749597d91ff862fd1d55ea87f7855a744a8425a64695b6fca237d1dad1" + +[[package]] +name = "snafu" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5177903bf45656592d9eb5c0e22f408fc023aae51dbe2088889b71633ba451f2" +dependencies = [ + "backtrace", + "doc-comment", + "snafu-derive", +] + +[[package]] +name = "snafu-derive" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "410b26ed97440d90ced3e2488c868d56a86e2064f5d7d6f417909b286afe25e5" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "socket2" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66d72b759436ae32898a2af0a14218dbf55efde3feeb170eb623637db85ee1e0" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "spin" +version = "0.5.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6e63cff320ae2c57904679ba7cb63280a3dc4613885beafb148ee7bf9aa9042d" + +[[package]] +name = "syn" +version = "1.0.99" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "58dbef6ec655055e20b86b15a8cc6d439cca19b667537ac6a1369572d151ab13" +dependencies = [ + "proc-macro2", + "quote", + "unicode-ident", +] + +[[package]] +name = "tempfile" +version = "3.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5cdb1ef4eaeeaddc8fbd371e5017057064af0911902ef36b39801f67cc6d79e4" +dependencies = [ + "cfg-if", + "fastrand", + "libc", + "redox_syscall", + "remove_dir_all", + "winapi", +] + +[[package]] +name = "thiserror" +version = "1.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f5f6586b7f764adc0231f4c79be7b920e766bb2f3e51b3661cdb263828f19994" +dependencies = [ + "thiserror-impl", +] + +[[package]] +name = "thiserror-impl" +version = "1.0.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "12bafc5b54507e0149cdf1b145a5d80ab80a90bcd9275df43d4fff68460f6c21" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "time" +version = "0.1.44" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6db9e6914ab8b1ae1c260a4ae7a49b6c5611b40328a735b21862567685e73255" +dependencies = [ + "libc", + "wasi 0.10.0+wasi-snapshot-preview1", + "winapi", +] + +[[package]] +name = "time" +version = "0.3.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "db76ff9fa4b1458b3c7f077f3ff9887394058460d21e634355b273aaf11eea45" +dependencies = [ + "itoa", + "libc", + "num_threads", + "time-macros", +] + +[[package]] +name = "time-macros" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42657b1a6f4d817cda8e7a0ace261fe0cc946cf3a80314390b22cc61ae080792" + +[[package]] +name = "tinyvec" +version = "1.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87cc5ceb3875bb20c2890005a4e226a4651264a5c75edb2421b52861a0a0cb50" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cda74da7e1a664f795bb1f8a87ec406fb89a02522cf6e50620d016add6dbbf5c" + +[[package]] +name = "tokio" +version = "1.20.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a8325f63a7d4774dd041e363b2409ed1c5cbbd0f867795e661df066b2b0a581" +dependencies = [ + "autocfg", + "bytes", + "libc", + "memchr", + "mio", + "num_cpus", + "once_cell", + "parking_lot", + "pin-project-lite", + "signal-hook-registry", + "socket2", + "tokio-macros", + "winapi", +] + +[[package]] +name = "tokio-macros" +version = "1.8.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9724f9a975fb987ef7a3cd9be0350edcbe130698af5b8f7a631e23d42d052484" +dependencies = [ + "proc-macro2", + "quote", + "syn", +] + +[[package]] +name = "tokio-native-tls" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f7d995660bd2b7f8c1568414c1126076c13fbb725c40112dc0120b78eb9b717b" +dependencies = [ + "native-tls", + "tokio", +] + +[[package]] +name = "tokio-util" +version = "0.7.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cc463cd8deddc3770d20f9852143d50bf6094e640b485cb2e189a2099085ff45" +dependencies = [ + "bytes", + "futures-core", + "futures-sink", + "pin-project-lite", + "tokio", + "tracing", +] + +[[package]] +name = "tower-service" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b6bc1c9ce2b5135ac7f93c72918fc37feb872bdc6a5533a8b85eb4b86bfdae52" + +[[package]] +name = "tracing" +version = "0.1.36" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fce9567bd60a67d08a16488756721ba392f24f29006402881e43b19aac64307" +dependencies = [ + "cfg-if", + "pin-project-lite", + "tracing-core", +] + +[[package]] +name = "tracing-core" +version = "0.1.29" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5aeea4303076558a00714b823f9ad67d58a3bbda1df83d8827d21193156e22f7" +dependencies = [ + "once_cell", +] + +[[package]] +name = "try-lock" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59547bce71d9c38b83d9c0e92b6066c4253371f15005def0c30d9657f50c7642" + +[[package]] +name = "unicase" +version = "2.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "50f37be617794602aabbeee0be4f259dc1778fabe05e2d67ee8f79326d5cb4f6" +dependencies = [ + "version_check", +] + +[[package]] +name = "unicode-bidi" +version = "0.3.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "099b7128301d285f79ddd55b9a83d5e6b9e97c92e0ea0daebee7263e932de992" + +[[package]] +name = "unicode-ident" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c4f5b37a154999a8f3f98cc23a628d850e154479cd94decf3414696e12e31aaf" + +[[package]] +name = "unicode-normalization" +version = "0.1.21" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "854cbdc4f7bc6ae19c820d44abdc3277ac3e1b2b93db20a636825d9322fb60e6" +dependencies = [ + "tinyvec", +] + +[[package]] +name = "untrusted" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a156c684c91ea7d62626509bce3cb4e1d9ed5c4d978f7b4352658f96a4c26b4a" + +[[package]] +name = "url" +version = "2.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a507c383b2d33b5fc35d1861e77e6b383d158b2da5e14fe51b83dfedf6fd578c" +dependencies = [ + "form_urlencoded", + "idna", + "matches", + "percent-encoding", + "serde", +] + +[[package]] +name = "vcpkg" +version = "0.2.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" + +[[package]] +name = "version_check" +version = "0.9.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f" + +[[package]] +name = "want" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1ce8a968cb1cd110d136ff8b819a556d6fb6d919363c61534f6860c7eb172ba0" +dependencies = [ + "log", + "try-lock", +] + +[[package]] +name = "wasi" +version = "0.10.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1a143597ca7c7793eff794def352d41792a93c481eb1042423ff7ff72ba2c31f" + +[[package]] +name = "wasi" +version = "0.11.0+wasi-snapshot-preview1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" + +[[package]] +name = "wasm-bindgen" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fc7652e3f6c4706c8d9cd54832c4a4ccb9b5336e2c3bd154d5cccfbf1c1f5f7d" +dependencies = [ + "cfg-if", + "wasm-bindgen-macro", +] + +[[package]] +name = "wasm-bindgen-backend" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "662cd44805586bd52971b9586b1df85cdbbd9112e4ef4d8f41559c334dc6ac3f" +dependencies = [ + "bumpalo", + "log", + "once_cell", + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-futures" +version = "0.4.32" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fa76fb221a1f8acddf5b54ace85912606980ad661ac7a503b4570ffd3a624dad" +dependencies = [ + "cfg-if", + "js-sys", + "wasm-bindgen", + "web-sys", +] + +[[package]] +name = "wasm-bindgen-macro" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b260f13d3012071dfb1512849c033b1925038373aea48ced3012c09df952c602" +dependencies = [ + "quote", + "wasm-bindgen-macro-support", +] + +[[package]] +name = "wasm-bindgen-macro-support" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5be8e654bdd9b79216c2929ab90721aa82faf65c48cdf08bdc4e7f51357b80da" +dependencies = [ + "proc-macro2", + "quote", + "syn", + "wasm-bindgen-backend", + "wasm-bindgen-shared", +] + +[[package]] +name = "wasm-bindgen-shared" +version = "0.2.82" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6598dd0bd3c7d51095ff6531a5b23e02acdc81804e30d8f07afb77b7215a140a" + +[[package]] +name = "web-sys" +version = "0.3.59" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ed055ab27f941423197eb86b2035720b1a3ce40504df082cac2ecc6ed73335a1" +dependencies = [ + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "winapi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" +dependencies = [ + "winapi-i686-pc-windows-gnu", + "winapi-x86_64-pc-windows-gnu", +] + +[[package]] +name = "winapi-i686-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" + +[[package]] +name = "winapi-x86_64-pc-windows-gnu" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" + +[[package]] +name = "windows-sys" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea04155a16a59f9eab786fe12a4a450e75cdb175f9e0d80da1e17db09f55b8d2" +dependencies = [ + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_msvc", +] + +[[package]] +name = "windows_aarch64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bb8c3fd39ade2d67e9874ac4f3db21f0d710bee00fe7cab16949ec184eeaa47" + +[[package]] +name = "windows_i686_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "180e6ccf01daf4c426b846dfc66db1fc518f074baa793aa7d9b9aaeffad6a3b6" + +[[package]] +name = "windows_i686_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e2e7917148b2812d1eeafaeb22a97e4813dfa60a3f8f78ebe204bcc88f12f024" + +[[package]] +name = "windows_x86_64_gnu" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4dcd171b8776c41b97521e5da127a2d86ad280114807d0b2ab1e462bc764d9e1" + +[[package]] +name = "windows_x86_64_msvc" +version = "0.36.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c811ca4a8c853ef420abd8592ba53ddbbac90410fab6903b3e79972a631f7680" + +[[package]] +name = "winreg" +version = "0.10.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "80d0f4e272c85def139476380b12f9ac60926689dd2e01d4923222f40580869d" +dependencies = [ + "winapi", +] + +[[package]] +name = "zeroize" +version = "1.5.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c394b5bd0c6f669e7275d9c20aa90ae064cb22e75a1cad54e1b34088034b149f" diff --git a/collect-changes/Cargo.toml b/collect-changes/Cargo.toml new file mode 100644 index 00000000..8f90a977 --- /dev/null +++ b/collect-changes/Cargo.toml @@ -0,0 +1,12 @@ +[package] +name = "collect-changes" +version = "0.1.0" +edition = "2021" + +# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html + +[dependencies] +chrono = "0.4.21" +eyre = "0.6.8" +octocrab = "0.16.0" +tokio = { version = "1.20.1", features = ["full"] } diff --git a/collect-changes/src/main.rs b/collect-changes/src/main.rs new file mode 100644 index 00000000..5560bec7 --- /dev/null +++ b/collect-changes/src/main.rs @@ -0,0 +1,109 @@ +use chrono::{Datelike, Duration, Utc}; +use octocrab::params; +use std::collections::{BTreeMap, HashMap}; + +#[tokio::main] +async fn main() -> eyre::Result<()> { + let last_month = { + let twenty_days_ago = Utc::now().checked_sub_signed(Duration::days(20)).unwrap(); + let first_of_month = twenty_days_ago.with_day(1).unwrap().date(); + first_of_month.and_hms(0, 0, 0) + }; + let year = last_month.year(); + let month = last_month.month(); + println!("Creating changelog for {year}/{month}",); + + let gh = { + let mut builder = octocrab::OctocrabBuilder::new(); + builder = if let Ok(token) = std::env::var("GITHUB_TOKEN") { + println!("Using GITHUB_TOKEN"); + builder.personal_token(token) + } else { + builder + }; + builder.build()? + }; + let repo_page = gh + .orgs("rust-osdev") + .list_repos() + .repo_type(params::repos::Type::Sources) + .sort(params::repos::Sort::Pushed) + .direction(params::Direction::Descending) + .per_page(100) + .send() + .await?; + let all_repos = gh.all_pages(repo_page).await?; + + let mut changes: HashMap<_, Vec<_>> = HashMap::new(); + let mut repos = HashMap::new(); + for repo in all_repos { + let mut pulls = gh + .pulls("rust-osdev", &repo.name) + .list() + .state(params::State::Closed) + .sort(params::pulls::Sort::Updated) + .direction(params::Direction::Descending) + .per_page(100) + .send() + .await?; + let entry = changes.entry(repo.name.clone()).or_default(); + repos.insert(repo.name.clone(), repo); + loop { + let items = pulls.take_items(); + let merged = items + .iter() + .cloned() + .filter_map(|p| p.merged_at.map(|t| (p, t))) + .filter(|(_, t)| t.year() == year && t.month() == month); + entry.extend(merged); + if items + .last() + .and_then(|p| p.updated_at) + .map(|u| u < last_month) + .unwrap_or(true) + { + break; + } + match gh.get_page(&pulls.next).await? { + None => break, + Some(next_page) => pulls = next_page, + } + } + } + changes.retain(|_, pulls| !pulls.is_empty()); + + for (repo_name, mut pulls) in changes { + let repo = &repos[&repo_name]; + println!( + "\n\n### [`{}`]({})\n", + repo.name, + repo.html_url.as_ref().unwrap() + ); + + let mut thanks = BTreeMap::new(); + + pulls.sort_by_key(|(_, merged_at)| *merged_at); + for (pull, _) in pulls { + println!("- [{}]({})", pull.title.unwrap(), pull.html_url.unwrap()); + + let author = pull.user.unwrap(); + thanks.insert(author.id, author); + } + + if !thanks.is_empty() { + print!("\nThanks to "); + let last_idx = thanks.len() - 1; + for (i, author) in thanks.into_values().enumerate() { + match i { + 0 => {} + i if i == last_idx => print!(", and "), + _ => print!(", "), + } + print!("[@{}]({})", author.login, author.html_url); + } + println!(" for their contributions!"); + } + } + + Ok(()) +} From fbdd3adde4287cf3d79e92605df65cf0a1300981 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 10 Aug 2022 10:54:06 +0200 Subject: [PATCH 08/14] Rename section --- content/this-month/2022-07/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/content/this-month/2022-07/index.md b/content/this-month/2022-07/index.md index 7dee1b9b..c93c1a6e 100644 --- a/content/this-month/2022-07/index.md +++ b/content/this-month/2022-07/index.md @@ -25,7 +25,7 @@ This series is openly developed [on GitHub](https://github.com/rust-osdev/homepa general structure of these posts. --> -## Project Updates +## `rust-osdev` Projects In this section, we give an overview of notable changes to the projects hosted under the [`rust-osdev`] organization. From c9b0a3a0e784e487fe3290ef9e247c7996c665e1 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 10 Aug 2022 10:54:45 +0200 Subject: [PATCH 09/14] Set publish date --- content/this-month/2022-07/index.md | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/content/this-month/2022-07/index.md b/content/this-month/2022-07/index.md index c93c1a6e..1f7a894a 100644 --- a/content/this-month/2022-07/index.md +++ b/content/this-month/2022-07/index.md @@ -1,6 +1,6 @@ +++ title = "This Month in Rust OSDev: July 2022" -date = 0000-01-01 +date = 2022-08-10 [extra] month = "July 2022" @@ -192,8 +192,3 @@ Check out the [Theseus OS blog](https://www.theseus-os.com/) for the latest deta ## Join Us? 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). - - - From 5e73ab7486bd775a65df7e06c5478ac0644a5160 Mon Sep 17 00:00:00 2001 From: Philipp Oppermann Date: Wed, 10 Aug 2022 10:56:21 +0200 Subject: [PATCH 10/14] Minor improvement to 'call for participation' wording --- content/this-month/2022-07/index.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/content/this-month/2022-07/index.md b/content/this-month/2022-07/index.md index 1f7a894a..de6e4eb1 100644 --- a/content/this-month/2022-07/index.md +++ b/content/this-month/2022-07/index.md @@ -79,8 +79,7 @@ Thanks to [@Demindiro](https://github.com/Demindiro) and [@ytoml](https://github ## Call for Participation -Want to contribute to a Rust OSDev project, but don't know where to start? Pick up one of these outstanding -issues in one of our projects and get started! +Want to contribute to a Rust OSDev project, but don't know where to start? Help with one of these outstanding issues!