Skip to content

Latest commit

 

History

History
279 lines (212 loc) · 8.91 KB

CHANGELOG.md

File metadata and controls

279 lines (212 loc) · 8.91 KB

Changelog

All notable changes to this project will be documented in this file.

The format based on Keep a Changelog and this project adheres to Semantic Versioning.

[0.7.3] - 2021-11-06

Fixed

  • correctly show the black-and-white solved puzzle in the terminal (thanks to @SmileB4Deathz).

[0.7.2] - 2021-11-05

Added

  • special UnsolvableLine error type;
  • new benchmarks info:
    • how it behaves on hard puzzles with the default backtracking (without SAT);
    • when the SAT finds the first solution and how much time it needs to find the second one;
    • new hard line-solvable puzzles from http://www.nonograms.org;
  • information on blotted (webpbn) puzzles:
    • numbers;
    • supported formats;
  • show solution rate on various steps of solving.

Changed

  • moved from Travis CI to Github Actions;
  • updated compiler lints in lib.rs;
  • refactoring:
    • simplify string trimming while parsing;
    • explicit anonymous lifetimes;
    • signatures of members for Copy traits (Color and Block): &self -> self;
    • new names for LineSolver's methods:
      • get_soltion-> into_solution;
      • get_sol -> solve_block;
    • get rid of isize argument in LineSolver::set_color_block;
  • updated dependencies:
    • ordered_float=2.8;
    • smalvec=1.6;
    • others with cargo update (check that they are still compilable under Rust 1.39).

Fixed

  • a lot of clippy warnings (up to 1.57.0-beta.3 and 1.58.0-nightly);
  • suppress clippy::cast_precision_loss;
  • suppress some IDEA warnings (std::fmt::Debug);
  • benchmark script:
    • variables scope;
    • RUSTFLAGS="-C target-cpu=native" for maximum performance;
  • freeze varisat version to "=0.2.1" (to support Rust 1.39).

[0.7.1] - 2020-08-09

Added

