diff --git a/README.md b/README.md index 2b3139e..fb34664 100644 --- a/README.md +++ b/README.md @@ -235,7 +235,7 @@ spin = { version = "0.9", features = ["lock_api", "spin_mutex"] } Surelock builds on ideas from two libraries: -- [`happylock`][happylock] (`SFBdragon`, CC0-1.0) -- Introduced the `LockCollection` pattern: a capability token (`ThreadKey`) combined with sorted multi-lock acquisition. Surelock borrows this pattern, replacing address-based ordering with a stable monotonic `LockId` counter (addresses are unstable across moves and `Vec` reallocations), dropping the `std` requirement, and removing `unsafe` from the public API. +- [`happylock`][happylock] (`botahamec`, CC0-1.0) -- Introduced the `LockCollection` pattern: a capability token (`ThreadKey`) combined with sorted multi-lock acquisition. Surelock borrows this pattern, replacing address-based ordering with a stable monotonic `LockId` counter (addresses are unstable across moves and `Vec` reallocations), dropping the `std` requirement, and removing `unsafe` from the public API. - [`lock_tree`][lock_tree] (Google Fuchsia, BSD) -- Introduced `LockAfter` traits for compile-time ordering of lock _categories_, enforced via witness-token consumption. Surelock extends this with same-level multi-lock via `LockSet` (which `lock_tree` cannot do) and makes levels opt-in with a `Base` default. @@ -265,7 +265,7 @@ at your option. [coffman]: https://en.wikipedia.org/wiki/Deadlock_(computer_science) -[coffman_paper]: https://people.cs.umass.edu/~mcorner/courses/691J/papers/TS/coffman_deadlocks/coffman_deadlocks.pdf +[coffman_paper]: https://uobdv.github.io/Design-Verification/Supplementary/System_Deadlocks-Four_necessary_and_sufficient_conditions_for_deadlock.pdf [happylock]: https://crates.io/crates/happylock [lock_api]: https://docs.rs/lock_api [lock_tree]: https://crates.io/crates/lock_tree diff --git a/design/comparison/happylock.md b/design/comparison/happylock.md index 10773bd..ceccef5 100644 --- a/design/comparison/happylock.md +++ b/design/comparison/happylock.md @@ -1,6 +1,6 @@ # Comparison: happylock -[`happylock`](https://crates.io/crates/happylock) by `SFBdragon` (CC0-1.0) is the library that most directly inspired surelock's `LockSet` pattern. Much of surelock's approach to atomic multi-lock acquisition descends from `happylock`'s `LockCollection`, and we are grateful for the clear, well-documented design that made this lineage possible. +[`happylock`](https://crates.io/crates/happylock) by `botahamec` (CC0-1.0) is the library that most directly inspired surelock's `LockSet` pattern. Much of surelock's approach to atomic multi-lock acquisition descends from `happylock`'s `LockCollection`, and we are grateful for the clear, well-documented design that made this lineage possible. ## What happylock Does diff --git a/src/lib.rs b/src/lib.rs index be8f191..5bb52c7 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -243,7 +243,7 @@ //! //! Surelock builds on ideas from two libraries: //! -//! - [`happylock`](https://crates.io/crates/happylock) (`SFBdragon`, +//! - [`happylock`](https://crates.io/crates/happylock) (`botahamec`, //! CC0-1.0) -- introduced the `LockCollection` pattern: a //! capability token (`ThreadKey`) combined with sorted multi-lock //! acquisition. Surelock borrows this pattern, replacing @@ -263,7 +263,7 @@ //! throughout -- is surelock's contribution. //! //! Grounded in Coffman, Elphick, and Shoshani's -//! [System Deadlocks](https://people.cs.umass.edu/~mcorner/courses/691J/papers/TS/coffman_deadlocks/coffman_deadlocks.pdf) +//! [System Deadlocks](https://uobdv.github.io/Design-Verification/Supplementary/System_Deadlocks-Four_necessary_and_sufficient_conditions_for_deadlock.pdf) //! (1971). //! //! For detailed comparisons, see the