Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
63 commits
Select commit Hold shift + click to select a range
dc1086c
perf: eliminate heap allocations in hot cyclotomic ring paths
Mar 19, 2026
6a458cb
optimize rat_enum performance
Mar 19, 2026
189758f
micro optimizations for unit grid implementation
Mar 20, 2026
46eb761
update AGENTS.md
Apr 17, 2026
757969e
Add SA-IS suffix array construction for integer alphabets
Apr 17, 2026
585ce6c
Add LCP array (Kasai's) and sparse table RMQ
Apr 17, 2026
60ec938
Add MatchIndex builder and maximal match enumeration
Apr 17, 2026
de5d790
Update roadmap: phases 1-5 complete
Apr 17, 2026
c431f74
Add cyclic reverse-complement match layer (CyclicMatchIndex)
Apr 17, 2026
9440569
Add end-to-end tests, public API exports, and doc comments for string…
Apr 17, 2026
5ffdcee
Add TileSet with CMI-based glue discovery and single-edge heuristic
Apr 18, 2026
261ff68
Add exhaustive brute-force comparison tests, fix collinear junction f…
Apr 18, 2026
f7fce3a
Remove disproven junction-angle heuristic, rely solely on try_glue fo…
Apr 18, 2026
e2c0d46
Clean up unused test imports in tileset module
Apr 18, 2026
53b5079
Fix ignored doc test: enable CyclicMatchIndex example to compile and run
Apr 18, 2026
8558367
Add interior-angle overflow heuristic for single-edge glue candidates
Apr 18, 2026
cda4d19
Quality audit: extract shared helpers, deduplicate mystic constant, a…
Apr 18, 2026
abbd589
Simplify valid_glues_containing to filter valid_glues results, add ex…
Apr 18, 2026
916ecd9
Quality audit: fix match_length full-match bug, fix cycle/slice_from …
Apr 18, 2026
010ea60
Eliminate redundant get_match call: add try_glue_precomputed to skip …
Apr 18, 2026
f44328b
Add patch_growth binary: enumerate tile patches via binary decomposition
Apr 18, 2026
4386506
Add --validate mode to patch_growth: cross-check TileSet results agai…
Apr 18, 2026
343fe6d
Fix degenerate glue panic: reject ±hturn junction angles before Snake…
Apr 18, 2026
7cebd39
Fix all_valid_glues to iterate all (i,j) pairs, not just j>=i
Apr 18, 2026
a0b873d
Remove dead code: cfg(test) on heuristic helper, rename debug_ test
Apr 18, 2026
1fdb0ec
Add junction gap heuristic for all match lengths + fix get_match modu…
Apr 18, 2026
0e92f8c
Remove redundant boundary extension seed, clean up profiling binaries
Apr 18, 2026
746cb95
Clean up candidate generation: dedup analysis, remove dead code
Apr 18, 2026
5efac88
Remove k=len seeds: CMI match starts are sufficient
Apr 18, 2026
d234927
Eliminate seen set: partition by match length instead of dedup
Apr 18, 2026
0b953d3
Clean up test naming, remove debug prints, fix brute_force double-work
Apr 18, 2026
4d240dc
Add GlueStats to track candidate funnel through patch construction pi…
Apr 18, 2026
32b91e8
Optimize patch construction: dedup unchecked sequences before Snake v…
Apr 18, 2026
9caefed
Remove stale glue_ops count from output, rely on GlueStats funnel
Apr 18, 2026
8ab4997
Unify self-match and non-self-match: cross-pair dedup for all paths
Apr 18, 2026
7b3de5a
Add ZZ4 fast path for Snake intersection checking via visited set
Apr 18, 2026
5da9777
Add --ring flag to patch_growth for ZZ4/ZZ12 ring selection
Apr 18, 2026
146b712
Add naive one-by-one growth strategy; switch to memory-efficient vali…
Apr 18, 2026
4e7039a
Replace broken binary decomposition with correct naive incremental gr…
Apr 18, 2026
c6ea5a5
Add Redelmeier-style patch enumeration via insertion-site growth
Apr 18, 2026
d5c827a
Use TileSet/CMI for site enumeration in Redelmeier growth
Apr 18, 2026
90bcc08
Add ZZ4 ring support and square correctness test
Apr 18, 2026
333d51f
Add make_free helper and OEIS validation for free polyominoes
Apr 18, 2026
06d2dbd
Add specialized polyomino enumerator with incremental visited-set val…
Apr 19, 2026
91a7395
Optimize polyomino benchmark: use FxHashSet and skip redundant normal…
Apr 19, 2026
877b6ca
Cache Rat in Patch to avoid recreating it on each to_rat() call
Apr 19, 2026
d4154e9
Use FxHashSet instead of BTreeSet for patch storage
Apr 19, 2026
d674e12
Add flamegraph.svg and perf.data to .gitignore
Apr 19, 2026
153f8f3
Store free polyominoes directly instead of one-sided
Apr 19, 2026
4a451cd
Clean up clippy warnings
Apr 19, 2026
a49316c
Simplify patch_bench to ZZ12 only
Apr 19, 2026
335982c
Remove unused import in growing.rs
Apr 19, 2026
7a2ea73
Simplify patch_bench to Redelmeier only
Apr 19, 2026
89445ff
Optimize Redelmeier in growing.rs
Apr 19, 2026
181bfef
Optimize generic Redelmeier: use FxHashSet and free-form storage
Apr 21, 2026
38c87d1
Replace TileSet/CMI with inline matching in Redelmeier growth
Apr 21, 2026
aa1970c
Add incremental vertex overlap detection to Redelmeier growth
Apr 21, 2026
7e98c6c
Use scaled integer positions instead of Ratio in GrowingPatch
Apr 21, 2026
accd44a
Replace Snake validation with incremental segment crossing check for …
Apr 21, 2026
8025e94
Replace f64 fallback with exact pentagonal signum for ZZ10 and ZZ20
Apr 22, 2026
1852771
Add cyclotomic_intersect feature flag for ZZ12 segment crossing checks
Apr 22, 2026
3412387
Fix all clippy warnings and restore add_unsafe comments
Apr 22, 2026
a48a975
Fix clippy warnings under --all-targets --all-features -- -D warnings
Apr 22, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,5 @@
.vscode/
scratch*
.ipynb_checkpoints/
flamegraph.svg
perf.data
31 changes: 29 additions & 2 deletions AGENTS.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,31 @@
# Agent Instructions

- use `cargo fmt`, `cargo clippy` and `cargo test`
- only commit when all these checks are passing
## Development Workflow

* This is a Rust project, ALWAYS use `cargo fmt`, `cargo clippy` and `cargo test` and fix issues.
* When the code is formatted, linted and successfully tested, ALWAYS commit your changes.

## Agent Behavior

* ALWAYS ask if there is any ambiguity in the request or multiple viable solutions.
* NEVER guess, think through issues, read docs and existing code, discuss with the user.
* NEVER assume anything if you are not confident or need more details.
* If documentation is missing, try installing it or ask the user for help.

## Code Quality

* Avoid data duplication: NEVER hardcode a numeric value or string in two places, define constants.
* Avoid code duplication: NEVER write the same logic twice, factor out a common generic function.

* Before writing any new non-trivial code, ALWAYS check whether similar functionality already exists.
* Before writing any new non-trivial code, ALWAYS consider using existing popular third-party crates.
* When actually writing new code, ALWAYS try to write it in a reusable and extensible way from the start.

* ALWAYS strive towards generic, modular, maintainable code.
* ALWAYS prioritize good architecture and clarity over performance unless told otherwise..
* ALWAYS write testable code with easily mockable inputs.
* ALWAYS write small functions that ideally fit on a single screen.
* ALWAYS avoid deep nesting, use more helper functions instead.
* ALWAYS ask for permission to let a function be untested.
* ALWAYS plan out suitable tests for the intended design BEFORE implementation.
* ALWAYS strive to test all code paths, covering edge cases and boundary input values.
Loading
Loading