Skip to content

Commit d0dd522

Browse files
committed
Add a first version of release notes.
1 parent d4c8795 commit d0dd522

File tree

1 file changed

+79
-0
lines changed

1 file changed

+79
-0
lines changed

doc/ReleaseNotes-2.2.0.txt

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

0 commit comments

Comments
 (0)