)]}'
{
  "log": [
    {
      "commit": "0c9301a21e69e61bccf66c954f0cde321b3ccfb2",
      "tree": "2f4f5561e7f37374a554995f7ab212de59db6e26",
      "parents": [
        "c8860d3a94587740d66fb5e31fd8033b971c2209"
      ],
      "author": {
        "name": "Sam Leffler",
        "email": "sleffler@google.com",
        "time": "Wed Dec 11 14:17:53 2024 -0800"
      },
      "committer": {
        "name": "Sam Leffler",
        "email": "sleffler@google.com",
        "time": "Wed Dec 11 14:17:53 2024 -0800"
      },
      "message": "Eliminate compiler/lint warning introduced by futures hack.\n\nChange-Id: I280fdd97bf9f46c880cd34eb2e88a8abac96c489\n"
    },
    {
      "commit": "c8860d3a94587740d66fb5e31fd8033b971c2209",
      "tree": "8dd792c753c9d4313131a18f874eab1cd19c8878",
      "parents": [
        "807cd9c650c0060baa710c979c891218ee72fdb1"
      ],
      "author": {
        "name": "Sam Leffler",
        "email": "sleffler@google.com",
        "time": "Fri Oct 18 11:47:33 2024 -0700"
      },
      "committer": {
        "name": "Sam Leffler",
        "email": "sleffler@google.com",
        "time": "Mon Oct 28 09:53:54 2024 -0700"
      },
      "message": "[HACK] lock futures to a local copy of v0.3.29\n\nUpstream yanked v0.3.29 of the futures crate due to:\n\n\"a bug fixed in 0.3.31 and a compile failure with futures-task 0.3.31 and later\"\n\nUnfortunately we are pinned to that version due to the ancient tock\ncode we are using. Band-aid the tree by importing the source code for\nv0.3.29 and locking the deps to use the imported crate.\n\nA proper solution is to roll tock forward to something more current.\n\nBUG\u003d376047660\n\nChange-Id: I7e494159fd61f3d1883cc67ebb885cb0a4ba6b34\n"
    },
    {
      "commit": "807cd9c650c0060baa710c979c891218ee72fdb1",
      "tree": "110af5ee43ef13861707003f1c86647b2ed91da7",
      "parents": [
        "bab991e33278bd1885b8227a9b6d6ad5a89309c4"
      ],
      "author": {
        "name": "Cindy Liu",
        "email": "hcindyl@google.com",
        "time": "Tue Jan 02 16:51:14 2024 -0800"
      },
      "committer": {
        "name": "Cindy Liu",
        "email": "hcindyl@google.com",
        "time": "Tue Jan 02 16:51:14 2024 -0800"
      },
      "message": "Pin future-core version to 0.3.29\n\nWorkaround https://github.com/rust-lang/rust/issues/32976 from 0.3.30\n\nChange-Id: I14937c0e2139bd335ad1e3ea061c0c8160df28b4\n"
    },
    {
      "commit": "bab991e33278bd1885b8227a9b6d6ad5a89309c4",
      "tree": "41da5fa625dc8d5d57831d4d8386e8e645a39f45",
      "parents": [
        "b966f253257539b7f9d995c8c924959c08f3b93b"
      ],
      "author": {
        "name": "Cindy Liu",
        "email": "hcindyl@google.com",
        "time": "Tue Sep 27 12:57:20 2022 -0700"
      },
      "committer": {
        "name": "Cindy Liu",
        "email": "hcindyl@google.com",
        "time": "Tue Sep 27 21:00:02 2022 +0000"
      },
      "message": "Specify proc-macro2 version to 1.0.43\n\nAvoid breakage from newer versions\n\nFix: 249336146\nChange-Id: I59d0151a4f5b731bc40d3d131a5a214208cf1a88\n"
    },
    {
      "commit": "b966f253257539b7f9d995c8c924959c08f3b93b",
      "tree": "b0e336100a0fc3c4cf2c16b9088c15842759c964",
      "parents": [
        "328503a66be1c3741f6f86b0cf9a18c0c88af7cc"
      ],
      "author": {
        "name": "Austin Appleby",
        "email": "aappleby@google.com",
        "time": "Wed Jan 12 18:17:38 2022 -0800"
      },
      "committer": {
        "name": "Austin Appleby",
        "email": "aappleby@google.com",
        "time": "Thu Jan 13 16:16:53 2022 -0800"
      },
      "message": "Fix some more signed/unsigned errors in the Tock timer driver.\n\nTock was using non-raw syscalls for set/stop alarm, which is incorrect\nas the return value is a u32 and if the high bit is set, Tock\ninterprets that return value as an error.\n\nThere were also some time values declared as isize instead of usize -\nthis could potentially break things during timer overflow.\n\nChange-Id: I93563d6b8991ff545244f03aab05ad30506c41b5\n"
    },
    {
      "commit": "328503a66be1c3741f6f86b0cf9a18c0c88af7cc",
      "tree": "fe665365fdcfcfe66899bc2e4572244e797e2631",
      "parents": [
        "4dc242f93f9eab31f4ba7fc879830480d07b854c"
      ],
      "author": {
        "name": "Austin Appleby",
        "email": "aappleby@google.com",
        "time": "Mon Nov 29 17:33:38 2021 -0800"
      },
      "committer": {
        "name": "Austin Appleby",
        "email": "aappleby@google.com",
        "time": "Mon Nov 29 18:33:41 2021 -0800"
      },
      "message": "Switch timer syscalls that can\u0027t fail to use syscalls::raw - otherwise returning a 32-bit value with the high bit set gets interpreted as an error code by libtock-rs\n\nChange-Id: Id4fe3c1c91d6655a0e6686c5204756b54579a067\n"
    },
    {
      "commit": "4dc242f93f9eab31f4ba7fc879830480d07b854c",
      "tree": "8b29277a89cd9816d449c444efc7bee876c4eb09",
      "parents": [
        "bd119ba6d72ef9e1b05287dee0e0338c39364855"
      ],
      "author": {
        "name": "Austin Appleby",
        "email": "aappleby@google.com",
        "time": "Mon Oct 04 12:48:32 2021 -0700"
      },
      "committer": {
        "name": "Austin Appleby",
        "email": "aappleby@google.com",
        "time": "Tue Oct 05 14:40:06 2021 -0700"
      },
      "message": "There\u0027s a bug preventing us from booting TockOS in debug builds, so turn off all optimizations for TockOS app and increase stack size so it still runs.\n\nChange-Id: I5890ace6ce5f44d10e61fdc35bd6dcb887979906\n"
    },
    {
      "commit": "bd119ba6d72ef9e1b05287dee0e0338c39364855",
      "tree": "eeda9ba780d0f35fa243e0ea33952b04e637c8e7",
      "parents": [
        "5ffb6e193709e25b9060449804b45e9b4bd6e5f8"
      ],
      "author": {
        "name": "Austin Appleby",
        "email": "aappleby@google.com",
        "time": "Mon Oct 04 16:21:51 2021 -0700"
      },
      "committer": {
        "name": "Austin Appleby",
        "email": "aappleby@google.com",
        "time": "Mon Oct 04 16:21:51 2021 -0700"
      },
      "message": "Use wrapping_add when computing TockOS app start address so we don\u0027t panic in debug builds.\n\nChange-Id: Ic79f58efeec51b56fb53f232a90f302d52de35d1\n"
    },
    {
      "commit": "5ffb6e193709e25b9060449804b45e9b4bd6e5f8",
      "tree": "7b655d77a9e6f5f394c94fa1d8fa92676a854e4a",
      "parents": [
        "5a8619ca0af60e820ec0d7a5e95a407801ce761d"
      ],
      "author": {
        "name": "Austin Appleby",
        "email": "aappleby@google.com",
        "time": "Tue Sep 28 13:56:51 2021 -0700"
      },
      "committer": {
        "name": "Austin Appleby",
        "email": "aappleby@google.com",
        "time": "Tue Sep 28 14:29:00 2021 -0700"
      },
      "message": "Change TockOS app ram/flash sections to 8M each for debugging.\n\nChange-Id: I06f8875452e6b567f25e8a693422a3b6ccdc099f\n"
    },
    {
      "commit": "5a8619ca0af60e820ec0d7a5e95a407801ce761d",
      "tree": "972ad342cd51af7bdd1f88199e8b2388be15993e",
      "parents": [
        "e8eb189ceba99b0a4f29c349cbed757ea96b6114"
      ],
      "author": {
        "name": "Austin Appleby",
        "email": "aappleby@google.com",
        "time": "Thu Sep 23 16:05:22 2021 -0700"
      },
      "committer": {
        "name": "Austin Appleby",
        "email": "aappleby@google.com",
        "time": "Thu Sep 23 16:05:22 2021 -0700"
      },
      "message": "update .gitignore\n\nChange-Id: Ida605bda013f7189f5e42c83f741d39b9180984f\n"
    },
    {
      "commit": "e8eb189ceba99b0a4f29c349cbed757ea96b6114",
      "tree": "d61a0bfc94b3519c167578539305edc6fd6e1201",
      "parents": [
        "04c0dd5c385e04e6d61de8c2e4b42e6a6e670109",
        "dc1849513d569f0d02c90e24d62e48076f1df737"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Thu Apr 08 17:41:00 2021 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 08 17:41:00 2021 +0000"
      },
      "message": "Merge #284\n\n284: Move `libtock_platform` and `libtock_runtime` out of `core/`. r\u003dhudson-ayers a\u003djrvanwhy\n\n`libtock_platform` was originally built in `core/` because I intended to replace `libtock_core`\u0027s modules one-by-one with replacements built on `libtock_platform`. However, this plan changed when we decided to build the new `libtock-rs` directly against Tock 2.0 rather than Tock 1.0, as that made `libtock_core` and `libtock_platform` fundamentally incompatible.\r\n\r\nInstead, these crates should be in the root of the repository. When we remove Tock 1.0 support from `libtock-rs`, we will remove the `core/` directory entirely.\r\n\r\nTo make this change, I did:\r\n\r\n1. `git mv core/platform .`\r\n2. `git mv core/runtime .`\r\n3. Remove `core/` from the crate paths in `./Cargo.toml`\r\n4. Remove the `libtock_platform` dependency from `core/Cargo.toml`\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "dc1849513d569f0d02c90e24d62e48076f1df737",
      "tree": "d068d2c531da0ed23090bf8a3904a2b784858628",
      "parents": [
        "b687f0a01c8705c8c01ff35f521463c4513545be"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Apr 07 21:16:31 2021 -0700"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Apr 07 21:16:31 2021 -0700"
      },
      "message": "Move `libtock_platform` and `libtock_runtime` out of `core/`.\n\n`libtock_platform` was originally built in `core/` because I was intending to replace `libtock_core`\u0027s components one-by-one with replacements built on `libtock_platform`. However, this plan changed when we decided to build the new `libtock-rs` directly against Tock 2.0 rather than Tock 1.0, as that made `libtock_core` and `libtock_platform` fundamentally incompatible.\n\nInstead, these crates should be in the root of the repository. When we remove Tock 1.0 support from `libtock-rs`, we will remove the `core/` directory entirely.\n\nTo make this change, I did:\n\n1. `git mv core/platform .`\n2. `git mv core/runtime .`\n3. Remove `core/` from the crate paths in `./Cargo.toml`\n4. Remove the `libtock_platform` dependency from `core/Cargo.toml`\n"
    },
    {
      "commit": "04c0dd5c385e04e6d61de8c2e4b42e6a6e670109",
      "tree": "bbc578b95811415e5bf7cc6a7ab772882df50928",
      "parents": [
        "b687f0a01c8705c8c01ff35f521463c4513545be",
        "24b432ea918d096f79ddc84e382a66934d578934"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Thu Apr 08 04:07:48 2021 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Apr 08 04:07:48 2021 +0000"
      },
      "message": "Merge #283\n\n283: [RFC] `libtock-rs` crate organization r\u003dhudson-ayers a\u003djrvanwhy\n\n[Rendered](https://github.com/jrvanwhy/libtock-rs/blob/overview/doc/Overview.md)\r\n\r\nOverview gives a high-level view of the crates in the Tock 2.0 `libtock-rs`. It is intended to be a useful resource for newcomers to this repository.\r\n\r\nAll of the crates mentioned in this document exist at https://github.com/jrvanwhy/libtock-rs/tree/wip, and I am in the process of cleaning them up (adding tests + docs) and sending PRs to merge them here. I developed these crates in my fork because of a chicken-and-egg problem: all of these crates depend on [the rewritten `RawSyscalls`](https://github.com/tock/libtock-rs/pull/282), but I couldn\u0027t be sure my `RawSyscalls` design was correct until these crates were working.\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "b687f0a01c8705c8c01ff35f521463c4513545be",
      "tree": "7d70f8545e7d9b2f94275a793a9e3e5699b8d924",
      "parents": [
        "84c4bf25b784f26b9cac86faad9247a61ba6244b",
        "837f164fbdff96bfdf51c4980c669db95764c3dd"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Tue Apr 06 22:22:02 2021 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Apr 06 22:22:02 2021 +0000"
      },
      "message": "Merge #282\n\n282: Overhaul RawSyscalls to work with ARM, -Zmiri-track-raw-pointers, the revised Yield, and Exit. r\u003dalistair23 a\u003djrvanwhy\n\n1. RawSyscalls now supports Yield\u0027s new return value semantics as well as the `yield-no-wait` variant of Yield.\r\n2. RawSyscalls now supports Exit.\r\n3. RawSyscalls is now usable in Miri with the `-Zmiri-track-raw-pointers` flag.\r\n4. RawSyscalls can now be implemented on ARM: previously, `class` was a runtime value, but it needs to be an immediate value on ARM.\r\n5. The explanation for the design of RawSyscalls was completely overhauled. Instead of listing a bunch of \"design considerations\" with no connection to the final design, it shows how testing and efficiency considerations lead to its design. I hope the new description is more amenable to discussion. The new design should be a bit more future-proof than the previous design as well.\r\n\r\nThe new features added have been stabilized, and can be removed after https://github.com/tock/libtock-rs/pull/280 is merged.\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "24b432ea918d096f79ddc84e382a66934d578934",
      "tree": "488031e30f95a87fcd6514823ae2e945536424ff",
      "parents": [
        "4a213a7d6bb6b96edb27f6f1e5b9c522385d3350"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Apr 01 14:20:46 2021 -0700"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Apr 01 14:20:46 2021 -0700"
      },
      "message": "Typo fix (from code review suggestion), plus change `libtock` to support pluggable panic handler and optional dynamic memory allocation.\n\nI was under the impression that using cargo features was making our CI slow. That impression is incorrect -- cargo caches build artifacts with different feature combinations perfectly fine. We can use feature flags to allow `libtock` to support pluggable panic handlers and optional memory allocation.\n"
    },
    {
      "commit": "4a213a7d6bb6b96edb27f6f1e5b9c522385d3350",
      "tree": "9b3cf27652cf1c35e1afe65e9ae83918dbafe92a",
      "parents": [
        "84c4bf25b784f26b9cac86faad9247a61ba6244b"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Mar 31 20:02:46 2021 -0700"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Mar 31 20:15:17 2021 -0700"
      },
      "message": "Add an Overview doc.\n\nOverview gives a high-level view of the crates in the Tock 2.0 libtock-rs. Not all of these crates have been merged into this repository yet, but all of them are a work in progress.\n"
    },
    {
      "commit": "837f164fbdff96bfdf51c4980c669db95764c3dd",
      "tree": "7d70f8545e7d9b2f94275a793a9e3e5699b8d924",
      "parents": [
        "c877a6c44324b0135017ab1e1300c0d666746c84"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Mar 31 14:11:20 2021 -0700"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Mar 31 14:11:20 2021 -0700"
      },
      "message": "Migrate RawSyscalls\u0027 inputs and outputs to arrays.\n\nI didn\u0027t originally think of using pattern matching to avoid indexing in RawSyscalls\u0027 implementations, which made me avoid using ararys. This switches the code over to using arrays, which simplifies the design of RawSyscalls a bit.\n"
    },
    {
      "commit": "c877a6c44324b0135017ab1e1300c0d666746c84",
      "tree": "fd5f921b7d08177a248c8355c90b94f11ee32818",
      "parents": [
        "29e7747b1d3c4f389ddb66a7d7038e9f1849870a"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Mar 31 13:56:24 2021 -0700"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Mar 31 13:56:24 2021 -0700"
      },
      "message": "Move yield_no_wait\u0027s flag init out of `unsafe`.\n\nTurns out core::mem::MaybeUninit::uninit is not `unsafe`!\n"
    },
    {
      "commit": "29e7747b1d3c4f389ddb66a7d7038e9f1849870a",
      "tree": "1831f804c2878959bcd789e4eca6db8ac84c6674",
      "parents": [
        "52f654fd91447bb361a8db02ef1ccc4cd5d77be3",
        "84c4bf25b784f26b9cac86faad9247a61ba6244b"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Mar 31 13:41:03 2021 -0700"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Mar 31 13:41:03 2021 -0700"
      },
      "message": "Merge branch \u0027master\u0027 into raw-syscalls\n\nI cleaned up the #![feature(min_const_generics)] statements because the toolchain update made them unnecessary.\n"
    },
    {
      "commit": "84c4bf25b784f26b9cac86faad9247a61ba6244b",
      "tree": "5777e31c5c768f94426fcb4a1c47aa09918da96f",
      "parents": [
        "c436ffe44ded235afbeb71cff49d6e9cf4ca25fa",
        "480616c7c872a1bea7031dac0ae57da8ca40d106"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Wed Mar 31 14:51:27 2021 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Mar 31 14:51:27 2021 +0000"
      },
      "message": "Merge #281\n\n281: Run Miri with more flag combinations, and add a Miri Tips doc. r\u003dalistair23 a\u003djrvanwhy\n\n[Rendered doc](https://github.com/jrvanwhy/libtock-rs/blob/miri-flags/doc/MiriTips.md)\r\n\r\nThis runs code under Miri with the `-Zmiri-symbolic-alignment-check` flag, as well as both with and without `-Zmiri-track-raw-pointers`. This identifies a lot of \"gray area\" behavior -- that may or may not become specified as undefined behavior in the future -- as undefined behavior.\r\n\r\nI also added a tip on how to write tests that identify undefined behavior that Miri doesn\u0027t catch by default, such as having uninitialized values in local variables. The documentation tip will be used in the `libtock_unittest` crate as well as per-crate unit tests.\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "c436ffe44ded235afbeb71cff49d6e9cf4ca25fa",
      "tree": "2d7de48a7e60e3d2f1377ab05e29469477af84aa",
      "parents": [
        "d620f96b89a1f9561fdf880c33e427b6e0475586"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Mar 29 21:42:59 2021 -0700"
      },
      "committer": {
        "name": "Alistair Francis",
        "email": "alistair@alistair23.me",
        "time": "Wed Mar 31 10:39:29 2021 -0400"
      },
      "message": "Update the Rust toolchain to 2021-03-25.\n\nThis includes https://github.com/rust-lang/rust/pull/82141, which is needed in order to add ARM support to libtock_runtime. It also allows us to use the unsafe_op_in_unsafe_fn lint.\n"
    },
    {
      "commit": "52f654fd91447bb361a8db02ef1ccc4cd5d77be3",
      "tree": "016b4a1cb25575838fa68d28afbbee297dc06083",
      "parents": [
        "d620f96b89a1f9561fdf880c33e427b6e0475586"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Mar 30 18:51:11 2021 -0700"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Mar 30 20:13:51 2021 -0700"
      },
      "message": "Overhaul RawSyscalls to work with ARM, -Zmiri-track-raw-pointers, the revised Yield, and Exit.\n\n1. RawSyscalls now supports Yield\u0027s new return value semantics as well as the yield-no-wait variant of Yield.\n2. RawSyscalls now supports Exit.\n3. RawSyscalls is now usable in Miri with the `-Zmiri-track-raw-pointers` flag.\n4. RawSyscalls can now be implemented on ARM: previously, `class` was a runtime value, but it needs to be an immediate value on ARM.\n5. The explanation for the design of RawSyscalls was completely overhauled. Instead of listing a bunch of \"design considerations\" with no connection to the final design, it shows how testing and efficiency considerations incrementally lead to its design. The new design should be a bit more future-proof than the previous design as well.\n"
    },
    {
      "commit": "480616c7c872a1bea7031dac0ae57da8ca40d106",
      "tree": "69fcd4cc5f851c2aaab746b588903eae08e913fb",
      "parents": [
        "d620f96b89a1f9561fdf880c33e427b6e0475586"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Mar 30 13:03:42 2021 -0700"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Mar 30 13:03:42 2021 -0700"
      },
      "message": "Run Miri twice, with two different flag sets, and add documentation on using Miri to identify as much undefined behavior as possible.\n"
    },
    {
      "commit": "d620f96b89a1f9561fdf880c33e427b6e0475586",
      "tree": "124ca0a6cd401af0370095b6897d0675b4574364",
      "parents": [
        "5e8531288e93a423a460ccc4aa74e0542851d912",
        "b7b53d6ba78bfde91416bc0591050b01fe6620b7"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Tue Mar 30 15:43:12 2021 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Mar 30 15:43:12 2021 +0000"
      },
      "message": "Merge #279\n\n279: Fix the build by avoiding `bitvec` 0.18.5. r\u003dalistair23 a\u003djrvanwhy\n\n`bitvec` 0.18.5 pulls in `radium` 0.3.0, which does not support platforms without atomics. Pulling in `bitvec` 0.18.4 brings in `radium` 0.4 instead (was there a bug in 0.4?) which restores our build.\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "b7b53d6ba78bfde91416bc0591050b01fe6620b7",
      "tree": "124ca0a6cd401af0370095b6897d0675b4574364",
      "parents": [
        "5e8531288e93a423a460ccc4aa74e0542851d912"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Mar 29 20:22:41 2021 -0700"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Mar 29 20:22:41 2021 -0700"
      },
      "message": "Fix the build by avoiding bitvec 0.18.5.\n\nbitvec 0.18.5 pulls in radium 0.3.0, which does not support platforms without atomics. Pulling in bitvec 0.18.4 brings in radium 0.4 instead (was there a bug in 0.4?) which restores our build.\n"
    },
    {
      "commit": "5e8531288e93a423a460ccc4aa74e0542851d912",
      "tree": "bc62dd4ae30cc4bde3942145d8c2dc223d6459fa",
      "parents": [
        "7f9305501c6b10a257a9cadc3db7cab5427e6145",
        "62bfa2ca3faed032a623f7edc9d45b4908521438"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Mar 29 19:39:08 2021 -0700"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Mar 29 19:39:08 2021 -0700"
      },
      "message": "Merge pull request #278 from jrvanwhy/platform-update\n\nUpdate the status of the Platform Design Story document."
    },
    {
      "commit": "62bfa2ca3faed032a623f7edc9d45b4908521438",
      "tree": "bc62dd4ae30cc4bde3942145d8c2dc223d6459fa",
      "parents": [
        "7f9305501c6b10a257a9cadc3db7cab5427e6145"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Mar 29 14:41:09 2021 -0700"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Mar 29 14:41:09 2021 -0700"
      },
      "message": "Update the status of the Platform Design Story document.\n\nThe rewritten `libtock-rs` no longer exists only in my head, it is working. I am implementing more tests to make sure the core abstractions (such as RawSyscalls) are all sound, and then I will break it into smaller pieces for review. I will write more docs and tests as I send each piece for review.\n"
    },
    {
      "commit": "7f9305501c6b10a257a9cadc3db7cab5427e6145",
      "tree": "7c861392abbe103eaa06ed8c1a8a4a14df02000a",
      "parents": [
        "ab322593a6c6ceda6b5d1a93a9aa9eef4dcd9cc6",
        "de3314a497a5b86270d7742a59506646d301a028",
        "d11dc52201faf2d363036d5d1afe8fca3d40f2a0"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Fri Feb 12 18:41:42 2021 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 12 18:41:42 2021 +0000"
      },
      "message": "Merge #275 #276\n\n275: Add `libtock_runtime` startup code. r\u003dalistair23 a\u003djrvanwhy\n\nThis includes:\r\n\r\n1. `rust_start`: The first Rust code to run in a process\r\n1. `set_main!`: Used to specify `main` in a process binary\r\n1. `stack_size!`: Used to specify the stack size in a process binary\r\n1. Documentation of the startup sequence, including the 3 above steps.\r\n\r\nThe documentation refers to a two things that haven\u0027t been implemented yet:\r\n1. Debug syscalls performed by `rust_start` -- unimplemented because `memop` is\r\n   still unimplemented.\r\n1. The `exit` system call.\n\n276: Add a tock2 submodule with a tock-2.0-dev kernel. r\u003dalistair23 a\u003djrvanwhy\n\nI intend to use this kernel in integration tests for the Tock 2.0 crates. When we are ready to remove Tock 1.x support, I will remove the duplicate submodule.\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "ab322593a6c6ceda6b5d1a93a9aa9eef4dcd9cc6",
      "tree": "5786979a3523a4351307ee15136c007ddcf62641",
      "parents": [
        "d8770033568cbb77895169163155d85aba73bed5",
        "a57fdfc49b3a3c3ad0f3c86daaeba4493dbd63a1"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Fri Feb 12 18:27:20 2021 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 12 18:27:20 2021 +0000"
      },
      "message": "Merge #274\n\n274: Add `start_prototype`, a tool used for writing entry point assembly. r\u003dalistair23 a\u003djrvanwhy\n\nThis is a Rust version of the entry point. Using it directly is undefined behavior for multiple reasons (Rust assumes the stack is setup and the globals are initialized), but it can be a useful reference while working on a real (assembly) entry point.\r\n\r\n**Question for reviewers:** Do you think this belongs in the repository?\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "d8770033568cbb77895169163155d85aba73bed5",
      "tree": "ec072e26d875afa854b8d97a4fdd4a75fa075cfe",
      "parents": [
        "28913fdd14162f687c667b4e754ee8f07737b7ea",
        "f908a63f66bd026e76d0e26d36b79936793bc70c"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Fri Feb 12 01:52:53 2021 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Feb 12 01:52:53 2021 +0000"
      },
      "message": "Merge #273\n\n273: Make ErrorCode an enum that exactly represents the ErrorCode values the kernel can return. r\u003dhudson-ayers a\u003djrvanwhy\n\nI previously made `ErrorCode` a struct that can represent any `u32` value because it was unclear what values future Tock versions may return. The Tock 2.0 TRD now says that the kernel will never return an error code of 0 or an error code greater than 1023, so we can rely on that.\r\n\r\nThis has the benefit of enabling niche optimizations on the type. The zero value is now a usable niche (zero being the most efficient value to compare against in many cases), as well as all values above 1023.\r\n\r\nThere are two drawbacks to this approach:\r\n\r\n1. 3 more uses of `unsafe` in `CommandReturn`, maybe a few extra uses in the `Syscalls` implementation.\r\n2. A huge block of reserved numbers in `ErrorCode`.\r\n\r\nI used the following code to generate the number block, and vim commands to format it:\r\n```\r\nfn main() {\r\n    for i in 1..\u003d1023 {\r\n        print!(\"N{:05} \u003d {:05}, \", i, i);\r\n        if i % 5 \u003d\u003d 0 { println!(); }\r\n    }\r\n}\r\n```\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "de3314a497a5b86270d7742a59506646d301a028",
      "tree": "a1ffd2c304208826b890a6f2fa1301622c1c90e8",
      "parents": [
        "3169175f4e8c9f75057c77d7d63dc841e3036df2"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Feb 09 22:25:58 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Feb 09 22:25:58 2021 -0800"
      },
      "message": "Clarify that looping forever is an acceptable process behavior.\n"
    },
    {
      "commit": "28913fdd14162f687c667b4e754ee8f07737b7ea",
      "tree": "9dedcbf92098e6f251fd8c52955cbb466b0fb240",
      "parents": [
        "eff585190aca2ba62872eae3623667fda95f4d36",
        "9b7a489f451a54fab6f6534a3b4a48c532726dcb"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Tue Feb 09 23:10:32 2021 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 09 23:10:32 2021 +0000"
      },
      "message": "Merge #272\n\n272: Add the RISC-V entry point assembly to libtock_runtime r\u003dhudson-ayers a\u003djrvanwhy\n\nTo support the entry point assembly, I rewrote the linker script ([link to the new version](https://github.com/jrvanwhy/libtock-rs/blob/riscv-asm/core/runtime/layout_generic.ld) in case you don\u0027t want to see the diff).\r\n\r\nThe rust toolchain is unable to compile raw assembly files on its own. I don\u0027t want a separate toolchain to be a build requirement of `libtock-rs`, so instead I committed the compiled library into the repository. To keep the compiled library and source code in sync, I added an actions workflow that verifies the compiled library matches the provided sources.\r\n\r\nThere is one part of this PR I am unhappy with. I have to manually `strip` local symbols from the compiled library -- i.e., removing the `riscv64-linux-gnu-strip` invocation from `assemble.sh` gives the following:\r\n\r\n```\r\nDisassembly of section .start:\r\n\r\n00000000 \u003cstart\u003e:\r\n   0:   00000417                auipc   s0,0x0\r\n   4:   87aa                    mv      a5,a0\r\n   6:   4384                    lw      s1,0(a5)\r\n   8:   00940c63                beq     s0,s1,20 \u003c.Lset_brk\u003e\r\n   c:   4521                    li      a0,8\r\n   e:   4585                    li      a1,1\r\n  10:   4609                    li      a2,2\r\n  12:   4709                    li      a4,2\r\n  14:   00000073                ecall\r\n  18:   4501                    li      a0,0\r\n  1a:   4719                    li      a4,6\r\n  1c:   00000073                ecall\r\n\r\n00000020 \u003c.Lset_brk\u003e:\r\n  20:   4501                    li      a0,0\r\n  22:   43cc                    lw      a1,4(a5)\r\n  24:   4715                    li      a4,5\r\n  26:   00000073                ecall\r\n  2a:   0087a103                lw      sp,8(a5)\r\n  2e:   47c8                    lw      a0,12(a5)\r\n  30:   c909                    beqz    a0,42 \u003c.Lzero_bss\u003e\r\n  32:   4b8c                    lw      a1,16(a5)\r\n  34:   4bd0                    lw      a2,20(a5)\r\n\r\n00000036 \u003c.Ldata_loop_body\u003e:\r\n  36:   4194                    lw      a3,0(a1)\r\n  38:   c214                    sw      a3,0(a2)\r\n  3a:   1571                    addi    a0,a0,-4\r\n  3c:   0591                    addi    a1,a1,4\r\n  3e:   0611                    addi    a2,a2,4\r\n  40:   f97d                    bnez    a0,36 \u003c.Ldata_loop_body\u003e\r\n\r\n00000042 \u003c.Lzero_bss\u003e:\r\n  42:   4f88                    lw      a0,24(a5)\r\n  44:   c519                    beqz    a0,52 \u003c.Lcall_rust_start\u003e\r\n  46:   4fcc                    lw      a1,28(a5)\r\n\r\n00000048 \u003c.Lbss_loop_body\u003e:\r\n  48:   00058023                sb      zero,0(a1)\r\n  4c:   157d                    addi    a0,a0,-1\r\n  4e:   0585                    addi    a1,a1,1\r\n  50:   fd65                    bnez    a0,48 \u003c.Lbss_loop_body\u003e\r\n\r\n00000052 \u003c.Lcall_rust_start\u003e:\r\n  52:   fafff0ef                jal     ra,0 \u003cstart\u003e\r\n```\r\n\r\nI\u0027d appreciate advice on how to prevent `riscv64-linux-gnu-as` from including the local symbols in its output.\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "eff585190aca2ba62872eae3623667fda95f4d36",
      "tree": "de55c7cf573b5feece4d04bfc8c3c46cb477c8af",
      "parents": [
        "dab5817bcf2b0f9db645bbba5cc6f9c71e9c0e38",
        "f55bea7c2fd1a91106ed8458aa5d4e1054cbeed9"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Tue Feb 09 18:26:22 2021 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Feb 09 18:26:22 2021 +0000"
      },
      "message": "Merge #271\n\n271: Allow warnings during local development r\u003dalistair23 a\u003djrvanwhy\n\nThis keep\u0027s CI\u0027s behavior where it errors if libtock-rs has warnings.\r\n\r\nThis is a second attempt at PR #270. We can\u0027t specify `RUSTFLAGS` directly because doing so overrides all `rustflags` configurations in `.cargo/config`. Those `rustflags` configs are important because they configure relocation and set the linker script. Instead, I append the `\"deny warnings\"` config to `.cargo/config` in CI itself.\r\n\r\nI tested this by opening two PRs in my fork: [one to test that this PR still builds](https://github.com/jrvanwhy/libtock-rs/pull/15), and [one to test it fails if a warning is present](https://github.com/jrvanwhy/libtock-rs/pull/13).\r\n\r\nI am not terribly happy with this solution (feels really hacky rather than kinda hacky), so any alternative implementation ideas would be appreciated!\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "9b7a489f451a54fab6f6534a3b4a48c532726dcb",
      "tree": "7fa9be0761879c208574c94fb91cc6c5e8080dc7",
      "parents": [
        "b95ec58b2aa0e6ef9bd2fdf43054543b8892e4d2"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Sun Feb 07 15:35:13 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Sun Feb 07 15:35:13 2021 -0800"
      },
      "message": "Remove Mac OS testing from the Bors merge flow.\n\nIt takes over an hour to run. It\u0027s unlikely to break if the main CI (Linux) passes, so running it during code review should be enough.\n\nI also renamed it from mac_os to mac-os to be more consistent with size-diff and tock/tock\u0027s workflows.\n"
    },
    {
      "commit": "d11dc52201faf2d363036d5d1afe8fca3d40f2a0",
      "tree": "6b9b3734acd2dd598e1783d2cd7845b9e96b952d",
      "parents": [
        "dab5817bcf2b0f9db645bbba5cc6f9c71e9c0e38"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Dec 16 17:41:22 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Feb 05 18:28:25 2021 -0800"
      },
      "message": "Add a tock2 submodule with a tock-2.0-dev kernel, for use in integration tests.\n\ntock2 will be removed when we are ready to delete Tock 1.x support.\n"
    },
    {
      "commit": "a57fdfc49b3a3c3ad0f3c86daaeba4493dbd63a1",
      "tree": "245dcfb4387d7b14545924fd2a2a063eeca3f8a6",
      "parents": [
        "2d203f6109b914f858a2c4ddab42f7aaa8f34b70"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Feb 05 17:52:11 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Feb 05 17:52:11 2021 -0800"
      },
      "message": "Move start_prototype into asm/ and make the note that it is not compiled more prominent.\n"
    },
    {
      "commit": "3169175f4e8c9f75057c77d7d63dc841e3036df2",
      "tree": "043a8449c3dc1c7ecb4b2599db4a5dfe8d257131",
      "parents": [
        "dab5817bcf2b0f9db645bbba5cc6f9c71e9c0e38"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Feb 05 17:02:32 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Feb 05 17:42:08 2021 -0800"
      },
      "message": "Add `libtock_runtime` startup code.\n\nThis includes:\n\n1. `rust_start`: The first Rust code to run in a process\n1. `set_main!`: Used to specify `main` in a process binary\n1. `stack_size!`: Used to specify the stack size in a process binary\n1. Documentation of the startup sequence, including the 3 above steps.\n\nThe documentation refers to a two things that haven\u0027t been implemented yet:\n1. Debug syscalls performed by `rust_start` -- unimplemented because `memop` is\n   still unimplemented.\n1. The `exit` system call.\n"
    },
    {
      "commit": "2d203f6109b914f858a2c4ddab42f7aaa8f34b70",
      "tree": "c75f4dc7094e7bacf367875c610306fae4b97bf2",
      "parents": [
        "dab5817bcf2b0f9db645bbba5cc6f9c71e9c0e38"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Feb 05 16:37:59 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Feb 05 16:37:59 2021 -0800"
      },
      "message": "Add start_prototype, a tool used for writing entry point assembly.\n\nThis is a Rust version of the entry point. Using it directly is undefined behavior for multiple reasons (Rust assumes the stack is setup and the globals are initialized), but it can be a useful reference while working on a real (assembly) entry point.\n"
    },
    {
      "commit": "b95ec58b2aa0e6ef9bd2fdf43054543b8892e4d2",
      "tree": "d3aa0c612e973cc93db0bbc5596f5e19c4516ec8",
      "parents": [
        "59935c54b9b00dd15f47044517d13dabc78f0019"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Feb 05 11:56:35 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Feb 05 11:56:35 2021 -0800"
      },
      "message": "More asm comments, riscv32-unknown-elf support, action cleanup, stack align fix.\n"
    },
    {
      "commit": "59935c54b9b00dd15f47044517d13dabc78f0019",
      "tree": "a5a12d78cf5d1c54796fb41acbc3a75df74f5382",
      "parents": [
        "307a2b19480482238d730c782291eea42176b66a"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Feb 04 23:02:31 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Feb 04 23:02:31 2021 -0800"
      },
      "message": "Trim down the Mac OS CI to just a `cargo build` on libtock_runtime.\n\nThe Mac runner took over 1 hour 15 minutes to build QEMU (and it didn\u0027t even succeed), so I don\u0027t think running `make setup` on Mac OS is reasonable. Shrink its test to `cargo build -p libtock_runtime`, which should be relatively simple and test the most critical items.\n\nIn the future, we\u0027ll probably want to point it at a more substantial crate, but libtock_runtime is our best option for now.\n"
    },
    {
      "commit": "f908a63f66bd026e76d0e26d36b79936793bc70c",
      "tree": "1a69fb1db24a00018e4206ff82f49c60b4185766",
      "parents": [
        "dab5817bcf2b0f9db645bbba5cc6f9c71e9c0e38"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Feb 04 21:46:07 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Feb 04 21:46:07 2021 -0800"
      },
      "message": "Make ErrorCode an enum that exactly represents the ErrorCode values the kernel can return.\n\nI previously made ErrorCode a struct that can represent any u32 value because it was unclear what values future Tock versions may return. The Tock 2.0 TRD now says that the kernel will never return an error code of 0 or an error code greater than 1023, so we can rely on that.\n\nThis has the benefit of enabling niche optimizations on the type. The zero value is now a usable niche (zero being the most efficient value to compare against in many cases), as well as all values above 1023.\n\nThere are two drawbacks to this approach:\n\n1. 3 more uses of `unsafe` in CommandReturn, maybe a few extra uses in the Syscalls implementation.\n2. A huge block of reserved numbers in ErrorCode.\n\nI used the following code to generate the number block, and vim commands to format it:\n```\nfn main() {\n    for i in 1..\u003d1023 {\n        print!(\"N{:05} \u003d {:05}, \", i, i);\n        if i % 5 \u003d\u003d 0 { println!(); }\n    }\n}\n```\n"
    },
    {
      "commit": "307a2b19480482238d730c782291eea42176b66a",
      "tree": "9fbd5a084b193a085f8630cb37192c6352a18d70",
      "parents": [
        "29d3d156ef76282e6e9609500cb843401a8cd6d4"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Feb 04 19:24:35 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Feb 04 19:24:35 2021 -0800"
      },
      "message": "Update workflows to Ubuntu 20.04, as 18.04 does not have the RISC-V toolchain we need.\n"
    },
    {
      "commit": "29d3d156ef76282e6e9609500cb843401a8cd6d4",
      "tree": "01a72df66df11f801f08600ab6f75fa01fd5136f",
      "parents": [
        "7b21a6df8dbbdb04bb01c66ae3fd53a53b7d943c"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Feb 04 19:18:31 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Feb 04 19:18:31 2021 -0800"
      },
      "message": "Migrate the assembler invocation into build.rs, and deal with the fallout.\n\nReview feedback indicated I should build libtock_runtime\u0027s external assembly files in build.rs rather than checking in a compiled binary. I added the compilation logic to build.rs and removed the assembly script and GitHub workflow.\n\nAdding the compilation logic exposed a layout configuration bug: rust-lld was still picking up generic_layout.ld from the root of the repository! I realize now that the linker script namespace is global rather than relative. As such, I renamed the file to \"libtock_layout.ld\", so as to prevent collisions with libtock-rs\u0027 generic_layout and application repositorys\u0027 files. This revealed that I never updated the per-board layout scripts to work with the new layout, so I made that change as well.\n\nNow that `build.rs` correctly fails when you try to build `libtock_runtime` for unsupported architectures (e.g. x86_64), the clippy and miri invocations in `make test` fail. I reconfigured them so they pass and test all platform-independent crates.\n\nLast, I added a Mac OS workflow to see if the changes are compatible with Mac OS. I expect this to take some more revision.\n"
    },
    {
      "commit": "7b21a6df8dbbdb04bb01c66ae3fd53a53b7d943c",
      "tree": "c3d1466859e5bede68ef9952438874b39955cd6e",
      "parents": [
        "b897690b6714d05fb3f92b398aeb47b9514ad52b"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Feb 03 18:04:29 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Feb 03 18:04:29 2021 -0800"
      },
      "message": "Address review comments on labels and the rust_start call, plus add \"assembly\" to Bors.\n"
    },
    {
      "commit": "b897690b6714d05fb3f92b398aeb47b9514ad52b",
      "tree": "0af74aac61501c5583864502ada8f71f8eeffa73",
      "parents": [
        "dab5817bcf2b0f9db645bbba5cc6f9c71e9c0e38"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Feb 01 15:01:45 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Feb 02 15:12:44 2021 -0800"
      },
      "message": "Add the RISC-V entry point assembly to libtock_runtime, and a workflow to verify it is included correctly.\n"
    },
    {
      "commit": "f55bea7c2fd1a91106ed8458aa5d4e1054cbeed9",
      "tree": "de55c7cf573b5feece4d04bfc8c3c46cb477c8af",
      "parents": [
        "dab5817bcf2b0f9db645bbba5cc6f9c71e9c0e38"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Feb 02 11:29:59 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Feb 02 11:29:59 2021 -0800"
      },
      "message": "Allow warnings during local development, but keep CI\u0027s current behavior where it errors if libtock-rs has warnings.\n\nThis is a second attempt at PR #270. We can\u0027t specify RUSTFLAGS directly because doing so overrides all rustflags configurations in .cargo/config. Those rustflags configs are important because they configure relocation and set the linker script. Instead, I append the \"deny warnings\" config to .cargo/config in CI itself.\n"
    },
    {
      "commit": "dab5817bcf2b0f9db645bbba5cc6f9c71e9c0e38",
      "tree": "953f244903e68eba176dcad2f25e8f3ec4e4a32a",
      "parents": [
        "f0570dbe98f19a958649f0d2e40467611c673ea9",
        "b95a7a189eb403df51be1b9d7f50e9a59862f46c"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Fri Jan 29 19:19:09 2021 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 29 19:19:09 2021 +0000"
      },
      "message": "Merge #269\n\n269: Implement system calls on RISC-V in libtock_runtime. r\u003dphil-levis a\u003djrvanwhy\n\nThis introduces `TockSyscalls`, which implements `libtock_platform::RawSyscalls`. The blanket impl of `libtock_platform::Syscalls` in `libtock_platform` gives `TockSyscalls` a `Syscalls` implementation. I will implement ARM system calls in a future PR.\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "b95a7a189eb403df51be1b9d7f50e9a59862f46c",
      "tree": "953f244903e68eba176dcad2f25e8f3ec4e4a32a",
      "parents": [
        "6b143cbd86dde9f5cba817adc9875b17d893290c"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Jan 29 09:42:06 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Jan 29 09:42:06 2021 -0800"
      },
      "message": "Core WG meeting 2021-01-29 conclusion: document that `RawSyscalls`\u0027 methods should only be called by `libtock_platform`.\n\nThis is to reduce the amount of churn caused by changes to `RawSyscalls`, in anticipation of future changes to support 64-bit platforms.\n"
    },
    {
      "commit": "6b143cbd86dde9f5cba817adc9875b17d893290c",
      "tree": "10f4663b6223b3b6cb2a979abc96f5b67472efa1",
      "parents": [
        "afb88057972bf097369fd3abb6f9951161958d28"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Jan 22 12:25:06 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Jan 22 12:25:06 2021 -0800"
      },
      "message": "Remove an unnecessary lint workaround and comment register ABI names.\n"
    },
    {
      "commit": "afb88057972bf097369fd3abb6f9951161958d28",
      "tree": "a0d7925274a152abbf9eb17631a7af67892cd901",
      "parents": [
        "f0570dbe98f19a958649f0d2e40467611c673ea9"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Jan 21 23:29:12 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Jan 21 23:29:12 2021 -0800"
      },
      "message": "Implement system calls on RISC-V in libtock_runtime.\n\nThis introduces `TockSyscalls`, which implements `libtock_platform::Syscalls` indirectly by directly implementing `libtock_platform::RawSyscalls`. I will implement ARM system calls in a future PR.\n"
    },
    {
      "commit": "f0570dbe98f19a958649f0d2e40467611c673ea9",
      "tree": "1f91f208a83953eaf632f636f9461795a93fef96",
      "parents": [
        "968fe6ba8984ec7ed1e515f90a701029ae67571a",
        "fdd0c3622d05a0bff9e0f4b7b1812df218dca291"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Tue Jan 19 22:48:30 2021 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Jan 19 22:48:30 2021 +0000"
      },
      "message": "Merge #268\n\n268: Add the libtock_runtime crate and platform switching. r\u003dhudson-ayers a\u003djrvanwhy\n\nThis is the first `libtock_runtime` PR. It contains:\r\n\r\nA. `Cargo.toml` for `libtock_runtime`\r\nB. Automatic linker script identification.\r\n\r\nThe automatic linker script identification is based on `libtock-rs`\u0027s current `build.rs` (in the root of the repository), but makes the following improvements:\r\n\r\nA. Better supports out-of-tree platforms by adding a cargo feature to disable linker script identification. `libtock-rs`\u0027s build.rs always emits a warning of the PLATFORM variable is not specified.\r\nB. Improves error handling, particularly around builds in paths we cannot support (e.g. if `cargo` is executed in a directory whose name contains a newline character).\r\nC. Moves the layout file location into `cargo`\u0027s `OUT_DIR`, which is the only directory build scripts are *supposed* to modify.\r\nD. Removes support for the `platform` file to select a platform. `libtock-rs` looked for a `platform` file in its own source to identify the platform it is run in -- I\u0027m not really sure how this was supposed to be used.\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "fdd0c3622d05a0bff9e0f4b7b1812df218dca291",
      "tree": "1f91f208a83953eaf632f636f9461795a93fef96",
      "parents": [
        "90b9220f554fb7675181f0543c2c77287c8b6dac"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Jan 19 14:32:06 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Jan 19 14:32:06 2021 -0800"
      },
      "message": "Replace `if ... { panic!() }` with `assert!()`.\n"
    },
    {
      "commit": "90b9220f554fb7675181f0543c2c77287c8b6dac",
      "tree": "248468aa7eb37585f4c33fdd7f82ec7153511ccd",
      "parents": [
        "921b4a408cb2ce50e4eb8336ce41c398c805566b"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Jan 13 21:44:30 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Jan 13 21:44:30 2021 -0800"
      },
      "message": "Update libtock\u0027s build script to not conflict with libtock_runtime\u0027s build script and remove the broken empty_main example.\n\nI made changes to libtock_runtime\u0027s linker scripts and the changes were not having any effect.\n\nExplanation: According to the cargo reference, build scripts should only write to OUT_DIR [1]. This is not enforced, and libtock\u0027s build script wrote `layout.ld` directly in `libtock`\u0027s source directory. This works for libtock because rust-lld is executed in the cargo workspace directory, which is libtock\u0027s source directory, so the linker was able to find layout.ld. However, after libtock has been build once, when the linker runs for libtock_runtime, there are two layout.ld files present: the file in OUT_DIR from libtock_runtime\u0027s build script and a leftover layout.ld file from the last time libtock was compiled. The linker selected the layout.ld file in the libtock package, which is not the one we wanted it to select. There isn\u0027t a way to change this behavior by the linker.\n\nTo avoid this, I changed libtock\u0027s build script to copy its layout.ld into OUT_DIR, isolating it from libtock_runtime. I also removed layout.ld from .gitignore. So that the include from layout.ld to layout_generic.ld works, I also made it copy layout_generic.ld into OUT_DIR (the same way libtock_runtime\u0027s new build script works).\n\nThis then broke libtock_core\u0027s example, `empty_main`. libtock_core does not have a linker script mechanism, and its build was relying on the presence of layout.ld from libtock\u0027s build script. This is a bug, and was never caught.\n\nI added the `empty_main` example before I redirected my libtock_platform efforts at Tock 2.0. At that time, I was planning to add libtock_runtime to libtock_core. However, when I changed my libtock_platform efforts to the Tock 2.0 ABI, it was no longer possible to add libtock_runtime to libtock_core. It also means that empty_main isn\u0027t very useful (it measures the size of code I\u0027m replacing rather than refactoring), so I deleted it.\n\n[1] https://doc.rust-lang.org/cargo/reference/build-scripts.html#outputs-of-the-build-script\n"
    },
    {
      "commit": "921b4a408cb2ce50e4eb8336ce41c398c805566b",
      "tree": "f3cb13b23378b63c216bc90d1aa3d37168811fbc",
      "parents": [
        "6c8be576da319466693fea39d12ac4c1e3fc48fb"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Jan 11 16:45:57 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Jan 11 16:45:57 2021 -0800"
      },
      "message": "Specify LIBTOCK_PLATFORM in `make test` so `libtock_runtime` builds.\n"
    },
    {
      "commit": "6c8be576da319466693fea39d12ac4c1e3fc48fb",
      "tree": "56058e44ae2ed0ed03b58ce0760d168851e434f8",
      "parents": [
        "97650627ddf30596c76a24d487e6050c1b407505"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Jan 11 16:39:13 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Jan 11 16:39:13 2021 -0800"
      },
      "message": "cargo fmt\n"
    },
    {
      "commit": "97650627ddf30596c76a24d487e6050c1b407505",
      "tree": "3f07e71b2aa5337f5a4cc85447ea73a864338dea",
      "parents": [
        "968fe6ba8984ec7ed1e515f90a701029ae67571a"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Jan 11 16:18:30 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Jan 11 16:24:16 2021 -0800"
      },
      "message": "Add the libtock_runtime crate and platform switching.\n"
    },
    {
      "commit": "968fe6ba8984ec7ed1e515f90a701029ae67571a",
      "tree": "9cc2aa530f591517a00c067f13db160e80709eb8",
      "parents": [
        "78055f22e910cfe26e021edca4c6af19d9b256fc",
        "ffc52a31beac9613f778e411e5f85e37a8223dbd"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Fri Jan 08 19:08:30 2021 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Jan 08 19:08:30 2021 +0000"
      },
      "message": "Merge #267\n\n267: Add the `CommandReturn` type. r\u003dhudson-ayers a\u003djrvanwhy\n\nThe `command` system call will return a `CommandReturn`. `CommandReturn` is practically free to construct and contains methods that allow drivers to interpret the register values it contains.\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "ffc52a31beac9613f778e411e5f85e37a8223dbd",
      "tree": "43a26825c157312f25386591ec1388e504b48489",
      "parents": [
        "1ea7b5f78c966ae9a98300f82c3a2c6eff9d85ca"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Jan 08 10:39:56 2021 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Jan 08 10:39:56 2021 -0800"
      },
      "message": "Rename ReturnType to ReturnVariant.\n\nThis was discussed on the comments at https://github.com/tock/libtock-rs/pull/267. ReturnVariant is more consistent with Rust\u0027s use of enum \"variants\".\n"
    },
    {
      "commit": "78055f22e910cfe26e021edca4c6af19d9b256fc",
      "tree": "6d5f9686a130848e627a2676648d19585f4bdb89",
      "parents": [
        "a2ff5bcfdce9914eda29e840d1fb96ded84a6bb3",
        "0f11708d9c72273b2a16fa4e9864150b05b39431"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Mon Dec 28 22:07:23 2020 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 28 22:07:23 2020 +0000"
      },
      "message": "Merge #266\n\n266: Make size-diff pass if building master fails. r\u003dhudson-ayers a\u003djrvanwhy\n\nsize-diff has been painful in 2 cases:\r\n\r\n1. If master is broken, it fails on PRs that fix master\u0027s build.\r\n2. If the commands required to build the examples change, it breaks. This happened when we changed rust-toolchain to the TOML format, and removed the `rustup target add` commands from the size-diff workflow. This change was fine once it hit master but broke in the PR.\r\n\r\nsize-diff still fails if the PR\u0027s build fails, so we can still detect PRs that break size-diff\u0027s functionality.\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "1ea7b5f78c966ae9a98300f82c3a2c6eff9d85ca",
      "tree": "8ef8e001ba340d5842386086c042ea6c62009428",
      "parents": [
        "a2ff5bcfdce9914eda29e840d1fb96ded84a6bb3"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Dec 15 16:01:17 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Dec 15 16:42:21 2020 -0800"
      },
      "message": "Add the `CommandReturn` type.\n\nThe `command` system call will return a `CommandReturn`. `CommandReturn` is practically free to construct and contains methods to allow drivers to interpret the register values it contains.\n"
    },
    {
      "commit": "0f11708d9c72273b2a16fa4e9864150b05b39431",
      "tree": "6d5f9686a130848e627a2676648d19585f4bdb89",
      "parents": [
        "a2ff5bcfdce9914eda29e840d1fb96ded84a6bb3"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Dec 15 13:39:25 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Dec 15 14:31:42 2020 -0800"
      },
      "message": "Make size-diff pass if building master fails.\n\nsize-diff has been painful in 2 cases:\n  1. If master is broken, it fails on PRs that fix master\u0027s build.\n  2. If the commands required to build the examples change, it breaks. This\n     happened when we changed rust-toolchain to the TOML format, and removed\n     the `rustup target add` commands from the size-diff workflow. This change\n     was fine once it hit master but broke in the PR.\n\nsize-diff still fails if the PR\u0027s build fails, so we can still detect PRs that break size-diff\u0027s functionality.\n"
    },
    {
      "commit": "a2ff5bcfdce9914eda29e840d1fb96ded84a6bb3",
      "tree": "283ef5aa2a06fdfdfc5dbd896bf109c273cacd49",
      "parents": [
        "b354824767014d376772e13049391aeeed4b58f3"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Dec 15 13:24:47 2020 -0800"
      },
      "committer": {
        "name": "Alistair Francis",
        "email": "alistair@alistair23.me",
        "time": "Tue Dec 15 14:24:39 2020 -0800"
      },
      "message": "Fix the build by updating `linked_list_allocator` to 0.8.7.\n\n`linked_list_allocator` requires you to specify the `const_mut_refs` option in order for `Heap::empty` to be `const`. This broke the build of `libtock_core` when `linked_list_allocator` 0.8.7 was pushed to crates.io.\n"
    },
    {
      "commit": "b354824767014d376772e13049391aeeed4b58f3",
      "tree": "9e12218f54e0845b4c335524b976d985e5709039",
      "parents": [
        "f7f7d3360eceab50c69b41c96072bd3b4b583990"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Dec 08 09:45:51 2020 -0800"
      },
      "committer": {
        "name": "Alistair Francis",
        "email": "alistair@alistair23.me",
        "time": "Tue Dec 15 14:24:39 2020 -0800"
      },
      "message": "Change `ErrorCode` and `ReturnType` to tuple structs to be more idiomatic.\n"
    },
    {
      "commit": "f7f7d3360eceab50c69b41c96072bd3b4b583990",
      "tree": "786ca256e511adc26968762bde230cd38cd033ed",
      "parents": [
        "cf02e5e9d8f74c73ebbb2e06d5ca42805321b001"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Dec 07 15:47:48 2020 -0800"
      },
      "committer": {
        "name": "Alistair Francis",
        "email": "alistair@alistair23.me",
        "time": "Tue Dec 15 14:24:39 2020 -0800"
      },
      "message": "Convert ErrorCode to a usize to match Tock 2.0 semantics and add constants for known error codes. Add ReturnType, a Tock 2.0 construct.\n"
    },
    {
      "commit": "cf02e5e9d8f74c73ebbb2e06d5ca42805321b001",
      "tree": "f7e78ebd70bf3e0899f6b747dc8076e159520f4e",
      "parents": [
        "ba262d523d6c3263741d8ba2a002c865a83371c5"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Dec 01 22:17:23 2020 -0800"
      },
      "committer": {
        "name": "Alistair Francis",
        "email": "alistair@alistair23.me",
        "time": "Fri Dec 11 13:19:12 2020 -0800"
      },
      "message": "Remove toolchain setup steps from our GitHub Actions workflows.\n\nRustup will not automatically install the correct targets, so we no longer need the `rustup target add` steps. After this, the `actions-rs/toolchain` step doesn\u0027t give us much, and is currently broken (https://github.com/actions-rs/toolchain/issues/126), so I removed that step as well.\n"
    },
    {
      "commit": "ba262d523d6c3263741d8ba2a002c865a83371c5",
      "tree": "d238525d2a6d8718ffc340733de1c93213a630e8",
      "parents": [
        "7b6b2ccacf76b78337ff511b60354e2c2e1c3851"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Nov 30 15:12:22 2020 -0800"
      },
      "committer": {
        "name": "Alistair Francis",
        "email": "alistair@alistair23.me",
        "time": "Fri Dec 11 13:19:12 2020 -0800"
      },
      "message": "Specify components in `rust-toolchain` and update the toolchain to `nightly-2020-08-20`.\n"
    },
    {
      "commit": "7b6b2ccacf76b78337ff511b60354e2c2e1c3851",
      "tree": "4291de2c1486245553ab9e8ecb2f26d1c5e66262",
      "parents": [
        "35d4cf0b9ac4e224bd9c6443db0489c5cb1e908c",
        "20fb2139bf2ba936c4f4c937e594cc9a4cea9169"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Mon Dec 07 23:37:33 2020 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 07 23:37:33 2020 +0000"
      },
      "message": "Merge #262\n\n262: Remove `libtock_platform::allows`. r\u003dhudson-ayers a\u003djrvanwhy\n\nTock 2.0 system calls do not need the types in `allows`. Now that I\u0027m reworking `libtock_platform` to use Tock 2.0 system calls, we can get rid of the module.\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "20fb2139bf2ba936c4f4c937e594cc9a4cea9169",
      "tree": "4291de2c1486245553ab9e8ecb2f26d1c5e66262",
      "parents": [
        "c9e5fc167a6eef96d820a674781abcded144c95f",
        "35d4cf0b9ac4e224bd9c6443db0489c5cb1e908c"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Dec 07 15:30:16 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Dec 07 15:30:16 2020 -0800"
      },
      "message": "Merge branch \u0027master\u0027 into rm-allows\n"
    },
    {
      "commit": "35d4cf0b9ac4e224bd9c6443db0489c5cb1e908c",
      "tree": "f7088549fd02356ca073a945c4179f8dc19233c3",
      "parents": [
        "511b040b970d35edeee1af25e7d6e03f993cf97d",
        "0189281105a815d5443ce1a0afd0a19ef74817ea"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Mon Dec 07 15:30:31 2020 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Mon Dec 07 15:30:31 2020 +0000"
      },
      "message": "Merge #261\n\n261: Begin overhauling libtock_platform\u0027s syscalls trait for Tock 2.0. r\u003dhudson-ayers a\u003djrvanwhy\n\nI made the following changes to the design of `Syscalls`:\r\n\r\n1. The trait is now designed for the (work-in-progress) Tock 2.0 syscalls rather\r\n   than the Tock 1.0 syscalls.\r\n2. The higher-level API that I previously intended to implement in the Platform\r\n   type is now expressed in the form of provided functions in Syscalls.\r\n\r\nSo far, I have only implemented `yield`. I\u0027m sending this for review now because it is already getting large, and I\u0027d prefer to split it up into several PRs rather than send a single huge PR.\r\n\r\nThere is still significant design work to be done in terms of error handling for `subscribe`, `command`, both `allow`s, and `memop`.\r\n\r\nEDIT: To everyone reviewing this, here is a [direct link to syscalls.rs](https://github.com/jrvanwhy/libtock-rs/blob/syscalls-2.0/core/platform/src/syscalls.rs), in case you want to read it *without* seeing the diff from the previous version.\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "0189281105a815d5443ce1a0afd0a19ef74817ea",
      "tree": "6efe27bdacf019004bee8bf1ab98e555c2c2ec09",
      "parents": [
        "aea05dc7cdbac78ebaff36d096182259ced3c431"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Dec 04 13:27:00 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Dec 04 13:27:00 2020 -0800"
      },
      "message": "Rewrite my explanation of the design of RawSyscalls based on Phil\u0027s feedback.\n"
    },
    {
      "commit": "aea05dc7cdbac78ebaff36d096182259ced3c431",
      "tree": "757afc374274bae4b0d978d76e7df915efeaae82",
      "parents": [
        "0704741ad29c06129fa0cf09956d3c55b38a8b88"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Dec 04 10:34:16 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Fri Dec 04 10:34:16 2020 -0800"
      },
      "message": "Change r1 in four_arg_syscall to a u32.\n\nI mistakenly kept it as a `usize` in my previous commit because memop passes pointers using r1, but four_arg_syscall is not used to call memop. Therefore the second argument can always be a u32.\n"
    },
    {
      "commit": "0704741ad29c06129fa0cf09956d3c55b38a8b88",
      "tree": "dbd5d29d2bfa2df2b69e6aeb6cfa956ae60dd7e8",
      "parents": [
        "72a967363995cd0e805edfb35876aad9063a6d36"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Dec 03 20:48:09 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Dec 03 20:51:22 2020 -0800"
      },
      "message": "Rework the use of `usize` versus `u32` in RawSyscalls.\n\nI previously used `usize` for every value, because `usize` is register-sized on all platforms. However, I no longer think that is the correct thing to do. Having the values be register-sized only matters for `libtock_runtime::TockSyscalls`; it does not matter for `libtock_unittest::FakeSyscalls`. For the fake system calls, it is better to pass u32 where possible to minimize the number of invalid value representable in the API.\n\nThis rework follows a simple rule: values that can potentially contain pointers have type `usize`; all other register values have type `u32`. This extends to the function signature of `subscribe` callbacks: unsafe extern fn(u32, u32, u32, usize).\n"
    },
    {
      "commit": "72a967363995cd0e805edfb35876aad9063a6d36",
      "tree": "51f4f6056c3d9d4a25388ab16622e9e7e8bd014f",
      "parents": [
        "67bdf79700c036790154e5e5ca59df66758e5764"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Dec 02 14:28:37 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Dec 02 14:28:37 2020 -0800"
      },
      "message": "Clarify some of the `memop` comments.\n\nIt was not previously clear that some of the statements I made are true for the *current* memop operations and not necessarily true for future memop operations. I made the distinction more clear, plus added some comments so that future maintainers who add memop operations know to reevaluate the assumptions/statements I made.\n"
    },
    {
      "commit": "511b040b970d35edeee1af25e7d6e03f993cf97d",
      "tree": "56693e8926ac983194f4205c337168b44b1ae2bb",
      "parents": [
        "726dbfb15298d47fc9c225e7e15f4dcc9ad1a224",
        "10fb67ef6638bcbc75f6e142cdc40f985aa34993"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Wed Dec 02 21:28:06 2020 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Dec 02 21:28:06 2020 +0000"
      },
      "message": "Merge #260\n\n260: Add traits for lightweight asynchronous APIs to `libtock_platform`. r\u003dalistair23 a\u003djrvanwhy\n\nThis adds `CallbackContext`, `FreeCallback`, `Locator`, and `MethodCallback`.\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "67bdf79700c036790154e5e5ca59df66758e5764",
      "tree": "304ad90f08f16beefc9cab4a8f4400496abe40c7",
      "parents": [
        "409351f29ccf92c153cb32932df45dd99b73e7ef",
        "726dbfb15298d47fc9c225e7e15f4dcc9ad1a224"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Dec 01 21:55:17 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Dec 01 21:55:17 2020 -0800"
      },
      "message": "Merge branch \u0027master\u0027 into syscalls-2.0\n"
    },
    {
      "commit": "10fb67ef6638bcbc75f6e142cdc40f985aa34993",
      "tree": "56693e8926ac983194f4205c337168b44b1ae2bb",
      "parents": [
        "17373bc516d8a8d013742d9c31206493bf59644f",
        "726dbfb15298d47fc9c225e7e15f4dcc9ad1a224"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Dec 01 17:10:18 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Dec 01 17:10:18 2020 -0800"
      },
      "message": "Merge branch \u0027master\u0027 into async-traits\n"
    },
    {
      "commit": "726dbfb15298d47fc9c225e7e15f4dcc9ad1a224",
      "tree": "2d823569f63a6088f8c098756ac2e3044e41f821",
      "parents": [
        "2f39ff47ac1e8d7649266b8473c31d48a7275417",
        "04383224f1a7c848ebb162b00501e76680765aef"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Tue Dec 01 23:09:43 2020 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Dec 01 23:09:43 2020 +0000"
      },
      "message": "Merge #264\n\n264: Remove `test_runner`\u0027s dependence on `async-std` and `tokio`. r\u003djrvanwhy a\u003djrvanwhy\n\n`test_runner` used both `async-std` and `tokio` to implement a timeout on test execution. This brought in a *large* dependency tree. Some of the crates in that dependency tree (e.g. `value-bag`) assume that if you\u0027re on nightly Rust, you have an up to date compiler. At the moment, this is breaking `libtock-rs`\u0027 CI: `value-bag` does not build with the toolchain `libtock-rs` uses.\r\n\r\nI tried to update the compiler, but newer compilers SIGSEGV on `libtock-rs`. Rather than investigating that (which will likely be very time-consuming), I decided to remove `libtock-rs`\u0027 dependency on `value-bag`. This required removing `test_runner`\u0027s dependency on both `tokio` and `async-std`.\r\n\r\nI replaced the timeout functionality by spawning a second thread that waits for 10 seconds then kills QEMU.\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "04383224f1a7c848ebb162b00501e76680765aef",
      "tree": "2d823569f63a6088f8c098756ac2e3044e41f821",
      "parents": [
        "2f39ff47ac1e8d7649266b8473c31d48a7275417"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Nov 30 16:51:45 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Nov 30 17:09:44 2020 -0800"
      },
      "message": "Remove `test_runner`\u0027s dependence on `async-std` and `tokio`.\n\n`test_runner` used both `async-std` and `tokio` to implement a timeout on test execution. This brought in a *large* dependency tree. Some of the crates in that dependency tree (e.g. `value-bag`) assume that if you\u0027re on nightly Rust, you have an up to date compiler. At the moment, this is breaking `libtock-rs`\u0027 CI: `value-bag` does not build with the toolchain `libtock-rs` uses.\n\nI tried to update the compiler, but newer compilers SIGSEGV somewhere in `libtock-rs`. Rather than investigating that (which will likely be very time-consuming), I decided to remove `libtock-rs`\u0027 dependency on `value-bag`. This required removing `test_runner`\u0027s dependency on both `tokio` and `async-std`.\n\nI replaced the timeout functionality by spawning a second thread that waits for 10 seconds then kills QEMU.\n"
    },
    {
      "commit": "409351f29ccf92c153cb32932df45dd99b73e7ef",
      "tree": "545711d0dd83f65088f1a5fddb17a7424b061e6d",
      "parents": [
        "4f046144393501fd6af47c73e64467dcfaed4731"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Nov 30 15:32:50 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Nov 30 15:32:50 2020 -0800"
      },
      "message": "Add a note describing the register naming convention in `raw_syscalls.rs` (for real this time).\n"
    },
    {
      "commit": "17373bc516d8a8d013742d9c31206493bf59644f",
      "tree": "652fcf3ed377f78325c9cb11c00908c23f2c51d1",
      "parents": [
        "faf9c94edff8d1d06da0a70e0c34005631f31959"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Nov 30 10:51:11 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Nov 30 10:51:11 2020 -0800"
      },
      "message": "Add a note about how CallbackContext can be copied by code outside `libtock_platform`.\n"
    },
    {
      "commit": "4f046144393501fd6af47c73e64467dcfaed4731",
      "tree": "cf94e90490355d7d3d54d2d0edb30357018e57f5",
      "parents": [
        "cb5b76b89cfa340b7251062ec41e26c6ca9aa2e1"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Nov 30 10:39:09 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Mon Nov 30 10:39:09 2020 -0800"
      },
      "message": "Add a note describing the register naming convention in `raw_syscalls.rs` and move the `Syscalls` impl into its own file in preparation for an upcoming PR.\n"
    },
    {
      "commit": "c9e5fc167a6eef96d820a674781abcded144c95f",
      "tree": "48df1b943becc301cd951d4031aefa3c3c2d0612",
      "parents": [
        "2f39ff47ac1e8d7649266b8473c31d48a7275417"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Sat Nov 28 19:45:06 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Sat Nov 28 19:45:06 2020 -0800"
      },
      "message": "Remove `libtock_platform::allows`.\n\nTock 2.0 system calls do not need the types in `allows`. Now that I\u0027m reworking `libtock_platform` to use Tock 2.0 system calls, we can get rid of the module.\n"
    },
    {
      "commit": "faf9c94edff8d1d06da0a70e0c34005631f31959",
      "tree": "16c56a1a1838121ad6576bba597e0435537755cc",
      "parents": [
        "a294cb86e3572291e6d79310d1b677c6c2eed36d"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Sat Nov 28 13:28:43 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Sat Nov 28 13:28:43 2020 -0800"
      },
      "message": "cargo fmt\n"
    },
    {
      "commit": "cb5b76b89cfa340b7251062ec41e26c6ca9aa2e1",
      "tree": "73a49368ad304eae95dbd97afbb1a8f21233220d",
      "parents": [
        "e524dbda834c2e59148b8d88baaf148912f4edad"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Nov 26 22:36:29 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Nov 26 22:36:29 2020 -0800"
      },
      "message": "Split `Syscalls` into `Syscalls` and `RawSyscalls`.\n\n`RawSyscalls` contains everything I previously called the \"low-level API\". `Syscalls` contains everything I previously called the \"high-level API\". A generic impl implements `Syscalls` for every type that implements `RawSyscalls`.\n"
    },
    {
      "commit": "e524dbda834c2e59148b8d88baaf148912f4edad",
      "tree": "970a5609f95f2c66eeb9b79c4413c6ef1a36bbdd",
      "parents": [
        "2f39ff47ac1e8d7649266b8473c31d48a7275417"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Nov 25 21:47:38 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Thu Nov 26 00:09:02 2020 -0800"
      },
      "message": "Overhaul libtock_platform\u0027s syscalls trait, making the following changes:\n\n1. The trait is now design for the (work-in-progress) Tock 2.0 syscalls rather\n   than the Tock 1.0 syscalls.\n2. The higher-level API that I previously intended to implement in the Platform\n   type is now expressed in the form of provided functions in Syscalls.\n\nSo far, I have only implemented yield. I\u0027m sending this for review now because it is already getting large, and I\u0027d prefer to split it up into several PRs rather than send a single huge PR.\n\nThere is still significant design work to be done in terms of error handling for subscribe, command, allows, and memop.\n"
    },
    {
      "commit": "2f39ff47ac1e8d7649266b8473c31d48a7275417",
      "tree": "4d2637c31d7b29bf3662706dfc42fffb52946971",
      "parents": [
        "5317c348d17103f2b55a4faa1343852e3666410c",
        "058910418ef028870c8ab36c97b810d698e3fd85"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Thu Nov 26 06:41:24 2020 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 26 06:41:24 2020 +0000"
      },
      "message": "Merge #253\n\n253: Update result.rs with remaining ReturnCode values r\u003djrvanwhy a\u003dMirnaMuhammad98\n\nAdding the remaining ReturnCode values that exist in [tock/returncode.rs](https://github.com/tock/tock/blob/master/kernel/src/returncode.rs)\n\nCo-authored-by: Mirna \u003c29131616+MirnaMuhammad98@users.noreply.github.com\u003e\n"
    },
    {
      "commit": "a294cb86e3572291e6d79310d1b677c6c2eed36d",
      "tree": "4cce2ec5639e8c444a80060413c6c08c8d9660f6",
      "parents": [
        "5317c348d17103f2b55a4faa1343852e3666410c"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Tue Nov 24 20:06:30 2020 -0800"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Nov 25 16:30:20 2020 -0800"
      },
      "message": "Add traits for lightweight asynchronous APIs to `libtock_platform`.\n"
    },
    {
      "commit": "5317c348d17103f2b55a4faa1343852e3666410c",
      "tree": "cec676d8c1d354ffdd2857559f33a8db33358af6",
      "parents": [
        "b63be10cfe7706a70e1a87d9c19ad46c68c7d290",
        "40327a678c2658477f9f4fab1bc7d3e51fc887e8"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Tue Nov 24 14:14:19 2020 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Tue Nov 24 14:14:19 2020 +0000"
      },
      "message": "Merge #256\n\n256: Add the \"Platform Design Story\" document. r\u003dhudson-ayers a\u003djrvanwhy\n\n\"Platform Design Story\" justifies the design of `libtock_platform` by showing how to write an efficient `console` driver.\r\n\r\n[Rendered](https://github.com/jrvanwhy/libtock-rs/blob/platform-story/doc/PlatformDesignStory.md)\n\nCo-authored-by: Johnathan Van Why \u003cjrvanwhy@google.com\u003e\n"
    },
    {
      "commit": "b63be10cfe7706a70e1a87d9c19ad46c68c7d290",
      "tree": "434cffd0084cc6c9600a7fbbb9661aae31c6079c",
      "parents": [
        "21eab873dbd99266e92e90171c636b084a0be9a2",
        "6b2f10d5f3018ab1b98b5aeb3c9817f057d41d9f"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Fri Nov 20 19:32:47 2020 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Fri Nov 20 19:32:47 2020 +0000"
      },
      "message": "Merge #259\n\n259: examples-features/ctap: Ensure the stack is created r\u003djrvanwhy a\u003dalistair23\n\nSigned-off-by: Alistair Francis \u003calistair.francis@wdc.com\u003e\n\nCo-authored-by: Alistair Francis \u003calistair.francis@wdc.com\u003e\n"
    },
    {
      "commit": "21eab873dbd99266e92e90171c636b084a0be9a2",
      "tree": "ae5a1f4c6681e886043cea9762cf84bd6611776f",
      "parents": [
        "6395d57d22228d8fcb9f8f7c197b54e542e17026",
        "69b9eae1a8e190280cd1e881a57d734ae3977551",
        "a6642b2cef780f401124fe73d7a301058620c44e",
        "50f187b175068dd0cc77aff06840515abbb54c2a"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Thu Nov 19 21:34:28 2020 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 19 21:34:28 2020 +0000"
      },
      "message": "Merge #255 #257 #258\n\n255: libmctp: Initial support of MCTP support r\u003djrvanwhy a\u003dalistair23\n\nMCTP (Management Component Transport Protocol) is a transport layer that is commonly used for server management. It supports multiple underlying protocols, but in this case we are focued on SMBus.\r\n\r\nThis adds initial support for a MCTP example in libtock-rs.\n\n257: Add ninedof example r\u003djrvanwhy a\u003dl162\n\nFor unit testing.\n\n258: stm32f3discovery support r\u003djrvanwhy a\u003dl162\n\nAdds support for stm32f3discovery.\n\nCo-authored-by: Alistair Francis \u003calistair.francis@wdc.com\u003e\nCo-authored-by: l162 \u003cl162@hey.com\u003e\n"
    },
    {
      "commit": "6395d57d22228d8fcb9f8f7c197b54e542e17026",
      "tree": "bfebb0537a16a6608bee623e1e7ce3dbe1a8174c",
      "parents": [
        "4fc82a9be68d879cf66532160f1f5064681b8863",
        "dbf05287548b2ddac5c7b742a08248de4a801a5e"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Thu Nov 19 21:19:16 2020 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Thu Nov 19 21:19:16 2020 +0000"
      },
      "message": "Merge #254\n\n254: I2C: Add support for all of Tock\u0027s I2C capsules r\u003djrvanwhy a\u003dalistair23\n\nTock actually has two I2C capsules, this PR adds support for both in libtock-rs.\n\nCo-authored-by: Alistair Francis \u003calistair.francis@wdc.com\u003e\n"
    },
    {
      "commit": "6b2f10d5f3018ab1b98b5aeb3c9817f057d41d9f",
      "tree": "3559d41b2cf21aeccb8beb65d6a006156f55a402",
      "parents": [
        "4fc82a9be68d879cf66532160f1f5064681b8863"
      ],
      "author": {
        "name": "Alistair Francis",
        "email": "alistair.francis@wdc.com",
        "time": "Thu Nov 19 13:06:20 2020 -0800"
      },
      "committer": {
        "name": "Alistair Francis",
        "email": "alistair.francis@wdc.com",
        "time": "Thu Nov 19 13:06:20 2020 -0800"
      },
      "message": "examples-features/ctap: Ensure the stack is created\n\nSigned-off-by: Alistair Francis \u003calistair.francis@wdc.com\u003e\n"
    },
    {
      "commit": "50f187b175068dd0cc77aff06840515abbb54c2a",
      "tree": "57e0708c1bfaf83bfa14026fd26594bd1fc8361f",
      "parents": [
        "4fc82a9be68d879cf66532160f1f5064681b8863"
      ],
      "author": {
        "name": "l162",
        "email": "l162@hey.com",
        "time": "Thu Nov 12 19:32:01 2020 -0500"
      },
      "committer": {
        "name": "l162",
        "email": "l162@hey.com",
        "time": "Thu Nov 12 19:32:01 2020 -0500"
      },
      "message": "stm32f3discovery\n"
    },
    {
      "commit": "a6642b2cef780f401124fe73d7a301058620c44e",
      "tree": "569f12c4e9d98a8d8bdf05c4e385609a857ba2b5",
      "parents": [
        "4fc82a9be68d879cf66532160f1f5064681b8863"
      ],
      "author": {
        "name": "l162",
        "email": "l162@hey.com",
        "time": "Thu Nov 12 18:33:18 2020 -0500"
      },
      "committer": {
        "name": "l162",
        "email": "l162@hey.com",
        "time": "Thu Nov 12 18:33:18 2020 -0500"
      },
      "message": "ninedof example\n"
    },
    {
      "commit": "69b9eae1a8e190280cd1e881a57d734ae3977551",
      "tree": "b8f33e63e83874f2b857cebe112af9460aa547ec",
      "parents": [
        "dbf05287548b2ddac5c7b742a08248de4a801a5e"
      ],
      "author": {
        "name": "Alistair Francis",
        "email": "alistair.francis@wdc.com",
        "time": "Wed Nov 04 16:07:56 2020 -0800"
      },
      "committer": {
        "name": "Alistair Francis",
        "email": "alistair.francis@wdc.com",
        "time": "Wed Nov 11 15:17:25 2020 -0800"
      },
      "message": "libmctp: Initial commit\n\nSigned-off-by: Alistair Francis \u003calistair.francis@wdc.com\u003e\n"
    },
    {
      "commit": "058910418ef028870c8ab36c97b810d698e3fd85",
      "tree": "5e6f1a7e3ad4a64976f550cc1947decd9ca7d3d6",
      "parents": [
        "6dab514dfd5084b514fe0c91d60409eefded761b"
      ],
      "author": {
        "name": "Mirna",
        "email": "29131616+MirnaMuhammad98@users.noreply.github.com",
        "time": "Wed Nov 11 23:41:32 2020 +0200"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 11 23:41:32 2020 +0200"
      },
      "message": "Remove extra newline"
    },
    {
      "commit": "40327a678c2658477f9f4fab1bc7d3e51fc887e8",
      "tree": "75d4c28bc97fe566d7920f132a90bdea176b526b",
      "parents": [
        "4fc82a9be68d879cf66532160f1f5064681b8863"
      ],
      "author": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Oct 28 22:54:57 2020 -0700"
      },
      "committer": {
        "name": "Johnathan Van Why",
        "email": "jrvanwhy@google.com",
        "time": "Wed Nov 11 12:43:34 2020 -0800"
      },
      "message": "Add the \"Platform Design Story\", which explains the design of `libtock_platform` by demonstrating how to write an efficient `console` driver.\n"
    },
    {
      "commit": "dbf05287548b2ddac5c7b742a08248de4a801a5e",
      "tree": "bfebb0537a16a6608bee623e1e7ce3dbe1a8174c",
      "parents": [
        "f99feff538d346eb6255d38b30f2af0b269b2f5b"
      ],
      "author": {
        "name": "Alistair Francis",
        "email": "alistair.francis@wdc.com",
        "time": "Wed Nov 04 16:31:23 2020 -0800"
      },
      "committer": {
        "name": "Alistair Francis",
        "email": "alistair.francis@wdc.com",
        "time": "Wed Nov 11 12:12:35 2020 -0800"
      },
      "message": "i2c_master: Initial commit\n\nSigned-off-by: Alistair Francis \u003calistair.francis@wdc.com\u003e\n"
    },
    {
      "commit": "f99feff538d346eb6255d38b30f2af0b269b2f5b",
      "tree": "2d3136777de025c44e7ba7dcab70ef8b5f16a38c",
      "parents": [
        "4fc82a9be68d879cf66532160f1f5064681b8863"
      ],
      "author": {
        "name": "Alistair Francis",
        "email": "alistair.francis@wdc.com",
        "time": "Wed Nov 04 16:30:51 2020 -0800"
      },
      "committer": {
        "name": "Alistair Francis",
        "email": "alistair.francis@wdc.com",
        "time": "Wed Nov 11 12:12:35 2020 -0800"
      },
      "message": "i2c: Rename to i2c_master_slave to match Tocks names\n\nSigned-off-by: Alistair Francis \u003calistair.francis@wdc.com\u003e\n"
    },
    {
      "commit": "4fc82a9be68d879cf66532160f1f5064681b8863",
      "tree": "5c7ed953ac47cd2ec4fb65123c879ff8ed4da40d",
      "parents": [
        "83572c3c76c90066deebc14829dc0ff2a746910e",
        "3cc371a485086e1d0b0304d654314b453954d107"
      ],
      "author": {
        "name": "bors[bot]",
        "email": "26634292+bors[bot]@users.noreply.github.com",
        "time": "Wed Nov 11 19:56:32 2020 +0000"
      },
      "committer": {
        "name": "GitHub",
        "email": "noreply@github.com",
        "time": "Wed Nov 11 19:56:32 2020 +0000"
      },
      "message": "Merge #251\n\n251: i2c: Add support for the I2C interface r\u003djrvanwhy a\u003dalistair23\n\nSigned-off-by: Alistair Francis \u003calistair.francis@wdc.com\u003e\n\nCo-authored-by: Alistair Francis \u003calistair.francis@wdc.com\u003e\n"
    }
  ],
  "next": "6dab514dfd5084b514fe0c91d60409eefded761b"
}
