Skip to content

Monument v0.10.0

Choose a tag to compare

@github-actions github-actions released this 04 Jul 21:51

Headline Features

  • (#105) Completely rewrite and simplify the graph building code. Lots of things relating to course_heads and multi-parts should now Just Work™:

    • Incompatible course heads are no longer a thing. You can now do things like course_heads = ["*78", "12345*"] and it will Just Work™. Previously this would error because 12345867 could be given two different course heads.
    • course_heads always Just Works™, even in e.g. cyclic multi-parts. Previously cyclic comps would simply ignore course_heads.
    • Specifying multiple start/end indices now Just Works™ in multi-parts - i.e. snap start/finishes are allowed, but Monument won't mix them or put an illegal splice over the part head. This would previously cause a crash (found by Jadd Virji - thanks!).
  • (#96) Add music presets for:

    • Near misses (for any stage)
    • CRUs (for >= Triples)
    • 5678 combinations (for both Triples and Major)

    Load them with, e.g.:

    music = [
        { preset = "5678 combinations" },
        { preset = "near misses" },
        { preset = "crus" },
    ]

Smaller Features

  • (#105) Add start_row and end_row for making compositions start/stop at a row other than rounds. Useful for using Monument to extend 720s to get QPs of Minor.
  • (#105) Remove splice_style = "call locations" (which would allow splices only where a call could have been made).
  • (#105) start_stroke now refers to the row after start_row (i.e. the first non-rounds row).
  • (#104) Fix column alignments for (a) negative scores and (b) long (i.e. at least 5-digit) lengths.

Bug Fixes

  • (#105) Fix bug where Monument would, in obscure situations, produce false compositions (found by David Thomas - thanks!). Monument now expands the rows of each composition generated and explicitly checks for truth - so if falseness bugs do creep in, you'll know about it (and hopefully the large test suite will catch it before it reaches you).

Internal Improvements

Monument

  • (#105) Remove monument::Layout and add Methods and Calls explicitly to a Query.
  • (#104) Make all test cases deterministic by (a) rounding the composition scores and (b) making sure that all test cases are exhaustive searches (to negate Monument's non-deterministic search order).

BellFrame v0.9.0

  • (#104) Implement Ord for Stroke.
  • (#104) Add Mul implementations for every combination of &Row/&RowBuf/RowBuf versus anything from &Row/&RowBuf/RowBuf or &Mask/Mask.
  • (#104) Fix bug in Block::extend_range, where too many annotations would be copied.
  • (#104) Add new methods:
    • Row::copy_from: in-place write to an &mut Row (i.e. requiring the stages to match),
      analogous to <[T]>::copy_from_slice.
    • Block::with_leftover_row: create a new Block with only the specified leftover row.
    • Block::leftover_row_mut: to mutably borrow the leftover row of a Block.
  • (#97) Enforce extra invariants for music::Pattern (making it much more robust, at the cost of needing to handle some errors that should have been handled anyway).
  • (#97) Rename music::Regex to music::Pattern (it isn't anywhere near as powerful as true regexes).
  • (#96) Add Stage::extent, which returns a SameStageVec containing every possible Row of that Stage in an arbitrary order.
  • (#96) Allow addition/subtraction between Stages and u8s with +/-, panicking on overflow or a Stage of 0. checked_add and checked_sub are the non-panicking versions.
  • (#96) Add conversions from Row/RowBuf to Mask and Regex (via the From trait)