e2db0eaca8
Fix a graph invariant violation on cycle detection
2021-05-27 20:31:00 +02:00
ebb8132cf8
Add a fuzz-test for the mutex ID's graph
2021-05-24 15:10:41 +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
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
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
5f2e0e99a8
Use dedicated type for Mutex IDs
...
This should prevent tiny mistakes in handling the value.
2021-03-19 21:18:50 +01:00
df198ded5d
Implement Mutex wrappers
2021-02-13 22:38:17 +01:00