1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2026-06-21 00:12:59 +02:00

2733 Commits

Author SHA1 Message Date
dependabot[bot] 07d3242887 build(deps): bump esbuild from 0.25.0 to 0.28.1 in /tests in the npm_and_yarn group across 1 directory (#3211)
Bumps the npm_and_yarn group with 1 update in the /tests directory:
[esbuild](https://github.com/evanw/esbuild).

Updates `esbuild` from 0.25.0 to 0.28.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/evanw/esbuild/releases">esbuild's
releases</a>.</em></p>
<blockquote>
<h2>v0.28.1</h2>
<ul>
<li>
<p>Disallow <code>\</code> in local development server HTTP requests (<a
href="https://github.com/evanw/esbuild/security/advisories/GHSA-g7r4-m6w7-qqqr">GHSA-g7r4-m6w7-qqqr</a>)</p>
<p>This release fixes a security issue where HTTP requests to esbuild's
local development server could traverse outside of the serve directory
on Windows using a <code>\</code> backslash character. It happened due
to the use of Go's <code>path.Clean()</code> function, which only
handles Unix-style <code>/</code> characters. HTTP requests with paths
containing <code>\</code> are no longer allowed.</p>
<p>Thanks to <a
href="https://github.com/dellalibera"><code>@​dellalibera</code></a> for
reporting this issue.</p>
</li>
<li>
<p>Add integrity checks to the Deno API (<a
href="https://github.com/evanw/esbuild/security/advisories/GHSA-gv7w-rqvm-qjhr">GHSA-gv7w-rqvm-qjhr</a>)</p>
<p>The previous release of esbuild added integrity checks to esbuild's
npm install script. This release also adds integrity checks to esbuild's
Deno install script. Now esbuild's Deno API will also fail with an error
if the downloaded esbuild binary contains something other than the
expected content.</p>
<p>Note that esbuild's Deno API installs from
<code>registry.npmjs.org</code> by default, but allows the
<code>NPM_CONFIG_REGISTRY</code> environment variable to override this
with a custom package registry. This change means that the esbuild
executable served by <code>NPM_CONFIG_REGISTRY</code> must now match the
expected content.</p>
<p>Thanks to <a
href="https://github.com/sondt99"><code>@​sondt99</code></a> for
reporting this issue.</p>
</li>
<li>
<p>Avoid inlining <code>using</code> and <code>await using</code>
declarations (<a
href="https://redirect.github.com/evanw/esbuild/issues/4482">#4482</a>)</p>
<p>Previously esbuild's minifier sometimes incorrectly inlined
<code>using</code> and <code>await using</code> declarations into
subsequent uses of that declaration, which then fails to dispose of the
resource correctly. This bug happened because inlining was done for
<code>let</code> and <code>const</code> declarations by avoiding doing
it for <code>var</code> declarations, which no longer worked when more
declaration types were added. Here's an example:</p>
<pre lang="js"><code>// Original code
{
  using x = new Resource()
  x.activate()
}
<p>// Old output (with --minify)<br />
new Resource().activate();</p>
<p>// New output (with --minify)<br />
{using e=new Resource;e.activate()}<br />
</code></pre></p>
</li>
<li>
<p>Fix module evaluation when an error is thrown (<a
href="https://redirect.github.com/evanw/esbuild/issues/4461">#4461</a>,
<a
href="https://redirect.github.com/evanw/esbuild/pull/4467">#4467</a>)</p>
<p>If an error is thrown during module evaluation, esbuild previously
didn't preserve the state of the module for subsequent module
references. This was observable if <code>import()</code> or
<code>require()</code> is used to import a module multiple times. The
thrown error is supposed to be thrown by every call to
<code>import()</code> or <code>require()</code>, not just the first.
With this release, esbuild will now throw the same error every time you
call <code>import()</code> or <code>require()</code> on a module that
throws during its evaluation.</p>
</li>
<li>
<p>Fix some edge cases around the <code>new</code> operator (<a
href="https://redirect.github.com/evanw/esbuild/issues/4477">#4477</a>)</p>
<p>Previously esbuild incorrectly printed certain edge cases involving
complex expressions inside the target of a <code>new</code> expression
(specifically an optional chain and/or a tagged template literal). The
generated code for the <code>new</code> target was not correctly wrapped
with parentheses, and either contained a syntax error or had different
semantics. These edge cases have been fixed so that they now correctly
wrap the <code>new</code> target in parentheses. Here is an example of
some affected code:</p>
<pre lang="js"><code>// Original code
new (foo()`bar`)()
new (foo()?.bar)()
<p>// Old output<br />
new foo()<code>bar</code>();<br />
new (foo())?.bar();</p>
<p></code></pre></p>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/evanw/esbuild/blob/main/CHANGELOG-2025.md">esbuild's
changelog</a>.</em></p>
<blockquote>
<h1>Changelog: 2025</h1>
<p>This changelog documents all esbuild versions published in the year
2025 (versions 0.25.0 through 0.27.2).</p>
<h2>0.27.2</h2>
<ul>
<li>
<p>Allow import path specifiers starting with <code>#/</code> (<a
href="https://redirect.github.com/evanw/esbuild/pull/4361">#4361</a>)</p>
<p>Previously the specification for <code>package.json</code> disallowed
import path specifiers starting with <code>#/</code>, but this
restriction <a
href="https://redirect.github.com/nodejs/node/pull/60864">has recently
been relaxed</a> and support for it is being added across the JavaScript
ecosystem. One use case is using it for a wildcard pattern such as
mapping <code>#/*</code> to <code>./src/*</code> (previously you had to
use another character such as <code>#_*</code> instead, which was more
confusing). There is some more context in <a
href="https://redirect.github.com/nodejs/node/issues/49182">nodejs/node#49182</a>.</p>
<p>This change was contributed by <a
href="https://github.com/hybrist"><code>@​hybrist</code></a>.</p>
</li>
<li>
<p>Automatically add the <code>-webkit-mask</code> prefix (<a
href="https://redirect.github.com/evanw/esbuild/issues/4357">#4357</a>,
<a
href="https://redirect.github.com/evanw/esbuild/issues/4358">#4358</a>)</p>
<p>This release automatically adds the <code>-webkit-</code> vendor
prefix for the <a
href="https://developer.mozilla.org/en-US/docs/Web/CSS/Reference/Properties/mask"><code>mask</code></a>
CSS shorthand property:</p>
<pre lang="css"><code>/* Original code */
main {
  mask: url(x.png) center/5rem no-repeat
}
<p>/* Old output (with --target=chrome110) */<br />
main {<br />
mask: url(x.png) center/5rem no-repeat;<br />
}</p>
<p>/* New output (with --target=chrome110) */<br />
main {<br />
-webkit-mask: url(x.png) center/5rem no-repeat;<br />
mask: url(x.png) center/5rem no-repeat;<br />
}<br />
</code></pre></p>
<p>This change was contributed by <a
href="https://github.com/BPJEnnova"><code>@​BPJEnnova</code></a>.</p>
</li>
<li>
<p>Additional minification of <code>switch</code> statements (<a
href="https://redirect.github.com/evanw/esbuild/issues/4176">#4176</a>,
<a
href="https://redirect.github.com/evanw/esbuild/issues/4359">#4359</a>)</p>
<p>This release contains additional minification patterns for reducing
<code>switch</code> statements. Here is an example:</p>
<pre lang="js"><code>// Original code
switch (x) {
  case 0:
    foo()
    break
  case 1:
  default:
    bar()
}
</code></pre>
</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/evanw/esbuild/commit/bb9db84c02433fbe37b3509f53f9f3e3cc48725e"><code>bb9db84</code></a>
publish 0.28.1 to npm</li>
<li><a
href="https://github.com/evanw/esbuild/commit/9ff053e53b8eeb990f59355dbea365277ac45ee2"><code>9ff053e</code></a>
security: add integrity checks to the Deno API</li>
<li><a
href="https://github.com/evanw/esbuild/commit/0a9bf2135b67c7e28989a5ba19f0f000805a5ab5"><code>0a9bf21</code></a>
enforce non-negative size in gzip parser</li>
<li><a
href="https://github.com/evanw/esbuild/commit/e2a1a7132058ee067fe736eac15f695861b8654e"><code>e2a1a71</code></a>
security: forbid <code>\\</code> in local dev server requests</li>
<li><a
href="https://github.com/evanw/esbuild/commit/83a2cbfc35809f4fd5152da59572d7bed7739d78"><code>83a2cbf</code></a>
fix <a
href="https://redirect.github.com/evanw/esbuild/issues/4482">#4482</a>:
don't inline <code>using</code> declarations</li>
<li><a
href="https://github.com/evanw/esbuild/commit/308ad745d824c77bc607603451b257d0f2fd9a38"><code>308ad74</code></a>
fix <a
href="https://redirect.github.com/evanw/esbuild/issues/4471">#4471</a>:
renaming of nested <code>var</code> declarations</li>
<li><a
href="https://github.com/evanw/esbuild/commit/f013f5f99a015bce92ec48d49181d4ad3177b29b"><code>f013f5f</code></a>
fix some typos</li>
<li><a
href="https://github.com/evanw/esbuild/commit/aafd6e48b1088336a5f5a17e930be7e840d43d8c"><code>aafd6e4</code></a>
chore: fix some minor issues in comments (<a
href="https://redirect.github.com/evanw/esbuild/issues/4462">#4462</a>)</li>
<li><a
href="https://github.com/evanw/esbuild/commit/15300c30b5e22f7cfcbed850c246d35095658386"><code>15300c3</code></a>
follow up: cjs evaluation fixes</li>
<li><a
href="https://github.com/evanw/esbuild/commit/1bda0c31d7697c0af44b3ab39b81e599e559a395"><code>1bda0c3</code></a>
fix <a
href="https://redirect.github.com/evanw/esbuild/issues/4461">#4461</a>,
fix <a
href="https://redirect.github.com/evanw/esbuild/issues/4467">#4467</a>:
esm evaluation fixes</li>
<li>Additional commits viewable in <a
href="https://github.com/evanw/esbuild/compare/v0.25.0...v0.28.1">compare
view</a></li>
</ul>
</details>
<details>
<summary>Maintainer changes</summary>
<p>This version was pushed to npm by <a
href="https://www.npmjs.com/~GitHub%20Actions">GitHub Actions</a>, a new
releaser for esbuild since your current version.</p>
</details>
<br />

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-18 18:21:56 +02:00
Jason 799ec8a7d7 Fix typo in Add trait discussion (#3214) 2026-06-16 17:03:13 +00:00
Julien Cretin 58641db20d Fix leftover in encapsulated-unsafe (#3019)
This seems to be a leftover of a copy/paste from the safe version. This
is redundant with the unsafe implementation.
2026-06-16 15:40:24 +02:00
Martin Geisler 706123a4cf bazel: automatically show test failures (#3209)
Without this, the errors are only available in a Bazel log file.
2026-06-16 13:07:47 +00:00
Martin Geisler 60de209185 bazel: migrate external mdbook plugins to Bazel (#3202)
Configure mdbook-i18n-helpers, mdbook-linkcheck2, mdbook-pandoc, and
mdbook-svgbob as Bazel external plugins using `rules_rust`.

Update `xtask/src/main.rs` to build all preprocessor tools via Bazel,
programmatically resolve their paths, copy them to `~/.cargo/bin`.

This is a drop-in replacement for the old Cargo based approach. It will
go away as we move the `mdbook build` call itself to Bazel, but it's
useful in its own since it establishes that we can build the `mdbook`
plugins with Bazel.
2026-06-16 14:42:47 +02:00
Martin Geisler ed24bcd594 Remove outdated linkcheck config (#3188)
This should no longer be necessary after
https://github.com/marxin/mdbook-linkcheck2/commit/7904124ac7480855488208a8a30f5ee7bfc1210c
was released as linkcheck2 0.11
2026-06-14 15:47:05 +00:00
Martin Geisler 41bb23989f bazel: ensure Cargo and Bazel lock files are in sync (#3213)
We lacked a lint job which ensures that `Cargo.lock` is in sync with all
the `Cargo.toml` files in the workspace. This is now added: from what I
can tell[1], running `cargo update --workspace --locked` is the easiest
way to do this. I tested it locally and it displays a nice little table
of what would be updated on error:

    % cargo update --workspace --locked
        Updating crates.io index
         Locking 2 packages to latest compatible versions
        Updating zerocopy v0.8.50 -> v0.8.52
        Updating zerocopy-derive v0.8.50 -> v0.8.52
note: pass `--verbose` to see 131 unchanged dependencies behind latest
error: cannot update the lock file
/home/mg/src/comprehensive-rust/Cargo.lock because --locked was passed
to prevent this
help: to generate the lock file without accessing the network, remove
the --locked flag and use --offline instead.

Similarly, we lacked a job to ensure that the new `MODULE.bazel.lock`
file is in sync with the Cargo world. This is now also added.

[1]:
https://users.rust-lang.org/t/check-if-the-cargo-lock-is-up-to-date-without-building-anything/91048/5
2026-06-14 17:38:02 +02:00
Martin Geisler 8275582149 bazel: avoid caching huge repository cache (#3210)
The LLVM toolchain repository is around 5 GB in the cache, which means
that we quickly fill up the 10 GB cache quota we have for GitHub
Actions. Downloading it should be roughtly equally fast.
2026-06-14 15:03:53 +00:00
Martin Geisler 0d3b6a6cd3 bazel: disable textual diffs for `MODULE.bazel.lock (#3208)
The file has extremely long lines, which makes my poor Emacs very
confused. We can clean this up if/when
https://github.com/bazelbuild/rules_rust/issues/3946 is fixed.
2026-06-14 14:58:12 +00:00
Martin Geisler f4b6945d30 bazel: handle copying of read-only files (#3212)
With #3197, `cargo xtask` began copying binaries produced by Bazel to
`~/.cargo/bin/`. These binaries are read-only files since Bazel likes to
mark everything in its `bazel-bin/` directory as read-only.

As the files entered the cache on GitHub, our builds started failing,
see thse jobs from unrelated PRs:

-
https://github.com/google/comprehensive-rust/actions/runs/27474258285/job/81210548383
-
https://github.com/google/comprehensive-rust/actions/runs/27474256814/job/81210554918

They fail with

```
[695 / 698] Compiling Rust rlib mdbook-course-lib (6 files); 0s disk-cache, processwrapper-sandbox
INFO: Found 2 targets...
INFO: Elapsed time: 93.311s, Critical Path: 21.20s
INFO: 698 processes: 261 disk cache hit, 306 internal, 131 processwrapper-sandbox.
INFO: Build completed successfully, 698 total actions
Error: Permission denied (os error 13)
Error: Process completed with exit code 1.
```

which is what I see locally as well when I run the `cargo xtask
install-tools` on `main`.
2026-06-14 09:38:52 -04:00
Martin Geisler 9228528e53 bazel: Define tests for everyting tested with Cargo (#3205) 2026-06-13 14:50:42 -04:00
michael-kerscher 1576198889 upgrade: migrate mdbook to 0.5.3 (#3207)
This commit upgrades mdbook from 0.4.52 to 0.5.3, which is a major
upgrade with breaking changes.

Key changes:
- Upgraded mdbook to 0.5.3, mdbook-pandoc to 0.11.0, mdbook-i18n-helpers
to 0.4.0, and mdbook-linkcheck2 to 0.12.0 in `xtask` for mdbook 0.5
compatibility.
- Migrated local preprocessor plugins `mdbook-course` and
`mdbook-exerciser` to use the new split crates structure of mdbook 0.5
(mdbook-core, mdbook-preprocessor, mdbook-renderer).
- Replaced usage of removed `preprocess::CmdPreprocessor` with
`mdbook_preprocessor::parse_input`.
- Replaced usage of removed `Config::get_renderer` with generic
`Config::get`.
- Updated trait implementations to match new signatures (e.g.
`supports_renderer` returning `Result<bool>`).
- Refactored `mdbook-exerciser` configuration parsing to deserialize
into a structured `Config` struct.
- Migrated `theme/index.hbs` and `theme/book.js` to match the default
files of mdbook 0.5.3, preserving local modifications (speaker notes,
language picker, redbox, etc.).
- Updated speaker notes icons in `theme/index.hbs` and
`theme/speaker-notes.js` to use `xmark` and `arrow-up-right-from-square`
SVG templates for FontAwesome 6 compatibility (see renamed icons in
https://docs-v6.fontawesome.com/web/setup/upgrade/whats-changed#icons-renamed-in-version-6).
- Updated WebdriverIO test suite (`tests/`) to:
- Support the new `mdbook-` prefixed HTML IDs (e.g., `#mdbook-sidebar`,
`#mdbook-theme-toggle`).
- Robustly handle `default_theme` verification by accepting either
"light" or "navy" depending on the host system's prefers-color-scheme
setting.
- Upgraded `mdbook-svgbob` to 0.3.0 (which supports mdbook 0.5).
- Updated `.github/workflows/build.sh` to sanitize the restored
historical `book.toml` (removing deprecated `multilingual` and
`curly-quotes` keys) to ensure compatibility with the `mdbook` 0.5.3
configuration parser.

Fixes https://github.com/google/comprehensive-rust/issues/3201
2026-06-12 14:25:40 +02:00
Martin Geisler 90e9146eaf bazel: Configure LLVM toolchain (#3204)
I noticed warnings when compiling Rust code both locally and in GitHub
CI:

> INFO: From Compiling Rust bin mdbook-exerciser (1 file):
> warning: the gold linker is deprecated and has known bugs with Rust
>  |
>  = help: consider using LLD or ld from GNU binutils instead

From what I understands, this is because we haven't configured any C/C++
toolchain for Bazel and it thus picks up what is on the CI runner image.

Configuring `toolchains_llvm` fixes the warnings and ensures a hermetic
build.
2026-06-11 10:37:32 +00:00
Martin Geisler da2c12ea63 bazel: Centralize cache configuration (#3206)
This ensures we only need to update the cache configuration in one place
and prevents PRs from filling up the cache.

Follow-up to #3203 where I managed to update only one of the two cache
configurations.
2026-06-10 18:02:42 +02:00
Martin Geisler ec6086188f bazel: Cache Bazel itself and fetched repositories (#3203)
The build promptly failed after #3197 was merged:

> 2026/06/09 19:21:56 Downloading
https://releases.bazel.build/9.1.1/release/bazel-9.1.1-linux-x86_64...
> 2026/06/09 19:21:58 could not download Bazel: failed to download
bazel: failed to download bazel: could not copy from
https://releases.bazel.build/9.1.1/release/bazel-9.1.1-linux-x86_64 to
/home/runner/.cache/bazelisk/downloads/_tmp/download4253763382: stream
error: stream ID 1; INTERNAL_ERROR; received from peer

See this job:

https://github.com/google/comprehensive-rust/actions/runs/27230090780/job/80407639773

This happened on 3 of the 22 jobs that build our translations. Caching
the Bazel installation itself should help with this, and still respect
the version in `.bazelverion`.

The repository cache will capture things like Rust crates downloaded
from crates.io. I'm not 100% sure if this is faster than pulling down
the tarballs again, but it might isolate us slightly from outside
disturbances.
2026-06-10 13:27:34 +02:00
Martin Geisler c092c383ad bazel: Build and cache local tools with Bazel (#3197)
This PR is the first step of several aiming at introducing better
caching and reproducibility with Bazel. It will eventually fix #1168.

I have been introducing Bazel for a large polyglot build at work, and
this gave me hands on experience with building Rust with Bazel. In this
project, we have so far been using shell scripts. YAML files, and a bit
of `cargo xtask` to keep the build here going.

However, it's time to admit that we have a non-trivial build process:

- we build several `mdbook` plugins, some from our repository, some from
external repositories (we install them globally with `cargo install`).

- we use `build.sh` to backdate the sources for translations (we leave
behnd a dirty working copy).

- we have end-to-end tests which rely on NodeJS being installed on the
system.

All this complexity can be rained in with Bazel: we can build our
`mdbook` plugins hermetically and put them on the `PATH` only for the
final `mdbook build` invocation. We can put our backdated sources into
temporary directories and keep the working copy clean. This will let us
skip building translations that haven't changed, thus speeding up local
and CI builds.

I have not yet looked at the NodeJS parts, but I'm sure that can be
integrated with Bazel as well.

The approach used lets `rules_rust` read the `Cargo.lock` file:

```python
crate = use_extension("@rules_rust//crate_universe:extensions.bzl", "crate")
crate.from_cargo(
    name = "crates",
    cargo_lockfile = "//:Cargo.lock",
    manifests = ["//:Cargo.toml"],
)
use_repo(crate, "crates")
```

This is the documented on
https://bazelbuild.github.io/rules_rust/crate_universe_bzlmod.html.

It build on the existing Cargo setup and is thus compatible with it. We
can discuss later if we want to keep Cargo compatibility or move
completely to Bazel.
2026-06-09 21:20:58 +02:00
dependabot[bot] f575d2f2df build(deps): bump the npm_and_yarn group across 1 directory with 2 updates (#3200)
Bumps the npm_and_yarn group with 2 updates in the /tests directory:
[fast-xml-builder](https://github.com/NaturalIntelligence/fast-xml-builder)
and [qs](https://github.com/ljharb/qs).

Updates `fast-xml-builder` from 1.1.5 to 1.2.0
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/NaturalIntelligence/fast-xml-builder/blob/main/CHANGELOG.md">fast-xml-builder's
changelog</a>.</em></p>
<blockquote>
<p><strong>1.2.0</strong> (2026-05-08)</p>
<ul>
<li>Add support for <code>sanitizeName</code> option</li>
<li>Support xml-naming for validating and sanitizing tag and attribute
names</li>
</ul>
<p><strong>1.1.9</strong> (2026-05-06)</p>
<ul>
<li>fix: format output for preserve order when indent by is set to empty
string</li>
</ul>
<p><strong>1.1.8</strong> (2026-05-05)</p>
<ul>
<li>fix: skip text property for PI tags</li>
<li>improve typings</li>
</ul>
<p><strong>1.1.7</strong> (2026--05-04)</p>
<ul>
<li>fix security issues when attribute value contains quotes</li>
</ul>
<p><strong>1.1.6</strong> (2026--05-04)</p>
<ul>
<li>fix security issues related to comment</li>
<li>skip comment with null value</li>
</ul>
<p><strong>1.1.5</strong> (2026-04-17)</p>
<ul>
<li>fix security issues related to comment and cdata</li>
</ul>
<p><strong>1.1.4</strong> (2026-03-16)</p>
<ul>
<li>support maxNestedTags option</li>
</ul>
<p><strong>1.1.3</strong> (2026-03-13)</p>
<ul>
<li>declare Matcher &amp; Expression as unknown so user is not forced to
install path-expression-matcher</li>
</ul>
<p><strong>1.1.2</strong> (2026-03-11)</p>
<ul>
<li>fix typings</li>
</ul>
<p><strong>1.1.1</strong> (2026-03-11)</p>
<ul>
<li>upgrade path-expression-matcher to 1.1.3</li>
</ul>
<p><strong>1.1.0</strong> (2026-03-10)</p>
<ul>
<li>Integrate <a
href="https://github.com/NaturalIntelligence/path-expression-matcher">path-expression-matcher</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-builder/commit/a9a905b316176ef9a97bdf5450e60efbf0341f25"><code>a9a905b</code></a>
for release</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-builder/commit/42680e8d730c48082268823fd285e10127ddba21"><code>42680e8</code></a>
support name sanitization</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-builder/commit/8b00185bf6be67981ffc40e06c18acbbbe908779"><code>8b00185</code></a>
release info</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-builder/commit/8a08f173d7b9c9a82599fe7de279ca7e12c3ad6b"><code>8a08f17</code></a>
allow indentation to be empty string</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-builder/commit/7fc5decb9613afbd5d03747b1a0f11e0916e34ef"><code>7fc5dec</code></a>
update docs</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-builder/commit/c241b6a8ed1863e5f518490ec1fcc38b13f2c370"><code>c241b6a</code></a>
improve documentation</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-builder/commit/15d5668b53777400c8d80b6e21029c1a70888c78"><code>15d5668</code></a>
update for release</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-builder/commit/98774853a696a1aee4dca830dd3eee2759676bd2"><code>9877485</code></a>
fix: skip text property for PI tags</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-builder/commit/311a2213a817cf31558bea7c0e0807b0d4441814"><code>311a221</code></a>
fix <a
href="https://redirect.github.com/NaturalIntelligence/fast-xml-builder/issues/5">#5</a>
typing import issues</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-builder/commit/e8fc5b15d9d54b559781961f066de82a55aabcdd"><code>e8fc5b1</code></a>
update for releast</li>
<li>Additional commits viewable in <a
href="https://github.com/NaturalIntelligence/fast-xml-builder/compare/v1.1.5...v1.2.0">compare
view</a></li>
</ul>
</details>
<br />

Updates `qs` from 6.14.2 to 6.15.2
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/ljharb/qs/blob/main/CHANGELOG.md">qs's
changelog</a>.</em></p>
<blockquote>
<h2><strong>6.15.2</strong></h2>
<ul>
<li>[Fix] <code>stringify</code>: skip null/undefined entries in
<code>arrayFormat: 'comma'</code> + <code>encodeValuesOnly</code>
instead of crashing in <code>encoder</code></li>
<li>[Fix] <code>stringify</code>: use configured <code>delimiter</code>
after <code>charsetSentinel</code> (<a
href="https://redirect.github.com/ljharb/qs/issues/555">#555</a>)</li>
<li>[Fix] <code>stringify</code>: apply <code>formatter</code> to
encoded key under <code>strictNullHandling</code> (<a
href="https://redirect.github.com/ljharb/qs/issues/554">#554</a>)</li>
<li>[Fix] <code>stringify</code>: skip null/undefined filter-array
entries instead of crashing in <code>encoder</code> (<a
href="https://redirect.github.com/ljharb/qs/issues/551">#551</a>)</li>
<li>[Fix] <code>parse</code>: handle nested bracket groups and add
regression tests (<a
href="https://redirect.github.com/ljharb/qs/issues/530">#530</a>)</li>
<li>[readme] fix grammar (<a
href="https://redirect.github.com/ljharb/qs/issues/550">#550</a>)</li>
<li>[Dev Deps] update <code>@ljharb/eslint-config</code></li>
<li>[Tests] add regression tests for keys containing percent-encoded
bracket text</li>
</ul>
<h2><strong>6.15.1</strong></h2>
<ul>
<li>[Fix] <code>parse</code>: <code>parameterLimit: Infinity</code> with
<code>throwOnLimitExceeded: true</code> silently drops all
parameters</li>
<li>[Deps] update <code>@ljharb/eslint-config</code></li>
<li>[Dev Deps] update <code>@ljharb/eslint-config</code>,
<code>iconv-lite</code></li>
<li>[Tests] increase coverage</li>
</ul>
<h2><strong>6.15.0</strong></h2>
<ul>
<li>[New] <code>parse</code>: add <code>strictMerge</code> option to
wrap object/primitive conflicts in an array (<a
href="https://redirect.github.com/ljharb/qs/issues/425">#425</a>, <a
href="https://redirect.github.com/ljharb/qs/issues/122">#122</a>)</li>
<li>[Fix] <code>duplicates</code> option should not apply to bracket
notation keys (<a
href="https://redirect.github.com/ljharb/qs/issues/514">#514</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/ljharb/qs/commit/9aca4076fe788338c67cf7e115f0be6bc58d85a8"><code>9aca407</code></a>
v6.15.2</li>
<li><a
href="https://github.com/ljharb/qs/commit/5e33d33447ed0bf1ddab9abc41d27dea4687d992"><code>5e33d33</code></a>
[Dev Deps] update <code>@ljharb/eslint-config</code></li>
<li><a
href="https://github.com/ljharb/qs/commit/21f80b33e5c8b3f7eba1034fff0da4a4a37a1d41"><code>21f80b3</code></a>
[Fix] <code>stringify</code>: skip null/undefined entries in
<code>arrayFormat: 'comma'</code> + `e...</li>
<li><a
href="https://github.com/ljharb/qs/commit/a0a81ea2071acce3eff41a040f719ac8f5c4f64c"><code>a0a81ea</code></a>
[Fix] <code>stringify</code>: use configured <code>delimiter</code>
after <code>charsetSentinel</code></li>
<li><a
href="https://github.com/ljharb/qs/commit/e3062f78f5233b338ceeb8e8dfa5a07dea4b32a8"><code>e3062f7</code></a>
[Fix] <code>stringify</code>: apply <code>formatter</code> to encoded
key under <code>strictNullHandling</code></li>
<li><a
href="https://github.com/ljharb/qs/commit/0c180a40adb8c6703fffc85b2ff06ca209f5c1e0"><code>0c180a4</code></a>
[Fix] <code>stringify</code>: skip null/undefined filter-array entries
instead of crashi...</li>
<li><a
href="https://github.com/ljharb/qs/commit/3a8b94aec19bd664720f6f6b1e66c4a0dfe4b656"><code>3a8b94a</code></a>
[Tests] add regression tests for keys containing percent-encoded bracket
text</li>
<li><a
href="https://github.com/ljharb/qs/commit/96755abd357c0e534dd3442a84a04d08864bfe0d"><code>96755ab</code></a>
[readme] fix grammar</li>
<li><a
href="https://github.com/ljharb/qs/commit/a419ce5bbfcdb98a299f1a0bb47ea055baef20e6"><code>a419ce5</code></a>
[Fix] <code>parse</code>: handle nested bracket groups and add
regression tests</li>
<li><a
href="https://github.com/ljharb/qs/commit/3f5e1c528c967d915096787efbffa73cf6044170"><code>3f5e1c5</code></a>
v6.15.1</li>
<li>Additional commits viewable in <a
href="https://github.com/ljharb/qs/compare/v6.14.2...v6.15.2">compare
view</a></li>
</ul>
</details>
<br />


Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/google/comprehensive-rust/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-09 17:33:43 +00:00
Arsen 2fb2578a51 ru: fix 25 factually wrong fuzzy entries (#3184)
This PR fixes a narrow set of `po/ru.po` entries where the existing
fuzzy translation is **factually wrong** — different concept, swapped
link, wrong day number, broken markdown, etc. — not where it's merely
stylistically outdated. The other ~50 fuzzy entries are left with their
`#, fuzzy` flag untouched for @baltuky (the original translator) to
revisit on their own pace.

## Scope

**Wrong chapter titles in SUMMARY**

| msgid | was | now |
|---|---|---|
| Associated Types | Скалярные типы | Ассоциированные типы |
| Shared Types (C++ interop) | Скалярные типы | Общие типы |
| Try Conversions | Неявные преобразования | Преобразования через Try |
| Marker Traits | Небезопасные типажи | Маркерные типажи |
| Shared References | Заимствование (= different section) | Общие ссылки
|

**msgmerge nearest-match garbage.** Six chapter-link entries had been
overwritten with the recurring `"Больше информации об использовании
шаблонов..."` boilerplate or with an unrelated link — replaced with
correct ones: `[Static]`, `[Pattern Matching]`, `[Matching Values]`,
`[Deriving]`, `[Strings]`, `[Marker Traits]` (which pointed at the
Arrays link).

**Wrong body translations**
- `Native support for Rust slices in C++` → was `"Встроенная поддержка
тестирования"` (slices ≠ testing)
- `` `while let` expressions `` and `` `let else` expressions `` → both
were `"Выражение `if let`"`
- `while-let` (anchor) → was `"Выражение `while let`"` (anchor name vs
section title)
- `Lives for the entire duration of the program` → was `"Функция `main`
является точкой входа в программу"`
- `Storing Books` → was `"Строки"` (Books ≠ Strings)
- `An exercise on pattern matching.` → was about enums + pattern
matching
- `Welcome to Day 4` → was `"Добро пожаловать в День 1"`
- `Can be scaled down to very constrained devices such as
microcontrollers.` → was `"...мобильные телефоны"` (microcontrollers ≠
phones)
- `Some things to try:` → was `"Примечания:"` (notes ≠ things to try)

**Wrong code literals**
- `"Welcome to RustOS 3.14"` → was `"Добро пожаловать в День 1"`
- `"Hello "` → was `"Привет, мир!"` (different literal)

**Broken markdown links** (literally not rendering as links)
- Two `After looking at the exercises... [solutions](solutions-*.md)`
entries had `\\[solutions\\]` with escaped brackets and no working link
target.

## Terminology

Followed the existing glossary in `ru.po` (Trait → Типаж, Borrow →
Заимствование, Closure → Замыкание, Slice → Срез, Lifetime → Время
жизни) and the established RU Rust canon for the new replacements
(Marker Traits → Маркерные типажи; `#[derive]` → Вывод типажей).
Shared/Exclusive References intentionally kept as Общие/Эксклюзивные
ссылки, matching the modern shared/exclusive terminology that this
course uses (not the older immutable/mutable framing) — happy to switch
if reviewers prefer the canonical RU Book "неизменяемые/изменяемые".

## Verification

```
$ msgfmt --statistics -o /dev/null po/ru.po
574 translated messages, 50 fuzzy translations, 3136 untranslated messages.
```

(Before: 552 translated, 72 fuzzy, 3136 untranslated. Δ = +22
translated, −22 fuzzy.)

Co-authored-by: Arsen Ozhetov <yabanciinbt@gmail.com>
2026-06-09 17:33:14 +00:00
dependabot[bot] 505962ea2d build(deps): bump ip-address from 9.0.5 to 10.2.0 in /tests in the npm_and_yarn group across 1 directory (#3183)
Bumps the npm_and_yarn group with 1 update in the /tests directory:
[ip-address](https://github.com/beaugunderson/ip-address).

Updates `ip-address` from 9.0.5 to 10.2.0
<details>
<summary>Commits</summary>
<ul>
<li>See full diff in <a
href="https://github.com/beaugunderson/ip-address/commits">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=ip-address&package-manager=npm_and_yarn&previous-version=9.0.5&new-version=10.2.0)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/google/comprehensive-rust/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-09 19:25:18 +02:00
Mateusz Maćkowski deb6224ddf memory-management: rename as_dependency to to_dependency (#3173)
Because this function takes a reference to `self` and returns an owned
object, it's more idiomatic to call it `to_` rather than `as_`:
https://rust-lang.github.io/api-guidelines/naming.html#ad-hoc-conversions-follow-as_-to_-into_-conventions-c-conv

This was brought up when discussing the code with the students when
running the course.
2026-06-09 19:24:43 +02:00
michael-kerscher cdfce6c3b6 analytics: track language in Google Analytics (#3199)
Use the `content_group` parameter in the `gtag` configuration to track
which language version of the book is being viewed.

Fixes #3198
2026-06-09 19:22:53 +02:00
Arnav Nagzirkar 9046e96ec5 fix: Explicitly call out dev-dependencies used in solutions (#3196)
## Summary

## Root Cause

The `src/unsafe-rust/exercise.rs` solution has unit tests that use the
`tempfile` crate (`tempfile::TempDir::new()`). However:

1. `tempfile` was listed under `[dependencies]` instead of
`[dev-dependencies]`
in `src/unsafe-rust/Cargo.toml`, even though it is only needed at test
time.
2. The `solution.md` page did not mention `tempfile` at all, so anyone
who
copy-pastes the solution into a new Cargo project would get compile
errors
   without knowing they need to add the crate.

## Change Made

**`src/unsafe-rust/Cargo.toml`** — moved `tempfile` from
`[dependencies]` to
`[dev-dependencies]`:

```toml
[dev-dependencies]
tempfile = "3.27.0"
```

**`src/unsafe-rust/solution.md`** — added a note at the top of the
solution
page instructing readers to add `tempfile` as a dev-dependency:

```markdown
The unit tests use the [`tempfile`](https://docs.rs/tempfile/) crate. Add it as
a dev-dependency with:

```shell
cargo add --dev tempfile
```
```



## Issue

Fixes #1290

**Issue URL:** https://github.com/google/comprehensive-rust/issues/1290


## Changes

```
src/unsafe-rust/Cargo.toml  | 2 +-
 src/unsafe-rust/solution.md | 7 +++++++
 2 files changed, 8 insertions(+), 1 deletion(-)
```


## Testing


- Agent ran relevant tests during development

- Linting checks passed

- Changes are minimal and focused on the issue


## AI Assistance Disclosure


This pull request was prepared with the assistance of AI coding tools
(GitHub Copilot). The change has been read, understood, and is owned by
the human contributor submitting it, who will respond to review
feedback.
2026-06-03 11:22:57 +01:00
Brian Daniels eebd9ce331 Fix redirects (#3187)
Fixes #3186

NOTE: the fixes to the actual redirects were done with the assistance of
an LLM. I've looked through most of them and they seem to be generally
accurate, but it's hard to say for sure given the original sources have
been deleted. Please feel free to suggest an alternative!

---------

Co-authored-by: Brian Daniels <briandaniels@google.com>
2026-06-01 17:41:09 +01:00
dependabot[bot] 481151a6b4 cargo: bump spin from 0.10.0 to 0.12.0 in /src/exercises/bare-metal/rtc (#3192)
Bumps spin from 0.10.0 to 0.12.0.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-01 10:20:33 +00:00
dependabot[bot] 49e5ab2816 cargo: bump spin from 0.10.0 to 0.12.0 in /src/bare-metal/aps/examples (#3190)
Bumps spin from 0.10.0 to 0.12.0.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-01 10:20:08 +00:00
dependabot[bot] 1a3101a2f0 cargo: bump the patch group with 7 updates (#3194)
Bumps the patch group with 7 updates:

| Package | From | To |
| --- | --- | --- |
| [log](https://github.com/rust-lang/log) | `0.4.29` | `0.4.30` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.149` | `1.0.150`
|
| [pulldown-cmark](https://github.com/raphlinus/pulldown-cmark) |
`0.13.3` | `0.13.4` |
| [zerocopy](https://github.com/google/zerocopy) | `0.8.48` | `0.8.50` |
| [http](https://github.com/hyperium/http) | `1.4.0` | `1.4.1` |
| [tokio](https://github.com/tokio-rs/tokio) | `1.52.1` | `1.52.3` |
| [reqwest](https://github.com/seanmonstar/reqwest) | `0.13.3` |
`0.13.4` |

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-01 10:17:27 +00:00
dependabot[bot] 46ce9bc6f7 build(deps): bump crate-ci/typos from 1.46.0 to 1.47.0 (#3193)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.46.0 to
1.47.0.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-01 11:12:59 +01:00
dependabot[bot] 8f8d4276ee cargo: bump the patch group in /src/exercises/bare-metal/rtc with 3 updates (#3191)
Bumps the patch group in /src/exercises/bare-metal/rtc with 3 updates:
[log](https://github.com/rust-lang/log),
[smccc](https://github.com/google/smccc) and
[zerocopy](https://github.com/google/zerocopy).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-01 11:11:59 +01:00
dependabot[bot] 84a50fa6f2 cargo: bump the patch group in /src/bare-metal/aps/examples with 3 updates (#3189)
Bumps the patch group in /src/bare-metal/aps/examples with 3 updates:
[log](https://github.com/rust-lang/log),
[smccc](https://github.com/google/smccc) and
[zerocopy](https://github.com/google/zerocopy).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-01 11:11:42 +01:00
dependabot[bot] 8295fc683c cargo: bump scraper from 0.26.0 to 0.27.0 (#3195)
Bumps [scraper](https://github.com/rust-scraper/scraper) from 0.26.0 to
0.27.0.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-06-01 11:05:33 +01:00
Brian Daniels c56f6fdcf8 Add script to check that deleted slides have redirects (#3174)
Fixes #1417.

This adds a script and a CI job to ensure that slides that are deleted
have a matching redirect entry in `bool.toml`.

If a redirect entry is not found (for example, for
`src/hello-world.md`), the following is printed before exiting with a
status of 1:

```
The following deleted files have missing redirect entries in book.toml:                                                                                                       
src/hello-world.md
```

Co-authored-by: Brian Daniels <briandaniels@google.com>
2026-05-05 16:24:02 +01:00
dependabot[bot] 7501a425ed cargo: bump tokio from 1.50.0 to 1.52.1 in the minor group (#3181)
Bumps the minor group with 1 update:
[tokio](https://github.com/tokio-rs/tokio).

Updates `tokio` from 1.50.0 to 1.52.1

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-05 09:12:20 +01:00
dependabot[bot] 8d15c94b26 cargo: bump the patch group in /src/exercises/bare-metal/rtc with 2 updates (#3177)
Bumps the patch group in /src/exercises/bare-metal/rtc with 2 updates:
[aarch64-paging](https://github.com/google/aarch64-paging) and
[bitflags](https://github.com/bitflags/bitflags).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-05 09:11:56 +01:00
dependabot[bot] 7f873b0900 cargo: bump the patch group in /src/bare-metal/aps/examples with 2 updates (#3178)
Bumps the patch group in /src/bare-metal/aps/examples with 2 updates:
[aarch64-paging](https://github.com/google/aarch64-paging) and
[bitflags](https://github.com/bitflags/bitflags).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-05 09:11:38 +01:00
dependabot[bot] 77f0e20d40 build(deps): bump actions/upload-pages-artifact from 4 to 5 (#3179)
Bumps
[actions/upload-pages-artifact](https://github.com/actions/upload-pages-artifact)
from 4 to 5.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-05 09:10:58 +01:00
dependabot[bot] 59d8bfd3bc build(deps): bump crate-ci/typos from 1.44.0 to 1.46.0 (#3180)
Bumps [crate-ci/typos](https://github.com/crate-ci/typos) from 1.44.0 to
1.46.0.

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-05 09:10:39 +01:00
dependabot[bot] 54d19dcb31 cargo: bump the patch group with 2 updates (#3182)
Bumps the patch group with 2 updates:
[clap](https://github.com/clap-rs/clap) and
[reqwest](https://github.com/seanmonstar/reqwest).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-05-05 09:09:07 +01:00
Nicole L 0290c13aef Idiomatic: Various tweaks and cleanup to common traits section (#3163)
Various tweaks and cleanup to the "Implementing Common Traits" section
of Idiomatic based on my first time teaching the class.

- Remove the "When to implement" notes from the slides. I found these to
be unhelpful, as the answer for "when do I implement this trait" is
always "when you need to". I would generally not encourage people to
implement traits, even derivable ones, just because they _can_ do so.
Where necessary we have speaker notes that call out more specifically
when there are extra caveats to implementing a trait, which I think
better covers the nuances here.
- Remove the commented-out code showing the definition of the traits.
This is cruft that adds visual noise, and I'd prefer to just pull up the
standard library docs to show students what the trait API looks like.
- Add `main` function with example code to a few slides that were not
demonstrating the behavior of the traits.
- Fix various issues with markdown formatting in slides and speaker
notes.
- `copy.md`
- Note that `Copy` is an implicit operation, whereas `Clone` is an
explicit, user-defined operation.
  - Note that `Copy` and `Clone` should be derived together.
- Note that `Copy` types cannot impl `Drop`, and reorganize notes so
that they render more clearly in the speaker notes.
- `display.md` - Remove reference to the `Error` trait and shift focus
to highlight the differences between `Debug` and `Display`. I don't
think mentioning `Error` is bad per se, but I think it's the wrong thing
to focus on here.\
- `from-into.md`
- Rename `ObviousImplementation` to `Wrapper` to make things more
concise and easier to read.
- Change `From` impls to be for `&str` and `i32`, to better demonstrate
how `From` can support conversions from multiple unrelated types.
- Add example code showing how `Into` is a more natural trait bound than
`From`.

---------

Co-authored-by: Martin Geisler <martin@geisler.net>
2026-04-28 16:10:59 +00:00
Nicole L e5da735e55 Idiomatic: Various tweaks and cleanup to naming conventions section (#3164)
Tweaks and feedback to the "Naming Conventions" section of Idiomatic
based on my experience teaching the class, mostly focusing on making the
slides more concise. Related to
https://github.com/google/comprehensive-rust/pull/3157, which also
attempts to trim the section by removing some slides that I don't think
are necessary. As noted in that PR, I think the section is overly long
and would benefit from being a quicker tour of naming conventions,
without needing to spend a lot of time on any of the slides.
2026-04-28 16:10:35 +00:00
Nicole L 6b4b1ea50b Idiomatic: Misc. minor tweaks to the type system section (#3165)
A handful of minor fixes to the type systems section of Idiomatic.
Mostly just fixing wording or markdown formatting.

Also rename the "Parse, Don't Validate" slide to "Enforce Invariants at
Construction". The naming of this slide seems odd to me when the example
code is validating inputs, not doing any parsing. I think what the slide
demonstrates is fine, but makes more sense framed as "enforce invariants
at construction time, then you can rely on those invariants later".
2026-04-28 16:10:10 +00:00
Nicole L 58f6817554 Idiomatic: Various minor tweaks to doc comments section (#3162)
Various minor tweaks to the "Meaningful Doc Comments" section of
Idiomatic based on my experience teaching the class for the first time.

- Fix a few formatting issues in speaker notes that caused the markdown
to not render cleanly.
- Trim a few speaker notes that I think are redundant.
- `anatomy-of-a-doc-comment.md` - Reorder speaker note so the Q&A about
panics is organized under the section about panics.
- `what-why-not-how-where.md` - Remove the `sort_quickly` example. This
is later used as the example in the exercise, and I think discussing it
before the exercise undercuts the value of the exercise.

---------

Co-authored-by: Martin Geisler <martin@geisler.net>
2026-04-28 16:07:33 +00:00
Nicole L d4ea311a87 Idiomatic: Rework Option-in-Drop example to emphasize move semantics (#3168)
Rework the example in the "Drop: Option" slide to emphasize how `Option`
is used to achieve move operations in `Drop` code. The current version
of the slide emphasizes the wrong thing in my opinion, and fails to
actually demonstrate the pattern of needing to perform a move operation
in `drop`. I've modified `Handle` to have a `fn close(self)` instead of
a `Drop` impl, that way `File::drop` needs to move out of its inner
field in order to call `close`.
2026-04-28 17:59:36 +02:00
dependabot[bot] 2d930f2d2c build(deps-dev): bump fast-xml-parser from 5.5.11 to 5.7.1 in /tests in the npm_and_yarn group across 1 directory (#3172)
Bumps the npm_and_yarn group with 1 update in the /tests directory:
[fast-xml-parser](https://github.com/NaturalIntelligence/fast-xml-parser).

Updates `fast-xml-parser` from 5.5.11 to 5.7.1
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/NaturalIntelligence/fast-xml-parser/releases">fast-xml-parser's
releases</a>.</em></p>
<blockquote>
<h2>upgrade <code>@​nodable/entities</code> and FXB</h2>
<ul>
<li>Use <code>@nodable/entities</code> v2.1.0
<ul>
<li>breaking changes
<ul>
<li>single entity scan. You're not allowed to use entity value to form
another entity name.</li>
<li>you cant add numeric external entity</li>
<li>entity error message when expantion limit is crossed might
change</li>
</ul>
</li>
<li>typings are updated for new options related to process entity</li>
<li>please follow documentation of <code>@nodable/entities</code> for
more detail.</li>
<li>performance
<ul>
<li>if processEntities is false, then there should not be impact on
performance.</li>
<li>if processEntities is true, but you dont pass entity decoder
separately then performance may degrade by approx 8-10%</li>
<li>if processEntities is true, and you pass entity decoder separately
<ul>
<li>if no entity then performance should be same as before</li>
<li>if there are entities then performance should be increased from past
versions</li>
</ul>
</li>
</ul>
</li>
<li>ignoreAttributes is not required to be set to set xml version for
NCR entity value</li>
</ul>
</li>
<li>update 'fast-xml-builder' to sanitize malicious CDATA and comment's
content</li>
</ul>
<h2>use <code>@​nodable/entities</code> to replace entities</h2>
<ul>
<li>No API change</li>
<li>No change in performance for basic usage</li>
<li>No typing change</li>
<li>No config change</li>
<li>new dependency</li>
<li>breaking: error messages for entities might have been changed.</li>
<li></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.5.12...v5.6.0">https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.5.12...v5.6.0</a></p>
</blockquote>
</details>
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/NaturalIntelligence/fast-xml-parser/blob/master/CHANGELOG.md">fast-xml-parser's
changelog</a>.</em></p>
<blockquote>
<p><!-- raw HTML omitted -->Note: If you find missing information about
particular minor version, that version must have been changed without
any functional change in this library.<!-- raw HTML omitted --></p>
<p>Note: Due to some last quick changes on v4, detail of v4.5.3 &amp;
v4.5.4 are not updated here. v4.5.4x is the last tag of v4 in github
repository. I'm extremely sorry for the confusion</p>
<p><strong>5.7.1 / 2026-04-20</strong></p>
<ul>
<li>fix <a
href="https://redirect.github.com/NaturalIntelligence/fast-xml-parser/issues/705">#705</a>:
attributesGroupName working with preserveOrder</li>
<li>fix <a
href="https://redirect.github.com/NaturalIntelligence/fast-xml-parser/issues/817">#817</a>:
stackoverflow when tag expression is very long</li>
</ul>
<p><strong>5.7.0 / 2026-04-17</strong></p>
<ul>
<li>Use <code>@nodable/entities</code> v2.1.0
<ul>
<li>breaking changes
<ul>
<li>single entity scan. You're not allowed to user entity value to form
another entity name.</li>
<li>you cant add numeric external entity</li>
<li>entity error message when expantion limit is crossed might
change</li>
</ul>
</li>
<li>typings are updated for new options related to process entity</li>
<li>please follow documentation of <code>@nodable/entities</code> for
more detail.</li>
<li>performance
<ul>
<li>if processEntities is false, then there should not be impact on
performance.</li>
<li>if processEntities is true, but you dont pass entity decoder
separately then performance may degrade by approx 8-10%</li>
<li>if processEntities is true, and you pass entity decoder separately
<ul>
<li>if no entity then performance should be same as before</li>
<li>if there are entities then performance should be increased from past
versions</li>
</ul>
</li>
</ul>
</li>
<li>ignoreAttributes is not required to be set to set xml version for
NCR entity value</li>
</ul>
</li>
<li>update 'fast-xml-builder' to sanitize malicious CDATA and comment's
content</li>
</ul>
<p><strong>5.6.0 / 2026-04-15</strong></p>
<ul>
<li>fix: entity replacement for numeric entities</li>
<li>use <code>@​nodable/entities</code> to replace entities
<ul>
<li>this may change some error messages related to entities expansion
limit or inavlid use</li>
<li>post check would be exposed in future version</li>
</ul>
</li>
</ul>
<p><strong>5.5.12 / 2026-04-13</strong></p>
<ul>
<li>Performance Improvement: update path-expression-matcher
<ul>
<li>use proxy pattern than Proxy class</li>
</ul>
</li>
</ul>
<p><strong>5.5.11 / 2026-04-08</strong></p>
<ul>
<li>Performance Improvement
<ul>
<li>integrate ExpressionSet for stopNodes</li>
</ul>
</li>
</ul>
<p><strong>5.5.10 / 2026-04-03</strong></p>
<ul>
<li>increase default entity explansion limit as many projects demand for
that</li>
<li>performance improvement
<ul>
<li>reduce calls to toString</li>
<li>early return when entities are not present</li>
<li>prepare rawAttrsForMatcher only if user sets <code>jPath:
false</code></li>
</ul>
</li>
</ul>
<p><strong>5.5.9 / 2026-03-23</strong></p>
<ul>
<li>combine typing files</li>
</ul>
<!-- raw HTML omitted -->
</blockquote>
<p>... (truncated)</p>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-parser/commit/0f08303189d541b08401d15a7137dc238a815fa7"><code>0f08303</code></a>
fix typo</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-parser/commit/f529642d760ef53bb9115ad4798af5dc77ac22c4"><code>f529642</code></a>
update to release v5.7.0</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-parser/commit/52a8583465d6a67ad19e86fe34714879a981c18e"><code>52a8583</code></a>
Revert &quot;improve performance of attributes reading&quot;</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-parser/commit/8d187f9abaf42ebdd85623a9ae942b08e8ae5d0c"><code>8d187f9</code></a>
update builder</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-parser/commit/e174168a72a65a8fccad2c42bde329d2167edf27"><code>e174168</code></a>
improve performance of attributes reading</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-parser/commit/79a8dde50cebaeeda75cc1ad5b97c328da106316"><code>79a8dde</code></a>
update docs</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-parser/commit/f5cd5a595f313ed7b0820cabfa82ebdaa08651f7"><code>f5cd5a5</code></a>
set xml version to decoder even if attributes are ignored</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-parser/commit/f44b9236f4bee07bba75f0549fe86c981b1aeeef"><code>f44b923</code></a>
remove unwanted tests</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-parser/commit/869ec8b3588304a3a6aa9f22e38445e06d4547c8"><code>869ec8b</code></a>
Use <code>@​nodable/entities</code> v2.1.0</li>
<li><a
href="https://github.com/NaturalIntelligence/fast-xml-parser/commit/7cb49e51cd060caecf296fbf718a98d8c044c8c5"><code>7cb49e5</code></a>
update release detail</li>
<li>Additional commits viewable in <a
href="https://github.com/NaturalIntelligence/fast-xml-parser/compare/v5.5.11...v5.7.1">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=fast-xml-parser&package-manager=npm_and_yarn&previous-version=5.5.11&new-version=5.7.1)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore <dependency name> major version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's major version (unless you unignore this specific
dependency's major version or upgrade to it yourself)
- `@dependabot ignore <dependency name> minor version` will close this
group update PR and stop Dependabot creating any more for the specific
dependency's minor version (unless you unignore this specific
dependency's minor version or upgrade to it yourself)
- `@dependabot ignore <dependency name>` will close this group update PR
and stop Dependabot creating any more for the specific dependency
(unless you unignore this specific dependency or upgrade to it yourself)
- `@dependabot unignore <dependency name>` will remove all of the ignore
conditions of the specified dependency
- `@dependabot unignore <dependency name> <ignore condition>` will
remove the ignore condition of the specified dependency and ignore
conditions
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/google/comprehensive-rust/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-28 17:58:57 +02:00
dependabot[bot] d070b38b28 cargo: bump rand from 0.8.5 to 0.8.6 (#3171)
Bumps [rand](https://github.com/rust-random/rand) from 0.8.5 to 0.8.6.
<details>
<summary>Changelog</summary>
<p><em>Sourced from <a
href="https://github.com/rust-random/rand/blob/0.8.6/CHANGELOG.md">rand's
changelog</a>.</em></p>
<blockquote>
<h2>[0.8.6] - 2026-04-14</h2>
<p>This release back-ports a fix from v0.10. See also <a
href="https://redirect.github.com/rust-random/rand/issues/1763">#1763</a>.</p>
<h3>Changes</h3>
<ul>
<li>Deprecate feature <code>log</code> (<a
href="https://redirect.github.com/rust-random/rand/issues/1772">#1772</a>)</li>
</ul>
<p><a
href="https://redirect.github.com/rust-random/rand/issues/1763">#1763</a>:
<a
href="https://redirect.github.com/rust-random/rand/pull/1763">rust-random/rand#1763</a>
<a
href="https://redirect.github.com/rust-random/rand/issues/1772">#1772</a>:
<a
href="https://redirect.github.com/rust-random/rand/pull/1772">rust-random/rand#1772</a></p>
<ul>
<li>Drop the experimental <code>simd_support</code> feature.</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/rust-random/rand/commit/5309f25bb5e7d21ac01c5b6f476badd06f9cdc3f"><code>5309f25</code></a>
0.8.6 (<a
href="https://redirect.github.com/rust-random/rand/issues/1772">#1772</a>):
update for recent nightly rustc and backport <a
href="https://redirect.github.com/rust-random/rand/issues/1764">#1764</a></li>
<li><a
href="https://github.com/rust-random/rand/commit/1126d03a5cbd725aad239efb0d537c9130a76b26"><code>1126d03</code></a>
When testing rustc 1.36, use compatible dependencies.</li>
<li><a
href="https://github.com/rust-random/rand/commit/143b60280f79a5f1992445b3df0e0599841f9821"><code>143b602</code></a>
Add Cargo.lock.msrv.</li>
<li><a
href="https://github.com/rust-random/rand/commit/9be86f2d8140139800989ac93399b9cd49108fb8"><code>9be86f2</code></a>
Fix cross build test.</li>
<li><a
href="https://github.com/rust-random/rand/commit/5e0d50d7706281ae67e69ff64105baf3c94d6ef8"><code>5e0d50d</code></a>
Drop simd_support.</li>
<li><a
href="https://github.com/rust-random/rand/commit/8ff02f0568d2f8fddda74b47613a3daaa5e2a879"><code>8ff02f0</code></a>
Upgrade cache action.</li>
<li><a
href="https://github.com/rust-random/rand/commit/4ad0cc34fc847d4d59ffdcdfbf189482601aa6b9"><code>4ad0cc3</code></a>
Don't test for unsupported target architecture.</li>
<li><a
href="https://github.com/rust-random/rand/commit/258e6d04a681321e0c4b16e3785063ed9b9e744d"><code>258e6d0</code></a>
Address warning.</li>
<li><a
href="https://github.com/rust-random/rand/commit/9f0e676362f9599941f00bccc5310135b7c19f89"><code>9f0e676</code></a>
Mark some internal traits as potentially unused.</li>
<li><a
href="https://github.com/rust-random/rand/commit/6f123c178eee4563876bdd50f4ac0621b21ce2b8"><code>6f123c1</code></a>
Workaround never constructed and never used warning.</li>
<li>Additional commits viewable in <a
href="https://github.com/rust-random/rand/compare/0.8.5...0.8.6">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rand&package-manager=cargo&previous-version=0.8.5&new-version=0.8.6)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/google/comprehensive-rust/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-23 09:35:11 +01:00
dependabot[bot] e29c1b9774 cargo: bump rustls-webpki from 0.103.10 to 0.103.13 (#3170)
Bumps [rustls-webpki](https://github.com/rustls/webpki) from 0.103.10 to
0.103.13.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/rustls/webpki/releases">rustls-webpki's
releases</a>.</em></p>
<blockquote>
<h2>0.103.13</h2>
<ul>
<li><strong>Fix reachable panic in parsing a CRL</strong>. This was
reported to us as <a
href="https://github.com/rustls/webpki/security/advisories/GHSA-82j2-j2ch-gfr8">GHSA-82j2-j2ch-gfr8</a>.
Users who don't use CRLs are not affected.</li>
<li>For name constraints on URI names, we incorrectly processed excluded
subtrees in a way which inverted the desired meaning. See <a
href="https://redirect.github.com/rustls/webpki/pull/471">rustls/webpki#471</a>.
This was a case missing in the fix for <a
href="https://github.com/advisories/GHSA-965h-392x-2mh5">https://github.com/advisories/GHSA-965h-392x-2mh5</a>.</li>
</ul>
<h2>What's Changed</h2>
<ul>
<li>Actually fail closed for URI matching against excluded subtrees by
<a href="https://github.com/djc"><code>@​djc</code></a> in <a
href="https://redirect.github.com/rustls/webpki/pull/473">rustls/webpki#473</a></li>
<li>Prepare 0.103.13 by <a
href="https://github.com/ctz"><code>@​ctz</code></a> in <a
href="https://redirect.github.com/rustls/webpki/pull/474">rustls/webpki#474</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/rustls/webpki/compare/v/0.103.12...v/0.103.13">https://github.com/rustls/webpki/compare/v/0.103.12...v/0.103.13</a></p>
<h2>0.103.12</h2>
<p>This release fixes two bugs in name constraint enforcement:</p>
<ul>
<li><strong>GHSA-965h-392x-2mh5</strong>: name constraints for URI names
were ignored and therefore accepted. URI name constraints are now
rejected unconditionally. Note this library does not provide an API for
asserting URI names, and URI name constraints are otherwise not
implemented.</li>
<li><strong>GHSA-xgp8-3hg3-c2mh</strong>: permitted subtree name
constraints for DNS names were accepted for certificates asserting a
wildcard name. This was incorrect because, given a name constraint of
<code>accept.example.com</code>, <code>*.example.com</code> could
feasibly allow a name of <code>reject.example.com</code> which is
outside the constraint. This is very similar to <a
href="https://go.dev/issue/76442">CVE-2025-61727</a>.</li>
</ul>
<p>Since name constraints are restrictions on otherwise properly-issued
certificates, these bugs are reachable only after signature verification
and require misissuance to exploit.</p>
<h2>What's Changed</h2>
<ul>
<li>Prepare 0.103.12 by <a
href="https://github.com/djc"><code>@​djc</code></a> in <a
href="https://redirect.github.com/rustls/webpki/pull/470">rustls/webpki#470</a></li>
</ul>
<p><strong>Full Changelog</strong>: <a
href="https://github.com/rustls/webpki/compare/v/0.103.11...v/0.103.12">https://github.com/rustls/webpki/compare/v/0.103.11...v/0.103.12</a></p>
<h2>0.103.11</h2>
<p>In response to <a
href="https://redirect.github.com/rustls/webpki/issues/464">#464</a>,
we've slightly relaxed requirements for
<code>anchor_from_trust_cert()</code> to ignore unknown extensions even
if they're marked as critical. This only affects parsing a
<code>TrustAnchor</code> from DER, for which most extensions are ignored
anyway.</p>
<h2>What's Changed</h2>
<ul>
<li>Backport parsing trust anchors with unknown critical extensions to
0.103 by <a href="https://github.com/djc"><code>@​djc</code></a> in <a
href="https://redirect.github.com/rustls/webpki/pull/466">rustls/webpki#466</a></li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="https://github.com/rustls/webpki/commit/2879b2ce7a476181ac3050f73fe0835f04728e86"><code>2879b2c</code></a>
Prepare 0.103.13</li>
<li><a
href="https://github.com/rustls/webpki/commit/2c49773d823f48c87db30db7a66c25993c847007"><code>2c49773</code></a>
Improve tests for padding of <code>BitStringFlags</code></li>
<li><a
href="https://github.com/rustls/webpki/commit/4e3c0b393a7bfb9cbe6dcdc8309cbadf8ee00c51"><code>4e3c0b3</code></a>
Correct validation of BIT STRING constraints</li>
<li><a
href="https://github.com/rustls/webpki/commit/39c91d2525a542a7f651a1a62c3462e8115cc39e"><code>39c91d2</code></a>
Actually fail closed for URI matching against excluded subtrees</li>
<li><a
href="https://github.com/rustls/webpki/commit/27131d476e2b68a537e629d6d012bef8dad6efd3"><code>27131d4</code></a>
Bump version to 0.103.12</li>
<li><a
href="https://github.com/rustls/webpki/commit/6ecb8769cde2246e761e058709421c14a7dee6b1"><code>6ecb876</code></a>
Clean up stuttery enum variant names</li>
<li><a
href="https://github.com/rustls/webpki/commit/318b3e6e03ca2bc21600ca6bb0d0c6439b9e6aeb"><code>318b3e6</code></a>
Ignore wildcard labels when matching name constraints</li>
<li><a
href="https://github.com/rustls/webpki/commit/12196229a327d3d670798688254bd3ea24aba24b"><code>1219622</code></a>
Rewrite constraint matching to avoid permissive catch-all branch</li>
<li><a
href="https://github.com/rustls/webpki/commit/57bc62ce538c2d0d31d44b3eb8c58e6a0a764b47"><code>57bc62c</code></a>
Bump version to 0.103.11</li>
<li><a
href="https://github.com/rustls/webpki/commit/d0fa01ee0a76b7585c13ec43de5854955146ffef"><code>d0fa01e</code></a>
Allow parsing trust anchors with unknown criticial extensions</li>
<li>See full diff in <a
href="https://github.com/rustls/webpki/compare/v/0.103.10...v/0.103.13">compare
view</a></li>
</ul>
</details>
<br />


[![Dependabot compatibility
score](https://dependabot-badges.githubapp.com/badges/compatibility_score?dependency-name=rustls-webpki&package-manager=cargo&previous-version=0.103.10&new-version=0.103.13)](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)

Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.

[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)

---

<details>
<summary>Dependabot commands and options</summary>
<br />

You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
You can disable automated security fix PRs for this repo from the
[Security Alerts
page](https://github.com/google/comprehensive-rust/network/alerts).

</details>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2026-04-23 09:35:08 +01:00
Nicole L a5c515433c Idiomatic: Remove diagram from typestate-generics.md (#3169)
The diagram was shown on the previous slide, and isn't terribly relevant
on this slide. I think removing it helps for brevity and clarity.
2026-04-20 23:59:43 +02:00
Nicole L 4a9e8d0501 Simplify and flesh out extension trait speaker notes (#3167)
- Remove some redundant notes at the top that just repeat information in
the other bullet points.
- Add a note pointing out that you need a trait to use with generics and
`dyn`.
2026-04-20 23:58:54 +02:00
Martin Geisler 48379f5c2f Add Cargo instructions to expression evaluator (#3112)
Our Cargo instructions has not mentioned the `--lib` flag yet, so add it
here where it's needed for the first time.
2026-04-20 23:58:08 +02:00
Nicole L 5e019488af Idiomatic: Trim slides from naming conventions section (#3157)
I think the naming conventions section of Idiomatic is a bit longer than
it needs to be. I think it's useful to point out common conventions, but
the section currently is pretty long and is imo not where we want to be
spending a lot of time. I'm suggesting trimming the following slides:

- Get and Push - These are specific to the collection types, and are not
generally naming conventions that students would be using when writing
their own code. Pointing these out can be good for helping students
orient themselves when looking at the collection types in std, but I
think we should focus more on naming conventions that students would use
when writing their own code.
- With in normal use - I don't think we need a slide to point out when
"with" isn't used as part of a convention, I think we can trust students
to figure that out on their own.
- Into inner - This is a special case of "into", I don't think we need a
separate slide for it.
- Unchecked and Raw parts - I don't think it's worth covering
unsafe-specific conventions in Idiomatic, since we don't really focus on
unsafe in this course.

I also moved the "by" slide to the end of the section since it was in
the middle of a bunch of slides that are all related to type conversion.
I think that'll help things flow a bit better.
2026-04-20 23:57:12 +02:00
Nicole L 03130e81a8 Idiomatic: Use reference-style links in signposting slide (#3161)
Using inline links in doc comments can result in really long lines that
are unwieldy and hard to parse when looking at the unrendered source
comments. I'd like to show students that you can use the reference style
links to keep the source comment readable while still taking advantage
of markdown links to point readers to external resources.
2026-04-14 20:13:48 +00:00