40e40f658c
Merge pull request #1 from bertptrs/improve-digraph
2021-05-24 15:13:37 +02:00
ebb8132cf8
Add a fuzz-test for the mutex ID's graph
2021-05-24 15:10:41 +02:00
ca12ae6b0e
Add changelog
2021-05-24 14:49:48 +02:00
d242ac5bc2
Use interior mutability for updating graph order
2021-05-24 14:49:48 +02:00
39b493a871
Merge hash maps in graph structures
...
This saves quite a few hash-map lookups which improves performance by
about 25%.
2021-05-24 14:49:48 +02:00
cca3cf7827
Fix unintentional exponential order ids
2021-05-24 14:49:48 +02:00
6ef9cb12f8
Implement basic fuzz testing for the digraph impl
2021-05-24 14:49:48 +02:00
f21631bfde
Prepare for release
v0.1.0
2021-05-16 15:30:32 +02:00
1ac8c09a82
Add Github Actions for CI
2021-05-16 15:01:10 +02:00
50e99fd07a
Rework dependency-tracking to be poison-free
...
Now new dependency edges that introduce cycles are simply rejected, not
affecting the overall graph. This simplifies the visible API and also
removes the need to restore the graph.
2021-05-16 14:16:51 +02:00
440693ab1e
Fix unfortunate typo
2021-05-13 17:44:45 +02:00
75df988d8a
Document safety of unsafe Sync impl
2021-05-13 17:08:57 +02:00
dc299f2f9a
Reimplement LazyMutexId using MaybeUninit
...
This shrinks the type by quite a bit and we don't lose state tracking as
the interal std::sync::Once already keeps track of that.
Also add a test for the new behaviour as this is a lot of unsafe code.
2021-05-13 16:55:41 +02:00
19973b3919
Implement a tracing wrapper for std::sync::Once.
2021-05-13 15:24:41 +02:00
2567a304d9
Initial README.
2021-05-13 13:57:36 +02:00
9e7f2d6a61
Missing Default implementation for TracingRwLock.
2021-05-08 17:10:56 +02:00
514a84f3b5
Minimal documentation for the complete API
2021-05-08 14:58:02 +02:00
eb7abc70ea
Derive Default more rather than implement it
2021-05-08 14:28:51 +02:00
050ee27af6
Refactor MutexID to be self tracking
...
This avoids the need to implement Drop on every wrapped mutex, and
removes the need for unsafe code in this crate.
2021-05-02 11:55:04 +02:00
24c8453496
Document API and design
2021-04-21 20:21:46 +02:00
d3e146214f
Replage edge lists with edge sets
2021-04-11 10:38:55 +02:00
c196589cfd
Implement fast dynamic topsort algorithm
2021-03-27 17:20:37 +01:00
5638ebffd8
Simplify lock guard tracking
...
Instead of implementing the tracking everywhere, create a RAII-guard
that will track the state as it is held and dropped.
2021-03-20 20:43:05 +01:00
9b56deac26
Simplify code structure
2021-03-19 21:28:14 +01:00
5f2e0e99a8
Use dedicated type for Mutex IDs
...
This should prevent tiny mistakes in handling the value.
2021-03-19 21:18:50 +01:00
e42d862f19
Implement tracing mutex for RwLock
2021-03-02 21:19:39 +01:00
0b6f8816f8
Split mutex-specific code to separate module.
2021-02-21 17:10:49 +01:00
6153af6426
Start tracking lock dependencies
2021-02-21 16:45:21 +01:00
df198ded5d
Implement Mutex wrappers
2021-02-13 22:38:17 +01:00
a3a8749f54
Implement very simple digraph with cycle detection
2021-02-13 20:48:34 +01:00