You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

79 lines
3.3 KiB

  1. Release Notes for MiniSat 2.2.0
  2. ===============================
  3. Changes since version 2.0:
  4. * Started using a more standard release numbering.
  5. * Includes some now well-known heuristics: phase-saving and luby
  6. restarts. The old heuristics are still present and can be activated
  7. if needed.
  8. * Detection/Handling of out-of-memory and vector capacity
  9. overflow. This is fairly new and relatively untested.
  10. * Simple resource controls: CPU-time, memory, number of
  11. conflicts/decisions.
  12. * CPU-time limiting is implemented by a more general, but simple,
  13. asynchronous interruption feature. This means that the solving
  14. procedure can be interrupted from another thread or in a signal
  15. handler.
  16. * Improved portability with respect to building on Solaris and with
  17. Visual Studio. This is not regularly tested and chances are that
  18. this have been broken since, but should be fairly easy to fix if
  19. so.
  20. * Changed C++ file-extention to the less problematic ".cc".
  21. * Source code is now namespace-protected
  22. * Introducing a new Clause Memory Allocator that brings reduced
  23. memory consumption on 64-bit architechtures and improved
  24. performance (to some extent). The allocator uses a region-based
  25. approach were all references to clauses are represented as a 32-bit
  26. index into a global memory region that contains all clauses. To
  27. free up and compact memory it uses a simple copying garbage
  28. collector.
  29. * Improved unit-propagation by Blocking Literals. For each entry in
  30. the watcher lists, pair the pointer to a clause with some
  31. (arbitrary) literal from the clause. The idea is that if the
  32. literal is currently true (i.e. the clause is satisfied) the
  33. watchers of the clause does not need to be altered. This can thus
  34. be detected without touching the clause's memory at all. As often
  35. as can be done cheaply, the blocking literal for entries to the
  36. watcher list of a literal 'p' is set to the other literal watched
  37. in the corresponding clause.
  38. * Basic command-line/option handling system. Makes it easy to specify
  39. options in the class that they affect, and whenever that class is
  40. used in an executable, parsing of options and help messages are
  41. brought in automatically.
  42. * General clean-up and various minor bug-fixes.
  43. * Changed implementation of variable-elimination/model-extension:
  44. - The interface is changed so that arbitrary remembering is no longer
  45. possible. If you need to mention some variable again in the future,
  46. this variable has to be frozen.
  47. - When eliminating a variable, only clauses that contain the variable
  48. with one sign is necessary to store. Thereby making the other sign
  49. a "default" value when extending models.
  50. - The memory consumption for eliminated clauses is further improved
  51. by storing all eliminated clauses in a single contiguous vector.
  52. * Some common utility code (I/O, Parsing, CPU-time, etc) is ripped
  53. out and placed in a separate "utils" directory.
  54. * The DIMACS parse is refactored so that it can be reused in other
  55. applications (not very elegant, but at least possible).
  56. * Some simple improvements to scalability of preprocessing, using
  57. more lazy clause removal from data-structures and a couple of
  58. ad-hoc limits (the longest clause that can be produced in variable
  59. elimination, and the longest clause used in backward subsumption).