mirror of
https://github.com/google/comprehensive-rust.git
synced 2026-06-21 00:12:59 +02:00
main
2733 Commits
| Author | SHA1 | Message | Date | |
|---|---|---|---|---|
|
|
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> |
||
|
|
799ec8a7d7 | Fix typo in Add trait discussion (#3214) | ||
|
|
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. |
||
|
|
706123a4cf |
bazel: automatically show test failures (#3209)
Without this, the errors are only available in a Bazel log file. |
||
|
|
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. |
||
|
|
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 |
||
|
|
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
|
||
|
|
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. |
||
|
|
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. |
||
|
|
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`. |
||
|
|
9228528e53 | bazel: Define tests for everyting tested with Cargo (#3205) | ||
|
|
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 |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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 & 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> |
||
|
|
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> |
||
|
|
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 /> [](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> |
||
|
|
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. |
||
|
|
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 |
||
|
|
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. |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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> |
||
|
|
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. |
||
|
|
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". |
||
|
|
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> |
||
|
|
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`. |
||
|
|
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 & 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 "improve performance of attributes reading"</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 /> [](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> |
||
|
|
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 /> [](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> |
||
|
|
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 /> [](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> |
||
|
|
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. |
||
|
|
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`. |
||
|
|
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. |
||
|
|
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. |
||
|
|
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. |