1
0
mirror of https://github.com/google/comprehensive-rust.git synced 2025-03-21 14:46:37 +02:00

62 Commits

Author SHA1 Message Date
xiaohu-zhang
db0b161424
fix async Philosopher execise livelock error (#2372) 2024-09-20 12:13:16 +00:00
Frances Wingerter
c223257016
Clarify how MutexGuard is 'thread-safe' (avoiding the vague term) (#2336)
Fixes the last outstanding point of #1640.
2024-09-03 09:43:00 -04:00
dependabot[bot]
5615b996aa
cargo: bump tokio from 1.39.3 to 1.40.0 in the minor group (#2343)
Bumps the minor group with 1 update:
[tokio](https://github.com/tokio-rs/tokio).

Updates `tokio` from 1.39.3 to 1.40.0

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-09-02 10:07:21 +01:00
dependabot[bot]
dc7ba17421
cargo: bump the patch group with 4 updates (#2316)
Bumps the patch group with 4 updates:
[serde](https://github.com/serde-rs/serde),
[serde_json](https://github.com/serde-rs/json),
[fantoccini](https://github.com/jonhoo/fantoccini) and
[reqwest](https://github.com/seanmonstar/reqwest).
2024-08-26 09:43:35 -04:00
dependabot[bot]
56ae649097
cargo: bump the patch group with 6 updates (#2291)
Bumps the patch group with 6 updates:

| Package | From | To |
| --- | --- | --- |
| [clap](https://github.com/clap-rs/clap) | `4.5.15` | `4.5.16` |
| [serde](https://github.com/serde-rs/serde) | `1.0.206` | `1.0.208` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.124` | `1.0.125`
|
| [tokio](https://github.com/tokio-rs/tokio) | `1.39.2` | `1.39.3` |
| [cxx](https://github.com/dtolnay/cxx) | `1.0.124` | `1.0.126` |
| [cxx-build](https://github.com/dtolnay/cxx) | `1.0.124` | `1.0.126` |

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-08-19 12:14:42 +01:00
Frances Wingerter
dfd08ebf93
concurrency: avoid 1.. loops (#2280)
Fixes #2060. Note that this does not change the "blocking executor"
example because on that slide it is worthwhile to sleep for 1 * 10ms on
the first iteration and so on. But we shouldn't use one-indexed
inclusive loops when the only significant feature of the loop is its
iteration count.
2024-08-13 14:38:22 +00:00
Frances Wingerter
991bd8ceb7
threads: do not refer to "daemon" threads (#2282)
This is the last remaining fix left from #63.
2024-08-13 14:28:08 +00:00
dependabot[bot]
a3838975b6
cargo: bump the minor group with 2 updates (#2273)
Bumps the minor group with 2 updates:
[scraper](https://github.com/causal-agent/scraper) and
[tempfile](https://github.com/Stebalien/tempfile).
2024-08-12 10:58:35 -04:00
Dustin J. Mitchell
76857d76a1
Simplify the select! example (#2154)
@mgeisler PTAL, as I believe you were the one to suggest this change in
#1536.

This leaves some detail about `select!` out, but that might be just as
well. Some of that detail is addressed in the `pin!` pitfall, later.
2024-08-09 08:21:00 -04:00
dependabot[bot]
d163e5a603
cargo: bump the minor group with 3 updates (#2261)
Bumps the minor group with 3 updates:
[tempfile](https://github.com/Stebalien/tempfile),
[tokio](https://github.com/tokio-rs/tokio) and
[tokio-websockets](https://github.com/Gelbpunkt/tokio-websockets).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Andrew Walbran <qwandor@google.com>
2024-08-05 11:24:26 +01:00
Jonathan Daniel
1c964f6fe3
Fix a broken link and check internal links (#2195)
In #2153 I aimed to fix a link but broke it.
In this PR, I fix it and add
[`mdbook-linkcheck`](https://github.com/Michael-F-Bryan/mdbook-linkcheck)
to avoid future cases.

Some past fixes that could have been prevented, in addition to mine in
this PR:
* #811
* #2064
* #2146

Note:  
`mdbook-linkcheck` may also check external links with a configuration
change.
It can be beneficial to check also external links from time to time. I
ran it here and found 3 broken links.

Maintainers - sorry for the lack of a preceding issue. We can discuss it
here.
Some remaining work is to fix the outdated internal links in the
translations, not done here.
Let me know what you think about the proposed contribution.

This PR completes #1502.
2024-07-22 11:37:19 +00:00
dependabot[bot]
0f7ab8fc7f
cargo: bump the patch group with 3 updates (#2241)
Bumps the patch group with 3 updates:
[thiserror](https://github.com/dtolnay/thiserror),
[scraper](https://github.com/causal-agent/scraper) and
[tokio](https://github.com/tokio-rs/tokio).
2024-07-22 00:48:37 -04:00
dependabot[bot]
80791ba59d
cargo: bump the patch group with 2 updates (#2229)
Bumps the patch group with 2 updates:
[clap](https://github.com/clap-rs/clap) and
[thiserror](https://github.com/dtolnay/thiserror).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-07-15 10:32:46 +01:00
Jonathan Daniel
31d1182831
Update the link to the first dining philosophers exercise (#2153)
The current one leads to the same page.

https://google.github.io/comprehensive-rust/concurrency/async-exercises/dining-philosophers.html
2024-06-25 13:50:20 +00:00
dependabot[bot]
45e4b167e9
cargo: bump the patch group across 1 directory with 2 updates (#2170)
Bumps the patch group with 2 updates in the / directory:
[serde_json](https://github.com/serde-rs/json) 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>
2024-06-25 10:50:39 +01:00
Luke Yeh
1fb284640e
Add a map_err in speaker notes (#2155)
The type returned by `String::from_utf8(raw)`, is `Result<_>` and needs
to be mapped to match the type of the return type of `next`. You get
this error otherwise:

```
    Compiling playground v0.0.1 (/playground)
warning: unused import: `ErrorKind`
 --> src/main.rs:1:21
  |
1 | use std::io::{self, ErrorKind};
  |                     ^^^^^^^^^
  |
  = note: `#[warn(unused_imports)]` on by default

error[E0308]: mismatched types
   --> src/main.rs:29:17
    |
29  |         Ok(Some(s))
    |            ---- ^ expected `String`, found `Result<String, FromUtf8Error>`
    |            |
    |            arguments to this enum variant are incorrect
    |
    = note: expected struct `String`
                 found enum `Result<String, FromUtf8Error>`
help: the type constructed contains `Result<String, FromUtf8Error>` due to the type of the argument passed
   --> src/main.rs:29:12
    |
29  |         Ok(Some(s))
    |            ^^^^^-^
    |                 |
    |                 this argument influences the type of `Some`
note: tuple variant defined here
   --> /playground/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/option.rs:579:5
    |
579 |     Some(#[stable(feature = "rust1", since = "1.0.0")] T),
    |     ^^^^
help: use the `?` operator to extract the `Result<String, FromUtf8Error>` value, propagating a `Result::Err` value to the caller
    |
29  |         Ok(Some(s?))
    |                  +

For more information about this error, try `rustc --explain E0308`.
warning: `playground` (bin "playground") generated 1 warning
error: could not compile `playground` (bin "playground") due to 1 previous error; 1 warning emitted
```
2024-06-24 09:57:00 -04:00
snazzybytes
32b5a19684
Update broken "channels" link (#2146)
Stumbled upon another broken link. Courtesy fix 🫡
2024-06-17 09:19:00 -04:00
Dustin J. Mitchell
412eac6689
Clarify the suggested steps in the pin page (#2130)
The speaker notes suggest an evolution of the code to support a periodic
timer, but the last step was under-specified.

(As mentioned by @fw-immunant and referenced in #1536)
2024-06-07 16:39:14 -04:00
dependabot[bot]
d09041fb91
cargo: bump tokio from 1.37.0 to 1.38.0 in the minor group (#2113)
Bumps the minor group with 1 update:
[tokio](https://github.com/tokio-rs/tokio).

Updates `tokio` from 1.37.0 to 1.38.0

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-06-03 10:43:11 +01:00
dependabot[bot]
83b31e19af
cargo: bump the patch group with 2 updates (#2099)
Bumps the patch group with 2 updates:
[serde](https://github.com/serde-rs/serde) and
[tokio-websockets](https://github.com/Gelbpunkt/tokio-websockets).

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-28 10:26:34 +01:00
dependabot[bot]
82b60f27a0
cargo: bump the patch group with 4 updates (#2087)
Bumps the patch group with 4 updates:
[anyhow](https://github.com/dtolnay/anyhow),
[mdbook](https://github.com/rust-lang/mdBook),
[serde](https://github.com/serde-rs/serde) and
[thiserror](https://github.com/dtolnay/thiserror).

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

| Package | From | To |
| --- | --- | --- |
| [anyhow](https://github.com/dtolnay/anyhow) | `1.0.82` | `1.0.83` |
| [serde](https://github.com/serde-rs/serde) | `1.0.200` | `1.0.201` |
| [serde_json](https://github.com/serde-rs/json) | `1.0.116` | `1.0.117`
|
| [zerocopy](https://github.com/google/zerocopy) | `0.7.33` | `0.7.34` |
| [thiserror](https://github.com/dtolnay/thiserror) | `1.0.59` |
`1.0.60` |
| [cxx](https://github.com/dtolnay/cxx) | `1.0.121` | `1.0.122` |
| [cxx-build](https://github.com/dtolnay/cxx) | `1.0.121` | `1.0.122` |

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-05-13 10:28:26 +01:00
snazzybytes
5ff3b65ea9
Fix broken link to unsafe-traits.md (#2064)
I came upon a broken link which takes you to (Document Not Found):
https://google.github.io/comprehensive-rust/concurrency/unsafe/unsafe-traits.html

Verified locally with `mdbook serve` and now it links correctly
2024-05-07 13:22:39 -04:00
Dustin J. Mitchell
face5af783
Update Concurrency course with times (#2007)
As I mentioned in #1536:

* Break into segments at approximately the places @fw-immunant put
breaks
 * Move all of the files into `src/concurrency`
 * Add timings and segment/session metadata so course outlines appear

There's room for more work here, including some additional feedback from
@fw-immunant after the session I observed, but let's do one step at a
time :)
2024-04-23 13:26:41 +00:00
rbehjati
6b3eb83bff
Move mpsc::Sender to the list of Send + Sync types (#1930)
As of 1.72.0, `mpsc::Sender` [is
`Sync`](https://doc.rust-lang.org/std/sync/mpsc/struct.Sender.html#impl-Sync-for-Sender%3CT%3E).
2024-03-22 10:27:11 -04:00
kochinc
4b27e28e7f
Update bounded.md (#1919)
Shouldn't it be `recv` instead of `read`? I don't see a `read` function
in Receiver.
2024-03-12 20:48:54 +00:00
Frances Wingerter
976f6f6f24
concurrency: Add detailed teaching notes for welcome and threads slides (#1885)
These follow the flow of what I actually teach, which spends a
significant amount of time on the latter slide. I think it's worthwhile
to have a real flow documented in the teaching notes, both to make sure
nothing gets forgotten and to structure the experience of teaching.
2024-03-06 21:11:52 +00:00
Dustin J. Mitchell
73068d2af2
Improve interior mutability slide (#1683)
Mutex is probably more broadly understood by people coming from other
languages.

Fixes #1512.
2024-01-17 08:53:05 -05:00
Martin Geisler
c9f66fd425
Format all Markdown files with dprint (#1157)
This is the result of running `dprint fmt` after removing `src/` from
the list of excluded directories.

This also reformats the Rust code: we might want to tweak this a bit in
the future since some of the changes removes the hand-formatting. Of
course, this formatting can be seen as a mis-feature, so maybe this is
good overall.

Thanks to mdbook-i18n-helpers 0.2, the POT file is nearly unchanged
after this, meaning that all existing translations remain valid! A few
messages were changed because of stray whitespace characters:

     msgid ""
     "Slices always borrow from another object. In this example, `a` has to remain "
    -"'alive' (in scope) for at least as long as our slice. "
    +"'alive' (in scope) for at least as long as our slice."
     msgstr ""

The formatting is enforced in CI and we will have to see how annoying
this is in practice for the many contributors. If it becomes annoying,
we should look into fixing dprint/check#11 so that `dprint` can annotate
the lines that need fixing directly, then I think we can consider more
strict formatting checks.

I added more customization to `rustfmt.toml`. This is to better emulate
the dense style used in the course:

- `max_width = 85` allows lines to take up the full width available in
our code blocks (when taking margins and the line numbers into account).
- `wrap_comments = true` ensures that we don't show very long comments
in the code examples. I edited some comments to shorten them and avoid
unnecessary line breaks — please trim other unnecessarily long comments
when you see them! Remember we're writing code for slides 😄
- `use_small_heuristics = "Max"` allows for things like struct literals
and if-statements to take up the full line width configured above.

The formatting settings apply to all our Rust code right now — I think
we could improve this with https://github.com/dprint/dprint/issues/711
which lets us add per-directory `dprint` configuration files. However,
the `inherit: true` setting is not yet implemented (as far as I can
tell), so a nested configuration file will have to copy most or all of
the top-level file.
2023-12-31 00:15:07 +01:00
Martin Geisler
aebb0bc856
Replace hyphens (-) with em-dashes () (#1500)
The new Chromium class likes — like me! — to use dashes in the writing!
However, I believe it should use an em-dash instead of the hyphen.

Luckily this is easy: we have enabled “typographic quotes” in `mdbook`,
which also handles the conversion of `---` to `—` in the generated HTML.
So I normalized the single existing em-dash to a triple-dash to make it
more consistent (and hopefully make it easier for translators to
consistently enter these characters).
2023-11-28 19:41:09 +01:00
Fabian Bornhofen
a0bb5f30d0
Add trait bound to example for MutexGuard that is !Send + Sync (#1358)
This example only makes sense (and is therefore easier to understand
logically :) ) if T is Sync. See
https://github.com/rust-lang/rust/issues/41622 - this used to be a bug
initially.
2023-10-12 22:29:37 +02:00
Nick Radcliffe
c93a4bc20c
Remove unused import (use) (#1303)
This should be a clean pull request with just the required diff
2023-10-05 11:17:48 +02:00
Nick Radcliffe
2072ed022b
Fix typo (missing s on threads) (#1304)
Again, a clean pull request for this typo.
2023-10-05 09:17:17 +00:00
Martin Geisler
c23da457ae
Expand "iff" to "if and only if" (#1051)
There has been a few PRs which wanted to change "iff" to "if". Expanding it should help and avoid math-heavy jargon.
2023-08-04 12:52:36 +01:00
Martin Geisler
2c820e7bf3
Move thread::spawn to separate function (#1020)
This might make it clearer why the thread cannot borrow from the string.
2023-07-24 14:28:14 -07:00
vanyabrucker
1ed40f4746
Corrected spelling in bounded.md (#844)
Corrected spellling  bounded.md
2023-06-21 07:12:59 +00:00
LIU JIE
cf0ce5c0b2
Explain iff in mutex.md (#810)
---------

Co-authored-by: Martin Geisler <martin@geisler.net>
2023-06-13 12:56:42 +00:00
Martin Geisler
9cf55893ac
Rephrase when send blocks (#792)
* Rephrase when `send` blocks

From a discussion with @hueich in #786: https://github.com/google/comprehensive-rust/pull/786#discussion_r1224850499.
2023-06-11 13:20:33 +00:00
Bryan Hitchcock
584e3ecd7d
Fix inconsistent code in unbounded.md (#656)
Update unbounded.md to address inconsistent code

Fix inconsistency between concurrency `unbounded.md` and `bounded.md` by using implicitly named arguments for both.
2023-05-23 11:36:58 +02:00
Dustin J. Mitchell
d0bf0d7a44
Order Send/Sync before Arc/Mutex (#605)
The Arc/Mutex chapters mention Send/Sync in the speaker notes, and in
fact serve as good illustrations of the traits, so let's define the
traits before referencing them.
2023-05-05 09:50:17 +02:00
Martin Geisler
b051b04afa
Use explicit Arc::clone instead of calling .clone() method (#596)
This is to highlight that the clones are cheap: they run custom logic
in the reference counted type, they don’t do a deep clone.
2023-04-27 23:46:09 +02:00
Oliver Mannion
9ee562c267
Remove unnecessary Mutex::lock from shared state example (#499)
It's not necessary to explicitly take the lock to print it.
2023-03-12 10:48:52 +01:00
Matt Smith
916c297d8c
Remove explicit typing in Mutex example (#405)
Example contained unnecessary explicit type info for the vector in Mutex v. Rust will magically do the needful conversions for us. Code looks cleaner/simpler without the explicit typing.
2023-02-14 18:40:22 +01:00
Martin Geisler
c4bc10e31d
Inline variables printed with println! and friends (#315)
The course follows the style of inlining variable names where possible
in `println!` statements.
2023-02-09 07:48:18 +01:00
Andrew Walbran
5dd87192e8 Mention that Send and Sync are unsafe traits. 2023-01-27 17:34:31 +00:00
Andrew Walbran
81cf02ffbe Fix typos and details. 2023-01-27 17:34:31 +00:00
Andrew Walbran
cc402a7788 Add some speaker notes to concurrency chapter. 2023-01-27 17:34:31 +00:00
Davide Guerri
a0a1059c0d Verbose description of Sync-Send relationship
Add a verbose rationale of the statement:
  `T` is `Sync` if and only if `&T` is `Send`
2023-01-26 12:06:54 +00:00
Igor Petruk
b12a1cb320
Update example.md (#257)
Adding a possible solution to the example that
does not compile. The solution includes notes
with important parts.
2023-01-24 15:25:18 +01:00
Igor Petruk
7f178d6212
Update mutex.md (#256)
* Update mutex.md

Adding speaker notes why Rust `Mutex` has its design and mentioning briefly `RwLock`.

Someone from the audience can notice `unwrap()` in the code, it might be worth to have the answer in speaker notes.

* Apply suggestions from code review

Co-authored-by: Martin Geisler <martin@geisler.net>
2023-01-24 08:43:27 +00:00