Commit Graph

126 Commits

Author SHA1 Message Date
bert 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
bert cca3cf7827 Fix unintentional exponential order ids 2021-05-24 14:49:48 +02:00
bert 6ef9cb12f8 Implement basic fuzz testing for the digraph impl 2021-05-24 14:49:48 +02:00
bert f21631bfde Prepare for release v0.1.0 2021-05-16 15:30:32 +02:00
bert 1ac8c09a82 Add Github Actions for CI 2021-05-16 15:01:10 +02:00
bert 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
bert 440693ab1e Fix unfortunate typo 2021-05-13 17:44:45 +02:00
bert 75df988d8a Document safety of unsafe Sync impl 2021-05-13 17:08:57 +02:00
bert 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
bert 19973b3919 Implement a tracing wrapper for std::sync::Once. 2021-05-13 15:24:41 +02:00
bert 2567a304d9 Initial README. 2021-05-13 13:57:36 +02:00
bert 9e7f2d6a61 Missing Default implementation for TracingRwLock. 2021-05-08 17:10:56 +02:00
bert 514a84f3b5 Minimal documentation for the complete API 2021-05-08 14:58:02 +02:00
bert eb7abc70ea Derive Default more rather than implement it 2021-05-08 14:28:51 +02:00
bert 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
bert 24c8453496 Document API and design 2021-04-21 20:21:46 +02:00
bert d3e146214f Replage edge lists with edge sets 2021-04-11 10:38:55 +02:00
bert c196589cfd Implement fast dynamic topsort algorithm 2021-03-27 17:20:37 +01:00
bert 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
bert 9b56deac26 Simplify code structure 2021-03-19 21:28:14 +01:00
bert 5f2e0e99a8 Use dedicated type for Mutex IDs
This should prevent tiny mistakes in handling the value.
2021-03-19 21:18:50 +01:00
bert e42d862f19 Implement tracing mutex for RwLock 2021-03-02 21:19:39 +01:00
bert 0b6f8816f8 Split mutex-specific code to separate module. 2021-02-21 17:10:49 +01:00
bert 6153af6426 Start tracking lock dependencies 2021-02-21 16:45:21 +01:00
bert df198ded5d Implement Mutex wrappers 2021-02-13 22:38:17 +01:00
bert a3a8749f54 Implement very simple digraph with cycle detection 2021-02-13 20:48:34 +01:00