···11----
22-'moroutine': minor
33----
44-55-Synchronous `try*` variants for shared locks
66-77-**New methods on `Mutex` and `RwLock`**:
88-99-```ts
1010-// Non-blocking, single-attempt acquisition.
1111-// Returns a disposable guard on success, `null` on contention.
1212-mutex.tryLock(); // MutexGuard | null
1313-rwlock.tryReadLock(); // ReadGuard | null
1414-rwlock.tryWriteLock(); // WriteGuard | null
1515-```
1616-1717-Each makes a single atomic CAS attempt — no waiting, no retry. Composes with `using` since `null` skips dispose registration:
1818-1919-```ts
2020-using guard = mu.tryLock();
2121-if (!guard) return; // held elsewhere, nothing to dispose
2222-// ...critical section; auto-unlock on scope exit
2323-```
+24
CHANGELOG.md
···11# moroutine
2233+## 1.3.0
44+55+### Minor Changes
66+77+- c9a1794: Synchronous `try*` variants for shared locks
88+99+ **New methods on `Mutex` and `RwLock`**:
1010+1111+ ```ts
1212+ // Non-blocking, single-attempt acquisition.
1313+ // Returns a disposable guard on success, `null` on contention.
1414+ mutex.tryLock(); // MutexGuard | null
1515+ rwlock.tryReadLock(); // ReadGuard | null
1616+ rwlock.tryWriteLock(); // WriteGuard | null
1717+ ```
1818+1919+ Each makes a single atomic CAS attempt — no waiting, no retry. Composes with `using` since `null` skips dispose registration:
2020+2121+ ```ts
2222+ using guard = mu.tryLock();
2323+ if (!guard) return; // held elsewhere, nothing to dispose
2424+ // ...critical section; auto-unlock on scope exit
2525+ ```
2626+327## 1.2.2
428529### Patch Changes