From 5e9291350f9dc26be78c8c71b152184d5de73153 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Thu, 2 Nov 2023 14:20:46 +0000 Subject: [PATCH 01/34] First cut of Chromium section This is the first draft of a Chromium section for Comprehensive Rust. --- README.md | 3 +- src/SUMMARY.md | 25 ++++ src/chromium.md | 9 ++ src/chromium/adding-third-party-crates.md | 25 ++++ .../adding-third-party-crates/checking-in.md | 23 ++++ .../configuring-third-party-toml.md | 45 +++++++ .../depending-on-a-crate.md | 15 +++ .../generating-gn-build-rules.md | 64 ++++++++++ .../keeping-up-to-date.md | 8 ++ .../resolving-problems.md | 105 +++++++++++++++++ .../reviews-and-audits.md | 29 +++++ src/chromium/build-rules.md | 63 ++++++++++ src/chromium/cargo.md | 49 ++++++++ src/chromium/interoperability-with-cpp.md | 110 ++++++++++++++++++ src/chromium/policy.md | 19 +++ src/chromium/setup.md | 22 ++++ .../chromium/bringing-it-together.md | 61 ++++++++++ src/exercises/chromium/build-rules.md | 62 ++++++++++ src/exercises/chromium/chwomium.png | Bin 0 -> 169651 bytes .../chromium/interoperability-with-cpp.md | 71 +++++++++++ src/exercises/chromium/third-party.md | 22 ++++ src/glossary.md | 2 + src/index.md | 3 + 23 files changed, 834 insertions(+), 1 deletion(-) create mode 100644 src/chromium.md create mode 100644 src/chromium/adding-third-party-crates.md create mode 100644 src/chromium/adding-third-party-crates/checking-in.md create mode 100644 src/chromium/adding-third-party-crates/configuring-third-party-toml.md create mode 100644 src/chromium/adding-third-party-crates/depending-on-a-crate.md create mode 100644 src/chromium/adding-third-party-crates/generating-gn-build-rules.md create mode 100644 src/chromium/adding-third-party-crates/keeping-up-to-date.md create mode 100644 src/chromium/adding-third-party-crates/resolving-problems.md create mode 100644 src/chromium/adding-third-party-crates/reviews-and-audits.md create mode 100644 src/chromium/build-rules.md create mode 100644 src/chromium/cargo.md create mode 100644 src/chromium/interoperability-with-cpp.md create mode 100644 src/chromium/policy.md create mode 100644 src/chromium/setup.md create mode 100644 src/exercises/chromium/bringing-it-together.md create mode 100644 src/exercises/chromium/build-rules.md create mode 100644 src/exercises/chromium/chwomium.png create mode 100644 src/exercises/chromium/interoperability-with-cpp.md create mode 100644 src/exercises/chromium/third-party.md diff --git a/README.md b/README.md index fc1bd802cf3f..baaa98dc94c1 100644 --- a/README.md +++ b/README.md @@ -7,9 +7,10 @@ This repository has the source code for Comprehensive Rust 🦀, a multi-day Rust course developed by the Android team. The course covers all aspects of Rust, from basic syntax to generics and error handling. It also includes deep dives on -[Android], [bare-metal], and [concurrency]. +[Android], [Chromium], [bare-metal], and [concurrency]. [Android]: https://google.github.io/comprehensive-rust/android.html +[Chromium]: https://google.github.io/comprehensive-rust/comprehensive.html [bare-metal]: https://google.github.io/comprehensive-rust/bare-metal.html [concurrency]: https://google.github.io/comprehensive-rust/concurrency.html diff --git a/src/SUMMARY.md b/src/SUMMARY.md index ec1fbcb21877..f0d31249ebe3 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -221,6 +221,31 @@ - [Exercises](exercises/android/morning.md) + +# Chromium + +---- + +- [Welcome](chromium.md) +- [Setup](chromium/setup.md) +- [Using cargo for tools](chromium/cargo.md) +- [Policy](chromium/policy.md) +- [Build Rules](chromium/build-rules.md) + - [Exercise](exercises/chromium/build-rules.md) +- [Interoperability with C++](chromium/interoperability-with-cpp.md) + - [Exercise](exercises/chromium/interoperability-with-cpp.md) +- [Adding third party crates](chromium/adding-third-party-crates.md) + - [Configuring third_party.toml](chromium/adding-third-party-crates/configuring-third-party-toml.md) + - [Generating gn build rules](chromium/adding-third-party-crates/generating-gn-build-rules.md) + - [Resolving problems](chromium/adding-third-party-crates/resolving-problems.md) + - [Depending on a crate](chromium/adding-third-party-crates/depending-on-a-crate.md) + - [Reviews and audits](chromium/adding-third-party-crates/reviews-and-audits.md) + - [Checking into Chromium source code](chromium/adding-third-party-crates/checking-in.md) + - [Keeping crates up to date](chromium/adding-third-party-crates/keeping-up-to-date.md) + - [Exercise](exercises/chromium/third-party.md) +- [Bringing it together - Exercise](exercises/chromium/bringing-it-together.md) + + # Bare Metal: Morning ---- diff --git a/src/chromium.md b/src/chromium.md new file mode 100644 index 000000000000..83926fbdca78 --- /dev/null +++ b/src/chromium.md @@ -0,0 +1,9 @@ +# Welcome to Rust in Chromium + +Rust is supported for third-party libraries in Chromium, with first-party glue +code to connect between Rust and existing Chromium C++ code. + +> Today, we'll call into Rust to do something silly with strings. If you've +> got a corner of the code where you're displaying a UTF8 string to the user, +> feel free to follow this recipe in your part of the codebase instead of +> the exact part we talk about. diff --git a/src/chromium/adding-third-party-crates.md b/src/chromium/adding-third-party-crates.md new file mode 100644 index 000000000000..678ab297bb43 --- /dev/null +++ b/src/chromium/adding-third-party-crates.md @@ -0,0 +1,25 @@ +# Adding third party crates + +Rust libraries are called "crates" and are found at [crates.io][0]. It's *very +easy* for Rust crates to depend upon one another. So they do! + +| Property | C++ library | Rust crate | +| --- | --- | --- | +| Build system | Lots | Consistent - `Cargo.toml` | +| Typical library size | Large | Small | +| Transitive dependencies | None | Lots | + +For a Chromium engineer, this has pros and cons: + +* All crates use a common build system so we can automate their inclusion into + Chromium... +* ... but, crates typically have transitive dependencies, so you will + likely have to bring in multiple libraries. + +We'll discuss: + +* How to put a crate in the Chromium source code tree +* How to make `gn` build rules for it +* How to audit its source code for sufficient safety. + +[0]: https://crates.io \ No newline at end of file diff --git a/src/chromium/adding-third-party-crates/checking-in.md b/src/chromium/adding-third-party-crates/checking-in.md new file mode 100644 index 000000000000..f525f382a7dd --- /dev/null +++ b/src/chromium/adding-third-party-crates/checking-in.md @@ -0,0 +1,23 @@ +# Checking crates into Chromium source code + +Downloaded crates live in `//third_party/rust`. + +You'll find, for each crate, +* The crate source code in `v1/crate` +* A `BUILD.gn` file +* A `README.chromium` file + +Please also add an `OWNERS` file. + +You should land all this, along with your `third_party.toml` change, into +the Chromium repo. + +As you do so, you might find presubmit checks fail because of non-inclusive +language. This is because Rust crate data tends to include names of git branches, +and many projects still use non-inclusive terminology there. So you may need +to run: + +``` +infra/update_inclusive_language_presubmit_exempt_dirs.sh > infra/inclusive_language_presubmit_exempt_dirs.txt +git add -p infra/inclusive_language_presubmit_exempt_dirs.txt # add whatever changes are yours +``` diff --git a/src/chromium/adding-third-party-crates/configuring-third-party-toml.md b/src/chromium/adding-third-party-crates/configuring-third-party-toml.md new file mode 100644 index 000000000000..7d60fdee6d5a --- /dev/null +++ b/src/chromium/adding-third-party-crates/configuring-third-party-toml.md @@ -0,0 +1,45 @@ +# Configuring `third_party.toml` + +Chromium has a single set of centrally-managed direct crate dependencies. +These are managed through a single [`third_party.toml` file][0] which is a lot like the +`Cargo.toml` you'd use for a cargo-native project. The main part of the file +looks like this: + +```toml +[dependencies] +bitflags = "1" +cfg-if = "1" +cxx = "1" +# lots more... +``` + +To add a crate there, normally you'd simply add the crate and version to the +`[dependencies]` section. As with `Cargo.toml`, you can specify [more details about +the dependencies][1] - most commonly, you'll want to specify the `features` that +you wish to enable in the crate. + +## What version to choose? + +You should specify the [semver version][2] of the crate that you want (look it +up on [crates.io][3]!). For example, if the most recent published version of the +crate `foo` is `1.2.3``, you'd specify + +``` +foo = "1" +``` + +Under some circumstances, you'll need to put your new crate in different +areas of this file: + +* If it's an executable rather than a library crate, add it to `[workspace.members]`. +* If it's a test-only dependency, add it to `[testonly-dependencies]`. + +`third_party.toml` also has some [extensions][4] beyond the normal `Cargo.toml` format, +which we'll discuss later. + + +[0]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/rust/third_party.toml +[1]: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html +[2]: https://doc.rust-lang.org/cargo/reference/semver.html +[3]: https://crates.io +[4]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/rust/third_party.toml;l=20 \ No newline at end of file diff --git a/src/chromium/adding-third-party-crates/depending-on-a-crate.md b/src/chromium/adding-third-party-crates/depending-on-a-crate.md new file mode 100644 index 000000000000..64a071b7aa90 --- /dev/null +++ b/src/chromium/adding-third-party-crates/depending-on-a-crate.md @@ -0,0 +1,15 @@ +# Depending on a crate + +Once you've added a third-party crate and generated build rules, +depending on a crate is simple. Find your `rust_static_library` target, +and add a `dep` on the `:lib` target within your crate. + +For instance, + +```gn +rust_static_library("my_rust_lib") { + crate_root = "lib.rs" + sources = [ "lib.rs" ] + deps = [ "//third_party/rust/example_rust_crate/v1:lib" ] +} +``` \ No newline at end of file diff --git a/src/chromium/adding-third-party-crates/generating-gn-build-rules.md b/src/chromium/adding-third-party-crates/generating-gn-build-rules.md new file mode 100644 index 000000000000..883f8f2b78e2 --- /dev/null +++ b/src/chromium/adding-third-party-crates/generating-gn-build-rules.md @@ -0,0 +1,64 @@ +# Generating gn build rules + +A tool called `gnrt` converts from `third_party.toml` into the `BUILD.gn` rules +required by our build system. It can also download crate source code. + +At the moment, this is a multi-step process - it may be streamlined in future. +You'll need to mix: + +* generating build files +* downloading missing crates + +and possibly run through the cycle a couple of times. + +To start, download the crate you want like this: + +``` +cd chromium/src +vpython3 tools/crates/run_gnrt.py -- download CRATE_NAME CRATE_VERSION --shipped yes --security-critical yes +``` + +**IMPORTANT:** although the `gnrt` tool is part of the Chromium source code, +by running this command you will be downloading and running its dependencies +from `crates.io`. See [the earlier section][1] discussing this security +decision. + +In this case, you need to specify: +* The crate name. Replace any underscores with hyphens. +* The crate version. This time, give the precise version to download rather + than the semver compatible version. +* Whether it's shipped as part of Chromium, and whether it's security critical, + per the normal [third party addition guidelines][0] + +Once you've downloaded the crate, generate the `BUILD.gn` files like this: + +``` +vpython3 tools/crates/run_gnrt.py gen +``` + +## Transitive dependencies + +At this time, there's also a good chance that you'll be informed some other +crates are missing. These are the transitive dependencies of the crate you've +asked for. + +For example: + +``` +Missing dependency: example-transitive-dependency 1.0.83 + chromium 0.1.0 (path+file:///usr/local/google/home/you/chromium/src/third_party/rust) + example-crate 1.0.110 (path+file:///usr/local/google/home/you/chromium/src/third_party/rust/example-crate/v1/crate) +``` + +Download each of them as well. + +## Once all crates are downloaded + +Once all the crates are downloaded, rerun the `gen` command given above. This should: + +* Create `BUILD.gn` files +* Create `README.chromium` files + + +[0]: https://chromium.googlesource.com/chromium/src/+/main/docs/adding_to_third_party.md#add-a-readme_chromium +[1]: ../cargo.md \ No newline at end of file diff --git a/src/chromium/adding-third-party-crates/keeping-up-to-date.md b/src/chromium/adding-third-party-crates/keeping-up-to-date.md new file mode 100644 index 000000000000..92b2c1861a0b --- /dev/null +++ b/src/chromium/adding-third-party-crates/keeping-up-to-date.md @@ -0,0 +1,8 @@ +# Keeping crates up to date + +As the OWNER of any third party Chromium dependency, you are +[expected to keep it up to date with any security fixes][0]. It is hoped +that we will soon automate this for Rust crates, but for now, it's still +your responsibility just as it is for any other third party dependency. + +[0]: https://chromium.googlesource.com/chromium/src/+/main/docs/adding_to_third_party.md#add-owners \ No newline at end of file diff --git a/src/chromium/adding-third-party-crates/resolving-problems.md b/src/chromium/adding-third-party-crates/resolving-problems.md new file mode 100644 index 000000000000..0a915122b3cc --- /dev/null +++ b/src/chromium/adding-third-party-crates/resolving-problems.md @@ -0,0 +1,105 @@ +# Resolving problems + +In the Cargo ecosystem, build instructions for crates are spread across: + +* The declarative `Cargo.toml` +* The (optional) imperative [`build.rs` script][0] + +Our tooling is pretty good at converting `Cargo.toml` files to appropriate +`gn` rules. + +But, `build.rs` is more difficult. This is a program which is itself run +_as part of the build of a crate_. That program can do arbitrary things. +This is fundamentally at odds with the design of `gn` and `ninja` which aim +for static, deterministic, build rules to maximize parallelism and +repeatability of builds. + +In Chromium, we emulate Cargo to build and run `build.rs` scripts, but we +can't possibly simulate all the possible things that arbitrary code can +do. + +If your crate - or one of its transitive dependencies - does unusual things +in its `build.rs`, you're going to have to resolve how to make that work +with `gn`. + +Specifically: + +| build script effect | Supported by our gn templates | Work required by you | +|-----|-----|-----| +| Checking rustc version to configure features on and off | Yes | None | +| Checking platform or CPU to configure features on and off | Yes | None | +| Generating code | Yes | Yes - specify in `third_party.toml` | +| Reading files | Yes | Yes - specify in `third_party.toml` | +| Building C/C++ | No | Patch around it | +| Arbitrary other actions | No | Patch around it | + +Fortunately, most crates don't contain a build script, and fortunately, most +build scripts only do the top two actions. + +## Build scripts which generate code + +Some `build.rs` files generate files of Rust code. + +You'll find out about this problem when you first come to actually build +the code in Chromium. Most likely, `ninja` will complain about a missing +source code file. + +You should then check the `build.rs` file for the script to see if it reads +or writes source code files. + +If so, modify [`third_party.toml`][1] to add `build-script-outputs` to the +crate. If this is a transitive dependency, that is, one on which Chromium +code should not directly depend, also add `allow-first-party-usage=false`. +There are several examples already in that file: + +```toml +[dependencies.unicode-linebreak] +version = "0.1" +allow-first-party-usage = false +build-script-outputs = [ "tables.rs" ] +``` + +Now rerun [`gnrt.py gen`][2] to regenerate `BUILD.gn` files to inform ninja +that this particular output file is input to subsequent build steps. + +## Build scripts which read files + +If the `build.rs` depends on reading code from the crate or the rest of the +Chromium source code tree, you can similarly specify `build-script-inputs`. +There are no examples of this right now. + +## Building C/C++ or arbitrary other actions - patching a crate + +Some crates use the [`cc`][2] crate to build and link C/C++ libraries. +Other crates parse C/C++ using [`bindgen`][3] within their build scripts. +These actions can't be supported in a Chromium context - our gn, ninja +and LLVM build system is very specific in expressing relationships between +build actions. + +So, your options are: + +* Avoid these crates +* Apply a patch to the crate. + +Patches should be kept in `third_party/rust///patches` - +see for example the [patches against the cxx crate][4]. There is currently +no automation - [simply create and apply patches manually][5] to remove the +problematic actions from the build script. + +If your patches modify the `Cargo.toml` file, rerun `gnrt gen`. + +## Conflicting versions + +The crate that you want to include might have transitive dependencies +already in the tree, and perhaps it needs a different version. + +Multiple versions of crates are allowed in Chromium, but it's strongly advised +that you try to resolve this problem to reduce duplication, for example +by upgrading some other crate. + +[0]: https://doc.rust-lang.org/cargo/reference/build-scripts.html +[1]: configuring-third-party-toml.md +[2]: https://crates.io/crates/cc +[3]: https://crates.io/crates/bindgen +[4]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/rust/cxx/v1/patches/ +[5]: https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/rust.md#patching-third_party-crates \ No newline at end of file diff --git a/src/chromium/adding-third-party-crates/reviews-and-audits.md b/src/chromium/adding-third-party-crates/reviews-and-audits.md new file mode 100644 index 000000000000..736b17794e36 --- /dev/null +++ b/src/chromium/adding-third-party-crates/reviews-and-audits.md @@ -0,0 +1,29 @@ +# Auditing third party crates + +Adding new libraries is subject to Chromium's standard [policies][0], but of +course also subject to code review. As you may be bringing in not just a single +crate but also transitive depedencies, there may be a lot of code to review. +On the other hand, safe Rust code can have limited negative side effects. +How should you review it? + +Over time Chromium aims to move to a process based around [cargo vet][1]. + +Meanwhile, for each new crate addition, we are checking for the following: + +* Understand why each crate is used. What's the relationship between crates? + If the build system for each crate contains a `build.rs` or procedural + macros, work out what they're for. Are they compatible with the way + Chromium is normally built? +* Check each crate seems to be reasonably well maintained +* Use `cargo audit` to check for known vulnerabilities (TODO: how to run this) +* Ensure any unsafe code is good enough for the [Rule of Two][2] +* Check for any use of `fs` or `net` APIs +* Read all the code at a sufficient level to look for anything out of place + that might have been maliciously inserted. (You can't realistically aim + for 100% perfection here: there's often just too much code.) + +These are just guidelines - you should satisfy yourself however you see fit. + +[0]: https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/rust.md#Third_party-review +[1]: https://mozilla.github.io/cargo-vet/ +[2]: https://chromium.googlesource.com/chromium/src/+/main/docs/security/rule-of-2.md#unsafe-code-in-safe-languages \ No newline at end of file diff --git a/src/chromium/build-rules.md b/src/chromium/build-rules.md new file mode 100644 index 000000000000..eb78a0ddb725 --- /dev/null +++ b/src/chromium/build-rules.md @@ -0,0 +1,63 @@ +# Build rules + +Rust code is usually built using `cargo`. + +Chromium builds with `gn` and `ninja` for efficiency - its static rules allow +maximum parallelism. Rust is no exception. + +# Adding Rust code to Chromium + +In some existing Chromium .gn file, declare a `rust_static_library`: + +```gn +import("//build/rust/rust_static_library.gni") + +rust_static_library("my_rust_lib") { + crate_root = "lib.rs" + sources = [ "lib.rs" ] +} +``` + +You must specify _both_ the crate root, _and_ a full list of sources. +The `crate_root` is the file given to the Rust compiler representing the root +file of the compilation unit - typically `lib.rs`. `sources` is a complete +list of all source files which `ninja` needs in order to determine when rebuilds +are necessary. + +You can also add `deps` on other Rust targets. Later we'll use this to +depend upon third party code. + +(There's no such thing as a Rust `source_set`, because in Rust, an entire +crate is a compilation unit. A `static_library` is the smallest unit.) + +# Including `unsafe` Rust code + +Unsafe Rust code is forbidden in `rust_static_library` by default - it won't +compile. If you need unsafe Rust code, add `allow_unsafe = true` to the +gn target. (Later in the course we'll see circumstances why this is necessary.) + +# Depending on Rust code from Chromium + +Simply add the above target to the `deps` of some Chromium C++ target. + +# Visual Studio Code + +Types are elided in Rust code, which makes a good IDE even more useful than +for C++. Visual Studio code works well for Rust in Chromium. To use it, + +* Ensure your VSCode has the `rust-analyzer` extension, not earlier forms + of Rust support +* `gn gen out/Release --export-rust-project` (or equivalent for your output + directory) +* `ln -s out/Release/rust-project.json rust-project.json` + +We'll now try all this in an exercise. + +
+Students might be wondering why we need a gn template, rather than using +[gn's built-in support for Rust static libraries][0]. +The answer is that this template provides support for cxx interop, Rust features, +and unit tests, some of which we'll use later. +
+ +[0]: https://gn.googlesource.com/gn/+/main/docs/reference.md#func_static_library \ No newline at end of file diff --git a/src/chromium/cargo.md b/src/chromium/cargo.md new file mode 100644 index 000000000000..c5fd56ed3eac --- /dev/null +++ b/src/chromium/cargo.md @@ -0,0 +1,49 @@ +# Using cargo for tools + +Mostly, we'll be talking about using `gn` to include Rust in Chromium itself. +But can you use `cargo` and normal Rust crates to build Rust tools and to do +Rust experiments outside the main Chromium biuld? + +Typical Rust development requires downloading and running content from the +internet: + +* The Rust toolchain (`cargo` and `rustc` at least) +* Whatever [third-party crates][0] your project depends upon. (These may + include procedural macros and build scripts which are run on your machine + during the build process, as well as at run time.) + +Your organization's policy, and/or common sense, may prohibit you from doing +these things. + +Chromium contains a copy of `cargo` and `rustc` + +If you want to make a Rust tool, you can do something like this: + +```sh +export PATH_TO_CHROMIUM_SRC=~/chromium/src +mkdir my-rust-tool +cd my-rust-tool +$PATH_TO_CHROMIUM_SRC/third_party/rust-toolchain/bin/cargo init +$PATH_TO_CHROMIUM_SRC/third_party/rust-toolchain/bin/cargo run +``` + +This uses Chromium's own Rust toolchain so you are not yet trusting anything +from the internet. + +But, Chromium does not yet have a library of "approved" third-party crates. +Exercise due caution. + +## Mini exercise + +Discuss in small groups the policies within your own team and organization, +and come to a group agreement about what's an acceptable level of risk. + +
+Assuming folks taking the course are physically together, ask them to discuss +in small groups of 3-4 people. Then, ask each table whether they've come +to a consensus on the level of risk + +Later in the course, we'll be running an actual `cargo`-based tool, `gnrt`. +
+ +[0]: https://crates.io/ \ No newline at end of file diff --git a/src/chromium/interoperability-with-cpp.md b/src/chromium/interoperability-with-cpp.md new file mode 100644 index 000000000000..37a3294046d4 --- /dev/null +++ b/src/chromium/interoperability-with-cpp.md @@ -0,0 +1,110 @@ +# Interoperability with C++ + +The Rust community offers multiple options for C++/Rust interop, with new +being developed all the time. At the moment, Chromium uses a tool called "cxx". + +Behind the scenes, this uses a "lowest common denominator" C ABI, but it builds +nice abstractions on both sides. + +The overall approach looks like this: + + + +See the [CXX tutorial][1] for an full example of using this. + +cxx requires you to declare the whole C++/Rust boundary in one of your `.rs` +files. For instance: + +```rust +// src/main.rs + +#[cxx::bridge] +mod ffi { + extern "Rust" { + type MultiBuf; + + fn next_chunk(buf: &mut MultiBuf) -> &[u8]; + } + + unsafe extern "C++" { + include!("cxx-demo/include/blobstore.h"); + + type BlobstoreClient; + + fn new_blobstore_client() -> UniquePtr; + fn put(&self, parts: &mut MultiBuf) -> u64; + } +} +``` + +Note: +* Native support for C++'s `std::unique_ptr` in Rust +* Native support for Rust slices in C++ +* Calls from C++ to Rust (in the top part) +* Calls from Rust to C++, and C++ types (in the bottom part) + +**Common misconception**: It _looks_ like a C++ header is being parser by Rust, +but this is misleading. This header is never interpreted by Rust, but simply +`#include`d in the generated C++ code for the benefit of C++ compilers. + +## cxx reference + +By far the most useful page when using cxx is the [type reference][2]. + +## Using cxx from Chromium + +The `rust_static_library` target intrinsically knows about cxx interop. Just add + +```gn +cxx_bindings = [ "my_rust_file.rs" ] +``` + +to your existing `rust_static_library` target. **You also need +`allow_unsafe = true`**. + +C++ headers will be generated at a sensible location, so you can just + +```cpp +#include "ui/base/my_rust_file.rs.h" +``` + +and because you probably already depend on the Rust component from the C++ +component, you can just go ahead and use them - all the usual build rule things +like visibility and gn dependencies are automatically set up. + +## Limitations of cxx + +cxx fundamentally suits cases where: + +* Your Rust-C++ interface is sufficiently simple that you can declare all of it. +* You're using only the types natively supported by cxx already, for example + `std::unique_ptr`, `std::string`, `&[u8]` etc. + +It has many limitations, some of which are quite frustrating - for example +lack of support for Rust's `Option` type. + +These limitations constrain us to using Rust in Chromium only for well isolated +"leaf nodes" rather than for arbitrary Rust-C++ interop. When considering +a use-case for Rust in Chromium, a good starting point is to draft the cxx +bindings for the language boundary to see if it appears simple enough. + +The best way to learn cxx is by doing, so, another exercise! + +
+Students may ask - why do we still need `allow_unsafe = true`? + +The broad answer is that no C/C++ code is "safe" by the normal Rust standards. +Calling back and forth C/C++ from Rust may do arbitrary things to memory, and +compromise the safety of Rust's own data layouts. Presence of _too many_ +`unsafe` keywords in C/C++ interop can harm the signal-to-noise ratio of +such a keyword, and is [controversial][3], but strictly, bringing any foreign +code into a Rust binary can cause unexpected behavior from Rust's perspective. + +The narrow answer lies in the diagram at the top of this page - behind the +scenes, cxx generates Rust `unsafe` and `extern "C"` functions just like +we did manually in the previous section. +
+ +[1]: https://cxx.rs/tutorial.html +[2]: https://cxx.rs/bindings.html +[3]: https://steveklabnik.com/writing/the-cxx-debate \ No newline at end of file diff --git a/src/chromium/policy.md b/src/chromium/policy.md new file mode 100644 index 000000000000..64cfa2c11d9b --- /dev/null +++ b/src/chromium/policy.md @@ -0,0 +1,19 @@ +# Chromium Rust policy + +Chromium does not yet allow first-party Rust except in rare cases as approved +by Chromium's [Area Tech Leads](https://source.chromium.org/chromium/chromium/src/+/main:ATL_OWNERS). + +Chromium's policy on third party libraries is outlined [here](https://chromium.googlesource.com/chromium/src/+/main/docs/adding_to_third_party.md#rust) - +Rust is allowed for third party libraries under various circumstances, including +if they're the best option for performance or for security. + +Very few Rust libraries directly expose a C/C++ API, so that means that nearly +all such libraries will require a small amount of first-party glue code. + +Because of this, today's course will be heavily focused on: + +* Bringing in third-party Rust code ("crates") +* Writing glue code to be able to use those crates from Chromium C++. + +If this policy changes over time, the course will evolve to keep up. + diff --git a/src/chromium/setup.md b/src/chromium/setup.md new file mode 100644 index 000000000000..e3f562a85f1e --- /dev/null +++ b/src/chromium/setup.md @@ -0,0 +1,22 @@ +# Setup + +Make sure you can build and run Chromium. Any platform and set of build flags is +OK, so long as your code is relatively recent (commit position 1223636 onwards, +corresponding to November 2023): + +```shell +gn gen out/Debug +autoninja -C out/Debug chrome +out/Debug/chrome # or on Mac, out/Debug/Chromium.app/Contents/MacOS/Chromium +``` + +See [How to build Chromium](https://www.chromium.org/developers/how-tos/get-the-code/) +if you aren't already at that point. Be warned - setting up to build Chromium +takes time. + +# About the exercises + +This part of the course has a series of exercises which build on each other. +We'll be doing them spread throughout the course instead of just at the end. +If you don't have time to complete a certain part, don't worry: you can +catch up in the next slot. \ No newline at end of file diff --git a/src/exercises/chromium/bringing-it-together.md b/src/exercises/chromium/bringing-it-together.md new file mode 100644 index 000000000000..9ec599f3881e --- /dev/null +++ b/src/exercises/chromium/bringing-it-together.md @@ -0,0 +1,61 @@ +# Bringing it together - Exercise + +In this exercise, you're going to add a whole new Chromium feature, bringing +together everything you already learned. + +## The brief from Product Management + +A community of pixies has been discovered living in a remote rainforest. +It's important that we get Chromium for Pixies delivered to them as soon +as possible. + +The requirement is to translate all Chromium's UI strings into Pixie language. + +There's not time to wait for proper translations, but fortunately pixie +language is very close to English, and it turns out there's a Rust crate +which does the translation. + +In fact, you already [imported that crate in the previous exercise][0]. + +(Obviously, real translations of Chrome require incredible care and +diligence. Don't ship this!) + +## Steps + +Modify `ResourceBundle::MaybeMangleLocalizedString` so that it uwuifies +all strings before display. In this special build of Chromium, it should +always do this irrespective of the setting of `mangle_localized_strings_`. + +If you've done everything right across all these exercises, congratulations, +you should have created Chrome for pixies! + + + +
+Students will likely need some hints here. Hints include: + +* UTF16 vs UTF8. Students should be aware that Rust strings are always + UTF8, and will probably decide that it's better to do the conversion + on the C++ side using `base::UTF16ToUTF8` and back again. +* If students decide to do the conversion on the Rust side, they'll need to + consider [`std::string::from_utf16`][1], consider error handling, and + consider which [cxx supported types can transfer a lot of u16s][2]. +* Students may design the C++/Rust boundary in several different ways, + e.g. taking and returning strings by value, or taking a mutable reference + to a string. If a mutable reference is used, cxx will likely + tell the student that they need to use [`Pin`][3]. You may need to explain + what `Pin` does, and then explain why `cxx` needs it for mutable references + to C++ data: the answer is that C++ data can't be moved around like Rust + data, because it may contain self-referential pointers. +* The C++ target containing ``ResourceBundle::MaybeMangleLocalizedString` + will need to depend on a `rust_static_library` target. The student + probably already did this. +* The `rust_static_library` target will need to depend on + `//third_party/rust/uwuify/v0_2:lib`. + +
+ +[0]: https://crates.io/uwuify +[1]: https://doc.rust-lang.org/std/string/struct.String.html#method.from_utf16 +[2]: https://cxx.rs/binding/slice.html +[3]: https://doc.rust-lang.org/std/pin/ \ No newline at end of file diff --git a/src/exercises/chromium/build-rules.md b/src/exercises/chromium/build-rules.md new file mode 100644 index 000000000000..0a12b62b048e --- /dev/null +++ b/src/exercises/chromium/build-rules.md @@ -0,0 +1,62 @@ +# Build rules exercise + +In your Chromium build, add a new Rust target to `//ui/base/BUILD.gn` which: + +* Has a single Rust source code file +* Allows unsafe code +* Has the following Rust code: + ```rust + #[no_mangle] + pub extern "C" fn hello_from_rust() { + println!("Hello from Rust!") + } + ``` + **Important**: note that `no_mangle` here is considered a type of unsafety + by the Rust compiler, so you'll need to to allow unsafe code in your + `gn` target. +* Add this new Rust target as a dependency of `//ui/base:base`. +* Declare this function at the top of `ui/base/resource/resource_bundle.cc` + (later, we'll see how this can be automated by bindings generation tools): + ```cpp + extern "C" void hello_from_rust(); + ``` + +* Call this function from somewhere in `ui/base/resource/resource_bundle.cc` + - we suggest the top of `ResourceBundle::MaybeMangleLocalizedString`. +* Build Chromium. +* Run Chromium, and ensure that "Hello from Rust!" is printed lots of times. + +If you have any difficulties with this, please work through it with your +instructor now - subsequent exercises will be more frustrating if you don't +have a working, running, Chromium build. + +If you use VSCode, now set up Rust to work well in VSCode. It will be useful +in subsequent exercises. If you've succeeded, you will be able to use +right-click "Go to definition" on `println!`. + +## Where to find help + +* The options available to the [`rust_static_library` gn template][0] +* Information about [`#[no_mangle]`][1] +* Information about [`extern "C"`][2] +* Information about gn's [`--export-rust-project`][3] switch +* [How to install rust-analyzer in VSCode][4] + +
+This example is unusual because it boils down to the lowest-common-denominator +interop language, C. Both C++ and Rust can natively declare and call C ABI +functions. Later in the course, we'll connect C++ directly to Rust. + +`allow_unsafe = true` is required here because `#[no_mangle]` might allow Rust +to generate two functions with the same name, and Rust can no longer guarantee +that the right one is called. + +If you need a pure Rust executable, you can also do that using the +`rust_executable` gn template. +
+ +[0]: https://source.chromium.org/chromium/chromium/src/+/main:build/rust/rust_static_library.gni;l=16 +[1]: https://doc.rust-lang.org/beta/reference/abi.html#the-no_mangle-attribute +[2]: https://doc.rust-lang.org/std/keyword.extern.html +[3]: https://gn.googlesource.com/gn/+/main/docs/reference.md#compilation-database +[4]: https://code.visualstudio.com/docs/languages/rust \ No newline at end of file diff --git a/src/exercises/chromium/chwomium.png b/src/exercises/chromium/chwomium.png new file mode 100644 index 0000000000000000000000000000000000000000..00e708c64f51386fea51c60e8920f1ed69c5e0b4 GIT binary patch literal 169651 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 literal 0 HcmV?d00001 diff --git a/src/exercises/chromium/interoperability-with-cpp.md b/src/exercises/chromium/interoperability-with-cpp.md new file mode 100644 index 000000000000..2613274068bb --- /dev/null +++ b/src/exercises/chromium/interoperability-with-cpp.md @@ -0,0 +1,71 @@ +# Exercise: Interoperability with C++ + +## Part one + +* In the Rust file you previously created, add a `#[cxx::bridge]` which specifies a single function, + to be called from C++, called `hello_from_rust`, taking no parameters and returning + no value. +* Modify your previous `hello_from_rust` function to remove `extern "C"` and `#[no_mangle]`. + This is now just a standard Rust function. +* Modify your `gn` target to build these bindings. +* In your C++ code, remove the forward-declaration of `hello_from_rust`. Instead, include + the generated header file. +* Build and run! + +## Part two + +It's a good idea to play with cxx a little. It helps you think about how flexible +Rust in Chromium actually is. + +Some things to try: + +* Call back into C++ from Rust. You will need: + * An additional header file which you can `include!` from your `cxx::bridge`. + You'll need to declare your C++ function in that new header file. + * An `unsafe` block to call such a function, or alternatively specify the `unsafe` + keyword in your `#[cxx::bridge]` [as described here][0]. + * You may also need to `#include "third_party/rust/cxx/v1/crate/include/cxx.h"` +* Pass a C++ string from C++ into Rust. +* Pass a reference to a C++ object into Rust. +* Intentionally get the Rust function signatures mismatched from the `#[cxx::bridge]`, + and get used to the errors you see. +* Intentionally get the C++ function signatures mismatched from the `#[cxx::bridge]`, + and get used to the errors you see. +* Pass a `std::unique_ptr` of some type from C++ into Rust, so that Rust + can own some C++ object. +* Create a Rust object and pass it into C++, so that C++ owns it. (Hint: + you need a `Box`). +* Declare some methods on a C++ type. Call them from Rust. +* Declare some methods on a Rust type. Call them from C++. + +## Part three + +Now you understand the strengths and limitations of cxx interop, think of +a couple of use-cases for Rust in Chromium where the interface would be +sufficiently simple. Sketch how you might define that interface. + +## Where to find help + +* The [cxx binding reference][1] +* The [`rust_static_library` gn template][2] + +
+As students explore Part Two, they're bound to have lots of questions aboout how +to achieve these things, and also how cxx works behind the scenes. + +Some of the questions you may encounter: +* I'm seeing a problem initializing a variable of type X with type Y, where + X and Y are both function types. + This is because your C++ function doesn't quite match the declaration in your + `cxx::bridge`. +* I seem to be able to freely convert C++ references into Rust references. + Doesn't that risk UB? + For cxx's _opaque_ types, no, because they are zero-sized. For cxx trivial types + yes, it's _possible_ to cause UB, although cxx's design makes it quite + difficult to craft such an example. +
+ + +[0]: https://cxx.rs/extern-c++.html#functions-and-member-functions +[1]: https://cxx.rs/bindings.html +[2]: https://source.chromium.org/chromium/chromium/src/+/main:build/rust/rust_static_library.gni;l=16 \ No newline at end of file diff --git a/src/exercises/chromium/third-party.md b/src/exercises/chromium/third-party.md new file mode 100644 index 000000000000..9c99cbfe8bcf --- /dev/null +++ b/src/exercises/chromium/third-party.md @@ -0,0 +1,22 @@ +# Exercise + +Add [uwuify][0] to Chromium, turning off the crate's [default features][1]. +Assume that the crate will be used in shipping Chromium, but won't be used +to handle untrustworthy input. + +(In the next exercise we'll use uwuify from Chromium, but feel free to +skip ahead and do that now if you like). + +
+Students will need to download lots of transitive dependencies. This will +appear repetitive - that is indeed correct. There's no shortcut but to +run lots of separate download commands. + +The total crates needed are: uwuify, smallvec, scopeguard, parking_lot, +parking_lot_core, lock_api and instant. If students are downloading even +more than that, they probably forgot to turn off the default features. + + + +[0]: https://crates.io/crates/uwuify +[1]: https://doc.rust-lang.org/cargo/reference/features.html#the-default-feature \ No newline at end of file diff --git a/src/glossary.md b/src/glossary.md index 62a184ce46cc..203c33299bdd 100644 --- a/src/glossary.md +++ b/src/glossary.md @@ -127,6 +127,8 @@ Also, please keep the hard line breaks to ensure a nice formatting. Days 1 to 3 of this course. - Rust in Android:\ See [Rust in Android](android.md). +- Rust in Chromium:\ + See [Rust in Chromium](chromium.md). - safe:\ Refers to code that adheres to Rust's ownership and borrowing rules, preventing memory-related errors. - scope:\ diff --git a/src/index.md b/src/index.md index c301c1226ce2..eeca9325dae5 100644 --- a/src/index.md +++ b/src/index.md @@ -25,6 +25,9 @@ Building on this, you're invited to dive into one or more specialized topics: * [Android](android.md): a half-day course on using Rust for Android platform development (AOSP). This includes interoperability with C, C++, and Java. +* [Chromium](chromium.md): a half-day course on using Rust within Chromium + based browsers. This includes interoperability with C++ and how to include + third-party crates in Chromium. * [Bare-metal](bare-metal.md): a whole-day class on using Rust for bare-metal (embedded) development. Both microcontrollers and application processors are covered. From 30d531610e8142d82d9f9b4f0fe2958b5193c20c Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Wed, 15 Nov 2023 09:41:40 +0000 Subject: [PATCH 02/34] Update src/chromium/cargo.md Co-authored-by: Nicole L --- src/chromium/cargo.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chromium/cargo.md b/src/chromium/cargo.md index c5fd56ed3eac..6d67d2fee138 100644 --- a/src/chromium/cargo.md +++ b/src/chromium/cargo.md @@ -2,7 +2,7 @@ Mostly, we'll be talking about using `gn` to include Rust in Chromium itself. But can you use `cargo` and normal Rust crates to build Rust tools and to do -Rust experiments outside the main Chromium biuld? +Rust experiments outside the main Chromium build? Typical Rust development requires downloading and running content from the internet: From a0ac4f62621b4ca0adf0c11aa05c709409d78850 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Wed, 15 Nov 2023 09:42:02 +0000 Subject: [PATCH 03/34] Update src/chromium/interoperability-with-cpp.md Co-authored-by: Nicole L --- src/chromium/interoperability-with-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chromium/interoperability-with-cpp.md b/src/chromium/interoperability-with-cpp.md index 37a3294046d4..cdf8c4a3e312 100644 --- a/src/chromium/interoperability-with-cpp.md +++ b/src/chromium/interoperability-with-cpp.md @@ -1,6 +1,6 @@ # Interoperability with C++ -The Rust community offers multiple options for C++/Rust interop, with new +The Rust community offers multiple options for C++/Rust interop, with new tools being developed all the time. At the moment, Chromium uses a tool called "cxx". Behind the scenes, this uses a "lowest common denominator" C ABI, but it builds From 627469642c80a5a9178d1cdf732720872743d300 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Wed, 15 Nov 2023 15:38:25 +0000 Subject: [PATCH 04/34] Update src/chromium/adding-third-party-crates/generating-gn-build-rules.md Co-authored-by: Martin Geisler --- .../adding-third-party-crates/generating-gn-build-rules.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chromium/adding-third-party-crates/generating-gn-build-rules.md b/src/chromium/adding-third-party-crates/generating-gn-build-rules.md index 883f8f2b78e2..b08df6647904 100644 --- a/src/chromium/adding-third-party-crates/generating-gn-build-rules.md +++ b/src/chromium/adding-third-party-crates/generating-gn-build-rules.md @@ -46,7 +46,7 @@ For example: ``` Missing dependency: example-transitive-dependency 1.0.83 - chromium 0.1.0 (path+file:///usr/local/google/home/you/chromium/src/third_party/rust) + chromium 0.1.0 (path+file:///home/you/chromium/src/third_party/rust) example-crate 1.0.110 (path+file:///usr/local/google/home/you/chromium/src/third_party/rust/example-crate/v1/crate) ``` From c0e34db3a07bc6cc5fdb955c274b236b4d215634 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Wed, 15 Nov 2023 15:38:34 +0000 Subject: [PATCH 05/34] Update src/chromium/interoperability-with-cpp.md Co-authored-by: Nicole L --- src/chromium/interoperability-with-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chromium/interoperability-with-cpp.md b/src/chromium/interoperability-with-cpp.md index cdf8c4a3e312..7db3b9a7d4ca 100644 --- a/src/chromium/interoperability-with-cpp.md +++ b/src/chromium/interoperability-with-cpp.md @@ -10,7 +10,7 @@ The overall approach looks like this: -See the [CXX tutorial][1] for an full example of using this. +See the [CXX tutorial][1] for a full example of using this. cxx requires you to declare the whole C++/Rust boundary in one of your `.rs` files. For instance: From 5e8159162b41a3e42213b495629e34a0fa53e523 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Wed, 15 Nov 2023 15:39:02 +0000 Subject: [PATCH 06/34] Update src/chromium/interoperability-with-cpp.md Co-authored-by: Nicole L --- src/chromium/interoperability-with-cpp.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chromium/interoperability-with-cpp.md b/src/chromium/interoperability-with-cpp.md index 7db3b9a7d4ca..03f4503e43e6 100644 --- a/src/chromium/interoperability-with-cpp.md +++ b/src/chromium/interoperability-with-cpp.md @@ -94,7 +94,7 @@ The best way to learn cxx is by doing, so, another exercise! Students may ask - why do we still need `allow_unsafe = true`? The broad answer is that no C/C++ code is "safe" by the normal Rust standards. -Calling back and forth C/C++ from Rust may do arbitrary things to memory, and +Calling back and forth to C/C++ from Rust may do arbitrary things to memory, and compromise the safety of Rust's own data layouts. Presence of _too many_ `unsafe` keywords in C/C++ interop can harm the signal-to-noise ratio of such a keyword, and is [controversial][3], but strictly, bringing any foreign From 74eeb0da131d869dc63781aac66747743cb64bfb Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Wed, 15 Nov 2023 15:39:18 +0000 Subject: [PATCH 07/34] Update src/exercises/chromium/bringing-it-together.md Co-authored-by: Nicole L --- src/exercises/chromium/bringing-it-together.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/exercises/chromium/bringing-it-together.md b/src/exercises/chromium/bringing-it-together.md index 9ec599f3881e..477abc84b315 100644 --- a/src/exercises/chromium/bringing-it-together.md +++ b/src/exercises/chromium/bringing-it-together.md @@ -47,7 +47,7 @@ Students will likely need some hints here. Hints include: what `Pin` does, and then explain why `cxx` needs it for mutable references to C++ data: the answer is that C++ data can't be moved around like Rust data, because it may contain self-referential pointers. -* The C++ target containing ``ResourceBundle::MaybeMangleLocalizedString` +* The C++ target containing `ResourceBundle::MaybeMangleLocalizedString` will need to depend on a `rust_static_library` target. The student probably already did this. * The `rust_static_library` target will need to depend on From 4ac71c37b1e250028154b06907e7be0d429eefd7 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Wed, 15 Nov 2023 16:23:25 +0000 Subject: [PATCH 08/34] Update src/chromium/adding-third-party-crates/generating-gn-build-rules.md Co-authored-by: Martin Geisler --- .../adding-third-party-crates/generating-gn-build-rules.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chromium/adding-third-party-crates/generating-gn-build-rules.md b/src/chromium/adding-third-party-crates/generating-gn-build-rules.md index b08df6647904..afcdb3ef69fa 100644 --- a/src/chromium/adding-third-party-crates/generating-gn-build-rules.md +++ b/src/chromium/adding-third-party-crates/generating-gn-build-rules.md @@ -47,7 +47,7 @@ For example: ``` Missing dependency: example-transitive-dependency 1.0.83 chromium 0.1.0 (path+file:///home/you/chromium/src/third_party/rust) - example-crate 1.0.110 (path+file:///usr/local/google/home/you/chromium/src/third_party/rust/example-crate/v1/crate) + example-crate 1.0.110 (path+file:///home/you/chromium/src/third_party/rust/example-crate/v1/crate) ``` Download each of them as well. From bab2e89dd540fad1656acfc0350ca815cf246972 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Thu, 16 Nov 2023 18:45:51 +0000 Subject: [PATCH 09/34] Split Chromium content into smaller slides. This splits Chromium content into slides which can fit onto one screen. It does this for all parts of the Chromium course, except for: * Exercises, which seem to be longer in other parts of the course, so I'm following suit * The "Adding to third party" section which will probably need rewriting before the course is given anyway In general this commit makes no other changes, but there are a couple of exceptions: * There's a bit of rewording to fit in smaller spaces * Code examples are provided for the "Adding to build rules" slides since there's now space * A screenshot of VSCode is provided to demonstrate how helpful it is. --- src/SUMMARY.md | 7 ++ src/chromium/build-rules.md | 39 ++------- src/chromium/build-rules/depending.md | 17 ++++ src/chromium/build-rules/unsafe.md | 17 ++++ src/chromium/build-rules/vscode.md | 12 +++ src/chromium/build-rules/vscode.png | Bin 0 -> 194365 bytes src/chromium/cargo.md | 26 +----- src/chromium/cargo/howto.md | 19 +++++ src/chromium/interoperability-with-cpp.md | 77 ------------------ .../example-bindings.md | 37 +++++++++ .../limitations-of-cxx.md | 22 +++++ .../using-cxx-from-chromium.md | 20 +++++ src/exercises/chromium/build-rules.md | 54 ++++++------ 13 files changed, 186 insertions(+), 161 deletions(-) create mode 100644 src/chromium/build-rules/depending.md create mode 100644 src/chromium/build-rules/unsafe.md create mode 100644 src/chromium/build-rules/vscode.md create mode 100644 src/chromium/build-rules/vscode.png create mode 100644 src/chromium/cargo/howto.md create mode 100644 src/chromium/interoperability-with-cpp/example-bindings.md create mode 100644 src/chromium/interoperability-with-cpp/limitations-of-cxx.md create mode 100644 src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index f0d31249ebe3..34846794e817 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -229,10 +229,17 @@ - [Welcome](chromium.md) - [Setup](chromium/setup.md) - [Using cargo for tools](chromium/cargo.md) + - [How to](chromium/cargo/howto.md) - [Policy](chromium/policy.md) - [Build Rules](chromium/build-rules.md) + - [Unsafe code](chromium/build-rules/unsafe.md) + - [Depending on Rust code from Chromium C++](chromium/build-rules/depending.md) + - [Visual Studio code](chromium/build-rules/vscode.md) - [Exercise](exercises/chromium/build-rules.md) - [Interoperability with C++](chromium/interoperability-with-cpp.md) + - [Example bindings](chromium/interoperability-with-cpp/example-bindings.md) + - [Using cxx from Chromium](chromium/interoperability-with-cpp/using-cxx-from-chromium.md) + - [Limitations of cxx](chromium/interoperability-with-cpp/limitations-of-cxx.md) - [Exercise](exercises/chromium/interoperability-with-cpp.md) - [Adding third party crates](chromium/adding-third-party-crates.md) - [Configuring third_party.toml](chromium/adding-third-party-crates/configuring-third-party-toml.md) diff --git a/src/chromium/build-rules.md b/src/chromium/build-rules.md index eb78a0ddb725..537580864f34 100644 --- a/src/chromium/build-rules.md +++ b/src/chromium/build-rules.md @@ -1,11 +1,9 @@ # Build rules -Rust code is usually built using `cargo`. +Rust code is usually built using `cargo`. Chromium builds with `gn` and `ninja` +for efficiency - its static rules allow maximum parallelism. Rust is no exception. -Chromium builds with `gn` and `ninja` for efficiency - its static rules allow -maximum parallelism. Rust is no exception. - -# Adding Rust code to Chromium +## Adding Rust code to Chromium In some existing Chromium .gn file, declare a `rust_static_library`: @@ -18,42 +16,19 @@ rust_static_library("my_rust_lib") { } ``` +You can also add `deps` on other Rust targets. Later we'll use this to +depend upon third party code. + +
You must specify _both_ the crate root, _and_ a full list of sources. The `crate_root` is the file given to the Rust compiler representing the root file of the compilation unit - typically `lib.rs`. `sources` is a complete list of all source files which `ninja` needs in order to determine when rebuilds are necessary. -You can also add `deps` on other Rust targets. Later we'll use this to -depend upon third party code. - (There's no such thing as a Rust `source_set`, because in Rust, an entire crate is a compilation unit. A `static_library` is the smallest unit.) -# Including `unsafe` Rust code - -Unsafe Rust code is forbidden in `rust_static_library` by default - it won't -compile. If you need unsafe Rust code, add `allow_unsafe = true` to the -gn target. (Later in the course we'll see circumstances why this is necessary.) - -# Depending on Rust code from Chromium - -Simply add the above target to the `deps` of some Chromium C++ target. - -# Visual Studio Code - -Types are elided in Rust code, which makes a good IDE even more useful than -for C++. Visual Studio code works well for Rust in Chromium. To use it, - -* Ensure your VSCode has the `rust-analyzer` extension, not earlier forms - of Rust support -* `gn gen out/Release --export-rust-project` (or equivalent for your output - directory) -* `ln -s out/Release/rust-project.json rust-project.json` - -We'll now try all this in an exercise. - -
Students might be wondering why we need a gn template, rather than using [gn's built-in support for Rust static libraries][0]. The answer is that this template provides support for cxx interop, Rust features, diff --git a/src/chromium/build-rules/depending.md b/src/chromium/build-rules/depending.md new file mode 100644 index 000000000000..337046932b9e --- /dev/null +++ b/src/chromium/build-rules/depending.md @@ -0,0 +1,17 @@ +# Depending on Rust code from Chromium C++ + +Simply add the above target to the `deps` of some Chromium C++ target. + +```gn +import("//build/rust/rust_static_library.gni") + +rust_static_library("my_rust_lib") { + crate_root = "lib.rs" + sources = [ "lib.rs" ] +} + +# or source_set, static_library etc. +component("preexisting_cpp") { + deps = [ ":my_rust_lib" ] +} +``` \ No newline at end of file diff --git a/src/chromium/build-rules/unsafe.md b/src/chromium/build-rules/unsafe.md new file mode 100644 index 000000000000..e879f0c38910 --- /dev/null +++ b/src/chromium/build-rules/unsafe.md @@ -0,0 +1,17 @@ +# Including `unsafe` Rust code + +Unsafe Rust code is forbidden in `rust_static_library` by default - it won't +compile. If you need unsafe Rust code, add `allow_unsafe = true` to the +gn target. (Later in the course we'll see circumstances why this is necessary.) + +```gn +import("//build/rust/rust_static_library.gni") + +rust_static_library("my_rust_lib") { + crate_root = "lib.rs" + sources = [ + "lib.rs", + "hippopotamus.rs" + ] + allow_unsafe = true +} \ No newline at end of file diff --git a/src/chromium/build-rules/vscode.md b/src/chromium/build-rules/vscode.md new file mode 100644 index 000000000000..319269916122 --- /dev/null +++ b/src/chromium/build-rules/vscode.md @@ -0,0 +1,12 @@ +# Visual Studio code + +Types are elided in Rust code, which makes a good IDE even more useful than +for C++. Visual Studio code works well for Rust in Chromium. To use it, + +* Ensure your VSCode has the `rust-analyzer` extension, not earlier forms + of Rust support +* `gn gen out/Release --export-rust-project` (or equivalent for your output + directory) +* `ln -s out/Release/rust-project.json rust-project.json` + +Example screenshot from VSCode \ No newline at end of file diff --git a/src/chromium/build-rules/vscode.png b/src/chromium/build-rules/vscode.png new file mode 100644 index 0000000000000000000000000000000000000000..aa866f5276cba2473db3d125463049863ea9e389 GIT binary patch literal 194365 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

ov7uzFAQ;~7 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 -[0]: https://crates.io/ \ No newline at end of file +[0]: https://crates.io/ diff --git a/src/chromium/cargo/howto.md b/src/chromium/cargo/howto.md new file mode 100644 index 000000000000..e9cb43b1f2d1 --- /dev/null +++ b/src/chromium/cargo/howto.md @@ -0,0 +1,19 @@ +# How to minimize risk when using `cargo` + +Chromium contains a copy of `cargo` and `rustc` + +If you want to make a Rust tool, you can do something like this: + +```sh +export PATH_TO_CHROMIUM_SRC=~/chromium/src +mkdir my-rust-tool +cd my-rust-tool +$PATH_TO_CHROMIUM_SRC/third_party/rust-toolchain/bin/cargo init +$PATH_TO_CHROMIUM_SRC/third_party/rust-toolchain/bin/cargo run +``` + +This uses Chromium's own Rust toolchain so you are not yet trusting anything +from the internet. + +But, Chromium does not yet have a library of "approved" third-party crates. +Exercise due caution. diff --git a/src/chromium/interoperability-with-cpp.md b/src/chromium/interoperability-with-cpp.md index 03f4503e43e6..f2b85cdf70bd 100644 --- a/src/chromium/interoperability-with-cpp.md +++ b/src/chromium/interoperability-with-cpp.md @@ -12,83 +12,6 @@ The overall approach looks like this: See the [CXX tutorial][1] for a full example of using this. -cxx requires you to declare the whole C++/Rust boundary in one of your `.rs` -files. For instance: - -```rust -// src/main.rs - -#[cxx::bridge] -mod ffi { - extern "Rust" { - type MultiBuf; - - fn next_chunk(buf: &mut MultiBuf) -> &[u8]; - } - - unsafe extern "C++" { - include!("cxx-demo/include/blobstore.h"); - - type BlobstoreClient; - - fn new_blobstore_client() -> UniquePtr; - fn put(&self, parts: &mut MultiBuf) -> u64; - } -} -``` - -Note: -* Native support for C++'s `std::unique_ptr` in Rust -* Native support for Rust slices in C++ -* Calls from C++ to Rust (in the top part) -* Calls from Rust to C++, and C++ types (in the bottom part) - -**Common misconception**: It _looks_ like a C++ header is being parser by Rust, -but this is misleading. This header is never interpreted by Rust, but simply -`#include`d in the generated C++ code for the benefit of C++ compilers. - -## cxx reference - -By far the most useful page when using cxx is the [type reference][2]. - -## Using cxx from Chromium - -The `rust_static_library` target intrinsically knows about cxx interop. Just add - -```gn -cxx_bindings = [ "my_rust_file.rs" ] -``` - -to your existing `rust_static_library` target. **You also need -`allow_unsafe = true`**. - -C++ headers will be generated at a sensible location, so you can just - -```cpp -#include "ui/base/my_rust_file.rs.h" -``` - -and because you probably already depend on the Rust component from the C++ -component, you can just go ahead and use them - all the usual build rule things -like visibility and gn dependencies are automatically set up. - -## Limitations of cxx - -cxx fundamentally suits cases where: - -* Your Rust-C++ interface is sufficiently simple that you can declare all of it. -* You're using only the types natively supported by cxx already, for example - `std::unique_ptr`, `std::string`, `&[u8]` etc. - -It has many limitations, some of which are quite frustrating - for example -lack of support for Rust's `Option` type. - -These limitations constrain us to using Rust in Chromium only for well isolated -"leaf nodes" rather than for arbitrary Rust-C++ interop. When considering -a use-case for Rust in Chromium, a good starting point is to draft the cxx -bindings for the language boundary to see if it appears simple enough. - -The best way to learn cxx is by doing, so, another exercise!

Students may ask - why do we still need `allow_unsafe = true`? diff --git a/src/chromium/interoperability-with-cpp/example-bindings.md b/src/chromium/interoperability-with-cpp/example-bindings.md new file mode 100644 index 000000000000..539a13a36705 --- /dev/null +++ b/src/chromium/interoperability-with-cpp/example-bindings.md @@ -0,0 +1,37 @@ +# Example bindings + +cxx requires you to declare the whole C++/Rust boundary in one of your `.rs` +files. For instance: + +```rust +#[cxx::bridge] +mod ffi { + extern "Rust" { + type MultiBuf; + + fn next_chunk(buf: &mut MultiBuf) -> &[u8]; + } + + unsafe extern "C++" { + include!("cxx-demo/include/blobstore.h"); + + type BlobstoreClient; + + fn new_blobstore_client() -> UniquePtr; + fn put(&self, parts: &mut MultiBuf) -> u64; + } +} +``` + +
+Point out: + +* Native support for C++'s `std::unique_ptr` in Rust +* Native support for Rust slices in C++ +* Calls from C++ to Rust (in the top part) +* Calls from Rust to C++, and C++ types (in the bottom part) + +**Common misconception**: It _looks_ like a C++ header is being parser by Rust, +but this is misleading. This header is never interpreted by Rust, but simply +`#include`d in the generated C++ code for the benefit of C++ compilers. +
\ No newline at end of file diff --git a/src/chromium/interoperability-with-cpp/limitations-of-cxx.md b/src/chromium/interoperability-with-cpp/limitations-of-cxx.md new file mode 100644 index 000000000000..db7b8e6f05fd --- /dev/null +++ b/src/chromium/interoperability-with-cpp/limitations-of-cxx.md @@ -0,0 +1,22 @@ +## Limitations of cxx + +By far the most useful page when using cxx is the [type reference][1]. + +cxx fundamentally suits cases where: + +* Your Rust-C++ interface is sufficiently simple that you can declare all of it. +* You're using only the types natively supported by cxx already, for example + `std::unique_ptr`, `std::string`, `&[u8]` etc. + +It has many limitations, some of which are quite frustrating - for example +lack of support for Rust's `Option` type. + +These limitations constrain us to using Rust in Chromium only for well isolated +"leaf nodes" rather than for arbitrary Rust-C++ interop. When considering +a use-case for Rust in Chromium, a good starting point is to draft the cxx +bindings for the language boundary to see if it appears simple enough. + +The best way to learn cxx is by doing, so, another exercise! + + +[1]: https://cxx.rs/bindings.html \ No newline at end of file diff --git a/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md b/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md new file mode 100644 index 000000000000..7ca8ff0bfd83 --- /dev/null +++ b/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md @@ -0,0 +1,20 @@ +## Using cxx from Chromium + +The `rust_static_library` target intrinsically knows about cxx interop. Just add + +```gn +cxx_bindings = [ "my_rust_file.rs" ] +``` + +to your existing `rust_static_library` target. **You also need +`allow_unsafe = true`**. + +C++ headers will be generated at a sensible location, so you can just + +```cpp +#include "ui/base/my_rust_file.rs.h" +``` + +and because you probably already depend on the Rust component from the C++ +component, you can just go ahead and use them - all the usual build rule things +like visibility and gn dependencies are automatically set up. diff --git a/src/exercises/chromium/build-rules.md b/src/exercises/chromium/build-rules.md index 0a12b62b048e..2863cba6ecde 100644 --- a/src/exercises/chromium/build-rules.md +++ b/src/exercises/chromium/build-rules.md @@ -1,34 +1,27 @@ # Build rules exercise -In your Chromium build, add a new Rust target to `//ui/base/BUILD.gn` which: - -* Has a single Rust source code file -* Allows unsafe code -* Has the following Rust code: - ```rust - #[no_mangle] - pub extern "C" fn hello_from_rust() { - println!("Hello from Rust!") - } - ``` - **Important**: note that `no_mangle` here is considered a type of unsafety - by the Rust compiler, so you'll need to to allow unsafe code in your - `gn` target. -* Add this new Rust target as a dependency of `//ui/base:base`. -* Declare this function at the top of `ui/base/resource/resource_bundle.cc` - (later, we'll see how this can be automated by bindings generation tools): - ```cpp - extern "C" void hello_from_rust(); - ``` - -* Call this function from somewhere in `ui/base/resource/resource_bundle.cc` - - we suggest the top of `ResourceBundle::MaybeMangleLocalizedString`. -* Build Chromium. -* Run Chromium, and ensure that "Hello from Rust!" is printed lots of times. - -If you have any difficulties with this, please work through it with your -instructor now - subsequent exercises will be more frustrating if you don't -have a working, running, Chromium build. +In your Chromium build, add a new Rust target to `//ui/base/BUILD.gn` containing: + +```rust +#[no_mangle] +pub extern "C" fn hello_from_rust() { + println!("Hello from Rust!") +} +``` +**Important**: note that `no_mangle` here is considered a type of unsafety +by the Rust compiler, so you'll need to to allow unsafe code in your +`gn` target. + +Add this new Rust target as a dependency of `//ui/base:base`. +Declare this function at the top of `ui/base/resource/resource_bundle.cc` +(later, we'll see how this can be automated by bindings generation tools): +```cpp +extern "C" void hello_from_rust(); +``` + +Call this function from somewhere in `ui/base/resource/resource_bundle.cc` - +we suggest the top of `ResourceBundle::MaybeMangleLocalizedString`. +Build and run Chromium, and ensure that "Hello from Rust!" is printed lots of times. If you use VSCode, now set up Rust to work well in VSCode. It will be useful in subsequent exercises. If you've succeeded, you will be able to use @@ -43,6 +36,9 @@ right-click "Go to definition" on `println!`. * [How to install rust-analyzer in VSCode][4]
+It's really important that students get this running, because future exercises +will build on it. + This example is unusual because it boils down to the lowest-common-denominator interop language, C. Both C++ and Rust can natively declare and call C ABI functions. Later in the course, we'll connect C++ directly to Rust. From a733ea87a6610233fe0cfca3fceea048d99d555d Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Thu, 16 Nov 2023 21:14:24 +0000 Subject: [PATCH 10/34] Add some missing alt text. --- src/chromium/build-rules/vscode.png | Bin 194365 -> 89299 bytes src/chromium/interoperability-with-cpp.md | 2 +- .../chromium/bringing-it-together.md | 2 +- 3 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/chromium/build-rules/vscode.png b/src/chromium/build-rules/vscode.png index aa866f5276cba2473db3d125463049863ea9e389..4325eadfe36a7b8c48fae1f1393925e5225ec737 100644 GIT binary patch literal 89299 zcmb@tWq2IBvMy}KB*xe=J7yj;L(I&~G2@sSV`hrkV`gS%W@hG?8DqZA+H3E<&bjyd z_w_vew7OKUsw7oQDwQTgPDb=20yY8|7}!T~F(CyoFo;nwFz`}1n0Lz1*yS1+7(%I; zprD+%pdg`~owc!|2IHFq94$IO=OUc=4>^Gk zP@i##wh>Axh={%mstTiPAre~f3supEN>tGe5@nZ$LE}(uKn7N}Yq?ztV^-($dnV zMP0!AN5tTgh@{V&^uGy{Us|VJGD_32$@kB=Co{Gt(hH^zYd?7754_daDjkku2L{K+ zl6Yke7W${ETT8h82p7J*_A^l%%oxttCMnYG{cz2=Sj9BD?*=`%mp_h_x&@VmB$^*P z1fQYDALzXJL2_Eq$bwXCu@q}h!gwJ*UubY!93oPRkBgGqJg~+;=Gugvn3U!_YY=Ui zWNudVBQ%lj#FC?@p}XwJ?-8#6+@;mgTpPZn^`@FzM4?jkv2as$podT5y`_vljc)28 zrKV&mHqi)X?&I(_mbzYbQ}Q4z2N#==Q{a%+TQnAoW%MTnlteHXIHB}butD_F!PHea zF6~wYA}Oh1!^&tJvhOxR++j^0aHw%K!N|^!Z}u-Dc^#3yK1M95owPD5m438sg0VwH`o(6Vq(UZkD%+r~f@^Q096LD5Xt1EYhw10o0LN4RG2wZQhEGtsE*4g-oWAH%Wwv3k0M3{V+H z7#@-sN576@jeeHGG)BG#59^z*5>XQ^C18aCg=+`UcAxdn8)#OhErOqX`4ptslf0#6 z+r>^thn5(%62KMM65JAo)9cwCd$H_-(~8840qEY}9=Q;`#Jq666#Q-L3(@ssQwomk z0-hSa&)?7AxEt6_sFzwO#!S?V+7mL=d)sTLk9Uc1$#97mA~a3P5rYx!pNp%&aR_yY zU6gT?Tq?v$S~CGmex`g_xgth@f)<3Xhfvik6UggU55Ny#5H8NH)34M| z(T~}d?>i0!#Mwv$N~}wGjT-LagCHi&SPO(lFE%!o2$mJ2C9{WKu6ZxRFl#Z3o23+k6Pu2)7SLk@%A%WDoM8!QH-OGs z$0p5K#@q&k0dXY3k2!%H$NNSdQ>arkc^U>%Eyo!r7%N!L8!|PaGDgbWMU4$9m~{>yyzFC@1$5x6`6K z{yWf#=4l59JEs`#5pE#fE#3}p39fq*voTyvuRvE5n3o`uFuNSIF|_a;=4za!;!d4eSk`R-R{^XIl5>_a^vm_#RP$_<}TODvZZp zj_V5I3wp1^_eJZO+&{MTA^!Sxth_n5Rkn+_rM>ksE4n~FRWNTdyRhyYZyiR^59qW8 z=^}~7_Uz2sh`ivvEc|YOj)v@ppn^z;PJxkt0QqeazGa^BNA2T`VvbpVfayxzJnfPd z2p32Qc&-L(AvEOw<-4CXpH(8b(o?7>*%KM)33vYi@W~rp5BFmx1H&+N zF-b9CnbA%9X6(!D7dcT-w&`uMI3)lPv*Ut*-{+Hsg9I(Te1YZq0tzHrCbgE6%^ASj21oeDV^U z4cy}%YfWwSiD<{Mxc+rT`oIIyVm*BUfAPBriX5v4IRjsHIsuLHrpjt6zw3fk9d<;I z2}ZnA7k^gfgBK`5rN^DDuIErm+8!^h`=RXl>I-HE# zR_sVS?m0dkAKnI#cfucrB=QZsta>tT8Xi;b6*bSm6qJn1O`tP>`$&x=f)k7Vl%k)) zIq{eQ1Ui}VUWfGof+h}AOSmgM+J8e_3akf&ge_qXX!Oz&C!zvA*3tnz9XKAZUh1KN zc&ZTPS}jNRw{~15FWW2&7W?H~x_s__t~rOWTjft{lJ~7=+HDg}-Zd6pswU1t&ejvz>FqjR=V7o#NbB6AZtSlV`wV-wU1$O1 zMzSpFDsRSDnw}Yg8xLL;ubLCx={(q*A6p-JcJ3?uTqh_eMgnVt%ykx9+1XB*JobNe zC;C>S%D^;KX3OyAfOtx{QL( znB~QL7=2!SB|RFM{C!o?Sn+E^s-49f>G!J(5l~-XG~T8_0~~$ZMgRiL8VT}S2>1^- z*h2ygnfn<<80j}iDU{!`+-vr-$&g@xvQNP~4JFafz`tv1CQsb7 zD|$ZW>c#LSc4KUlWYf#Eqq; z!KmKTaA45js9=!qDe(6n7&tZ<^j~Q(FbQy+|D+YbDgNex00Rp$1B3dTN8|nZ=Zb#6 z-_d_RA%6yf!M?wtzTf_t5dY?e7|n$IcN)C(Jr9guQBYj`{i$eRXJlk$Z))w3@3oTs zPJp)&Q?~~L!yx^0gNrMWT)eNp7tNH^9Mq(xI1Q|Ubb5x?`bKmvK$}11fN{HUz9)f3 z4tj(xKuaroP8S}czc@JG(|^bSBEr8|94vT<)THGI1+DFj2wCaq>F9}g5eNwhx$O*% zITeIN{)WH5@er9hIM{Fk0M5?Nbk0n4)^;WU1`ZAm06imsk&*VDgVx^F%0bVC*203KG@DLIG5%izyUwRt3nEh9hmHpqDF!mKe2bKaZR_k1hN?b%_w#Ihz>gmg5TT(z z+AcEg>71RMlC?3^q7QhuM@Cn9&&S7G?a!L_8x3osQ3HMmeEXV-EC)vcg${uL{{GsD z?4uA^L?!<}sehP|;V8OG>7f2E2p$x=UOi;wu)==}`Mb>S((*q={!a=2f3Y`G!TnKr z1&)NAd}UmTV|QmKNA5or=>$gon5N&j)2-s<|DP)ObQ5MWj|T9|&ME&>VH-pg_V{Fp zSQT$l5&EMu2Bj=ZVNlKzYFoMrzLr2;$e&{nFg`u1%W1)(&$DOIw@IV1v!vmGf_T2l+f76cAI;6_lggaSx_WdNBmTRs| zt?;HJjkrDu)VMxbs&Tm3g9mz1#(J~ z-y6#rRoKm*@EdXN;3|dH$J3$=n4V`r6>sSz<2M&LPC4akG=zN97=~YNJ0ytNaO^}= zs@H-B8A%HCzs-9HwnUv1^4)Vf4Kel~?VOPhXL}s~aGI@k8qwzpI5`2`?2YbIa_|gg zPmHJn)NvDM{WK+#m}=-0=L4vp37vl72<4%MOx^KZ-gq;y{=(J_QsED!-xtWUfiGdj z%YS=m_kpl*r|7l>BRwfvDA%U8OJT9tL)L3|xg-LvwZt~E25Y&KFb zH>U!wHpZZ$p-~bO3mPU+DTh8kKNq^+pD7i{;Ef<04eCLa8|sjINF>q<$8(3Ck&>7@ zVxRt|jxmQ(QSo2evfiJ^(CVO-;I=+`aHs6{KL?STBNx%^;h%bwqMkzAtt- zk#Y$@f(m+X0P@!j^GC-$40H5d>9B$hiUFnUdPq0ctjR~R)6pe+%!3|ljKsprqAm)k zaAdHdwMsq6)AhC$qLrDMneD}c&A}LAW|MK;X4mU{Vb)0g)|~9@_wVH!nK$e)dGFL6 z7QF9Zq}tE>5y@8#)x6IT2tHi!KDul&s0E1AOI2RZK{9x~ZqGmODOre<>qV?HKixL7 zD^*kmY|liRNpsKKlIme(lRhIlSyAe}Vr~k4{b(M7)bB<`D~Pg3^gPX3i;#Q8y&~79 zF_a3V=vH(tG>cxVtfZH(_jtHsJ;r6X`SJStWDR<_V~ix=lc_Ntn+~nDT>AO^@=_!a zfZ(to9= z$?pY>tkwtR-_BvGHSd9~HQL6eFkgM%&z!LDcRgC64)t8LuUNGaV_s`E(=I;MT&n~% z?wHjEVFrGCbg+>6JgiCg3X!#hjUpMO|MO7H0l}NVh@v(f$tVF;GbeT_{tQmj>wLOlRqTlt7}~)c+&X8RL^qI$R`w* zlWFYs1KfFal#6IBA~c!HrSl|l-06F>hp9cZ5Ar1Pu4c0$k_!*7Z=T3eC#L7q1`Y8si3cjMx#@&9c-&`369dF#0ySiY`ZlO!w_N>CuUf6Cb7B}_~7bqF0J<3#yl|lpr1frEmAR;Q#!A4}hhiNs}RtpelJ@I)j*9r%F5tinQ17Q%| zYm_OcUV2ZO%X0w&FtfRwdQIov@16-f;?a1&c5e7CwNk#m*;TP_2=~LzMpv3vsTU4g z`FgHjn2cFvF77z$le$U8bbAx!dk?O942Q7NpgO|t%V=f$2Vciw*!zr=YGn^wLY}Hu zpt2n83x6(FUx#&=>pdIt#B$IVZB~O*8>{d=Ag_$QO}eBq`dQ|30|{=GgOngN(sNOF&M)O_Gscczc|ge#tH>J^!$cg?j*4Z5t!bsq@S zPm7Rue`tdpVx4?#rWG|sx_7-cW({D#(0*t?3f5|Mh-U>xW#xEmghg_ZrccpZoGj&` zC>N`Z$Bpd{FD`vzv+UrU94YuQ7ZQkPA08)!N6N= zN{AFa%@L|c?B8zUyiJj-acUc!8Q91!ecc@X6;|tc${jOXD~(jFu@;6JiI@ArrJ}eR zBUY@DLl#hfBtYB!ggTg^Q?AwgO;cqoJJwe8aP*LbA>SN-9UT`{B&)1N;Q=B3wy*9b zNf5<>j76R+fvb%3j(CCbZUH-&tbf`^+k!G?z~w<7!*!ut^z~zk{7ikDi$_z2uvrnj zgXulYl(0)h(4a$WdiEXAAe>6!yO`vW!$OYIa6gYuB+&hYtO~JZces>cJgOG{gb@;mdml86nbxNJ@`Jd+$p9gM@EuSV$nCs<=2Z_a3$yH3n1k!Z>0(fkZUx!Zq`rF~f!&pR66=NZ49am;e1kAyZ)%gaV%g!kj_-%~ zZorchtwXVcxgr$LeuL5@?)o7o$c-G$;}z1K)xRMQ8{DGXOo0e(R_ z07{_%^M!UA(Y-Rm+oVS~!}wCFQ-6J&+ua}2WEE8TM!jKBnwNP`cG30G> zm9*t!iR*>$jidbrawwsvkMF9V+?$vKBhTek1;+2^IzoZfdu%5D26Dn1K>HJBniwaj zL=8`+QtI(W-h5EPuRFBF0xN~jk-I}`Jre`(aT2Y<6S%nRYo=>xKDfHAlEU+c+ZLI4}O)H}|LHx=4*y3GU(|dWP&bN02iRGeKsM51i z`3aSc?#XZOHN&j5dUA_L%J9K6$Eq#=X4Km|cUYNLSIPkCe0sb>A-?$L$zQ&@c=2ql zKGmu80i=V&7pA)&q3d6>n7Yl}66^O{W#Z+ElJVsEy2!kJ{th>a0;AjG@JN`8nCd~j z+%DLeiLxAXQ&@+kc+!kaW@g_Cjql)%9{y#+M6l3gU!=OQK0rkErxFP-b0!PR_b~^N zdD7)Rx^7nC-r#ye=+>7=+<9sI>7(1AL;4OJ5brlfB=rLqPi*Z$i_iUQ3l^R+F7SXar$4R+a^D+(KB8?vX$w%MwxiT zrSj$km#B6r37*~NhUBGZ0gjoX9%|!Bc>a?hy`<0aS3s9!3du;L6F%Nz!YWlF8a8dX z>#zPEhY$j)nRd@%V@1M|FXu1L4Y{GE+Ua$siJc}rcc$}K1o`bwI;cQa4Ja)7qC$l} zp~Xyay5T{;!^6Yv51Cnkd$@PQqEYyHGX=7-K|!z&kBFJ+uxUee!Wz4~=$dpdGTyJRB9va3H!D7Jj9t8+L} zLaLmd92$)$5VbHURw|=mX>TD@-fy2lqf;F1XL5M_4c+XqZkI1IFRV*A!h2gH_i~1R zlC=W^eA@9J)VVjHVR7#St(q^@ha{e|R|gnBwCnMi3lp4dgqqKl4lmDAbX!yNZ6EMZ z@BuXv`@(lOQTPzc7_YDwDulIraO4~tLecHFnak9i<+x!hv^&J}t(Rv7_|N$-KCt|5 z8cO-OIrX#>%{Osi_3H^kha?lZnl$LQm)p6bv1OJLeDSgPKr;8+6{dUl7VR=jlXHc! z2i}tT3MXF5W;8}xfRoGlUA)82W1Uv-M~&~%Mq(uwUe7es2T=SYPlqEf@J58Mw;;rA z__5nh^SH#Gd$I&@W42-=blKr$-fz#hczGnfa0)tH^h(jHxCLZ=S2calmIGhNy&ru= z60+n!nJ)e`5tKw@-kJpKDNCj`o31BsQocuDDnQ+_L-EXUi_uIlGsIfntQ^0W3y@I8 zN|e?g9mu(#LL&H-)6ia@CATfYpD+?fDN4(Emseey6{W_dyBUk_9Y-_|$aLZfXXy}C z_+%znJa)EwMO~gZBG*?Pf3Q7==#az%L=WnWPeXsXC7O|VoWE^Le46s~1R-uTJa+NE zn2H{~TtM*?ZK{l=&>Lu&jwT`sf0k;KeRza7M>aI;jQ~kd0penP&CXRb4k?iiAwYyb z2jZKpqE~RIe^PPLP1$c0rBI|Y^Q5r( z{54qXp10aZ^0D{FK~^c%sa_>->wIsvuIc_*iXIo`5a8-M?5BJw4`VfgEt9Yw(&I@D zf~}=pvv9`3BEA+*>wt+^@(w})eD6vgN37p@F40}wVo_=GFWV9`EkFE__L}VXG1M3K zCqU(R(MHkghoPVFh|U+Q4A4gc=^Pa8>u%=@*>WghlO1J*?o((+k*XhK@%ka2mR4bGg( zP5`<*U3;3heV2%`PI)os&y+gGbr7y6>~2WIIan=A-dAl9WM86D1UYALCT^=60qvI_ z)+ra)R8&1R-U3qT1C3W{j;r56r(!?yHRlZMNUv z$L&)NZU~)4!x$-N43LG^lRs}zJzhk(M{7}-Z5;FSCuJG&Hd>_7118xTO^)qOE45`M z6&hUnp(1Gbo}bkarx%+CwDoJlS+^AoROZ$Vy#errk?B z5#)}!G1R@$j*LY(lGC0#kpHD?o1N?Fn*2oGPriI2y z3k;7eLHGex@LNKB4Nc_?n+@yCv)wP%wX3EQfQj|SLK~}a0X|CZk`9N-Zk{eTxzLtvYIfqY|@QyqZPm8dliN0zu zO0!7^$ulR}@Y&grAnbCJu<*q+1|~NA>+{`d;Ubr;C(gysDX&fwBJnr+$wbN%US@ne zm~c#ukESO5QTV1)yWZ>R{3B||K8Fn~HM%o{)XWnREfFY2w%5-$X-~9ATi@Q&Xdi%v zuXOLdmD&`lU255LJ*s!e{{l8^;FeteOs zeY~1kJIveSp>g{mF46M3Bb>tWiFzJCcYh=K>s5c7BLRsYzF={#pQ%-Hv02R7g^LV$Oc{cFg;gif(|3jC z2m=z!lk)GrUsL{iyv4!T1DEIKK?1KjTFI%RQORzA=9t*#{c7q-@ICtjDyRD;9rkrU zSd}Tv&fs7x%^>3)fgz55TfVCGOu``IdAkv9smJGL@qFj(@NmgODyZI>^fC~={h%LB z&Q~dN2`nBjUY>gwOa#4-xx3nhY7hSUp;jAN1dJUuMCSfe4Jf#om`1ccHk)I+G1srz zb-&#}CwzGcI(x*^cv{6nefFU=l7_P?|JlkUg#E01GzS$a=c z-B~l)09Teh=i_I^EE_IdU7k1mhH#?nl8#3y|Qv8_@{jd-K9LT5o%-1#$XFPX? z6oYI`k3~?7OU)PwNhA;%7{c5)xt|EoRlyymR7@rxVzhMMLc}6Nv}wr~`j6HKK0kfH zd@X$F4c0!^GcYi88^qO!>_6TWTnlMVqVsiXNFr}iaisK>aT%DM@wEuI&#DYZR;6HN zH(1BJk^)<79(1SiVKx=owj73u;jzu6H*EgsaRZ4y->s`cIm^1^ zt1hY2o*J^L!A7A?jpb?;W3(01i{gU?!#qMb^7{H3O2Gw@LY4FHO=cf`5wK7inx8=m zi0gUZQuI^~cNASF7}!7S{RFpTH5s;7stfhPqlf3Ks~>0k;kmBgh5vkpkvM4PMO@GuImgZa&eKc1GYrr5NQY)6t|9xBur`3B>^CF1Z}-?{*wT<_e=nWLe39 zT-hZWVSjh7mw$Gqer_fdy0F(mj$v(__o23|Q*Qb>lol7W0If*|LpW{s*@1stkuSl{ zXsl!s1uBQ)*V&nL?cRc&O;kKb{wJ~45{tqFa_6JRWR_t!cjIJTTumsZE=Pt`p3=@J z#^b(xfX5cBztKGFILT4UWJ_%ijI@Z#-h zPL_JfveOa++#1K)gFOg2emr6Jk_ABH_W+){zQWZMi2I5L5pfxg>zzRn)n}t?_a>rH zUs_^=7TD^WTHpv$un2{7u@Oz|P1&m{)f26yFd2b#Za|kV-@6W5!~xu$x0E#Lv8lN{ zbd|ga<1>#=M5f4y5AD}h!{I{=++QfJ+F!6~xam3bKHL%bI){7Wa%y@xA0XDCHPR7Q zM%~{QsVtTYdA8DYF7ZJD92DP{v!O*e(p^N7yo04)+590>DCGYcjgV7=^8d($jrF`b zL3E{_%vi2*fhfeoiR?ISOmNP`&*k)7TdDYByUf`Q>y#6GLyoD%!&O@|_Gp6$Q$_)Y zKNwG3Hv7!)zBapp97N>THqd*{bO-*yM-`IBf5n}>VGrv8K+J3}vv}g0 zO1>O@H5{Cta_#xMFu|*sAK|{-OBcg_xSoxx&ig(L8UuJsAKXZRNGLED4ZCa?*MHi* z-oymE{f(LHzBrz_20czVrG|v*IMfA&-$6i(*sDnVdv^If^X03>3ys$1P&@3$w-6#E zvOz&$7#8fIq9&P@`frT6T~j~g#`0K{M&6W0{|-N8rL+lg>rlo}$WLEfyQ5Ew%Kl-! z2;ib96aiqL2;GsRwH86Xa-RL*OvtAb>7AC}ht2`hXh?Mnp*|;K)vGCEtZx4Mck$GS ziIj>ddoo^;->h;ud`6j;-CP?{AOZ(3edD&!=0|mfu;Uyhs;9rP-#7oF>dN zCx!Il$>v<+R_5lLe7@4lHamsyQ#TMLpa<__@kc(WWUJ_V5uYF%KN@Jp^EZv!BILyK zDCft`nphbblLG;@C#DSitpoi7_jF7TO>v4-|IsylVVzxm`HjfH70vbw7!aZKiKXX)5hDMoTO{G8Wq0Y96yn1D9I1(*_9@HGYx%KB zV=lg1W%d6RxXb4M<}yT)lCNCy!2iuU2bAGfT>1|c-ouyQrik8SdoumbNB-m-aaXq< z4H|iN4;~BhpZ|_-{yP*IiVrTFlooDl^CK}Q(kec%S3G4>MzO zx+fHBgDj8Gbw<-l&Ln6c*f=DP;*Z%1Az(|WtcDD&1>#5IZD-e7W&#sk=)&fONJH*m z8W8gB%Jb6Z>zS}QozHOVtT)oDtE*{JTHJ1n`>HtqL^wkUe6~9jG2S?e@jpX2GecxN zZwuf?1?#kkNhMvMUtOs9I6pE^ecpq&QvR*TOt)q|S7i3WXp)zk`n@sPn81tTyWY40-%yN$zAFU0_lD25Naho99tCfN>8|I}&0&%^($oZ!jG2d5#A9;m z=douR&{=!Q!8j9W>B0H0$poO4UnS|R zVD}iH1udLG!wjB&;D?Kw+q5L0ZFiPXDqHVX_D^5YzndcF7f$7W z#krr|k&`+AGQ=bJ%EL3nWk)qC4Y8$u5w1cZToSWC})0>g#GZ|v@#B%Kd)qN{e zAY_qT#?fqEdj;XIp?!c{@1e6ZhRJoIXVsfBwsw z<+4%KoDTfI=wdA>+{nMxr@#xr#i}hbRq*~4!>rIM81!d0S09+6+^@FLZ52syXTHfX z;S4l)8u7umLdV|~yk|ko41>1mJB$NQs1&hUZ>1DbYWJ7|6~t94s`kjk#ku@3!b{y4 z?9EgE&Szmd2OpDs5bF?`_1(8dk9b7jvW!wXP_;)RI_amg^Mq%ArTtpzv%R!B7g=IR#_*wyzg46ldt4hn{B~-Q) z?|F)40ghT?p=g7p`D|x(kiSs&N08KhaH>CzqSx-%Y`#~<0^&NOu+`fbub9)?eOl)D z(z5tBppf}e`>fzLp*nL^$73M})d@?gc(i)TpECxLO~^LqLp#+8(wf0P6}1K@ z*g(q-b>l1q=d04_O$z~^L{ZZ8Q;#1}>#X!1Wp3+-D4dyxnfq_9_Z~~;QPQ|fT+`{N z=$r9J>u^`XB%}*&5LJb?F1`^&(2Oj`BJVvV1-cd453Jx&B}Pj zC)UJ2f&JlGxcE>drn%;>(QC{+d-RtD+u|yb%t<0ZGbJ!6$kb4sWbgU9LT}|8UKnIU z70lz};k5(jG2^|wk1uzzLJ*;KOW0>UrnV4i*~r|~9Om+c!GW~p$LqxNADak^eJST( zSfBY4oYIFcvj@LV6l-mSc@(SIWkM_eS@t*Lp;Wq^tVb3Uj*EYlvqN^VOGR93l)AAo zA+wb#ulyoA9QR8|CsxaJDGsCrP|HuL=W=eDtgIqqoGWo>1wd7gzL_*3w%vQ@KTF~G zbHqriu6&>|n%b|RPGLtV;Bi|ZRia+vVB;C@qY*-&@vt4$2{5yO`_jFW8z6W7`q3i9&`8KqhWG3?U5;$ znqqh9+DpF-T@Ie^=Fu^`7I8BI7v?AO=cRTLsbPOkm`m3(PU5>?>UU868j;)kW#Pbn zo2sJHQ4=+EIa?Mate~bX>t?@>krk6*^vRaMB8qG}5y>AhHf)VtW~%O(EW+&m(MxHV z^xm2J7#qm%#HU>)IU|=d>JuweLK*YAiY0u0VF)Tg?9h9IKLx7SY;VmLG1veipsHmf)e~On=_$Yr$^*(hxh<-!adp5{7 zr+`9;_(Ag1xh9{PJN$s&BDkP}1?8afYaWH;i*$jzR8o9S+v!?dh`DBVp&D6S=?k>a z`Gp~+gt~Jq6^FPFt7CKWH{am(IbP5aG-{e5+L*GYmZ>UtRp2yg|Kn}-;aJd^nJ#@* zu7%LoQQJqydXi$Gh9*A9BKf{ORS2qD+9>$Z-&m1$o|PcdF{_NB>4|k=cw^o1)6tSy zw3#iDxqhj$^DtS|QK|5rm)DAE_dRw-P+Yq9)4DI>z8GLz2i{>UL=5nc_~@$v7D z-jTKCJ)8T2^y^3%*UVy(okF>+QGoO|trKY}wBFY>;gy4Z(H8i7hicqQI-Cnmmr zfq@eVDLqs^``xdMd-oRf=;U>Sut(GUJ8}GK4*eR&dI8U}+53DtUUqg-u7$fbi82NGaO!Yt?p%e+R9rskZWWU~c?bXA z;9$9Qp%?szU-2nT4Vl`yDSaQdIBI7*CzqTz|Z0P(?Mbj%h=FYjgi+x?`4~B zT=nY@Ohg(p#(XQ3am{S>7C#B}GsY@L*C~P@b0c6)r+c*PuIsG|G6#+qDi(@aO~3P! z)5@Rz@y8m_eQ>GUH92ACngli@g*I<7$99pyxQC&ZX+)A=-(0w^XJ_D@MB!OWa7??UA%bWVx`Epe5bCS&$fU8jj@q6=8@| zs7z0)Zg=Zek~rFlc3n2KdcWGY*^(+}q`{*cOWX>yrb-lXH=>9gD@$G4<1IBnWrI$7 z4F&45C6BrY2bB8Z2FW)i9}J#^y2F6aP{a=#Z?B?gswGqo zhGLY;Ne`9!6s!TF+JVJDCse?P)p$dt5*ssZLAw>+oId{5eW7_%LB-G|2NP3WoClMc ztXMkqG>ID&3pE0F3J`>}M~)47Ow=-zG1A+6R*YTb#?=TBAP< zZ3_YEC9VrWB>`Q>0}g!3iEYw+#4S7eY(w11mK-|8*0eHD3@w(1bu1dyp40EBYDh$H zm#9L{b0>n0CZ+T8U@FH|{v7Ygw7ydij{-^p6{7rnd_{<0V`FMBiB*Jj`UV&z^cp-q zRv7O`9RXxj6JVUj7tf4`-6M+P#$-apUme1rt_(N|S(wipv1@Yue)Pe~_y>TG8V!zvM0ZVX zQ@96fFSdd^QQCe<1?%b|gKk?fg~#aD;GA%RFJ2mtYj8cxN|UegU|D3uc3|uj_BZHW za$AQbvQU%^7Sq8;yHS~eex%WDCy>>_ROu9+dDImi1GT#ank0>7^&)#K_&}P2n;NG@ z^?EWd!`N4|BxUIL>kV`)me_5m>%vSFsShwUuX7!Xz}=2)WHzde(e;<|u5#v1f5gtl z18Hb@crK}A!epYZm$=13d7f|>#^q@EcqC;-ztW!#CAnR=MiG2j($Ww0pA#I$w$S2| z4AAyedCozGF;Qxcn@Ui|qe)qH4HgS@ZjXlrw77c%{r%JT8{QT1@?7KmnLj_C$;p_o zro?P%b!+wYPpDe!g8I&7#tBEqmK+>bGT07dE3{4Z{6p9cY`@-JnoStqEm&LstihYCde0YbXY(`)Nkkhc-vHM1IpTlrBQi8`np|Qn}MR_F6btzo0t3<%)y{~*G!!~5NYBYk zn<@R6XU2loc_YuCByYIU?&%~^O!MwjY^o3ve&}%Ot*Ri04B0=dEouD%G5vLL zA+xuGtw^vEz_U@t!84tZaU{VEwKtlab82Ancyov`;EETw1NYIOKOBWXI0=~J7`+C< z5_d?Y{2canV;t@_6K;RlWYMo#?m4XeL-Eem<`Z#<@x7gZ3x>`{l>Cx!?pIUMV-=x{ z$f5k*IyU%xtZ47WhFaom=b=5Zhv$T%q@H7aVCl}XfroqUH*b4cl$gDj=aa+JzOXB9 zNb{tEdt$UjmZ11fUe)C{qUhi-ukR{Gcs!QFbW6E3Tn<`idrfm7&D2Ug>@2pd$&L>$ z%B-HrLsaUJW7o+C3gC*K= zfp-Rw6@~37Oh)7@#ait&b%=~DG(QjLS3IAimqvENjHKa7k|wI4pD;ca#k+e9@O z@Sxzy-8CBFJXx|*>ljrpZdaS@fK0Z28~u8Epu0g`0Y15CqNBieegP1P;3^UH0ovgv zYCdn2Afw{&Ca~4`?rv4OVcZWzFbpksYR=wG-XYfPbnVu8X0ic)iFukOCz_$%Pcf*O z&}YoBk5Vu$8ur8j)4wJ?lnk>jT!>VKWWe_H;HZax#;0|Bj6Vr*ee)TvRM)Wv z10t_}AjK*>PqL*F@_v`CKdJio?VB&E|*7JQ$TSEVj5=b-${G%dN19#(2LF0%Gc1haGX-X(tm^OISEb#9f`_Hpz*uOAKNBs#oa7W?8) zK@6?x{y{-Adt)H8m3rW8mLTlUW#e#gvwFi{!|{Pu(Uk|*lbQVW#UVHL`{Pp<6>TDl z1u`r&`+ZdrdZOAxgxUS?=Y^%{iCxdz?xD6|4i^wlz-)OR>lK&kz{gM>}l`Imek zVKq!X4_!tlN=#)Ju|e}g7P*<{CJVJQcmHgKnPoxR@(ZCupZ_Un!NkEep)s|ED=+J2 zL7&LD?*2TdP;0m>&3_`4@y2lfFkF-1iQTZNW`6%9DIfJ|iP>NK*W8#ZY}073Jxi>; zctQ(n^@gse_ja|`{tv{l*A?{f<*~7<*K5ULbcRX)o)ui_%Ylk&;mM>z(`-F!P%B{3 z{2auJZ($&DgZX9=+#b0xSCUiort6$;mX!vS z!eZN=PXJY6!K16;%FdrewmZe31pdG3m|=&amELNySEm#;3%6B1FnL3fo_-9-Z~MXG=NH+EPb+Kh-9?9f#1 zkmc5A>^iTmR$_&{KwWPc!bK4xI3~tS>3OuhV>WAro1&U*8AZMdE&mIfD=atr zdAG7L8Qe$oUX0}}M^PELD=zbK&J@-YE4ziIB(u*BTm*a3XA-z6EQ>SRreCrf&)+wL zY76Bl@W(VP#S=!Z#%hFt0P{`lH2O3b=3g{;hGpe3o&_hx&Zc16!&ShQf%>IN#}P>{ zHMF7_qu&=NUrxx2OQR$R+3$5*?~^81Kb+6bR#M)8SD$n($2$4c!C|}7Fr-#IvL}GTn;}e3Y{q<=!aO(e|^IP zYK#!iV5BUWJQ;-%Vostj94kuvwj3X1{3SVUq)vU0ax}l+JpW6$x9hHH1e5s}#RP@u z^OnHQgP)lD*OM2>{gTADcKr zHM%7I|8RAVfsr-q+MZ})TN7(y+cqb*ZQIGjPA0Z(+qP}n{Cf7g_de%*f4jPStyNX4 z@I2RjS7*Doj%lCTTPHWoukoZ#29NmWral|y`VEEb655|Vmgt~Q+$4X~01gNc9yh41 zqjfVLJ|Da@+fl!D6#L%r@<(}+o}w?(X+~;2Y`LK>*JP=re`~k<&hG6EqxK^^k0N^J zHFp_tTRDn8Q>$-IbJQ3M(7H-_)#(?B^+wwC_H9s1&y{!J3}3V}88j60{%#n)y0<8* z%Cz9k%;?Mpp1Z(Z2nbRs1*xIE#TNTE9e18`PO&?gVIkrBV$QFRWT{J$z2APx)@iprrpZ9Gt~4t8qp+i2Ue1 zeEw%0c$;abK;KIHL7uRN@ZnFMp`3MP@tC)(t}Kx#9C4rb8*o@m1|id8KukbZIt{A} zW|%%ea}UH1Gc+#{Q|66C?FX}Yf^ALy6EDvhCfM%CdTyAZe${q|xX2;P{glEE4u9epxe!;F0$e< zCz9&!3B+ewS((33#{QG{R<033{IgF9eKpoJEnP$DXSW~rRu&K5vLDY;^&)=GB0~&w z`v=xigUn(Sv;=aE@8y`^4wKyk55Le%wr8Vm7aa0dp>mep6dN(TJfH z@_l>eR!lK%j)y*YBJ~Kr+)jF!qL50JHJ;naquD=;mxevPbF_zxcRK+ynDwyiVD|-; zF}zP(sW-_olP3@>>)?TQ-^J^iIvUK%kGHh$&Z;}oEN=B+SvZ8mBI4B1_+Z+<1Ci0; zJod|#v3kU)9lG_jYN(KfhcbM-Ok|~?`SF>kMV>Gr?CD_baaRPQVqj^6ozeR{>e^pq zIY)G$dTg(bX8&lcNB#Y75WW9Gn{?qBrJ-AT4g8}Qf-$rP$8!&1?L}Y@`X%JbWru%r z-=wbqOYA2P7-G5j%lYS{W4wu5_4Oq&ZFxWlp=(j~K?%guIC?8n4kAt=$Brdhfw4A9 zogIdbHcLOQ^IVDvYON(uVD8lq@qgEuN6URWM4j@B}i z^p%Gj(s5rZk`${NWd)@1b!23JF}x~6wc3aMB~KMMT*JN@n>P_;yzmoScuTLs#SEp!@o6g?}~6zObL$2A35}is<0T zefob4*myg(czxq;uOL5-D<%vpTk!_m? z4s|?jQbI7UvU|U~#v&QBE1Ul4TN@)9YQ(qiY}lurtl@Z7IIau$5XbYn5x7Vj3?qf& z*%W}q$4lHv1Pup_=IEZ~&%Yb3)o!QIq4Un_X!Sg|lVBeQLQ|i%UNla^-#AhJ{K2pc z(v$Fu&hxMNUhRyL^$w8bQJtWREE-EWar_>BJrywvK4F$nM*Ou7_@noogBfvqwkq;gx)1 zp9Z)b-skdd%#PUGqEY@MdgFq-RX&wUl8S?*2A7)h;RyA4W@Nr+)ZT{$2e!tU{WV<9 zQjGf18fP%BEk9`f4It8r`fCTRvRJcEk02|dH+ag~F=84^(0s|5Ip5FK097k$csTf0 z)e053i4yo)(~sQeYt1!AmlNg+O~M)%m`Ef7KP8mE#5TC-H>2xnuAbmff<%+`e5pxL zcNd5s1N);Lt0R>5s2q!8?4{nN$D`i`()72znfTY4jb>}`4<)?;PzJpYggi)A`~@e(nU zUF5+`u;OE)e<;@3DzQfir(e0AV&CssyV)+X=%R9mE}1Xy)+P=hj)mep?C^M+MV94~ zHx%Uccr0IZUMOvuu&9>;cYc3Am#xW#q@oM-V(3>MUKv$YOC~zn@fP?kunotb?E%7z zSPr88i=^oXQ2APSct=I@n+C4{GjLG%MNs#F;~X$riq0}pX5c=B-XdY237r)6c9Cjp ze4l@}d%Nz0`ulp>^p6w47BhVQIdzPYXl0B;0viU3;Gux$dKmvEsAt3AA*kl2xBILM zrneW5z_je%2uP=$HOy3JuVtk(mI6s`+D4l;t$z8oo!)dCz|yqg)V&UwnjVkSjT%Zw zk?zGeoTHp4#DbkjT#`|C21TjPX1&5fykK%9n6#0Iua!?r%<> z077ZxHztq+tOg;3gNJq?i&xo5!;-f%XZ>BXS&t5eg?Z$Cp1X$r@})ZMYu&;h#yLGg zpb0h}RnMnY9g83f_7n@^JAWh{m%7I4><@imCQxl51{y6yAccFYj6-2^g>9aZ6<~NI zMw7|;)S#^W%?=NXp+{%$=N<3~X2j}VU``DnzVik}CAVvH0;$PucZDz0{Zk2U+gs&!ENe2i9t8*V-xl}uN|eI zzaJi|fr2w=3{U)2CwOaOKNv=jH(JDV0rp1xO8L7nq~6A98k6N5O1&uR9LE z6d$xBj-KM6JLy17b}JC6#?k8(0urij(Mxs99KB1_Q`%YG&Ku@8LlHhW3c9mpq^vm1$H}~11eRs13nAzPr};%BKS*R!Q^*VsC#0MjBVfy@qlq-KcS_E&Obp720(>Pl z0W(2_^?iVL25qO-?j0~`LnS*e|7+j)Z%DBFBGT9A>4(w;FJJn8(iCq_KJHpQGEa>j zuGPn`qN1r~e(>EckJqzFvp`vQr@z(6^`vy5WQ)=xQH0#`vlw+l{h9Cv+WFCnTHFB3 zD1yVFR}(`LdPF zRG@s`xYcjZ=~@RF*Pw%Wq)?Z^IY5oE5cJ~wa4q!1gM1%BH75HrxLmuRCT(vMWzeJDobtW(RLyfL`8T(^`o`j->>H>|b272xZLd9<55qhodL)aG2o?|^QeYK&kco@BvfDn?^Di(i3V zFY&U$4^qSqrStyh&N1F9$)fewuH0;5;8??ZnA~N;wq0V^{L#bHsE|=nn+( zGWk3aoKCi;B4jGDz`)?(u!`5B{~*l(@N7hskLG&F(%Jg}sjZV69eIN1kJd1E^N+-; z!%Ljr^ew;QTPQytXaIHerO`>jEc4%SBL$HhMvtXQe{-xNp5>^7`@aSM>D;){zJ%j0 z?n2x`^cZkl<|8`UE3EJ3+Ww{!7?=#zdGfb@axD6Q@@5%Wh%*x0P~rR$TNipiGz&UyVPT1fomEI zw_Ghj;S{Ir{sN@Efu7YqBs5Q3>{LU&oUxh;;-q*B_C*T*C#kG zXRHW7Ff3WcyVfB@M0e5@$@FmrQHr-MT<7E6Dinzd`eOJBMqkMN+ibo?o4W7jLWZp( z(Vj>fxM_qs< z3Cic`quI5^5F1US)4}iY(%Nsb-f=;`Tvw`GsK3HcUI0H6m5jqysgZhm3J3f(m)aWmIb{^6_Z~(0hAttXh8=b;*jjj;xbB6rZViIH< zWD|fJJ$gVrc^4f@-s-ydYGrFI>;eTq`fwXdjsEot*@_ZwUns}w27jA4-OOhagsEkJ zkQ-HtJ<@6*{Pl)zk%E31zBFtf9qip3h4I*rAobF>zTasKc^%SYJ1PX8zes(2_sGI^|Sq7|WR5L_3VW_srQOC) zxtLlnZl(UJ*kWIag6Nj+Y~O{xyx0V^glnr3ulZ4sKAN535oKW@Hq}i27(JLjy^ETp z*g^p7Nggv~MJzugGt((3uHTMMtCJVZuRWh@XJx)Vy^Nywv1mGK=rM}#BMSw0pTF^j z~bnvT6 zJH!3yvI3XWqDXopwf@!?SgYMWLjgl2#< z3o_ob(5prLC|(<=3K~?ooVK?S)460>U1H2H9^X43EK(uOy$25>YRlBxBF^CKZRYr( zYpK?TdWR9)`D)4cb#K);Y;UOs?wr6OZ;K_QJuT!w!0G&OxyCK7bKRnr$eFg!@FPr+ z-z}8raejIe&6J#=j4-k{56Xi(-;!^IPSB*kaBp|Y7fNB;b&+cFt38&b^ z(<)>H3uNaL*aq0VGad?0Cx2-eu+>MC(&TNC!W0c;B_sa{a|pQB%xzp8oTnj%GT-nA<@u2@fZf)LaQdLUn=VSjTN2yKK?UcRW;r-P~pMnp^LhcyfIrx;p2Rc|5L8BUuHe!$^7~ZeljvO(*d} z8K7*%^oKTk@fM)f4l%5me1yto+1j5ZYw#gGQ~G%5hlJO$&Sh*s|P@GftUG zGudpmn?f-1?(?S*#6p_2D1Yq%(UL?!RyTB$KL6$9#)uVYRdF83Ea3T_vnQC5OfgKZ zqH^3k^c{@)n1CO)+S-_zD}NEGbjtUh%oUj}maE2e zio`hk4ec&wgkEp`Z1v*&>vxk9MUfh4JXV@T>Vaj}fmS};=6W>4Pn_#c5G#i^37n3_ z8@WSPLSi+K&K~o82#?8;bt&Fnf^6Vui5r|cqSITnHO9%$blZZ^kpy(L8OjBT(!9b1 z;6B%Cji5gO$ycQodn3CK-p6GF6b#c&QTFBWuErF?@vqe?8CXpMxmv_${n?+d4t^sb z0^EtB9C@m48d)+#6^$v8U$l%G8KP z*WQyO+jMLX>?%W_yVB!&1L$!-CH1P$5G%&~2n!0*;G|VCi!@!SB35JA4KU}qMgYW@ z!t0x&WFkvSy$qYw0LVdQ88b#a=3G2hD2to6=ClNqh>=c#F2|>_+RO&SVw(a?qW;<@ zh39T=8aHW7pNgAlk+I$+yNPJTxQHkD{UUqJm;b#n?MFv;I}XHjhIb>-OZ(lKu2egl z$>j0nA42gqLPj^TR4J)uQ0m)t5X-0XND0-P3-A=$p8fkRSH2ZU-{Gtq3ryCjr4G)IZD}>n4jVRSh4*0Fjy^}oF3JuuMm*lk z#O`xwV|$t#s)5C36n}KAWqX}Y?+oqpRVAGYzBg^{!ZS`v%5a{qcZZvk*#c;8K(Co^ zveEgev&sHL7mBG_zc?Slf!?>g6)>xsLEz{)0Es89HNj+0ZFVg6;_N2wXq`;Cah9Z} z6^IXBIW$_xN#ihvwgxZFMXlA83~**qBLzAi_G;bV6E%tlYCC-F3tk+r$onYtcOo-6 z>{z>d>}wGx`qI_-epekmg%za;?=Y;l)?OmiIy`IQT;3OqGcpa+!Jg5YBZfDk#lET; z^tdSnx!O=R&6VP^D#{ z0Me@*m}`G^T$!xc6bMJ#)yl{w;2dro&6ZWD`Yw$#j1TIqW7I0P?E|1^Em(S{oS_OX zVaHSVL)5|MDC=0EfEmp8fKu;mRiH1_P%Mu4pa`5wRdSwQ8ylym1>RsHGc?@xC=T}b z4O7`2NTvTU1nuta33EP!SFFYm2p$8%jA&TKe}EJS3$W5W*?x8#xCfdU0~x;Dy>TFj z!4tPhd%c=JXz!Sx_peCp6joAn(V-}(Z;%ZdS1=3X;YT)&lHzXBw(IhRIl#~bsbVJ* zzk=1^`sjF+#u(s5S~#Ov?CyNO&Jr9t={)r7I zm2bRJDuW|2E-ua#;JUIKur+kO(>Gv~&kwSP?%#W_g>iuF- z<_ve$wYua_MFc_$CHTD|hm@dGo&6jj?bX0((q)7N?4|U(G9!bana{`Umz$D!v;?Wf zxu%ysywc1DCQVWxqmop8GqQ?okQ%ZlydE$a0pF(}4e$Hjw4}b#%q_CEbj5dPU4h$K z11tsTyaNIZ8OlH}C}j)UPVJM}Kc%u8nBae2%nMeG9HtQ+K~^Zq!M^ zHF<*c|EgbbNMQ6(r4mh(y?Px@DmE0Js3vGNC~*sDJXfBk7^Lo3B^$-oUi_H8+gu zX%&gVU@s;xa>Uo?Q`cXcKJ{8d$Q~*X;EKCINaSLtv&H!`722Cwx0~FTrk#jR8z<}_ zkB#PqJX)bI4`dlgjWY9g-(s71&Y|x`2r(t4P(UGwG0?N_flEy#Y7N#fhnRFBzW1k= zq|mSSVj;??&_Fd1mF4{Xl}V8kt72+Rq_qC=ag)&TrN0{HEyvp5E#dEa`Gyb5mP~IW zCb+(Z=d{B~8&-&O>V<2QLtb`VqJ~Z_OVsK}g@uL9CXy(Rnw6Ex z_P61rP)O$p6}fS44iBfB~cn>8iFmP96-Sj zV9@nrGd9orW*#F)+1sYTRTb4|`!}C}dSB?%nvcN_;p2Z?=F0w@_71yjwK8&&&g*fu z)W7*?{m8Xy#;PX~ak^2UFp<9YH~!EM)|evDHcaX65u1HxjZfT*6qc=|z4aRXqtNPT zcDmkD_uS28u+tmV>j~LK^y0Vp0`P-Ss>wa@*D;C8V_UQLa@iz(efBnZD;&|yBBI-$DzfQNj$=!|M+RD?<8q!G z-JyF&C}f`)L(@L|SoZMMZFT_}jWHf%$5cAgf!o=Lj2SZ&dR$toc)hyw;{1XFGvT!c z3sK(pYY_gq^HA5CB6L%00(|moq@B?GQz`asTR$HT!k}R$h$B|h2CC{L5(%wgbzj=3)``A zkTae1HC!kzB9GS~&>pZQBL6!rEiEPEWTlQQ5}P$jw-N}*C5EA~{h^!pp8U_FRGHycL8aR;VI5Zm7w2UdhBhnFo>%=v*VRT@ZD&Vjv{uThlDA4We z`^oo=10XOKl0i}24qkE$h*6)xRGp*g6rq*!qh zdji1c`hO!2fc#jcckO|IhR!3)bQM@fF8ek1p-;N@SgB7sd?GcC1Attq+1C#+#Rt;S zxle-nilw|~(>IDThYw6}gw-0krZ~j)-7n(~xPd>DP2jpD9lthvFHoFD&m(iI4dRwp z@6I%%e6Aqi{0GWJ{5^^6jB2S51fm`>hFt%=Iu6k29r_u#dO_|cUzeWG;q+tE#)r~D zQv7TMcr+TR*XV;uXYpht(P;gAjr;oHwjZnMDRB6K-L$LH%E=St9{hTQ#rthD-c=&s zU^TZeZO`Vs1&dM-(#q8x6uszSUIY@`xCV}lo<8>T^^7)0nr1QTmq`;Uuys2FZYDOL zZ@iQGUc1a}UF*xI{um0-A<*)2i_wWlaqm+PdH1XmFcrMP_zRA5~{Xux$|_dcob! zYDmyHL{sXXj#%nc5SA0rsW_-q`|*Y+2{L!-DqhQmo%gen_fx!I)3jah0@$q9`Jtf@ zH<;}9`E(QA`d!u=t+8cgBrOlK)S6&GbI7h9AMWa=0#y*4DrdJx_S#To2`=gH8cjL8 z&dyl{lEuIU-`8jakv)Fi<+_RoI5!o8)q$qKj*LU9SkGtO!(Qn1eYJl!jU0~ zM^89@Q;z7HfuAoJb9LdkIZv>x;%QwLZ{Itj%K=u1SuLxOi$G2e?025!w6#MVww^_9 z=>cm@?!a8J)H_I$D#cL_JwTE^6SwZxqbWb~fc-eZvR%`=Ru@)X5Ot(W)FiN9fAuS4 za3t1Fmtc~0%QFu($ZfD%udm*~cSL<w@{z85OmRsg#Y)C8f!q@WLPWjF;e(7{(a#2o%q)>fTe77RwQ z*>Itqs|I_S*j9r&1B-_|8fTfJ1BydRGk`+rzub?|p4WE(E*idlY&6RGIMk(e=X5!{ zrQ7Sj`bLU=En115Vzmo^ld#h;PR7uOoU*T`FyH*?t~g@Nmz6;+G7Eflu^=}+8wb<# z$ro|(OJNK1P8}ToSi_z{_{51g#e8Rs7JHn4JXxZOL74K=*)>}oQMTFGd_=caN%+0}ttEzuX-`FVVlgw?FDF zcNtG$tv1=x)M!cLqpqY zKg-kTbf!C>FY{AtH0Bp&x=XAF?l3xCZFU6e!q9dC?sDKe9WB3)Z8uybhdHP20`I7jhl2T7_1Yc-21Y@e{wQB0r*7~aCGBnGKs=Gcg`4@a6w^#P!sF3TacHI^2 zouAS++ID}6=+SFvjUn1iF;-rGj|;p996n>TB}#Jrc~Y`sOVbk|Jb~H8c^sWb+X!=(@Qq9N?x5`5`4}K;?)4P;ZrrY;O{tVCl!n%ID2=0IGq8^ z?q>JLGXO}AA;)R(0~ScC^YhihPDi`RI-~e|+R9_QDSUYCtn1ECO;;zF$&Dja??+!4 zw?l-?Rt}A~gAkPHsv)$+>2i~^rvY#Y#C#C<~_fBx10Kjv1(=vip3^T|LRRM zvQ;^pV#yW@w2tic>J>|;520OEE#6IY%idTNWpqzRx-;q~jotk;eF9xt^9@3iumGSS zCxk%KocL8?&g1jP#zq5Y$?yCt68=ao2|i!!MF43F}Xw|M&^}_^c3&SGT-5FIcNPJU5pUHgfL9nSG}XKHs7W z6>&66IxFl5w7JJWrZeh^KCik6X?O*HUa#K1&OGe7w_Gw-Z+(~qu<1c8f`wfViyByV z31*Fr0I0onK;qf^<29C>lPho#>?FvdK$hnv@H-riY4Y*u+du+LJ&g!(nyHlCYHBKw zT@YaG23YR-*ZT{dfx){VxN-GwgDZ6P;vE1~GyJan-w>BOJerEbN(iMecdS%L0pvTt zxZ`{T;JqCbJfe-6n9K?+%e9@w?H4YvcPzZR2!pcvc%DVswP9Ie87d%REE z`FCsfkX1MvWJ5;2(Yt6Dq(ID%E;e_TNVhz^kUkcVV=+C41d{WR7kD@shD0K)Rl<2N zTpz2A-mKq>i!<@?4F#v|(-VkR-u!P=rX7!#Wf2fwv(A_os%`P{R(ryxLayY}s&y(c zhcnQPbCert=09lpU~<(kYg~P}E=<7ss{}oUOZDHxRJjq?K~po1$(g|axLUnPQU#SvW4#>qoI*mx7f~FQQt0S%XvLRR)F~ReOeb(+TAIP7@l%8vlDkkUF5>3tb|QRz=u+1E!u(PF-XYu6}M7 z<>0Dg2!f@m8%H(CAWd5wEn}tV0YhSz9_81@vI{FATrZQs{FcV?fVK2MI4Fv_EeTn} zlUrmPB;^2KE5X(^Gi0(I1OhOB45r!TOsvkh_m;O%`#yeY7VjMerV{wlpnr#5E*u*_ zC8x1S9g%_18$>~*h1cOEhJTmEuvX-$YWx1q0EF{+Ve%N;DYk-2bADg=$}?)4aBJ~# zH*dQsVK2Tm%pmQSFnl8nX>|HPaJORBvwxQn*IiEeE9-E((cu=-;M>1FTZ0989azFQ zF*rr{rPHp7C;l|2p;fGsMM;<9ZU(Wa$)?;mBYBN7EiBJZQKA!YrF#Z%rZ;GxRU?Oh zg4GPbdu_xb`@ct})s)YlR zv+Lpw#TUY`%k(_w-chv%?*Zil3#iEp^;TEY-w=VoA>Wo+IIDgYkU#aMibYbX>=i5E z21vvAKgdHSjG!Orce3lX+PM}Ll4nXzgAX%UCar=kBCVqSmr(XV*e}%_hpgTM(ffW9 z_}D0$#p4$BP2@9v~V33X051TB;$TYD=p#$I$Uhj0K z4A>XNTuPUZWf_l#UKdSflJyv!@{=o7-zp5WK`rthJ;KQXrAt3GKg zn-InJiFsX#Tb7u2<~JsB{YzLpAo(G#x7fC!c@z-XZFfZj_IIeaSXe^`!3A_B0|%3e zW}Aiz!v2h@7~3E{sZse0qOemmKdD2by>(2N&`TTE!te(&dD?yrG8SYbAt2y0O97kfS))E*MxTrR?^cC zVi>rya<6OieQfOTY__{G!q9Dh zJ9@@E1d!n#TdciqCX?KvE_B+&$;(tQMb)Ouq=rZ$al zd_$7sScQ<#$dBN;uD^A>-;Oc-j^UJXGiQ&R`fQ3&wqhgquJVvyf`c6a2_t(?So*Ca!`evuy6V{UY+H=IQ1`om^Skv{ zzgrUT&*$q7)~Ptbcc9Bit zHS7GZ4`*a9!Ge%Mi7jkFnDC6xQy_k|Fv8fEun6Q^f3*Yeuiquu*74o%j|rw$-u#?t zJMQD8u(H=h>4t2&K1jX5A3pwuV_x^;W%DJ2YPI_mV7E#EqFM7wj5HRjIBchBbc?_% zQk3^>{4?Ig>ft8S8G%-__P5Kna=J6U@hgyZfD`vE#I?rQt$%BTR}yy&x8K`G-qPW1ol^F(G6FlZ(J%7_x-BtuA-I zcl`~%yTIB^%HAP%Bw|G~3I+WxmK)jCYHqEcBd->LwY^K}m@NL&s_J_?q@-1Lg(H(x5xMbpWWbY9*6Xlco^i<5^;e>O0?L4yY8y0 zaRi|gYAuQkZ2!faesHrRN`LQ~uva-H`NkE5o%X1lKb(N3>B z$od_-SOe}cR0G9mL4h%9u^4)(aPe3 z0l@y~>sSa`m}w>3%HIm6noCC6XdZjsj|MAeB|9ZK3F!%LLpnmG409wWxT&iU;n8z)0diexYuw@L5EVOxB=%S+?5bG^&Fg#M zJ_)z6VV0Y~C9|6^

3YNpzwl{P%%GrtE{PX)#o2F|LgzP|0`y|6a` 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 en7hInvK{$DM=&MXC`_pd@`2gy6u?afmlz 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

ov7uzFAQ;~7 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 +Overview diagram of cxx, showing that the same interface definition is used to create both C++ and Rust side code which then communicate via a lowest common denominator C API See the [CXX tutorial][1] for a full example of using this. diff --git a/src/exercises/chromium/bringing-it-together.md b/src/exercises/chromium/bringing-it-together.md index 477abc84b315..0a31009ffba4 100644 --- a/src/exercises/chromium/bringing-it-together.md +++ b/src/exercises/chromium/bringing-it-together.md @@ -29,7 +29,7 @@ always do this irrespective of the setting of `mangle_localized_strings_`. If you've done everything right across all these exercises, congratulations, you should have created Chrome for pixies! - +Chromium UI screenshot with uwu language

Students will likely need some hints here. Hints include: From ea2e18ef18f3bcade98e7e3fcc82a866d9e984af Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Fri, 17 Nov 2023 12:00:17 +0000 Subject: [PATCH 11/34] Add code location note. --- src/chromium/policy.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/chromium/policy.md b/src/chromium/policy.md index 64cfa2c11d9b..7e125d7653cf 100644 --- a/src/chromium/policy.md +++ b/src/chromium/policy.md @@ -10,6 +10,9 @@ if they're the best option for performance or for security. Very few Rust libraries directly expose a C/C++ API, so that means that nearly all such libraries will require a small amount of first-party glue code. +> First-party Rust glue code for a particular third-party crate should +> normally be kept in `third_party/rust/crate///wrapper`. + Because of this, today's course will be heavily focused on: * Bringing in third-party Rust code ("crates") From 3c6c9e916d8c755b4c4074789e7d64cfb697951a Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Fri, 17 Nov 2023 12:06:20 +0000 Subject: [PATCH 12/34] More speaker notes. --- src/chromium/build-rules/depending.md | 7 ++++++- src/chromium/build-rules/vscode.md | 7 ++++++- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/src/chromium/build-rules/depending.md b/src/chromium/build-rules/depending.md index 337046932b9e..d530576ec801 100644 --- a/src/chromium/build-rules/depending.md +++ b/src/chromium/build-rules/depending.md @@ -14,4 +14,9 @@ rust_static_library("my_rust_lib") { component("preexisting_cpp") { deps = [ ":my_rust_lib" ] } -``` \ No newline at end of file +``` + +
+We'll see that this relationship only works if the Rust code exposes plain C APIs +which can be called from C++, or if we use a C++/Rust interop tool. +
\ No newline at end of file diff --git a/src/chromium/build-rules/vscode.md b/src/chromium/build-rules/vscode.md index 319269916122..5bbbcca2d87b 100644 --- a/src/chromium/build-rules/vscode.md +++ b/src/chromium/build-rules/vscode.md @@ -9,4 +9,9 @@ for C++. Visual Studio code works well for Rust in Chromium. To use it, directory) * `ln -s out/Release/rust-project.json rust-project.json` -Example screenshot from VSCode \ No newline at end of file +Example screenshot from VSCode + +
+A demo of some of the code annotation and exploration features of rust-analyzer might be +beneficial if the audience are naturally skeptical of IDEs. +
\ No newline at end of file From 51f0cb29ad7c9ddec5dc9ac87a5f6cd737b7d67a Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Fri, 17 Nov 2023 12:16:17 +0000 Subject: [PATCH 13/34] Reduce text-heaviness a little. --- src/chromium/interoperability-with-cpp/limitations-of-cxx.md | 3 +-- .../interoperability-with-cpp/using-cxx-from-chromium.md | 4 ---- 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/src/chromium/interoperability-with-cpp/limitations-of-cxx.md b/src/chromium/interoperability-with-cpp/limitations-of-cxx.md index db7b8e6f05fd..dabb83c25205 100644 --- a/src/chromium/interoperability-with-cpp/limitations-of-cxx.md +++ b/src/chromium/interoperability-with-cpp/limitations-of-cxx.md @@ -8,8 +8,7 @@ cxx fundamentally suits cases where: * You're using only the types natively supported by cxx already, for example `std::unique_ptr`, `std::string`, `&[u8]` etc. -It has many limitations, some of which are quite frustrating - for example -lack of support for Rust's `Option` type. +It has many limitations - for example lack of support for Rust's `Option` type. These limitations constrain us to using Rust in Chromium only for well isolated "leaf nodes" rather than for arbitrary Rust-C++ interop. When considering diff --git a/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md b/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md index 7ca8ff0bfd83..01a8f04ff6d4 100644 --- a/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md +++ b/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md @@ -14,7 +14,3 @@ C++ headers will be generated at a sensible location, so you can just ```cpp #include "ui/base/my_rust_file.rs.h" ``` - -and because you probably already depend on the Rust component from the C++ -component, you can just go ahead and use them - all the usual build rule things -like visibility and gn dependencies are automatically set up. From f02f2a75389d875b7fa1da62872513df725f8e07 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Mon, 20 Nov 2023 13:08:50 +0000 Subject: [PATCH 14/34] Review comments on third-party bits. --- src/chromium/adding-third-party-crates.md | 13 ++++++++++--- .../adding-third-party-crates/checking-in.md | 4 ++-- .../adding-third-party-crates/reviews-and-audits.md | 3 ++- src/exercises/chromium/third-party.md | 6 ++++-- 4 files changed, 18 insertions(+), 8 deletions(-) diff --git a/src/chromium/adding-third-party-crates.md b/src/chromium/adding-third-party-crates.md index 678ab297bb43..0dbd24e23f0d 100644 --- a/src/chromium/adding-third-party-crates.md +++ b/src/chromium/adding-third-party-crates.md @@ -6,8 +6,8 @@ easy* for Rust crates to depend upon one another. So they do! | Property | C++ library | Rust crate | | --- | --- | --- | | Build system | Lots | Consistent - `Cargo.toml` | -| Typical library size | Large | Small | -| Transitive dependencies | None | Lots | +| Typical library size | Large-ish | Small | +| Transitive dependencies | Few | Lots | For a Chromium engineer, this has pros and cons: @@ -22,4 +22,11 @@ We'll discuss: * How to make `gn` build rules for it * How to audit its source code for sufficient safety. -[0]: https://crates.io \ No newline at end of file +[0]: https://crates.io + +
+All of the things in the table on this slide are generalizations, and +counter-examples can be found. But in general it's important for students +to understand that most Rust code depends on other Rust libraries, because +it's easy to do so, and that this has both benefits and costs. +
\ No newline at end of file diff --git a/src/chromium/adding-third-party-crates/checking-in.md b/src/chromium/adding-third-party-crates/checking-in.md index f525f382a7dd..a3b00b67a8cc 100644 --- a/src/chromium/adding-third-party-crates/checking-in.md +++ b/src/chromium/adding-third-party-crates/checking-in.md @@ -2,8 +2,8 @@ Downloaded crates live in `//third_party/rust`. -You'll find, for each crate, -* The crate source code in `v1/crate` +Under each `//third_party/rust/`, you'll find: +* The crate source code in `v1/crate` (or whatever the version is) * A `BUILD.gn` file * A `README.chromium` file diff --git a/src/chromium/adding-third-party-crates/reviews-and-audits.md b/src/chromium/adding-third-party-crates/reviews-and-audits.md index 736b17794e36..24304ed81afe 100644 --- a/src/chromium/adding-third-party-crates/reviews-and-audits.md +++ b/src/chromium/adding-third-party-crates/reviews-and-audits.md @@ -22,7 +22,8 @@ Meanwhile, for each new crate addition, we are checking for the following: that might have been maliciously inserted. (You can't realistically aim for 100% perfection here: there's often just too much code.) -These are just guidelines - you should satisfy yourself however you see fit. +These are just guidelines - work with reviewers from `security@chromium.org` +to work out the right way to become confident of the crate. [0]: https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/rust.md#Third_party-review [1]: https://mozilla.github.io/cargo-vet/ diff --git a/src/exercises/chromium/third-party.md b/src/exercises/chromium/third-party.md index 9c99cbfe8bcf..2ba027c837c3 100644 --- a/src/exercises/chromium/third-party.md +++ b/src/exercises/chromium/third-party.md @@ -5,7 +5,8 @@ Assume that the crate will be used in shipping Chromium, but won't be used to handle untrustworthy input. (In the next exercise we'll use uwuify from Chromium, but feel free to -skip ahead and do that now if you like). +skip ahead and do that now if you like. Or, you could create a new +[`rust_executable` target][2] which uses `uwuify`).
Students will need to download lots of transitive dependencies. This will @@ -19,4 +20,5 @@ more than that, they probably forgot to turn off the default features. [0]: https://crates.io/crates/uwuify -[1]: https://doc.rust-lang.org/cargo/reference/features.html#the-default-feature \ No newline at end of file +[1]: https://doc.rust-lang.org/cargo/reference/features.html#the-default-feature +[2]: https://source.chromium.org/chromium/chromium/src/+/main:build/rust/rust_executable.gni \ No newline at end of file From 07f41a08e2139428cad5c619ffe2df1c6f05cf6b Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Mon, 20 Nov 2023 14:04:21 +0000 Subject: [PATCH 15/34] Review comments on cxx interop section. --- src/SUMMARY.md | 1 + src/chromium/interoperability-with-cpp.md | 9 ++-- .../error-handling.md | 41 +++++++++++++++++++ .../example-bindings.md | 6 ++- .../limitations-of-cxx.md | 14 ++++++- .../using-cxx-from-chromium.md | 7 +++- 6 files changed, 70 insertions(+), 8 deletions(-) create mode 100644 src/chromium/interoperability-with-cpp/error-handling.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 34846794e817..7c2c63dc6b16 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -240,6 +240,7 @@ - [Example bindings](chromium/interoperability-with-cpp/example-bindings.md) - [Using cxx from Chromium](chromium/interoperability-with-cpp/using-cxx-from-chromium.md) - [Limitations of cxx](chromium/interoperability-with-cpp/limitations-of-cxx.md) + - [cxx error handling](chromium/interoperability-with-cpp/error-handling.md) - [Exercise](exercises/chromium/interoperability-with-cpp.md) - [Adding third party crates](chromium/adding-third-party-crates.md) - [Configuring third_party.toml](chromium/adding-third-party-crates/configuring-third-party-toml.md) diff --git a/src/chromium/interoperability-with-cpp.md b/src/chromium/interoperability-with-cpp.md index cabb0052e5be..2ff14d776026 100644 --- a/src/chromium/interoperability-with-cpp.md +++ b/src/chromium/interoperability-with-cpp.md @@ -3,10 +3,9 @@ The Rust community offers multiple options for C++/Rust interop, with new tools being developed all the time. At the moment, Chromium uses a tool called "cxx". -Behind the scenes, this uses a "lowest common denominator" C ABI, but it builds -nice abstractions on both sides. - -The overall approach looks like this: +You describe your whole language boundary in an interface definition language +(which looks a lot like Rust) and then cxx tools generate declarations for +functions and types in both Rust and C++. Overview diagram of cxx, showing that the same interface definition is used to create both C++ and Rust side code which then communicate via a lowest common denominator C API @@ -14,6 +13,8 @@ See the [CXX tutorial][1] for a full example of using this.
+Talk through the diagram. + Students may ask - why do we still need `allow_unsafe = true`? The broad answer is that no C/C++ code is "safe" by the normal Rust standards. diff --git a/src/chromium/interoperability-with-cpp/error-handling.md b/src/chromium/interoperability-with-cpp/error-handling.md new file mode 100644 index 000000000000..2513ac5a8216 --- /dev/null +++ b/src/chromium/interoperability-with-cpp/error-handling.md @@ -0,0 +1,41 @@ +# cxx error handling + +cxx's support for `Result` relies on C++ exceptions, so we can't use that +in Chromium. Alternatives: + +* Where success can be represented as a simple Boolean, as done in our [QR code generator][1]: + Return a Boolean representing success, and record results using out-parameters: + ```rust + #[cxx::bridge(namespace = "qr_code_generator")] + mod ffi { + extern "Rust" { + fn generate_qr_code_using_rust( + data: &[u8], + min_version: i16, + out_pixels: Pin<&mut CxxVector>, + out_qr_size: &mut usize, + ) -> bool; + } + } + ``` +* Where success is more complex, provide a Rust + object which can be queried for details of success or failure: + ```rust + #[cxx::bridge] + mod ffi { + extern "Rust" { + type PngDecoder; + fn create_png_decoder() -> Box; + fn decode(self: &PngDecoder, png: &[u8]) -> bool; // whether successful + fn get_err_code(self: &PngDecoder) -> u32; // or some more complex error type + fn get_decoded_image(self: &PngDecoder) -> &[u8]; + // or some more complex success type + } + } + ``` + + +The best way to learn cxx is by doing, so, another exercise! + +[0]: https://cxx.rs/binding/result.html +[1]: https://source.chromium.org/chromium/chromium/src/+/main:components/qr_code_generator/qr_code_generator_ffi_glue.rs;l=10 \ No newline at end of file diff --git a/src/chromium/interoperability-with-cpp/example-bindings.md b/src/chromium/interoperability-with-cpp/example-bindings.md index 539a13a36705..695f37f5e0b3 100644 --- a/src/chromium/interoperability-with-cpp/example-bindings.md +++ b/src/chromium/interoperability-with-cpp/example-bindings.md @@ -21,6 +21,8 @@ mod ffi { fn put(&self, parts: &mut MultiBuf) -> u64; } } + +// It's fine to put more Rust code here after your #[cxx::bridge] ```
@@ -28,8 +30,10 @@ Point out: * Native support for C++'s `std::unique_ptr` in Rust * Native support for Rust slices in C++ -* Calls from C++ to Rust (in the top part) +* Calls from C++ to Rust, and Rust types (in the top part) * Calls from Rust to C++, and C++ types (in the bottom part) +* If the function definitions in C++ or Rust don't match the cxx::bridge, + a compilation failure results. **Common misconception**: It _looks_ like a C++ header is being parser by Rust, but this is misleading. This header is never interpreted by Rust, but simply diff --git a/src/chromium/interoperability-with-cpp/limitations-of-cxx.md b/src/chromium/interoperability-with-cpp/limitations-of-cxx.md index dabb83c25205..022086d9de37 100644 --- a/src/chromium/interoperability-with-cpp/limitations-of-cxx.md +++ b/src/chromium/interoperability-with-cpp/limitations-of-cxx.md @@ -15,7 +15,17 @@ These limitations constrain us to using Rust in Chromium only for well isolated a use-case for Rust in Chromium, a good starting point is to draft the cxx bindings for the language boundary to see if it appears simple enough. -The best way to learn cxx is by doing, so, another exercise! +[1]: https://cxx.rs/bindings.html -[1]: https://cxx.rs/bindings.html \ No newline at end of file +
+In addition, right now, Rust code in one component cannot depend on Rust +code in another, due to linking details in our component build. That's another +reason to restrict Rust to use in leaf nodes. + +You should also discuss some of the other sticky points with cxx, for example: + +* Its error handling is based around C++ exceptions (given on the next slide) +* Function pointers are awkward to use. + +
\ No newline at end of file diff --git a/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md b/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md index 01a8f04ff6d4..d1b1ea8daf94 100644 --- a/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md +++ b/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md @@ -3,7 +3,7 @@ The `rust_static_library` target intrinsically knows about cxx interop. Just add ```gn -cxx_bindings = [ "my_rust_file.rs" ] +cxx_bindings = [ "my_rust_file.rs" ] # just list files containing #[cxx::bridge] ``` to your existing `rust_static_library` target. **You also need @@ -14,3 +14,8 @@ C++ headers will be generated at a sensible location, so you can just ```cpp #include "ui/base/my_rust_file.rs.h" ``` + +You will find some utility functions in `//base` to convert to/from Chromium +C++ types to cxx Rust types - for example [`SpanToRustSlice`][0]. + +[0]: https://source.chromium.org/chromium/chromium/src/+/main:base/containers/span_rust.h;l=21 \ No newline at end of file From 5ca5e11b8af558a3b871b3d826976cd63ef4562a Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Mon, 20 Nov 2023 14:24:37 +0000 Subject: [PATCH 16/34] One more review comment. --- src/chromium/setup.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/src/chromium/setup.md b/src/chromium/setup.md index e3f562a85f1e..702c40b432b1 100644 --- a/src/chromium/setup.md +++ b/src/chromium/setup.md @@ -10,6 +10,9 @@ autoninja -C out/Debug chrome out/Debug/chrome # or on Mac, out/Debug/Chromium.app/Contents/MacOS/Chromium ``` +(A component, debug build is recommended for quickest iteration time. This +is the default!) + See [How to build Chromium](https://www.chromium.org/developers/how-tos/get-the-code/) if you aren't already at that point. Be warned - setting up to build Chromium takes time. From 165fb2c40e2afaace654d13ee9110e8945220e51 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Mon, 20 Nov 2023 16:17:30 +0000 Subject: [PATCH 17/34] Rewrite Adding to Third Party. Rewritten for two reasons: * It needed to be less text-heavy and split into smaller slides that would fit on the screen * All this tooling changed radically last week. --- src/SUMMARY.md | 5 +- .../adding-third-party-crates/checking-in.md | 13 +-- .../configuring-cargo-toml.md | 35 ++++++ .../configuring-gnrt-config-toml.md | 29 +++++ .../configuring-third-party-toml.md | 45 -------- .../generating-gn-build-rules.md | 63 ++++------- .../resolving-problems.md | 100 +++--------------- .../build-scripts-which-generate-code.md | 22 ++++ ...ld-scripts-which-take-arbitrary-actions.md | 24 +++++ src/chromium/cargo/howto.md | 39 +++++-- src/chromium/policy.md | 2 +- 11 files changed, 184 insertions(+), 193 deletions(-) create mode 100644 src/chromium/adding-third-party-crates/configuring-cargo-toml.md create mode 100644 src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md delete mode 100644 src/chromium/adding-third-party-crates/configuring-third-party-toml.md create mode 100644 src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md create mode 100644 src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 7c2c63dc6b16..1225d902f5b7 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -243,9 +243,12 @@ - [cxx error handling](chromium/interoperability-with-cpp/error-handling.md) - [Exercise](exercises/chromium/interoperability-with-cpp.md) - [Adding third party crates](chromium/adding-third-party-crates.md) - - [Configuring third_party.toml](chromium/adding-third-party-crates/configuring-third-party-toml.md) + - [Configuring Cargo.toml](chromium/adding-third-party-crates/configuring-cargo-toml.md) + - [Configuring gnrt_config.toml](chromium/adding-third-party-crates/configuring-gnrt-config-toml.md) - [Generating gn build rules](chromium/adding-third-party-crates/generating-gn-build-rules.md) - [Resolving problems](chromium/adding-third-party-crates/resolving-problems.md) + - [Build scripts which generate code](chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md) + - [Build scripts which build C++ or take arbitrary actions](chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md) - [Depending on a crate](chromium/adding-third-party-crates/depending-on-a-crate.md) - [Reviews and audits](chromium/adding-third-party-crates/reviews-and-audits.md) - [Checking into Chromium source code](chromium/adding-third-party-crates/checking-in.md) diff --git a/src/chromium/adding-third-party-crates/checking-in.md b/src/chromium/adding-third-party-crates/checking-in.md index a3b00b67a8cc..8acd217cda86 100644 --- a/src/chromium/adding-third-party-crates/checking-in.md +++ b/src/chromium/adding-third-party-crates/checking-in.md @@ -1,15 +1,12 @@ # Checking crates into Chromium source code -Downloaded crates live in `//third_party/rust`. +`git status` should reveal: +* Crate code in `//third_party/rust/chromium_crates_io` +* Metadata (`BUILD.gn` and `README.chromium`) in `//third_party/rust/` -Under each `//third_party/rust/`, you'll find: -* The crate source code in `v1/crate` (or whatever the version is) -* A `BUILD.gn` file -* A `README.chromium` file +Please also add an `OWNERS` file there. -Please also add an `OWNERS` file. - -You should land all this, along with your `third_party.toml` change, into +You should land all this, along with your `Cargo.toml` and `gnrt_config.toml` changes, into the Chromium repo. As you do so, you might find presubmit checks fail because of non-inclusive diff --git a/src/chromium/adding-third-party-crates/configuring-cargo-toml.md b/src/chromium/adding-third-party-crates/configuring-cargo-toml.md new file mode 100644 index 000000000000..8b57892f5c63 --- /dev/null +++ b/src/chromium/adding-third-party-crates/configuring-cargo-toml.md @@ -0,0 +1,35 @@ +# Configuring the `Cargo.toml` file to add crates + +Chromium has a single set of centrally-managed direct crate dependencies. +These are managed through a single [`Cargo.toml`][0]: + +```toml +[dependencies] +bitflags = "1" +cfg-if = "1" +cxx = "1" +# lots more... +``` + +As with any other `Cargo.toml`, you can specify [more details about +the dependencies][1] - most commonly, you'll want to specify the `features` that +you wish to enable in the crate. + +## What version to choose? + +You should specify the [semver version][2] of the crate that you want (look it +up on [crates.io][3]!). For example, if the most recent published version of the +crate `foo` is `1.2.3``, you'd specify + +``` +foo = "1" +``` + +When adding a crate to Chromium, you'll often need to provide some extra +information in an additional file, `gnrt_config.toml`, which we'll meet next. + + +[0]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/rust/chromium_crates_io/Cargo.toml +[1]: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html +[2]: https://doc.rust-lang.org/cargo/reference/semver.html +[3]: https://crates.io \ No newline at end of file diff --git a/src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md b/src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md new file mode 100644 index 000000000000..040dc076fba1 --- /dev/null +++ b/src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md @@ -0,0 +1,29 @@ +# Configuring `gnrt_config.toml` + +Alongside `Cargo.toml` is [`gnrt_config.toml`][0]. This contains Chromium-specific +extensions to crate handling. + +If you add a new crate, you'll definitely need to specify at least the `group`. +This is one of: + +```toml +# 'safe': The library satisfies the rule-of-2 and can be used in any process. +# 'sandbox': The library does not satisfy the rule-of-2 and must be used in +# a sandboxed process such as the renderer or a utility process. +# 'test': The library is only used in tests. +``` + +For instance, + +```toml +[crate.my-new-crate] +group = 'test' # only used in test code +``` + +Depending on the crate source code layout, you may also need to use this +file to specify where its `LICENSE` file(s) can be found. + +Later, we'll see some other things you will need to configure in this file +to resolve problems. + +[0]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/rust/chromium_crates_io/gnrt_config.toml \ No newline at end of file diff --git a/src/chromium/adding-third-party-crates/configuring-third-party-toml.md b/src/chromium/adding-third-party-crates/configuring-third-party-toml.md deleted file mode 100644 index 7d60fdee6d5a..000000000000 --- a/src/chromium/adding-third-party-crates/configuring-third-party-toml.md +++ /dev/null @@ -1,45 +0,0 @@ -# Configuring `third_party.toml` - -Chromium has a single set of centrally-managed direct crate dependencies. -These are managed through a single [`third_party.toml` file][0] which is a lot like the -`Cargo.toml` you'd use for a cargo-native project. The main part of the file -looks like this: - -```toml -[dependencies] -bitflags = "1" -cfg-if = "1" -cxx = "1" -# lots more... -``` - -To add a crate there, normally you'd simply add the crate and version to the -`[dependencies]` section. As with `Cargo.toml`, you can specify [more details about -the dependencies][1] - most commonly, you'll want to specify the `features` that -you wish to enable in the crate. - -## What version to choose? - -You should specify the [semver version][2] of the crate that you want (look it -up on [crates.io][3]!). For example, if the most recent published version of the -crate `foo` is `1.2.3``, you'd specify - -``` -foo = "1" -``` - -Under some circumstances, you'll need to put your new crate in different -areas of this file: - -* If it's an executable rather than a library crate, add it to `[workspace.members]`. -* If it's a test-only dependency, add it to `[testonly-dependencies]`. - -`third_party.toml` also has some [extensions][4] beyond the normal `Cargo.toml` format, -which we'll discuss later. - - -[0]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/rust/third_party.toml -[1]: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html -[2]: https://doc.rust-lang.org/cargo/reference/semver.html -[3]: https://crates.io -[4]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/rust/third_party.toml;l=20 \ No newline at end of file diff --git a/src/chromium/adding-third-party-crates/generating-gn-build-rules.md b/src/chromium/adding-third-party-crates/generating-gn-build-rules.md index afcdb3ef69fa..5a22844847d6 100644 --- a/src/chromium/adding-third-party-crates/generating-gn-build-rules.md +++ b/src/chromium/adding-third-party-crates/generating-gn-build-rules.md @@ -1,63 +1,42 @@ # Generating gn build rules -A tool called `gnrt` converts from `third_party.toml` into the `BUILD.gn` rules -required by our build system. It can also download crate source code. - -At the moment, this is a multi-step process - it may be streamlined in future. -You'll need to mix: - -* generating build files -* downloading missing crates - -and possibly run through the cycle a couple of times. +A tool called `gnrt` knows how to generate Chromium build rules for the +crate you just added. To start, download the crate you want like this: ``` cd chromium/src -vpython3 tools/crates/run_gnrt.py -- download CRATE_NAME CRATE_VERSION --shipped yes --security-critical yes +vpython3 tools/crates/run_gnrt.py -- vendor ``` -**IMPORTANT:** although the `gnrt` tool is part of the Chromium source code, -by running this command you will be downloading and running its dependencies -from `crates.io`. See [the earlier section][1] discussing this security -decision. +> Although the `gnrt` tool is part of the Chromium source code, +> by running this command you will be downloading and running its dependencies +> from `crates.io`. See [the earlier section][1] discussing this security +> decision. -In this case, you need to specify: -* The crate name. Replace any underscores with hyphens. -* The crate version. This time, give the precise version to download rather - than the semver compatible version. -* Whether it's shipped as part of Chromium, and whether it's security critical, - per the normal [third party addition guidelines][0] +This `vendor` command may download: +* Your crate +* Direct and transitive dependencies +* Updates or new versions of other crates -Once you've downloaded the crate, generate the `BUILD.gn` files like this: +If a crate in `//third_party/rust/chromium_crates_io/patches` was updated as +part of vendoring, then reapply patches to it by running +`cd //third_party/rust/chromium_crates_io; ./apply_patches.sh`. -``` -vpython3 tools/crates/run_gnrt.py gen -``` - -## Transitive dependencies - -At this time, there's also a good chance that you'll be informed some other -crates are missing. These are the transitive dependencies of the crate you've -asked for. - -For example: +Once you've downloaded the crate, generate the `BUILD.gn` files like this: ``` -Missing dependency: example-transitive-dependency 1.0.83 - chromium 0.1.0 (path+file:///home/you/chromium/src/third_party/rust) - example-crate 1.0.110 (path+file:///home/you/chromium/src/third_party/rust/example-crate/v1/crate) +vpython3 tools/crates/run_gnrt.py -- gen ``` -Download each of them as well. - -## Once all crates are downloaded +Now run `git status`. You should find: -Once all the crates are downloaded, rerun the `gen` command given above. This should: +* At least one new crate source code in `third_party/rust/chromium_crates_io/vendor` +* At least one new `BUILD.gn` in `third_party/rust/` +* An appropriate `README.chromium` -* Create `BUILD.gn` files -* Create `README.chromium` files +Take a close look, especially at the things generated in `third_party/rust`. [0]: https://chromium.googlesource.com/chromium/src/+/main/docs/adding_to_third_party.md#add-a-readme_chromium diff --git a/src/chromium/adding-third-party-crates/resolving-problems.md b/src/chromium/adding-third-party-crates/resolving-problems.md index 0a915122b3cc..29ad31be7841 100644 --- a/src/chromium/adding-third-party-crates/resolving-problems.md +++ b/src/chromium/adding-third-party-crates/resolving-problems.md @@ -1,105 +1,31 @@ # Resolving problems -In the Cargo ecosystem, build instructions for crates are spread across: - -* The declarative `Cargo.toml` -* The (optional) imperative [`build.rs` script][0] - -Our tooling is pretty good at converting `Cargo.toml` files to appropriate -`gn` rules. +## Conflicting versions -But, `build.rs` is more difficult. This is a program which is itself run -_as part of the build of a crate_. That program can do arbitrary things. -This is fundamentally at odds with the design of `gn` and `ninja` which aim -for static, deterministic, build rules to maximize parallelism and -repeatability of builds. +The crate that you want to include might have transitive dependencies +already in the tree, and perhaps it needs a different version. -In Chromium, we emulate Cargo to build and run `build.rs` scripts, but we -can't possibly simulate all the possible things that arbitrary code can -do. +Multiple versions of crates are allowed in Chromium, but it's strongly advised +that you try to resolve this problem to reduce duplication, for example +by upgrading some other crate. -If your crate - or one of its transitive dependencies - does unusual things -in its `build.rs`, you're going to have to resolve how to make that work -with `gn`. +## Build scripts -Specifically: +If your build fails, it may be because of a `build.rs`: programs which do arbitrary +things at build time. This is fundamentally at odds with the design of `gn` +and `ninja` which aim for static, deterministic, build rules to maximize +parallelism and repeatability of builds. If your crate or its dependencies +have a `build.rs` you may need to take steps: | build script effect | Supported by our gn templates | Work required by you | |-----|-----|-----| | Checking rustc version to configure features on and off | Yes | None | | Checking platform or CPU to configure features on and off | Yes | None | -| Generating code | Yes | Yes - specify in `third_party.toml` | -| Reading files | Yes | Yes - specify in `third_party.toml` | +| Generating code | Yes | Yes - specify in `gnrt_config.toml` | | Building C/C++ | No | Patch around it | | Arbitrary other actions | No | Patch around it | Fortunately, most crates don't contain a build script, and fortunately, most build scripts only do the top two actions. -## Build scripts which generate code - -Some `build.rs` files generate files of Rust code. - -You'll find out about this problem when you first come to actually build -the code in Chromium. Most likely, `ninja` will complain about a missing -source code file. - -You should then check the `build.rs` file for the script to see if it reads -or writes source code files. - -If so, modify [`third_party.toml`][1] to add `build-script-outputs` to the -crate. If this is a transitive dependency, that is, one on which Chromium -code should not directly depend, also add `allow-first-party-usage=false`. -There are several examples already in that file: - -```toml -[dependencies.unicode-linebreak] -version = "0.1" -allow-first-party-usage = false -build-script-outputs = [ "tables.rs" ] -``` - -Now rerun [`gnrt.py gen`][2] to regenerate `BUILD.gn` files to inform ninja -that this particular output file is input to subsequent build steps. - -## Build scripts which read files - -If the `build.rs` depends on reading code from the crate or the rest of the -Chromium source code tree, you can similarly specify `build-script-inputs`. -There are no examples of this right now. - -## Building C/C++ or arbitrary other actions - patching a crate - -Some crates use the [`cc`][2] crate to build and link C/C++ libraries. -Other crates parse C/C++ using [`bindgen`][3] within their build scripts. -These actions can't be supported in a Chromium context - our gn, ninja -and LLVM build system is very specific in expressing relationships between -build actions. - -So, your options are: - -* Avoid these crates -* Apply a patch to the crate. - -Patches should be kept in `third_party/rust///patches` - -see for example the [patches against the cxx crate][4]. There is currently -no automation - [simply create and apply patches manually][5] to remove the -problematic actions from the build script. - -If your patches modify the `Cargo.toml` file, rerun `gnrt gen`. - -## Conflicting versions - -The crate that you want to include might have transitive dependencies -already in the tree, and perhaps it needs a different version. - -Multiple versions of crates are allowed in Chromium, but it's strongly advised -that you try to resolve this problem to reduce duplication, for example -by upgrading some other crate. - [0]: https://doc.rust-lang.org/cargo/reference/build-scripts.html -[1]: configuring-third-party-toml.md -[2]: https://crates.io/crates/cc -[3]: https://crates.io/crates/bindgen -[4]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/rust/cxx/v1/patches/ -[5]: https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/rust.md#patching-third_party-crates \ No newline at end of file diff --git a/src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md b/src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md new file mode 100644 index 000000000000..09b235572f03 --- /dev/null +++ b/src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md @@ -0,0 +1,22 @@ +# Build scripts which generate code + +If `ninja` complains about missing files, check the `build.rs` to see if it +writes source code files. + +If so, modify [`gnrt_config.toml`][1] to add `build-script-outputs` to the +crate. If this is a transitive dependency, that is, one on which Chromium +code should not directly depend, also add `allow-first-party-usage=false`. +There are several examples already in that file: + +```toml +[crate.unicode-linebreak] +allow-first-party-usage = false +build-script-outputs = [ "tables.rs" ] +``` + +Now rerun [`gnrt.py -- gen`][2] to regenerate `BUILD.gn` files to inform ninja +that this particular output file is input to subsequent build steps. + + +[1]: configuring-gnrt-config-toml.md +[2]: ../generating-gn-build-rules.md \ No newline at end of file diff --git a/src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md b/src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md new file mode 100644 index 000000000000..cebfe7fc21d3 --- /dev/null +++ b/src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-take-arbitrary-actions.md @@ -0,0 +1,24 @@ +# Build scripts which build C++ or take arbitrary actions + +Some crates use the [`cc`][2] crate to build and link C/C++ libraries. +Other crates parse C/C++ using [`bindgen`][3] within their build scripts. +These actions can't be supported in a Chromium context - our gn, ninja +and LLVM build system is very specific in expressing relationships between +build actions. + +So, your options are: + +* Avoid these crates +* Apply a patch to the crate. + +Patches should be kept in `third_party/rust/chromium_crates_io/patches/` - +see for example the [patches against the cxx crate][4]. There is currently +no automation - [simply create and apply patches manually][5] to remove the +problematic actions from the build script. + +If your patches modify the `Cargo.toml` file, rerun `gnrt gen`. + +[2]: https://crates.io/crates/cc +[3]: https://crates.io/crates/bindgen +[4]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/rust/chromium_crates_io/patches/cxx/ +[5]: https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/rust.md#patching-third_party-crates diff --git a/src/chromium/cargo/howto.md b/src/chromium/cargo/howto.md index e9cb43b1f2d1..d1730c28edfb 100644 --- a/src/chromium/cargo/howto.md +++ b/src/chromium/cargo/howto.md @@ -1,19 +1,40 @@ # How to minimize risk when using `cargo` -Chromium contains a copy of `cargo` and `rustc` - -If you want to make a Rust tool, you can do something like this: +Chromium contains a copy of `cargo` and `rustc` and of many Rust crates. +If you want to stick to using them, without downloading anything from the +internet, do this: ```sh export PATH_TO_CHROMIUM_SRC=~/chromium/src mkdir my-rust-tool cd my-rust-tool -$PATH_TO_CHROMIUM_SRC/third_party/rust-toolchain/bin/cargo init -$PATH_TO_CHROMIUM_SRC/third_party/rust-toolchain/bin/cargo run +mkdir .cargo +cat < .cargo/config.toml +[source.crates-io] +replace-with = "vendored-sources" + +[source.vendored-sources] +directory = "$PATH_TO_CHROMIUM_SRC/third_party/rust/chromium_crates_io/vendor" +END +$PATH_TO_CHROMIUM_SRC/third_party/rust-toolchain/bin/cargo init --offline +$PATH_TO_CHROMIUM_SRC/third_party/rust-toolchain/bin/cargo run --offline ``` -This uses Chromium's own Rust toolchain so you are not yet trusting anything -from the internet. +This uses Chromium's own Rust toolchain, and Chromium's local repository +of crates which have already been through code review. + +Many `cargo` commands work fine with this arrangement, but `cargo add` does +not. Nevertheless you can add add crates, so long as they're crates +we're already using for Chromium, by adding them directly to your +`Cargo.toml`: + +```toml +[dependencies] +log = "0.4" +``` -But, Chromium does not yet have a library of "approved" third-party crates. -Exercise due caution. +
+Bring conversation back to the previous discussion - within a given team +perhaps it's OK to use crates from the internet, allowing access to a much +wider range of crates. +
\ No newline at end of file diff --git a/src/chromium/policy.md b/src/chromium/policy.md index 7e125d7653cf..f44afd791409 100644 --- a/src/chromium/policy.md +++ b/src/chromium/policy.md @@ -11,7 +11,7 @@ Very few Rust libraries directly expose a C/C++ API, so that means that nearly all such libraries will require a small amount of first-party glue code. > First-party Rust glue code for a particular third-party crate should -> normally be kept in `third_party/rust/crate///wrapper`. +> normally be kept in `third_party/rust///wrapper`. Because of this, today's course will be heavily focused on: From 1fc2f55cbb60b54a87b86ea8b00605995e139b33 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Mon, 20 Nov 2023 17:52:04 +0000 Subject: [PATCH 18/34] A few minor tweaks. --- src/chromium/adding-third-party-crates/checking-in.md | 3 +++ .../adding-third-party-crates/configuring-cargo-toml.md | 2 +- .../configuring-gnrt-config-toml.md | 2 +- .../adding-third-party-crates/generating-gn-build-rules.md | 7 ++++--- .../adding-third-party-crates/resolving-problems.md | 5 +++-- .../build-scripts-which-generate-code.md | 2 +- 6 files changed, 13 insertions(+), 8 deletions(-) diff --git a/src/chromium/adding-third-party-crates/checking-in.md b/src/chromium/adding-third-party-crates/checking-in.md index 8acd217cda86..2e6c37f0f134 100644 --- a/src/chromium/adding-third-party-crates/checking-in.md +++ b/src/chromium/adding-third-party-crates/checking-in.md @@ -9,6 +9,9 @@ Please also add an `OWNERS` file there. You should land all this, along with your `Cargo.toml` and `gnrt_config.toml` changes, into the Chromium repo. +**Important**: you need to use `git add -f` because otherwise `.gitignore` files +may result in some files being skipped. + As you do so, you might find presubmit checks fail because of non-inclusive language. This is because Rust crate data tends to include names of git branches, and many projects still use non-inclusive terminology there. So you may need diff --git a/src/chromium/adding-third-party-crates/configuring-cargo-toml.md b/src/chromium/adding-third-party-crates/configuring-cargo-toml.md index 8b57892f5c63..1669ccf6e6e0 100644 --- a/src/chromium/adding-third-party-crates/configuring-cargo-toml.md +++ b/src/chromium/adding-third-party-crates/configuring-cargo-toml.md @@ -19,7 +19,7 @@ you wish to enable in the crate. You should specify the [semver version][2] of the crate that you want (look it up on [crates.io][3]!). For example, if the most recent published version of the -crate `foo` is `1.2.3``, you'd specify +crate `foo` is `1.2.3`, you'd specify ``` foo = "1" diff --git a/src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md b/src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md index 040dc076fba1..6649786f3dc5 100644 --- a/src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md +++ b/src/chromium/adding-third-party-crates/configuring-gnrt-config-toml.md @@ -3,7 +3,7 @@ Alongside `Cargo.toml` is [`gnrt_config.toml`][0]. This contains Chromium-specific extensions to crate handling. -If you add a new crate, you'll definitely need to specify at least the `group`. +If you add a new crate, you should specify at least the `group`. This is one of: ```toml diff --git a/src/chromium/adding-third-party-crates/generating-gn-build-rules.md b/src/chromium/adding-third-party-crates/generating-gn-build-rules.md index 5a22844847d6..9c4ba25f669c 100644 --- a/src/chromium/adding-third-party-crates/generating-gn-build-rules.md +++ b/src/chromium/adding-third-party-crates/generating-gn-build-rules.md @@ -1,4 +1,4 @@ -# Generating gn build rules +# Generating `gn` build rules A tool called `gnrt` knows how to generate Chromium build rules for the crate you just added. @@ -18,11 +18,12 @@ vpython3 tools/crates/run_gnrt.py -- vendor This `vendor` command may download: * Your crate * Direct and transitive dependencies -* Updates or new versions of other crates +* New versions of other crates, as required by `cargo` to resolve + the complete set of crates required by Chromium. If a crate in `//third_party/rust/chromium_crates_io/patches` was updated as part of vendoring, then reapply patches to it by running -`cd //third_party/rust/chromium_crates_io; ./apply_patches.sh`. +`cd third_party/rust/chromium_crates_io; ./apply_patches.sh`. Once you've downloaded the crate, generate the `BUILD.gn` files like this: diff --git a/src/chromium/adding-third-party-crates/resolving-problems.md b/src/chromium/adding-third-party-crates/resolving-problems.md index 29ad31be7841..ea6605babfe0 100644 --- a/src/chromium/adding-third-party-crates/resolving-problems.md +++ b/src/chromium/adding-third-party-crates/resolving-problems.md @@ -14,8 +14,9 @@ by upgrading some other crate. If your build fails, it may be because of a `build.rs`: programs which do arbitrary things at build time. This is fundamentally at odds with the design of `gn` and `ninja` which aim for static, deterministic, build rules to maximize -parallelism and repeatability of builds. If your crate or its dependencies -have a `build.rs` you may need to take steps: +parallelism and repeatability of builds. + +Some `build.rs` actions are automatically supported; others require action: | build script effect | Supported by our gn templates | Work required by you | |-----|-----|-----| diff --git a/src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md b/src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md index 09b235572f03..b59b46da9ae5 100644 --- a/src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md +++ b/src/chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md @@ -18,5 +18,5 @@ Now rerun [`gnrt.py -- gen`][2] to regenerate `BUILD.gn` files to inform ninja that this particular output file is input to subsequent build steps. -[1]: configuring-gnrt-config-toml.md +[1]: ../configuring-gnrt-config-toml.md [2]: ../generating-gn-build-rules.md \ No newline at end of file From 0c5f31d96769bce7e00b65784e6e3a736df9f592 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Tue, 21 Nov 2023 13:09:00 +0000 Subject: [PATCH 19/34] =?UTF-8?q?More=20changes=20suggested=20by=20=C5=81u?= =?UTF-8?q?kasz?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chromium/cargo.md | 4 +--- src/chromium/policy.md | 2 +- 2 files changed, 2 insertions(+), 4 deletions(-) diff --git a/src/chromium/cargo.md b/src/chromium/cargo.md index 02913af50fbb..4e07270d8e71 100644 --- a/src/chromium/cargo.md +++ b/src/chromium/cargo.md @@ -5,9 +5,7 @@ uses `cargo` and requires downloading and running content from the internet: * The Rust toolchain (`cargo` and `rustc` at least) -* Whatever [third-party crates][0] your project depends upon. (These may - include procedural macros and build scripts which are run on your machine - during the build process, as well as at run time.) +* Whatever [third-party crates][0] your project depends upon. Your organization's policy, and/or common sense, may prohibit you from doing these things. diff --git a/src/chromium/policy.md b/src/chromium/policy.md index f44afd791409..761296676dbe 100644 --- a/src/chromium/policy.md +++ b/src/chromium/policy.md @@ -15,7 +15,7 @@ all such libraries will require a small amount of first-party glue code. Because of this, today's course will be heavily focused on: -* Bringing in third-party Rust code ("crates") +* Bringing in third-party Rust libraries ("crates") * Writing glue code to be able to use those crates from Chromium C++. If this policy changes over time, the course will evolve to keep up. From ee31be07a58356abc7594e3a37e40d14e6d4e174 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Tue, 21 Nov 2023 13:17:58 +0000 Subject: [PATCH 20/34] Stow cxx example code in third_party --- .../example-bindings.md | 22 ++----------------- third_party/cxx/book/snippets.rs | 22 +++++++++++++++++++ 2 files changed, 24 insertions(+), 20 deletions(-) diff --git a/src/chromium/interoperability-with-cpp/example-bindings.md b/src/chromium/interoperability-with-cpp/example-bindings.md index 695f37f5e0b3..da49de0499bb 100644 --- a/src/chromium/interoperability-with-cpp/example-bindings.md +++ b/src/chromium/interoperability-with-cpp/example-bindings.md @@ -3,26 +3,8 @@ cxx requires you to declare the whole C++/Rust boundary in one of your `.rs` files. For instance: -```rust -#[cxx::bridge] -mod ffi { - extern "Rust" { - type MultiBuf; - - fn next_chunk(buf: &mut MultiBuf) -> &[u8]; - } - - unsafe extern "C++" { - include!("cxx-demo/include/blobstore.h"); - - type BlobstoreClient; - - fn new_blobstore_client() -> UniquePtr; - fn put(&self, parts: &mut MultiBuf) -> u64; - } -} - -// It's fine to put more Rust code here after your #[cxx::bridge] +```rust,ignore +{{#include ../../../third_party/cxx/book/snippets.rs:cxx_overview}} ```
diff --git a/third_party/cxx/book/snippets.rs b/third_party/cxx/book/snippets.rs index 8b7fd0a39541..a54e4c72e6e9 100644 --- a/third_party/cxx/book/snippets.rs +++ b/third_party/cxx/book/snippets.rs @@ -119,3 +119,25 @@ fn main() { } } // ANCHOR_END: cpp_exception + +// ANCHOR: cxx_overview +#[cxx::bridge] +mod ffi { + extern "Rust" { + type MultiBuf; + + fn next_chunk(buf: &mut MultiBuf) -> &[u8]; + } + + unsafe extern "C++" { + include!("example/include/blobstore.h"); + + type BlobstoreClient; + + fn new_blobstore_client() -> UniquePtr; + fn put(self: &BlobstoreClient, buf: &mut MultiBuf) -> Result; + } +} + +// Definitions of Rust types and functions go here +// ANCHOR_END: cxx_overview \ No newline at end of file From 3491ef633f50d2958118469829d0d72fa03427d2 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Tue, 21 Nov 2023 13:28:49 +0000 Subject: [PATCH 21/34] Fix two typos. --- src/chromium/adding-third-party-crates/reviews-and-audits.md | 2 +- src/chromium/setup.md | 2 ++ src/exercises/chromium/interoperability-with-cpp.md | 2 +- 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/src/chromium/adding-third-party-crates/reviews-and-audits.md b/src/chromium/adding-third-party-crates/reviews-and-audits.md index 24304ed81afe..e2d5b73dc130 100644 --- a/src/chromium/adding-third-party-crates/reviews-and-audits.md +++ b/src/chromium/adding-third-party-crates/reviews-and-audits.md @@ -2,7 +2,7 @@ Adding new libraries is subject to Chromium's standard [policies][0], but of course also subject to code review. As you may be bringing in not just a single -crate but also transitive depedencies, there may be a lot of code to review. +crate but also transitive dependencies, there may be a lot of code to review. On the other hand, safe Rust code can have limited negative side effects. How should you review it? diff --git a/src/chromium/setup.md b/src/chromium/setup.md index 702c40b432b1..b9aad9894c41 100644 --- a/src/chromium/setup.md +++ b/src/chromium/setup.md @@ -17,6 +17,8 @@ See [How to build Chromium](https://www.chromium.org/developers/how-tos/get-the- if you aren't already at that point. Be warned - setting up to build Chromium takes time. +It's also recommended that you have Visual Studio code installed. + # About the exercises This part of the course has a series of exercises which build on each other. diff --git a/src/exercises/chromium/interoperability-with-cpp.md b/src/exercises/chromium/interoperability-with-cpp.md index 2613274068bb..5c8394d0a8be 100644 --- a/src/exercises/chromium/interoperability-with-cpp.md +++ b/src/exercises/chromium/interoperability-with-cpp.md @@ -50,7 +50,7 @@ sufficiently simple. Sketch how you might define that interface. * The [`rust_static_library` gn template][2]
-As students explore Part Two, they're bound to have lots of questions aboout how +As students explore Part Two, they're bound to have lots of questions about how to achieve these things, and also how cxx works behind the scenes. Some of the questions you may encounter: From cbf2acbdb3a5e30c70a16fc9083a71acb70bc203 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Tue, 21 Nov 2023 13:30:46 +0000 Subject: [PATCH 22/34] Annotate code snippet languages. --- src/chromium/adding-third-party-crates/checking-in.md | 2 +- .../adding-third-party-crates/configuring-cargo-toml.md | 2 +- .../adding-third-party-crates/generating-gn-build-rules.md | 4 ++-- src/chromium/interoperability-with-cpp/error-handling.md | 4 ++-- 4 files changed, 6 insertions(+), 6 deletions(-) diff --git a/src/chromium/adding-third-party-crates/checking-in.md b/src/chromium/adding-third-party-crates/checking-in.md index 2e6c37f0f134..19a3f1569f99 100644 --- a/src/chromium/adding-third-party-crates/checking-in.md +++ b/src/chromium/adding-third-party-crates/checking-in.md @@ -17,7 +17,7 @@ language. This is because Rust crate data tends to include names of git branches and many projects still use non-inclusive terminology there. So you may need to run: -``` +```shell infra/update_inclusive_language_presubmit_exempt_dirs.sh > infra/inclusive_language_presubmit_exempt_dirs.txt git add -p infra/inclusive_language_presubmit_exempt_dirs.txt # add whatever changes are yours ``` diff --git a/src/chromium/adding-third-party-crates/configuring-cargo-toml.md b/src/chromium/adding-third-party-crates/configuring-cargo-toml.md index 1669ccf6e6e0..b8f616b1c28e 100644 --- a/src/chromium/adding-third-party-crates/configuring-cargo-toml.md +++ b/src/chromium/adding-third-party-crates/configuring-cargo-toml.md @@ -21,7 +21,7 @@ You should specify the [semver version][2] of the crate that you want (look it up on [crates.io][3]!). For example, if the most recent published version of the crate `foo` is `1.2.3`, you'd specify -``` +```toml foo = "1" ``` diff --git a/src/chromium/adding-third-party-crates/generating-gn-build-rules.md b/src/chromium/adding-third-party-crates/generating-gn-build-rules.md index 9c4ba25f669c..c5f533c67b90 100644 --- a/src/chromium/adding-third-party-crates/generating-gn-build-rules.md +++ b/src/chromium/adding-third-party-crates/generating-gn-build-rules.md @@ -5,7 +5,7 @@ crate you just added. To start, download the crate you want like this: -``` +```shell cd chromium/src vpython3 tools/crates/run_gnrt.py -- vendor ``` @@ -27,7 +27,7 @@ part of vendoring, then reapply patches to it by running Once you've downloaded the crate, generate the `BUILD.gn` files like this: -``` +```shell vpython3 tools/crates/run_gnrt.py -- gen ``` diff --git a/src/chromium/interoperability-with-cpp/error-handling.md b/src/chromium/interoperability-with-cpp/error-handling.md index 2513ac5a8216..5b13e9807f94 100644 --- a/src/chromium/interoperability-with-cpp/error-handling.md +++ b/src/chromium/interoperability-with-cpp/error-handling.md @@ -5,7 +5,7 @@ in Chromium. Alternatives: * Where success can be represented as a simple Boolean, as done in our [QR code generator][1]: Return a Boolean representing success, and record results using out-parameters: - ```rust + ```rust,ignore #[cxx::bridge(namespace = "qr_code_generator")] mod ffi { extern "Rust" { @@ -20,7 +20,7 @@ in Chromium. Alternatives: ``` * Where success is more complex, provide a Rust object which can be queried for details of success or failure: - ```rust + ```rust,ignore #[cxx::bridge] mod ffi { extern "Rust" { From 914945721b02b0b03dd9c67ecf14804b5ee64c4b Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Tue, 21 Nov 2023 13:49:20 +0000 Subject: [PATCH 23/34] Add overview diagram. --- src/chromium/policy.md | 15 +++++++++++++++ 1 file changed, 15 insertions(+) diff --git a/src/chromium/policy.md b/src/chromium/policy.md index 761296676dbe..6516446b424d 100644 --- a/src/chromium/policy.md +++ b/src/chromium/policy.md @@ -10,6 +10,21 @@ if they're the best option for performance or for security. Very few Rust libraries directly expose a C/C++ API, so that means that nearly all such libraries will require a small amount of first-party glue code. +```bob +C++ Rust +.- - - - - - - - - -. .- - - - - - - - - - - - - - - - - - - - - - -. +: : : : +: Existing Chromium : : Chromium Rust Existing Rust : +: "C++" : : "wrapper" crate : +: +---------------+ : : +----------------+ +-------------+ : +: | | : : | | | | : +: | o-----+-+-----------+-+-> o-+----------+--> | : +: | | : Language : | | Crate | | : +: +---------------+ : boundary : +----------------+ API +-------------+ : +: : : : +`- - - - - - - - - -' `- - - - - - - - - - - - - - - - - - - - - - -' +``` + > First-party Rust glue code for a particular third-party crate should > normally be kept in `third_party/rust///wrapper`. From 4163f6911504abac86c5734d9fa2f7d074621889 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Tue, 21 Nov 2023 14:13:19 +0000 Subject: [PATCH 24/34] Restructure the "cargo for tools" section. Based on feedback running the course for the first time, * it wasn't obvious why anyone would ever want to use cargo rather than gn * the section about how to run cargo --offline was too detailed, and has been moved into documentation --- src/SUMMARY.md | 3 +-- src/chromium/cargo.md | 38 ++++++++++++++++++++++++++++------- src/chromium/cargo/howto.md | 40 ------------------------------------- 3 files changed, 32 insertions(+), 49 deletions(-) delete mode 100644 src/chromium/cargo/howto.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 1225d902f5b7..450dfa68b2c9 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -228,8 +228,7 @@ - [Welcome](chromium.md) - [Setup](chromium/setup.md) -- [Using cargo for tools](chromium/cargo.md) - - [How to](chromium/cargo/howto.md) +- [Using cargo for experimental tools](chromium/cargo.md) - [Policy](chromium/policy.md) - [Build Rules](chromium/build-rules.md) - [Unsafe code](chromium/build-rules/unsafe.md) diff --git a/src/chromium/cargo.md b/src/chromium/cargo.md index 4e07270d8e71..2184b948059a 100644 --- a/src/chromium/cargo.md +++ b/src/chromium/cargo.md @@ -1,15 +1,33 @@ -# Using cargo for tools +# Using cargo for experimental tools -As you'll see, Chromium builds don't use `cargo`. But typical Rust development -uses `cargo` and requires downloading and running content from the -internet: +Subjectively, -* The Rust toolchain (`cargo` and `rustc` at least) -* Whatever [third-party crates][0] your project depends upon. +```bob +High ^ + | x cargo + | +Development | x "cargo --offline" +speed | + | x "gn/ninja" + | "rust_executable(...)" +Low +----------------------------------------------------> + Low Determinism High +``` + +`cargo` works great for pure-Rust tools, but isn't optimized for large multi- +language projects like Chromium. Chromium uses `gn` and `ninja`. + +When writing a tool in Rust, your choices are: + +* Use `gn` and `ninja` (using the `rust_executable` template we'll meet + later) +* Use `cargo`, but [restrict yourself to Chromium's audited toolchain and crates][0] +* Use `cargo`, trusting a [toolchain][1] and [crates downloaded from the internet][2] Your organization's policy, and/or common sense, may prohibit you from doing these things. +From here on we'll be focusing on `gn` and `ninja`. ## Mini exercise @@ -17,6 +35,10 @@ Discuss in small groups the policies within your own team and organization, and come to a group agreement about what's an acceptable level of risk.
+Explain that it might seem strange to write tools in Rust, but this is +increasingly popular across the industry - Rust tools are quicker and work +more reliably. + Assuming folks taking the course are physically together, ask them to discuss in small groups of 3-4 people. Then, ask each table whether they've come to a consensus on the level of risk @@ -24,4 +46,6 @@ to a consensus on the level of risk Later in the course, we'll be running an actual `cargo`-based tool, `gnrt`.
-[0]: https://crates.io/ +[0]: https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/rust.md#Using-cargo +[1]: https://rustup.rs/ +[2]: https://crates.io/ \ No newline at end of file diff --git a/src/chromium/cargo/howto.md b/src/chromium/cargo/howto.md deleted file mode 100644 index d1730c28edfb..000000000000 --- a/src/chromium/cargo/howto.md +++ /dev/null @@ -1,40 +0,0 @@ -# How to minimize risk when using `cargo` - -Chromium contains a copy of `cargo` and `rustc` and of many Rust crates. -If you want to stick to using them, without downloading anything from the -internet, do this: - -```sh -export PATH_TO_CHROMIUM_SRC=~/chromium/src -mkdir my-rust-tool -cd my-rust-tool -mkdir .cargo -cat < .cargo/config.toml -[source.crates-io] -replace-with = "vendored-sources" - -[source.vendored-sources] -directory = "$PATH_TO_CHROMIUM_SRC/third_party/rust/chromium_crates_io/vendor" -END -$PATH_TO_CHROMIUM_SRC/third_party/rust-toolchain/bin/cargo init --offline -$PATH_TO_CHROMIUM_SRC/third_party/rust-toolchain/bin/cargo run --offline -``` - -This uses Chromium's own Rust toolchain, and Chromium's local repository -of crates which have already been through code review. - -Many `cargo` commands work fine with this arrangement, but `cargo add` does -not. Nevertheless you can add add crates, so long as they're crates -we're already using for Chromium, by adding them directly to your -`Cargo.toml`: - -```toml -[dependencies] -log = "0.4" -``` - -
-Bring conversation back to the previous discussion - within a given team -perhaps it's OK to use crates from the internet, allowing access to a much -wider range of crates. -
\ No newline at end of file From 69fd58cab3e8156656153c1c90edcef73f22a3b7 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Tue, 21 Nov 2023 14:16:41 +0000 Subject: [PATCH 25/34] Move discussion of `allow_unsafe`. It was previously in the speaker notes for the wrong slide. --- src/chromium/interoperability-with-cpp.md | 27 +++++++------------ .../using-cxx-from-chromium.md | 18 ++++++++++++- 2 files changed, 26 insertions(+), 19 deletions(-) diff --git a/src/chromium/interoperability-with-cpp.md b/src/chromium/interoperability-with-cpp.md index 2ff14d776026..7367863ba1db 100644 --- a/src/chromium/interoperability-with-cpp.md +++ b/src/chromium/interoperability-with-cpp.md @@ -12,23 +12,14 @@ functions and types in both Rust and C++. See the [CXX tutorial][1] for a full example of using this. -
-Talk through the diagram. - -Students may ask - why do we still need `allow_unsafe = true`? - -The broad answer is that no C/C++ code is "safe" by the normal Rust standards. -Calling back and forth to C/C++ from Rust may do arbitrary things to memory, and -compromise the safety of Rust's own data layouts. Presence of _too many_ -`unsafe` keywords in C/C++ interop can harm the signal-to-noise ratio of -such a keyword, and is [controversial][3], but strictly, bringing any foreign -code into a Rust binary can cause unexpected behavior from Rust's perspective. - -The narrow answer lies in the diagram at the top of this page - behind the -scenes, cxx generates Rust `unsafe` and `extern "C"` functions just like -we did manually in the previous section. -
- [1]: https://cxx.rs/tutorial.html [2]: https://cxx.rs/bindings.html -[3]: https://steveklabnik.com/writing/the-cxx-debate \ No newline at end of file + + +
+Talk through the diagram. Explain that behind the scenes, this is doing +just the same as you previously did - but by programmatically ensuring that +the C++ and Rust sides match, cxx can ensure there aren't obvious errors +with object lifetimes, string lengths, etc. It reduces lots of fiddly +boilerplate and the resulting code feels more "natural". +
\ No newline at end of file diff --git a/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md b/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md index d1b1ea8daf94..5993d21324eb 100644 --- a/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md +++ b/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md @@ -18,4 +18,20 @@ C++ headers will be generated at a sensible location, so you can just You will find some utility functions in `//base` to convert to/from Chromium C++ types to cxx Rust types - for example [`SpanToRustSlice`][0]. -[0]: https://source.chromium.org/chromium/chromium/src/+/main:base/containers/span_rust.h;l=21 \ No newline at end of file +
+Students may ask - why do we still need `allow_unsafe = true`? + +The broad answer is that no C/C++ code is "safe" by the normal Rust standards. +Calling back and forth to C/C++ from Rust may do arbitrary things to memory, and +compromise the safety of Rust's own data layouts. Presence of _too many_ +`unsafe` keywords in C/C++ interop can harm the signal-to-noise ratio of +such a keyword, and is [controversial][1], but strictly, bringing any foreign +code into a Rust binary can cause unexpected behavior from Rust's perspective. + +The narrow answer lies in the diagram at the top of this page - behind the +scenes, cxx generates Rust `unsafe` and `extern "C"` functions just like +we did manually in the previous section. +
+ +[0]: https://source.chromium.org/chromium/chromium/src/+/main:base/containers/span_rust.h;l=21 +[1]: https://steveklabnik.com/writing/the-cxx-debate \ No newline at end of file From 77dab32dbb4cf54db83df778447743b7d3dfff1a Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Tue, 21 Nov 2023 14:27:08 +0000 Subject: [PATCH 26/34] Slight rename - seems clearer. This also reorders pages a little. --- src/SUMMARY.md | 2 +- .../{using-cxx-from-chromium.md => using-cxx-in-chromium.md} | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) rename src/chromium/interoperability-with-cpp/{using-cxx-from-chromium.md => using-cxx-in-chromium.md} (98%) diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 450dfa68b2c9..7a165a9513ef 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -237,9 +237,9 @@ - [Exercise](exercises/chromium/build-rules.md) - [Interoperability with C++](chromium/interoperability-with-cpp.md) - [Example bindings](chromium/interoperability-with-cpp/example-bindings.md) - - [Using cxx from Chromium](chromium/interoperability-with-cpp/using-cxx-from-chromium.md) - [Limitations of cxx](chromium/interoperability-with-cpp/limitations-of-cxx.md) - [cxx error handling](chromium/interoperability-with-cpp/error-handling.md) + - [Using cxx in Chromium](chromium/interoperability-with-cpp/using-cxx-in-chromium.md) - [Exercise](exercises/chromium/interoperability-with-cpp.md) - [Adding third party crates](chromium/adding-third-party-crates.md) - [Configuring Cargo.toml](chromium/adding-third-party-crates/configuring-cargo-toml.md) diff --git a/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md b/src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md similarity index 98% rename from src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md rename to src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md index 5993d21324eb..c34dfd389e9b 100644 --- a/src/chromium/interoperability-with-cpp/using-cxx-from-chromium.md +++ b/src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md @@ -1,4 +1,4 @@ -## Using cxx from Chromium +## Using cxx in Chromium The `rust_static_library` target intrinsically knows about cxx interop. Just add From 4f51817ec904c2c0008b44ccae19ff16cf22cba0 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Tue, 21 Nov 2023 14:29:59 +0000 Subject: [PATCH 27/34] Clarify how many cxx::bridges. This was unclear to the first folks who sat through the course. --- .../using-cxx-in-chromium.md | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md b/src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md index c34dfd389e9b..9f69088199ba 100644 --- a/src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md +++ b/src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md @@ -1,13 +1,17 @@ ## Using cxx in Chromium -The `rust_static_library` target intrinsically knows about cxx interop. Just add +In Chromium, we define an independent `#[cxx::bridge] mod` for each leaf-node +where we want to use Rust. You'd typically have one for each +`rust_static_library`. Just add ```gn -cxx_bindings = [ "my_rust_file.rs" ] # just list files containing #[cxx::bridge] +cxx_bindings = [ "my_rust_file.rs" ] + # just list files containing #[cxx::bridge] +allow_unsafe = true ``` -to your existing `rust_static_library` target. **You also need -`allow_unsafe = true`**. +to your existing `rust_static_library` target alongside `crate_root` and +`sources`. C++ headers will be generated at a sensible location, so you can just From e5674f1d645378a949ea4eb009ce30a14ff122d6 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Tue, 21 Nov 2023 14:32:31 +0000 Subject: [PATCH 28/34] Remove a bit about crate versions. This isn't really necessary now that Chromium has switched to a standard Cargo.toml. --- .../configuring-cargo-toml.md | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/src/chromium/adding-third-party-crates/configuring-cargo-toml.md b/src/chromium/adding-third-party-crates/configuring-cargo-toml.md index b8f616b1c28e..86aa17649ee4 100644 --- a/src/chromium/adding-third-party-crates/configuring-cargo-toml.md +++ b/src/chromium/adding-third-party-crates/configuring-cargo-toml.md @@ -15,21 +15,9 @@ As with any other `Cargo.toml`, you can specify [more details about the dependencies][1] - most commonly, you'll want to specify the `features` that you wish to enable in the crate. -## What version to choose? - -You should specify the [semver version][2] of the crate that you want (look it -up on [crates.io][3]!). For example, if the most recent published version of the -crate `foo` is `1.2.3`, you'd specify - -```toml -foo = "1" -``` - When adding a crate to Chromium, you'll often need to provide some extra information in an additional file, `gnrt_config.toml`, which we'll meet next. [0]: https://source.chromium.org/chromium/chromium/src/+/main:third_party/rust/chromium_crates_io/Cargo.toml [1]: https://doc.rust-lang.org/cargo/reference/specifying-dependencies.html -[2]: https://doc.rust-lang.org/cargo/reference/semver.html -[3]: https://crates.io \ No newline at end of file From 5c69969ac80f8499fd3f801639b76eba4b8e9f7d Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Tue, 21 Nov 2023 14:42:17 +0000 Subject: [PATCH 29/34] Move semver discussion. First run throughs of the course showed this was confusing. Cease to talk about it as a "problem to solve" but instead highlight it as an aspect of the paths in which crate metadata are stored. This also splits the "generating-gn-build-rules.md" slide into two, because it was too long. --- src/SUMMARY.md | 1 + .../adding-third-party-crates/checking-in.md | 2 +- .../depending-on-a-crate.md | 8 ++++ .../downloading-crates.md | 30 +++++++++++++++ .../generating-gn-build-rules.md | 37 +++++-------------- .../resolving-problems.md | 11 ------ 6 files changed, 49 insertions(+), 40 deletions(-) create mode 100644 src/chromium/adding-third-party-crates/downloading-crates.md diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 7a165a9513ef..e150e2361e17 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -244,6 +244,7 @@ - [Adding third party crates](chromium/adding-third-party-crates.md) - [Configuring Cargo.toml](chromium/adding-third-party-crates/configuring-cargo-toml.md) - [Configuring gnrt_config.toml](chromium/adding-third-party-crates/configuring-gnrt-config-toml.md) + - [Downloading crates](chromium/adding-third-party-crates/downloading-crates.md) - [Generating gn build rules](chromium/adding-third-party-crates/generating-gn-build-rules.md) - [Resolving problems](chromium/adding-third-party-crates/resolving-problems.md) - [Build scripts which generate code](chromium/adding-third-party-crates/resolving-problems/build-scripts-which-generate-code.md) diff --git a/src/chromium/adding-third-party-crates/checking-in.md b/src/chromium/adding-third-party-crates/checking-in.md index 19a3f1569f99..3e03ae34e5e0 100644 --- a/src/chromium/adding-third-party-crates/checking-in.md +++ b/src/chromium/adding-third-party-crates/checking-in.md @@ -2,7 +2,7 @@ `git status` should reveal: * Crate code in `//third_party/rust/chromium_crates_io` -* Metadata (`BUILD.gn` and `README.chromium`) in `//third_party/rust/` +* Metadata (`BUILD.gn` and `README.chromium`) in `//third_party/rust//` Please also add an `OWNERS` file there. diff --git a/src/chromium/adding-third-party-crates/depending-on-a-crate.md b/src/chromium/adding-third-party-crates/depending-on-a-crate.md index 64a071b7aa90..a8e3439bcd0b 100644 --- a/src/chromium/adding-third-party-crates/depending-on-a-crate.md +++ b/src/chromium/adding-third-party-crates/depending-on-a-crate.md @@ -4,6 +4,14 @@ Once you've added a third-party crate and generated build rules, depending on a crate is simple. Find your `rust_static_library` target, and add a `dep` on the `:lib` target within your crate. +Specifically, + +```bob + +------------+ +----------------------+ +"//third_party/rust" | crate name | "/v" | major semver version | "/:lib" + +------------+ +----------------------+ +``` + For instance, ```gn diff --git a/src/chromium/adding-third-party-crates/downloading-crates.md b/src/chromium/adding-third-party-crates/downloading-crates.md new file mode 100644 index 000000000000..24af5df2393d --- /dev/null +++ b/src/chromium/adding-third-party-crates/downloading-crates.md @@ -0,0 +1,30 @@ +# Downloading crates + +A tool called `gnrt` knows how to download crates and how to generate `BUILD.gn` +rules. + +To start, download the crate you want like this: + +```shell +cd chromium/src +vpython3 tools/crates/run_gnrt.py -- vendor +``` + +> Although the `gnrt` tool is part of the Chromium source code, +> by running this command you will be downloading and running its dependencies +> from `crates.io`. See [the earlier section][0] discussing this security +> decision. + +This `vendor` command may download: +* Your crate +* Direct and transitive dependencies +* New versions of other crates, as required by `cargo` to resolve + the complete set of crates required by Chromium. + +If a crate in `//third_party/rust/chromium_crates_io/patches` was updated as +part of vendoring, then reapply patches to it by running +`cd third_party/rust/chromium_crates_io; ./apply_patches.sh`. + + + +[1]: ../cargo.md \ No newline at end of file diff --git a/src/chromium/adding-third-party-crates/generating-gn-build-rules.md b/src/chromium/adding-third-party-crates/generating-gn-build-rules.md index c5f533c67b90..9350851d59dc 100644 --- a/src/chromium/adding-third-party-crates/generating-gn-build-rules.md +++ b/src/chromium/adding-third-party-crates/generating-gn-build-rules.md @@ -1,30 +1,5 @@ # Generating `gn` build rules -A tool called `gnrt` knows how to generate Chromium build rules for the -crate you just added. - -To start, download the crate you want like this: - -```shell -cd chromium/src -vpython3 tools/crates/run_gnrt.py -- vendor -``` - -> Although the `gnrt` tool is part of the Chromium source code, -> by running this command you will be downloading and running its dependencies -> from `crates.io`. See [the earlier section][1] discussing this security -> decision. - -This `vendor` command may download: -* Your crate -* Direct and transitive dependencies -* New versions of other crates, as required by `cargo` to resolve - the complete set of crates required by Chromium. - -If a crate in `//third_party/rust/chromium_crates_io/patches` was updated as -part of vendoring, then reapply patches to it by running -`cd third_party/rust/chromium_crates_io; ./apply_patches.sh`. - Once you've downloaded the crate, generate the `BUILD.gn` files like this: ```shell @@ -34,11 +9,17 @@ vpython3 tools/crates/run_gnrt.py -- gen Now run `git status`. You should find: * At least one new crate source code in `third_party/rust/chromium_crates_io/vendor` -* At least one new `BUILD.gn` in `third_party/rust/` +* At least one new `BUILD.gn` in `third_party/rust//v` * An appropriate `README.chromium` +The "major semver version" is a [Rust "semver" version number][0]. + Take a close look, especially at the things generated in `third_party/rust`. +
+Talk a little about semver - and specifically the way that in Chromium +it's to allow multiple incompatible versions of a crate, which is discouraged +but sometimes necessary in the cargo ecosystem. + -[0]: https://chromium.googlesource.com/chromium/src/+/main/docs/adding_to_third_party.md#add-a-readme_chromium -[1]: ../cargo.md \ No newline at end of file +[0]: https://doc.rust-lang.org/cargo/reference/semver.html \ No newline at end of file diff --git a/src/chromium/adding-third-party-crates/resolving-problems.md b/src/chromium/adding-third-party-crates/resolving-problems.md index ea6605babfe0..88e23fe2da4f 100644 --- a/src/chromium/adding-third-party-crates/resolving-problems.md +++ b/src/chromium/adding-third-party-crates/resolving-problems.md @@ -1,16 +1,5 @@ # Resolving problems -## Conflicting versions - -The crate that you want to include might have transitive dependencies -already in the tree, and perhaps it needs a different version. - -Multiple versions of crates are allowed in Chromium, but it's strongly advised -that you try to resolve this problem to reduce duplication, for example -by upgrading some other crate. - -## Build scripts - If your build fails, it may be because of a `build.rs`: programs which do arbitrary things at build time. This is fundamentally at odds with the design of `gn` and `ninja` which aim for static, deterministic, build rules to maximize From 8a1c6dfaa388d0cc6de4212a58cdcf0c79f8def0 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Tue, 21 Nov 2023 16:13:00 +0000 Subject: [PATCH 30/34] Add cargo-audit instructions. --- .../adding-third-party-crates/reviews-and-audits.md | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/chromium/adding-third-party-crates/reviews-and-audits.md b/src/chromium/adding-third-party-crates/reviews-and-audits.md index e2d5b73dc130..e69dde2310b9 100644 --- a/src/chromium/adding-third-party-crates/reviews-and-audits.md +++ b/src/chromium/adding-third-party-crates/reviews-and-audits.md @@ -15,8 +15,10 @@ Meanwhile, for each new crate addition, we are checking for the following: macros, work out what they're for. Are they compatible with the way Chromium is normally built? * Check each crate seems to be reasonably well maintained -* Use `cargo audit` to check for known vulnerabilities (TODO: how to run this) -* Ensure any unsafe code is good enough for the [Rule of Two][2] +* Use `cd third-party/rust/chromium_crates_io; cargo audit` to check for + known vulnerabilities (first you'll need to `cargo install cargo-audit`, + which ironically involves downloading lots of dependencies from the internet[2]) +* Ensure any unsafe code is good enough for the [Rule of Two][3] * Check for any use of `fs` or `net` APIs * Read all the code at a sufficient level to look for anything out of place that might have been maliciously inserted. (You can't realistically aim @@ -27,4 +29,5 @@ to work out the right way to become confident of the crate. [0]: https://chromium.googlesource.com/chromium/src/+/refs/heads/main/docs/rust.md#Third_party-review [1]: https://mozilla.github.io/cargo-vet/ -[2]: https://chromium.googlesource.com/chromium/src/+/main/docs/security/rule-of-2.md#unsafe-code-in-safe-languages \ No newline at end of file +[2]: ../cargo.md +[3]: https://chromium.googlesource.com/chromium/src/+/main/docs/security/rule-of-2.md#unsafe-code-in-safe-languages \ No newline at end of file From bc16e1eb0308487baefc3fe22822544fdf347223 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Tue, 21 Nov 2023 16:14:15 +0000 Subject: [PATCH 31/34] Specify where OWNERS file should live. Based on experience of teaching the course once. --- src/chromium/adding-third-party-crates/checking-in.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/chromium/adding-third-party-crates/checking-in.md b/src/chromium/adding-third-party-crates/checking-in.md index 3e03ae34e5e0..e9fd9f21804d 100644 --- a/src/chromium/adding-third-party-crates/checking-in.md +++ b/src/chromium/adding-third-party-crates/checking-in.md @@ -4,7 +4,7 @@ * Crate code in `//third_party/rust/chromium_crates_io` * Metadata (`BUILD.gn` and `README.chromium`) in `//third_party/rust//` -Please also add an `OWNERS` file there. +Please also add an `OWNERS` file in the latter location. You should land all this, along with your `Cargo.toml` and `gnrt_config.toml` changes, into the Chromium repo. From 1ed9d405bb27f67ca0cd4a1be136745212a5f2b2 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Wed, 22 Nov 2023 13:27:37 +0000 Subject: [PATCH 32/34] Some nits from review --- src/chromium/build-rules.md | 2 +- src/chromium/build-rules/unsafe.md | 2 +- src/chromium/build-rules/vscode.md | 4 ++-- .../interoperability-with-cpp/using-cxx-in-chromium.md | 2 +- 4 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/chromium/build-rules.md b/src/chromium/build-rules.md index 537580864f34..e0c31daa54af 100644 --- a/src/chromium/build-rules.md +++ b/src/chromium/build-rules.md @@ -5,7 +5,7 @@ for efficiency - its static rules allow maximum parallelism. Rust is no exceptio ## Adding Rust code to Chromium -In some existing Chromium .gn file, declare a `rust_static_library`: +In some existing Chromium `BUILD.gn` file, declare a `rust_static_library`: ```gn import("//build/rust/rust_static_library.gni") diff --git a/src/chromium/build-rules/unsafe.md b/src/chromium/build-rules/unsafe.md index e879f0c38910..505d9af845d4 100644 --- a/src/chromium/build-rules/unsafe.md +++ b/src/chromium/build-rules/unsafe.md @@ -2,7 +2,7 @@ Unsafe Rust code is forbidden in `rust_static_library` by default - it won't compile. If you need unsafe Rust code, add `allow_unsafe = true` to the -gn target. (Later in the course we'll see circumstances why this is necessary.) +gn target. (Later in the course we'll see circumstances where this is necessary.) ```gn import("//build/rust/rust_static_library.gni") diff --git a/src/chromium/build-rules/vscode.md b/src/chromium/build-rules/vscode.md index 5bbbcca2d87b..7cc4c9c63e01 100644 --- a/src/chromium/build-rules/vscode.md +++ b/src/chromium/build-rules/vscode.md @@ -5,9 +5,9 @@ for C++. Visual Studio code works well for Rust in Chromium. To use it, * Ensure your VSCode has the `rust-analyzer` extension, not earlier forms of Rust support -* `gn gen out/Release --export-rust-project` (or equivalent for your output +* `gn gen out/Debug --export-rust-project` (or equivalent for your output directory) -* `ln -s out/Release/rust-project.json rust-project.json` +* `ln -s out/Debug/rust-project.json rust-project.json` Example screenshot from VSCode diff --git a/src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md b/src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md index 9f69088199ba..8df5fc4faa4a 100644 --- a/src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md +++ b/src/chromium/interoperability-with-cpp/using-cxx-in-chromium.md @@ -6,7 +6,7 @@ where we want to use Rust. You'd typically have one for each ```gn cxx_bindings = [ "my_rust_file.rs" ] - # just list files containing #[cxx::bridge] + # list of files containing #[cxx::bridge], not all source files allow_unsafe = true ``` From b656f1bdb4dedc7fd1461818c41a57dcb44d6767 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Thu, 23 Nov 2023 12:05:28 +0000 Subject: [PATCH 33/34] More code review nits. --- src/chromium/adding-third-party-crates/downloading-crates.md | 2 +- src/chromium/cargo.md | 2 +- src/exercises/chromium/third-party.md | 4 +--- 3 files changed, 3 insertions(+), 5 deletions(-) diff --git a/src/chromium/adding-third-party-crates/downloading-crates.md b/src/chromium/adding-third-party-crates/downloading-crates.md index 24af5df2393d..fdae6ca4ce72 100644 --- a/src/chromium/adding-third-party-crates/downloading-crates.md +++ b/src/chromium/adding-third-party-crates/downloading-crates.md @@ -27,4 +27,4 @@ part of vendoring, then reapply patches to it by running -[1]: ../cargo.md \ No newline at end of file +[0]: ../cargo.md \ No newline at end of file diff --git a/src/chromium/cargo.md b/src/chromium/cargo.md index 2184b948059a..e5bf6f7b11af 100644 --- a/src/chromium/cargo.md +++ b/src/chromium/cargo.md @@ -41,7 +41,7 @@ more reliably. Assuming folks taking the course are physically together, ask them to discuss in small groups of 3-4 people. Then, ask each table whether they've come -to a consensus on the level of risk +to a consensus on the level of risk. Later in the course, we'll be running an actual `cargo`-based tool, `gnrt`.
diff --git a/src/exercises/chromium/third-party.md b/src/exercises/chromium/third-party.md index 2ba027c837c3..57221ccc1cd1 100644 --- a/src/exercises/chromium/third-party.md +++ b/src/exercises/chromium/third-party.md @@ -9,9 +9,7 @@ skip ahead and do that now if you like. Or, you could create a new [`rust_executable` target][2] which uses `uwuify`).
-Students will need to download lots of transitive dependencies. This will -appear repetitive - that is indeed correct. There's no shortcut but to -run lots of separate download commands. +Students will need to download lots of transitive dependencies. The total crates needed are: uwuify, smallvec, scopeguard, parking_lot, parking_lot_core, lock_api and instant. If students are downloading even From 99e2d697b7347b034267c08e8f14fa7ada41de10 Mon Sep 17 00:00:00 2001 From: Adrian Taylor Date: Mon, 27 Nov 2023 12:56:55 +0000 Subject: [PATCH 34/34] Add additional Chromium intro blurb. --- src/running-the-course/course-structure.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/running-the-course/course-structure.md b/src/running-the-course/course-structure.md index 15c6ff02569a..522f9c7ee4ab 100644 --- a/src/running-the-course/course-structure.md +++ b/src/running-the-course/course-structure.md @@ -34,6 +34,17 @@ commands it runs and make sure they work when you run them by hand. [1]: https://source.android.com/docs/setup/download/downloading [2]: https://github.com/google/comprehensive-rust +### Rust in Chromium + +The [Rust in Chromium](../chromium.md) deep dive is a half-day course on using +Rust as part of the Chromium browser. It includes using Rust in Chromium's +`gn` build system, bringing in third-party libraries ("crates") and C++ +interoperability. + +You will need to be able to build Chromium - a debug, component build is +[recommended](../chromium/setup.md) for speed but any build will work. +Ensure that you can run the Chromium browser that you've built. + ### Bare-Metal Rust The [Bare-Metal Rust](../bare-metal.md) deep dive is a full day class on using Rust for