Commit Graph

82 Commits

Author SHA1 Message Date
651ce5fd84 Tighten up mark-and-compact GC.
Now it is in-place and should take less space for at least some workloads. See
TODOs left behind for thoughts on future directions it may make sense to go in
for performance tuning.

This still needs better test coverage, but these code improvements should make
it clear that there are no obvious fundamental flaws to this approach.
2025-01-10 09:29:39 -05:00
d94fd76d94 Use MaybeUninit instead of writing directly into uninitialized Vec.
This addresses a precondition error which is caught in newer stdlib.
2025-01-10 09:29:39 -05:00
1fcff8f4eb Hit it with the cargo fmt bat. 2025-01-10 09:29:39 -05:00
d627b8b964 Accommodate clippy suggestions. 2025-01-10 09:29:39 -05:00
063fedd709 Small readability improvements to satisfy lints. 2025-01-10 09:29:39 -05:00
147e6828d7 Small improvements to doc comments. 2025-01-10 09:29:39 -05:00
f54651ec4d Clean up some compilation warnings. 2025-01-10 09:29:39 -05:00
59e02dd89f Use a type that can actually be named for parent and child iteration in View. 2019-07-30 17:01:32 -04:00
6df253c3cc Fix formatting to be Markdown-friendly. 2019-07-25 22:02:03 -04:00
a35534da10 Bump README and change from org-mode to Markdown. 2019-07-25 22:01:36 -04:00
8af9689fc1 Version bump. 2019-07-25 21:53:40 -04:00
508d31f5b4 Further documentation bump. 2019-07-25 21:53:22 -04:00
112b6865de Move mark & compact GC to top-level module. 2019-07-23 17:56:56 -04:00
650b240dc5 Big documentation bump. More to come. 2019-07-23 17:55:35 -04:00
889c4a6d00 Correct lifetime oversights that lead to unsafety in view.
Some cleanup, too.
2019-07-23 12:53:53 -04:00
e8faceb964 Syntactic cleanup to reduce linebreaks added by rustfmt. 2019-07-23 12:53:17 -04:00
983ca4ca45 Delete empty file. 2019-07-23 12:52:46 -04:00
74d972de59 PartialEq and Eq for EdgeRef/NodeRef. 2019-07-23 01:59:30 -04:00
ff9cdcb0b9 Debug impl for EdgeRef and NodeRef. 2019-07-23 01:45:35 -04:00
4252119879 Version bump for new APIs. 2019-07-23 01:12:29 -04:00
01497be3e8 Ditch AppendOnlyGraph, which was broken and unfixable. 2019-07-23 01:11:59 -04:00
154e49c9f0 Added the view module and a few basic tests. 2019-07-23 01:09:56 -04:00
50bdbb41a7 Improved error message 2019-07-22 12:02:50 -04:00
2bc8e47843 Flesh out AppendOnlyGraph with new append_edge method. 2019-07-17 20:26:25 -04:00
f54bd3ace0 AppendOnlyGraph.add_edge doesn't need &mut self. 2019-07-17 20:07:30 -04:00
8b2011d104 Impl Clone and Copy for nav traits. 2019-07-17 19:32:22 -04:00
2f63b80e36 Add AppendOnlyGraph, to allow safe appends without invalidating pointers. 2019-07-17 19:21:27 -04:00
bbb9be1ae6 Actually add rustfmt.toml. 2019-07-13 23:07:38 -04:00
072a28fa76 Set indentation correctly and run rustfmt on everything. 2019-07-13 23:07:09 -04:00
d6de8fb161 Update to Rust 2018 and use pub(crate) for hidden APIs. 2019-07-13 22:38:17 -04:00
c1a24ff1a6 Use recently published version of symbol_table (now called symbol_map). 2016-09-08 22:02:58 -04:00
b937e22f50 Remove unused import. 2016-09-05 23:47:18 -04:00
e0d34f1f68 Use crossbeam's scoped threads instead of unsafe cast in test. 2016-05-04 14:42:00 -04:00
962768dfb4 Dead simple tests to ensure that Graph can be Send and Sync. 2016-05-01 20:41:14 -04:00
4935b8b646 Remove dead code. 2016-05-01 17:51:55 -04:00
7f8a4b3c0b Switch to using symbol-table package instead of built-in StateNamespace. 2016-05-01 17:51:10 -04:00
8550af7562 Remove unused, obsoleted enum. 2016-05-01 16:11:45 -04:00
0e9c6a64ec Recover vertex labels from node handles. 2016-04-17 17:19:18 -04:00
fc77c8824b Method for temporarily borrowing a Node from a MutNode. 2016-04-17 15:59:34 -04:00
4b348c9bc6 New methods for adding parent edges to graph. 2016-04-17 14:17:12 -04:00
6ce69e5d12 New methods for adding child edges to graph. 2016-04-17 14:12:37 -04:00
f57667f410 Get rid of notion of unexpanded edge.
Make one to throw away.

Upon reflection, it is not necessary for the graph data structure itself
to support unexpanded edges. It is sufficient to mark on vertex or edge
data when expansion is needed.
2016-04-17 13:59:41 -04:00
1a5c88e687 Rename Arc->RawEdge. Add Ord & co. to RawEdge. 2016-04-13 23:05:46 -04:00
649203baad Rename Vertex->RawVertex. Add Ord and PartialOrd to RawVertex. 2016-04-13 23:01:54 -04:00
9d3c123bdb Rename StateId->VertexId, ArcId->EdgeId. 2016-04-13 22:58:26 -04:00
ba77a28cd4 Use references to game state in retain_reachable_from. 2016-04-12 10:45:19 -04:00
137168a35a Clean up module structure and documentation. 2016-04-12 10:36:25 -04:00
173ffea759 Wrap up basic test suite for mark & compact. 2016-04-12 08:52:07 -04:00
df11119ec6 Strengthen mark-and-compact to suit tests.
Tests still incomplete.
2016-04-12 00:54:47 -04:00
5693f1dad4 Slightly safer permute_compact. 2016-04-11 23:01:53 -04:00