Changed

  • represent a line as Rc<B> instead of Rc<Vec<B>>;
  • trait bounds for ShellRenderer;
  • move rendering of BinaryColor into render.rs;
  • update_solved returns Option::None instead of empty Vec;
  • refactoring:
    • extract LineDirection and LinePosition;
    • generalize JobQueue;
    • uniq_indexes closure in the Board constructor;
    • do not allocate unnecessary String-s in parsers;
    • simplify MyFormat: reduce nesting;
    • == "" => .is_empty();
  • remove suppression of some warnings (#[derive(Debug)]);
  • coverage run only once as the last step of CI;

[0.7.0] - 2020-07-12

Added

  • BoardParser::parse_rc to produce the Arc<RefCell<Board>> in one step;

Changed

  • flatten the library's API;
  • renamed some public struct-s;
  • use Box<[B]> instead of Vec<B> for the solved lines;
  • regrouped the imports;
  • updated the dependencies.

Fixed

  • clean the travis cache from previous build's artifacts.

[0.6.3] - 2020-07-11

Added

  • tests for various webpbn exported formats;
  • tests with minimal supported Rust version (1.39);
  • check for clippy::pedantic in travis (3 different sets of features).

Fixed

  • travis builds;
  • grammar and typos (thanks to IDEA's hints);
  • clippy warnings for the sat feature (with the updated cargo_every script).

Changed

  • move solvers benchmarks into the script;
  • optimize slice index operations with the get/get_mut;
  • optimize initial propagation (the lines closer to the edges will be solved first);
  • refactor Job -> LinePosition;
  • simplified conditional compliation for ini, xml, threaded features;
  • Point with pub fields;
  • reduce turbofish usage by specifying variable's type.

Removed

  • outdated comments;
  • unnecessary pub-s.

[0.6.2] - 2020-01-17

Fixed

  • spoj example clippy warning

Changed

  • SAT solver refactoring

[0.6.1] - 2019-11-30

Added

  • optimization for colored puzzles: exclusion of colors based on the extreme clues positions;
  • Rust logo as solved nonogram image in README;
  • coverage with codecov.io;
  • add some badges in README;
  • SAT variables and clauses number in the report ot the hardest puzzles;
  • cargo-every.py script for doing a cargo command for every combination of features.

Changed

  • simplify generation of SAT clauses for overlapping blocks;
  • move some methods of Description closer to its definition and add some tests;
  • clarified features names and usage;
  • updated --help message for batch.sh.

[0.6.0] - 2019-11-19

Fixed

  • non UTF-8 symbols into input files are ignoring.

Added

  • SAT-solver, adapted for binary and multicolor puzzles: huge speed improvement;
  • Random puzzles comparison;
  • Allow using callbacks in non-threaded environment;
  • Validation on Board::restore (to prevent showing bad results on completion);
  • Renderer::render_simple to print solution in compact;
  • ProbeImpact now stores the color of every cell that was changed during the probe.

Changed

  • some clippy warnings (in cargo clippy -- -W clippy::nursery and cargo clippy -- -W clippy::pedantic modes);
  • show diff with previous solution when multiple ones found.
  • updated and cleaned up benchmarks

[0.5.2] - 2019-08-14

Added

Fixed

  • README examples
  • get rid of some allocations by preventing premature collect-ing
  • do not store Err("Bad line") in cache anymore
  • use iterators instead of Vec's where possible
  • optimize propagation::Solver::update_line
  • clippy errors about f64 comparison: use f64::EPSILON

Updated

  • move solutions cache from Board to propagation::Solver
  • make the Priority abstraction instead of OrderedFloat<f64>
  • make the ProbeResult abstraction instead of Option to represent NewInfo/Contradiction variants
  • benchmark results (run some very long-solving puzzles)
  • use SmallVec for Point's neighbours
  • lower the logs level for some of probing and backtracking events
  • do not create the propagation solver with_point anymore, just run with (or without) a Point
  • dependencies
  • callback test as closure

[0.5.1] - 2019-07-03

Fixed

  • correctly parse the colors starting with '#', e.g. #FF00FF

[0.5.0] - 2019-07-03

Added

  • olsak is the new default format for webpbn puzzles
  • support for more formats (faase, ish, keen, makhorin, ss, syro, nin)
  • LOW_PRIORITY environment variable to prevent probing the cells with possibly low impact
  • more checks
  • implement Debug for all the structures
  • travis tests support
  • 'stat' mode for batch.sh script
  • performance comparison results as csv
  • article on habr.com

Fixed

  • remove Color::is_updated_with and Board::diff to improve performance
  • disable backtracking::Solver::explored_paths to improve performance
  • improve backtracking::SearchTree::debug to prevent high memory usage
  • add 'repository' in crate metadata

Updated

  • move all but the core dependencies into optional features (clap, env_logger, ini, xml, colored)
  • iterators refactoring
  • bench results
  • merge 'benches/batch-nonograms.org.sh' and 'benches/batch-webpbn.sh' into single script
  • remove unnecessary pub

[0.4.1] - 2019-05-19

Added

  • add ColorDesc::rgb_value to use in web renderer

Fixed

  • restore backtracking timeouts with Instant::now() by enabling std_time default feature

Updated

  • published on crates.io repository

[0.4.0] - 2019-05-09

Added

  • ability to use Board in threaded environment (--features=threaded)

Fixed

  • WASM runtime support: remove Instant::now() calls

Updated

[0.3.1] - 2019-04-12

Added

  • callbacks support

Fixed

  • optimization of probing queue: use different strategies depending of queue size
  • optimize NonogramsOrg parsing and ShellRenderer with caching

Updated

  • replace Option::unwrap with Option::expect("error message")
  • many refactoring of references
  • refactoring with clippy

[0.3.0] - 2019-04-03

Added

[0.2.0] - 2019-03-15

Added

  • Solve the black-and-white board with the line solving then probing and then backtracking
  • Parse boards from https://webpbn.com

[0.1.0] - 2019-02-12

Added

  • Initial release!
  • Parse a board from custom TOML-based format
  • Store the board
  • Print out the board in the terminal
  • Solve a single black-and-white line