You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Rounds and backrounds count as n-bell runs from both front and back (and therefore get double counted). Considered not a bug (but a feature 😄!)
Make multiple start/end locations work with multi-parts (currently crashes)
Features
Proper support for positional calls
Allow specifying method ranges by percentage of length range
Mixed stage splicing
Uneven but still group multi-parts (e.g. 12{34,43}{56,65} or 1342, 132)
Print stats on a fixed time interval, rather than every 100K iterations
Better shorthand generation
Add weights to repeating the same place bell multiple times
Print warnings again after all compositions
Specify start strokes for each start index individually
Allow graph size limit to be set in the TOML files (because only specific files will require a larger size limit, and it seems dumb to only be able to set it as a CLI arg)
Smarter algorithm for computing method balance
Sort comps by absolute music?
Add bobs_only and singles_only
Calculate/require ATW
Print final comp list even for ctrl-C
Limit on graph size
Default music scoring
Make calling_bell a global option
Add weights to changes of method
Add column headers for the composition output
Display music breakdown in comp output
Music type presets for (e.g. music = [{ preset = "near misses" }]):
5678 combinations
Near misses
CRUs
UX
Show maxest max len value reached if a run fails.
Improve docs
Host them as a proper site
Add dedicated examples
Add runnable/testable examples for each parameter
Split parameter reference into its own page
Rename course_heads to courses and ch_weights to course_weights
Switch allow_false to require_truth
Remove call.debug_symbol and auto-generate it for bobs
Rename lead_location(s) to lead_label(s) or just label(s)
Print header line every 50 compositions
Optimisation
Determine which ordering of successor links produces the best comps (currently they're assigned non-deterministically based on the order of links in a HashMap).
Run graph optimisation passes until the last pass that reduced graph size is run again (instead of waiting for a full round of optimisations)
For multiparts, remove graph any start/ends which don't share a RowIdx with a corresponding end/start.
Refactoring
Make Count take an index type parameter (i.e. Count<MusicTypeIdx> and Count<MethodIdx> to prevent mixing of counts of method rows/music types)
Make OptRange generic
Identify Chunks by their range rather than their head?
Rewrite graph generation:
Remove Layout, and generate a Graph directly from a Query
Remove the distinction between lead- and course-wise compositions
Allow CHs to be specified for lead-wise compositions
Remove the CH incompatibility check, and have chunks labelled by the first matching CH in the list
Make all ends 0-length. I.e. 0-length end chunks are no longer a special case
Add abstraction for PartHeadGroups
Exclusively use {PerPart,Total}Length (i.e. impl Add/Mul<usize>)
Course heads which are unreachable/never appear in the graph
Add warning that Grandsire and Stedman won't work very well
Recommend {bobs,singles}_only if user gives massive negative weight to either of them
Using method_count with only one method? This may be useful, and will produce explicitly errors rather than silently running for ages on an impossible task.
Suggest compatible course heads for resolvable conflicts. Incompatible course heads no longer cause an error
Errors:
Unreachable part heads (e.g. out-of-course PHs in bobs-only comps)
Duplicate methods
Explicit error when no comps are possible because the graph is empty
Add check & error for setting CH masks that aren't preserved by the part heads
Add error for duplicate call names
Better messages
Statically prove when lengths are impossible (e.g. asking for a 5080 of whole-course Royal)
Statically prove which method counts are actually possible
Clearly impossible method bounds (e.g. where the total max method < min row count, and vice versa)
Graph optimisations
Merge nodes with no splice which must be adjacent
Remove links between mutually false nodes
Remove links between chunks which contribute too many method counts (also will remove any chunks with too much method count by disconnecting them from the rest of the graph)
Make the point of graph optimisation to minimise (#nodes, #links, Reverse(#required))
Testing
Run examples in the guide as integration tests
Remove ANSI escape codes from error messages so (a) the tests work on Windows and (b) the error message diffs actually render correctly
Make all tests deterministic
Make test harness understand:
Missing tests
Moved tests
Create benchmark suite and runner
BellFrame
Remove dedicated place notation types (using them only for conversions to/from Blocks or Rows).
Implement jump changes
Make Row::closure{,_from_rounds} return an Iterator rather than a Vec
Full docs/examples coverage
Method library:
Split into its own crate?
Link a copy of the CC library into the binary, so internet access isn't required on first startup
Use better compression/a binary format for storing the methods
Fix unsoundness issues:
Enforce Mask invariants
Give Regexs a Stage
Enforce Regex invariants
Switch to making Bell/Stage/etc. be newtypes over u8 (reducing memory usage, improving cache performance, potential for SIMD)
Remove type Block = AnnotBlock<()> and rename AnnotBlock to Block
The text was updated successfully, but these errors were encountered:
Monument (CLI/lib)
Bugs
count
andcount_each
cause atodo!()
panic (found by @simon-bond).{ min = 1250, max = 1200 }
)splice_style = "calls"
not working for lead-wise compssplice_style = "calls"
still generating splices over part-headsn
-bell runs from both front and back (and therefore get double counted). Considered not a bug (but a feature 😄!)Features
12{34,43}{56,65}
or1342, 132
)bobs_only
andsingles_only
calling_bell
a global optionmusic = [{ preset = "near misses" }]
):UX
max len
value reached if a run fails.course_heads
tocourses
andch_weights
tocourse_weights
allow_false
torequire_truth
call.debug_symbol
and auto-generate it for bobslead_location(s)
tolead_label(s)
or justlabel(s)
Optimisation
HashMap
).RowIdx
with a corresponding end/start.Refactoring
Count
take an index type parameter (i.e.Count<MusicTypeIdx>
andCount<MethodIdx>
to prevent mixing of counts of method rows/music types)OptRange
genericChunk
s by their range rather than their head?Layout
, and generate aGraph
directly from aQuery
PartHeadGroup
s{PerPart,Total}Length
(i.e. implAdd
/Mul<usize>
)blocked on having a benchmark suite/runner)serde
dependency frommonument/lib
?bellframe::Regex
tobellframe::Pattern
Warnings/suggestions:
{bobs,singles}_only
if user gives massive negative weight to either of themUsingThis may be useful, and will produce explicitly errors rather than silently running for ages on an impossible task.method_count
with only one method?Suggest compatible course heads for resolvable conflicts.Incompatible course heads no longer cause an errorErrors:
Graph optimisations
(#nodes, #links, Reverse(#required))
Testing
BellFrame
Block
s orRow
s).Row::closure{,_from_rounds}
return anIterator
rather than aVec
Mask
invariantsRegex
s aStage
Regex
invariantsBell
/Stage
/etc. be newtypes overu8
(reducing memory usage, improving cache performance, potential for SIMD)type Block = AnnotBlock<()>
and renameAnnotBlock
toBlock
The text was updated successfully, but these errors were encountered: