# # Main authors: # Christian Schulte # # Copyright: # Christian Schulte, 2005 # # Last modified: # $Date: 2008-03-06 03:54:12 +0100 (Thu, 06 Mar 2008) $ by $Author: schulte $ # $Revision: 6433 $ # # This file is part of Gecode, the generic constraint # development environment: # http://www.gecode.org # # Permission is hereby granted, free of charge, to any person obtaining # a copy of this software and associated documentation files (the # "Software"), to deal in the Software without restriction, including # without limitation the rights to use, copy, modify, merge, publish, # distribute, sublicense, and/or sell copies of the Software, and to # permit persons to whom the Software is furnished to do so, subject to # the following conditions: # # The above copyright notice and this permission notice shall be # included in all copies or substantial portions of the Software. # # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, # EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND # NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE # LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION # OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION # WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. # # # This file contains entries for changelogs # # There are two kinds of entries: one marking releases and the others # being actual entries. # # All the lines for describing entries must start at the beginning. # # A release is described as follows: # [RELEASE] # Version: # Date: # [DESCRIPTION] # ... All the text up to the next [ENTRY] is included # as description # # An entry is described as follows: # [ENTRY] # Module: # kernel|search|int|set|cpltset|example|minimodel|iter|support| # test|gist|other # What: bug|documentation|performance|new|removed|change # Rank: minor|major # Bug: # Thanks: # [DESCRIPTION] # ... All the text up to the next [ENTRY] or [RELEASE] is included # as description # [RELEASE] Version: 2.1.1 Date: 2008-03-06 [DESCRIPTION] This is a bugfix release. [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Non-shared copying of dfa was broken (matters only for parallel execution). [ENTRY] Module: kernel What: bug Rank: major [DESCRIPTION] The generated med_updated function was incorrect, resulting in potential crashes of programs that use SetVars. [ENTRY] Module: cpltset What: documentation Rank: minor [DESCRIPTION] The CpltSet variables are now in the correct documentation group. [ENTRY] Module: gist What: bug Rank: minor [DESCRIPTION] Fixed redraw artefacts on Windows. [ENTRY] Module: other What: bug Rank: minor [DESCRIPTION] Fixed boost serialization. [ENTRY] Module: kernel What: bug Rank: minor [DESCRIPTION] Made the constructor of Reflection::Var explicit, otherwise overloading for output stream operators does not work as expected. [RELEASE] Version: 2.1.0 Date: 2008-02-29 [DESCRIPTION] This release makes two essential contributions: a partly reimplemented kernel that is faster, is simpler, and uses less memory and lots of small and not so small fixes. This release is the first release where really everything that we can test (rather than everything that we initially believed to matter) has been systematically tested. So, better switch now to 2.1.0! Apart from that, the value range for variables has been increased (basically, 32 bits minus three values, so that is 32 bits), the reflection API is now fully functional and no longer considered experimental, and we have the usual small additions. [ENTRY] Module: int What: new Rank: minor [DESCRIPTION] Added interface to extensional constraints defined by TupleSets with BoolVars. [ENTRY] Module: minimodel What: bug Rank: major [DESCRIPTION] Reimplemented linear expressions from scratch, they were just hopelessly screwed. [ENTRY] Module: minimodel What: bug Rank: minor [DESCRIPTION] Added work-around for compiler bug in MSVC. [ENTRY] Module: minimodel What: new Rank: minor [DESCRIPTION] Support reified linear expressions with Boolean variables. [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] Throw an exception if variables occur multiply for array-based channel constraints. [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Fixed multiplication propagator for x*y=x. [ENTRY] Module: search What: change Rank: major [DESCRIPTION] All search engines now take an option value for configuration instead of individual arguments for recomputation, stop objects, etc. [ENTRY] Module: minimodel What: removed Rank: minor [DESCRIPTION] Removed scheduling abstractions. [ENTRY] Module: int What: removed Rank: minor [DESCRIPTION] Removed extensional constraints with offset arguments. [ENTRY] Module: minimodel What: new Rank: minor [DESCRIPTION] All minimodel functionality now understands both IntConLevel and PropKind arguments. [ENTRY] Module: set What: bug Rank: major [DESCRIPTION] Fixed bugs in several set constraints: rel(Space*,SetVar,IntRelType irt,IntVar) for irt=IRT_NQ, rel(Space*,SetVar,SetOpType sot,const IntSet&,SetRelType srt,SetVar) for sot=SOT_MINUS, srt=SRT_SUP, selectDisjoint, selectUnion with constant IntSet arguments, dom with SRT_NQ. [ENTRY] Module: kernel What: bug Rank: minor [DESCRIPTION] Fixed bug in unreflection of empty VarArrays. [ENTRY] Module: linear What: bug Rank: major [DESCRIPTION] Fixed overflow checking error in linear constraints. [ENTRY] Module: minimodel What: new Rank: minor [DESCRIPTION] Added sqrt function. [ENTRY] Module: int What: new Rank: minor [DESCRIPTION] Added sqrt propagator. [ENTRY] Module: int What: new Rank: minor [DESCRIPTION] Added sqr post function. [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] The overloaded versions of dom for variable arrays could not be resolved automatically. [ENTRY] Module: int What: new Rank: minor [DESCRIPTION] Added missing branching for INT_VAR_SIZE_DEGREE_MIN and INT_VAR_SIZE_DEGREE_MAX for Boolean variables. [ENTRY] Module: minimodel What: bug Rank: major Thanks: Stanimir Dragiev [DESCRIPTION] Fixed bug in posting linear expressions. [ENTRY] Module: int What: performance Rank: minor [DESCRIPTION] IntSet have been reimplemented for efficiency. [ENTRY] Module: other What: documentation Rank: minor Thanks: Martin Mann [DESCRIPTION] Function prototypes are now highlighted in the detailed function documentation. [ENTRY] Module: int What: removed Rank: minor [DESCRIPTION] The offset arguments for element constraints have been removed, as you can simply add dummy elements to the array to achieve the same effect. [ENTRY] Module: set What: removed Rank: minor [DESCRIPTION] The offset arguments for selection constraints have been removed, as you can simply add dummy elements to the array to achieve the same effect. [ENTRY] Module: other What: new Rank: major [DESCRIPTION] The serialization library now contains a registry of all the Gecode post functions. This makes interfacing to Gecode much easier. The registry is automatically generated from the post functions defined in gecode/int.hh and gecode/set.hh. [ENTRY] Module: kernel What: change Rank: minor [DESCRIPTION] Cleaned up reflection. Unreflection is now part of the kernel instead of the serialization library. Branchings now provide a human-readable description of a BranchingDesc. The name function of a Propagator has been renamed to ati (actor type identifier). All reflection is now const where possible. Unreflection of variables now checks dynamically that the variable types match. Unreflection of propagators checks the number of arguments. A tutorial-style section on reflection has been added to the documentation. [ENTRY] Module: set What: change Rank: major [DESCRIPTION] The limits for set variables have been moved from Limits::Set to Set::Limits. The range of set variables has been adapted to the range of integer variables. For example, on a standard machine (regardless of 32 or 64 bits), a set can hold values from -2^30+2 to 2^30-2, its maximum cardinality therefore is 2^31-3. [ENTRY] Module: int What: change Rank: major [DESCRIPTION] The limits for set variables have been moved from Limits::Set to Set::Limits. The range of integer variables have been extended by one bit. For example, on a standard machine (regardless of 32 or 64 bits), the largest possible integer value for an integer variable is 2^31-2, the smallest -2^31+2. With other words, only the integer values 2^31-1, -2^31, and -2^31+1 are missing from the two-complement representation (and we will never use these values for the sake of mental sanity. We promise.). [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Distinct with integer offsets checks accurately for overflow now. [ENTRY] Module: int What: performance Rank: minor [DESCRIPTION] Boolean variables consume 20% less memory. [ENTRY] Module: kernel What: change Rank: major [DESCRIPTION] Only stable and non-failed spaces can be cloned, otherwise Space::clone raises an exception. This makes cloning and propagation fully orthogonal. To emulate the old behavior, just execute Space::status before Space::clone. [ENTRY] Module: kernel What: change Rank: minor [DESCRIPTION] The number of propagators and branchings can be accurately retrieved from both failed and non-stable spaces. [ENTRY] Module: examples What: new Rank: minor [DESCRIPTION] Added an example that interprets a JavaScript program and runs a search of the model that the program encodes. This is an example of how to use the JavaScript interpreter. A simple JavaScript model for n-Queens has been added, too. [ENTRY] Module: kernel What: new Rank: minor [DESCRIPTION] A generic variable class has been added that can be used for interfacing. It can store arbitrary Gecode variables (e.g. IntVar and SetVar), and cast them back using a run-time type check. The update, reflection, and output operations are implemented through the reflection registry. [ENTRY] Module: other What: new Rank: major [DESCRIPTION] (De-)Serialization to and from JavaScript added. [ENTRY] Module: other What: change Rank: major [DESCRIPTION] Both the cost and propagate function of a propagator take the current modification event delta as input. Likewise, retrieving the modification event for a particular View must use the static function View::me with the passed modification event delta. Again, this feature committed the kernel to a particular implementation which might not be available in the future. [ENTRY] Module: kernel What: change Rank: minor [DESCRIPTION] Views and variables do not any longer reveal whether they have been modified: this feature committed the kernel to a particular implementation which might not be available in the future. [ENTRY] Module: example What: new Rank: minor [DESCRIPTION] Simple Singleton Arc Consistency pre-processing has been added as an optional step for examples. [ENTRY] Module: kernel What: change Rank: major [DESCRIPTION] The kernel has undergone some cleanups and improvements (much of it got actually reimplemented): - Automatically generated stubs for variable implementations are directly inlined into the kernel. This improves performance, but more importantly, lifts some limits on the number of variables. Now, the only limit is that the sum of the ceiling of the logarithms of the number of modification events of all variables does not exceed 32 (as an estimate, the kernel now can handle around 10 to 16 variable types). Moreover, if the need for more variable types arises this is straightforward to do. - The addition of new variable types for users has been simplified. - The main propagation loop has been entirely rewritten (much much simpler). Now, the kernel does not optimize any longer for the case that a variable is modified more than once during propagator execution. While this changes the asymptotic complexity, it reduces the propagator execution overhead by up to 30%. And a propagator is still free to make sure that a variable is modified only once (many propagators do that already). - Variable implementations became smaller by one word. Now variable implementations are optimal in the sense that no additional memory is needed for cloning or book-keeping, the memory required for propagation is sufficient. - Spaces have lost some weight as memory for datastructures only used during cloning or propagation are shared (saves some 25% of memory per space). [ENTRY] Module: kernel What: change Rank: major [DESCRIPTION] Propagator modification events have been renamed to modification event deltas (because that is what they are). [ENTRY] Module: kernel What: change Rank: minor [DESCRIPTION] To not confuse variable implementations with variables, variable implementations are now always called VarImp, and not Variable. [ENTRY] Module: gist What: new Rank: major [DESCRIPTION] The %Gecode Interactive Search Tool (Gist), a Qt-based graphical search engine, is now part of the main %Gecode distribution. It is currently included as an experimental beta preview and may not be completely stable yet. [RELEASE] Version: 2.0.1 Date: 2008-02-07 [DESCRIPTION] This is a bug-fix only release. Very unfortunately, it fixes three serious bugs in search (LDS, Restart, and assignment branchings). We highly encourage you to switch to Gecode 2.0.1 as soon as possible. [ENTRY] Module: test What: bug Rank: minor [DESCRIPTION] Fixed memory leak in reflection tests. [ENTRY] Module: set What: bug Rank: minor [DESCRIPTION] Fixed memory leak in set projection propagators. [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Fixed memory leak in IntSet. [ENTRY] Module: test What: new Rank: major [DESCRIPTION] Added comprehensive tests for all search engines. [ENTRY] Module: search What: bug Rank: major [DESCRIPTION] Assignment branchings wrongly reported that they feature two alternatives rather than one. [ENTRY] Module: search What: bug Rank: major Thanks: Stefano Gualandi [DESCRIPTION] LDS had numerous quirks. It has been fixed and greatly improved: it detects when the entire search tree has been probed, independent of the maximal discrepancy. [ENTRY] Module: search What: bug Rank: major Thanks: Stefano Gualandi [DESCRIPTION] Restart was broken in case the problem failed immediately with propagation only, both when being initialized or when requesting a next solution. [ENTRY] Module: iter What: fix Rank: minor Thanks: David Barton [DESCRIPTION] Changed Ranges::Diff to make older versions of gcc happy. [ENTRY] Module: other What: fix Rank: minor Thanks: David Barton [DESCRIPTION] Fixed linking order so that static linking works again. [ENTRY] Module: int What: new Rank: minor Thanks: Mohamad Rabbath [DESCRIPTION] Re-added reified linear constraints for Boolean variables. [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Domain-consistent abs could crash in certain (extremely rare) border cases. [ENTRY] Module: kernel What: bug Rank: major [DESCRIPTION] Static initialization order was undefined, making reflection work unreliably. In particular, linking Gecode statically did not work. [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Initializing an IntVar with an empty IntSet did not throw the appropriate exception but crashed. [ENTRY] Module: kernel What: bug Rank: minor [DESCRIPTION] Exceptions did not have rtti information when compiled with gcc and visibility, which meant that they could not be caught. [ENTRY] Module: example What: bug Rank: minor Thanks: Helmut Simonis [DESCRIPTION] Fixed a bug and quirk in %Kakuro puzzles. [ENTRY] Module: kernel What: change Rank: minor [DESCRIPTION] The VarMapIter can now return both a specification and the actual VarBase* of the currently iterated variable. [ENTRY] Module: other What: bug Rank: minor [DESCRIPTION] Revived boost serialization. The serialization functions will be compiled if Gecode is configured with --with-boost. [ENTRY] Module: kernel What: performance Rank: minor [DESCRIPTION] Be less aggressive in increasing size of heap chunks. [ENTRY] Module: int What: documentation Rank: minor [DESCRIPTION] Fixed bug in documentation of table-based extensional constraint. [ENTRY] Module: kernel What: bug Rank: minor [DESCRIPTION] Fixed a bug in the hash function for pointers, which could return negative array indices. [RELEASE] Version: 2.0.0 Date: 2007-11-14 [DESCRIPTION] As witnessed by the version number change, this is a major release with too many changes, fixes, and additions to mention them all: please consult the changelog. The highlights are: - New propagators: channeling between Integer variable and array of Boolean variables, circuit, table constraint (extensional), incremental regular constraint (extensional), incremental Boolean linear constraints - Boolean variables have a dedicated implementation: twice as fast, half the memory - Advisors for incremental propagation (see: Lagerkvist, Schulte, Advisors for Incremental Propagation, CP 2007) - Many crucial performance and scalability improvements: memory management, memory footprint of propagators - Many cleanups and more documentation, many new examples - New set variables with complete domain representation (CpltSetVar) [experimental] - A reflection API to query spaces about their propagators [experimental] The features marked as experimental are all functional, but might be revised in the next releases. As %Gecode 2.0.0 is a major release, you might have to adapt your programs: \ref PageHowToChange_2 "How to Change to Gecode 2.0.0". [ENTRY] Module: int What: new Rank: major [DESCRIPTION] Added table-based extensional constraint. [ENTRY] Module: other What: new Rank: minor [DESCRIPTION] When compiling with gcc, the default visibility of symbols in the generated dynamic library is set to hidden. [ENTRY] Module: set What: removed Rank: minor [DESCRIPTION] Removed buggy distinct propagator for finite sets. [ENTRY] Module: example What: new Rank: minor Thanks: Helmut Simonis [DESCRIPTION] New example: %Kakuro puzzles. [ENTRY] Module: other What: new Rank: minor Thanks: Martin Mann [DESCRIPTION] Added dist and distdir targets for creating source distribution. [ENTRY] Module: other What: new Rank: minor Thanks: Filip Konvicka [DESCRIPTION] On windows with MSVC, always build program database files to ease debugging of applications using %Gecode (files are also included in packages). [ENTRY] Module: int What: new Rank: minor [DESCRIPTION] Added new variable selection based on largest or smallest quotient of size and degree. [ENTRY] Module: other What: new Rank: minor [DESCRIPTION] Variable arrays, view arrays, and argument arrays can directly be printed on standard output streams. [ENTRY] Module: other What: change Rank: minor [DESCRIPTION] The structure of includes has been drastically simplified. Support for iterators ("gecode/iter.hh") is automatically included with integers ("gecode/int.hh") and sets ("gecode/set.hh"). Likewise, all support functionality becomes available by including "gecode/support.hh" (one can assume that this is included in "gecode/kernel.hh"). [ENTRY] Module: kernel What: change Rank: minor [DESCRIPTION] Shared arrays are now available in the kernel (where they properly belong). This entails that they are available in the Gecode namespace and not in Gecode::Support. [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] The extensional constraint specified by a DFA or a regular expression (formerly known as regular) is now named "extensional" rather than "regular". [ENTRY] Module: minimodel What: bug Rank: minor [DESCRIPTION] Fixed small quirk in posting an absolute propagator via a function. [ENTRY] Module: set What: new Rank: minor [DESCRIPTION] Added channeling propagator between a SetVar and a BoolVarArray that propagates the characteristic function of the set to the Boolean variables. [ENTRY] Module: set What: performance Rank: minor [DESCRIPTION] Changed the datastructure for set variables to use singly-linked lists. [ENTRY] Module: other What: change Rank: minor [DESCRIPTION] The values (and types) for selecting how to branch have been made uniform for all variables types: they start with INT_ (or SET_ or CPLTSET_), followed by either VAL or VAR and the respective strategy. [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] The interface for the global cardinality constraint has been simplified. The constraint is now called count. [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] Regular expressions (REG) have been moved from the integer module to the minimodel module. [ENTRY] Module: example What: change Rank: major [DESCRIPTION] Most examples have been cleaned up. [ENTRY] Module: example What: change Rank: minor [DESCRIPTION] Parsing of commandline arguments has been completely redone and is much more extensible and flexible. [ENTRY] Module: other What: change Rank: minor [DESCRIPTION] All of %Gecode has been put under the MIT license (which the previous license was a simple rewording of). [ENTRY] Module: other What: bug Rank: minor [DESCRIPTION] Removed huge number of casts that could (only potentially) compromise portability. [ENTRY] Module: set What: new Rank: minor [DESCRIPTION] Finite set projectors can now be specified using formulas, in addition to set expressions. [ENTRY] Module: cpltset What: new Rank: major [DESCRIPTION] Finite integer set variables with complete domain representation, based on binary decision diagrams (BDDs), have been added as a new variable type. [ENTRY] Module: kernel What: new Rank: major [DESCRIPTION] A reflection API has been added, which allows querying spaces about the variables and propagators they contain. [ENTRY] Module: kernel What: bug Rank: major [DESCRIPTION] Branching ids were not properly initialized. This was a serious problem if you posted branchings in spaces other than the root space. [ENTRY] Module: int What: change Rank: major [DESCRIPTION] Iterator-based domain operations have been renamed, reimplemented, and extended. Now operations for both range and value iterators are supported and the operations can be told to perform more efficient destructive updates. [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] Sortedness constraints have been renamed to sorted constraints. [ENTRY] Module: kernel What: change Rank: minor [DESCRIPTION] VarArrays can now be resized dynamically. [ENTRY] Module: int What: performance Rank: major [DESCRIPTION] Boolean linear equations and inequalities with constant right-hand sides use constant time propagators whenever appropriate (linear time with less overhead and memory for propagators with few variables). [ENTRY] Module: kernel What: new Rank: major [DESCRIPTION] Added advisors as an abstraction for incremental propagation: advisors are executed for their propagator whenever their view changes. Advisors, when not being used, add one word of overhead to each variable and slow down the system in the worst case by less than 1%. In average, no slowdown can be observed. [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Fixed a border-case bug for n-ary Boolean conjunction and disjunction. [ENTRY] Module: kernel What: new Rank: minor [DESCRIPTION] A new propagation condition PC_GEN_NONE (and hence, PC_INT_NONE, ...) has been introduced. Propagator patterns with this propagation condition now do not create any subscriptions. [ENTRY] Module: int What: performance Rank: major [DESCRIPTION] The regular constraint has been reimplemented, the new version runs more than twice as fast. [ENTRY] Module: example What: new Rank: minor [DESCRIPTION] Added a model for the traveling salesman problem, mostly intended to exercise the new circuit constraint (as the model is not very competitive). [ENTRY] Module: kernel What: new Rank: major [DESCRIPTION] Support for reference-counted shared objects added: they handle both reference counting as well as non-shared copying. This fixes some bugs with the handling of shared arrays, integer sets, and finite automata. [ENTRY] Module: example What: bug Rank: minor [DESCRIPTION] Examples reported wrong number of propagator invocations (the invocations for problem setup were missing). [ENTRY] Module: kernel What: new Rank: major [DESCRIPTION] Added classes for shared objects and handles. Handles to shared objects allow to either share copies among spaces when being copied or to create a new shared copy, if requested. [ENTRY] Module: int What: new Rank: minor Thanks: Martin Mann [DESCRIPTION] Added a new version of count (and also atleast, atmost, exactly) that counts the number of variables equal to integers in an array. [ENTRY] Module: example What: bug Rank: minor Bug: 50 [DESCRIPTION] The number of colors in graph-color was off by one. [ENTRY] Module: int What: new Rank: major [DESCRIPTION] Added channel constraints that channel an integer variable to either a single or an array of Boolean variables. [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Fixed bug in copying of n-ary or-propagator for a special boundary case. [ENTRY] Module: int What: new Rank: minor [DESCRIPTION] Relaxed sharing restrictions for channel, in particular channel(this, x, x) is allowed. [ENTRY] Module: int What: new Rank: major [DESCRIPTION] Added propagators for the circuit constraint. [ENTRY] Module: kernel What: performance Rank: minor [DESCRIPTION] Improved automatic memory management on Windows platforms. [ENTRY] Module: int What: performance Rank: minor [DESCRIPTION] Domain consistent distinct and channel allocate memory from the space heap now. Much simpler. [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] The Boolean tell operations one_none and zero_none now also return a ModEvent and hence must be checked for failure. This is needed for simpler advisors. [ENTRY] Module: kernel What: performance Rank: major [DESCRIPTION] The memory management policies have been completely reworked. Now memory requests are much more regular. Hence, memory is much more likely to be returned to the operating system. Furthermore, the flush member functions for actors have been removed (they were unneeded) and actors and spaces now have allocated member functions for returning how much memory is allocated by a space. Moreover, the memory reported by some propagators has been ignored. Note that this flaw did not affect the benchmark figures on the %Gecode webpage. [ENTRY] Module: int What: performance Rank: minor [DESCRIPTION] The multiplication uses integer precision if possible for better performance. [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] Integer and Boolean variables are now guaranteed to be inspectable (that is, all const member functions work on them), even though a space is failed. However, the variables might have been modified during a tell operation that has failed. [ENTRY] Module: minimodel What: change Rank: major [DESCRIPTION] Linear expressions and relations can also be created from Boolean variables, with the restriction that Boolean relations cannot be reified. [ENTRY] Module: int What: change Rank: major [DESCRIPTION] Boolean variables (and hence Boolean views) do not any longer share the implementation with integer variables. That has the following consequences: - Boolean variables are not any longer integer variables. The same holds true for arrays of variables. - All constraints that make sense for both Boolean and integer variables have post functions that support both integer and Boolean variables. - Memory for Boolean variables is reduced by 50% and performance increases in problems with many Boolean variables by up to 50%. [ENTRY] Module: int What: new Rank: major [DESCRIPTION] Added propagators for linear constraints over Boolean variables, in particular specialized and efficient versions for non-unit coefficients. [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] The linear constraints are now more careful (that is, they will use more efficient versions more often if it is safe) to determine whether overflow occurs and which precision (integer or double) should be chosen. [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] The element constraints now accept an additional offset argument. [ENTRY] Module: set What: new Rank: minor [DESCRIPTION] Added selection and reified relation constraints with constant sets. [ENTRY] Module: set What: change Rank: minor [DESCRIPTION] Slightly stronger inferences for the finite set sequence and selection constraints. [ENTRY] Module: example What: new Rank: minor [DESCRIPTION] New example: the balanced academic curriculum problem (problem 030 from CSPlib). [ENTRY] Module: set What: bug Rank: minor [DESCRIPTION] Fixed the n-ary partition propagator to handle overflow of the sum of cardinalities correctly. [ENTRY] Module: kernel What: bug Rank: minor [DESCRIPTION] Subscription to constant views now should use the propagate member function from a variable implementation: it guarantees execution of a propagator at least once (int and set views have been adopted accordingly). [ENTRY] Module: int What: bug Rank: major Bug: 48 [DESCRIPTION] Branching on maximum regret would always crash on non-range domains. [ENTRY] Module: set What: change Rank: minor [DESCRIPTION] The finite set selection propagators accept an additional argument that specifies where the indexing should start. It should make some models more natural to express, and helps in porting code from other systems, such as Prolog or Mozart. In addition, the selectUnion propagator is now hand-written again, resulting in better performance. [ENTRY] Module: int What: change Rank: major [DESCRIPTION] All Boolean constraints got a new and regular interface. Rather than providing different post functions for the different constraints, the single post function rel is used: the Boolean operation then is described by a value of type BoolOpType. In addition, all Boolean propagators have been reimplemented for better performance and less memory use. [ENTRY] Module: test What: new Rank: minor [DESCRIPTION] Added simple testing for branchings. [ENTRY] Module: kernel What: change Rank: major [DESCRIPTION] The way how propagators report subsumption and partial fixpoints has changed. Now, a propagator must first call dispose (which then cancels subscriptions and possibly frees external resources) and only then can return that the propagator is subsumed. For that purpose a new function Gecode::ES_SUBSUMED has been defined. Likewise, ES_FIX_PARTIAL and ES_NOFIX_PARTIAL are functions rather than member functions of Gecode::Propagator. The benefit is that this saves memory and is more efficient. [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] The use of the consistency options were a little confusing, now the rule is: the level of consistency increases from ICL_VAL to ICL_BND to ICL_DOM. [ENTRY] Module: minimodel What: performance Rank: minor [DESCRIPTION] Boolean expressions erroneously decomposed into ternary Boolean constraints, while not incorrect rather inefficient for large Boolean expressions. [ENTRY] Module: kernel What: change Rank: minor [DESCRIPTION] Made all macros type safe. [ENTRY] Module: kernel What: new Rank: major [DESCRIPTION] Added macro GECODE_REWRITE for rewriting propagators. It is strongly advised to always use this macro! [ENTRY] Module: example What: bug Rank: minor Bug: 46 [DESCRIPTION] Orientation of Sudokus now match the orientation in the specification-file. [ENTRY] Module: example What: new Rank: minor [DESCRIPTION] New example: MineSweeper. [ENTRY] Module: example What: new Rank: minor [DESCRIPTION] New example: Domino. [ENTRY] Module: set What: bug Rank: minor [DESCRIPTION] Set projectors could subscribe with bogus propagation conditions. [ENTRY] Module: set What: performance Rank: minor [DESCRIPTION] Performance of the tell operations on finite set variables was improved. Especially the intersect operation benefits from this. [ENTRY] Module: int What: new Rank: minor [DESCRIPTION] The element constraint now also supports integer values as result. [ENTRY] Module: kernel What: new Rank: minor [DESCRIPTION] Add a generic class for assignments during search (similar to generic branchings for views and values). [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] All branching classes for value and view selection are now parametric. [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] Boolean variables cannot longer be initialized from an integer variable. If needed, a channel propagator must be posted (added). [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] The equality constraints have been replaced by a variant of rel. [ENTRY] Module: kernel What: change Rank: minor [DESCRIPTION] The propagator abstractions Inhom* have been renamed to Mix*. [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] The operations t_one, t_one_none, t_zero, t_zero_none for Boolean views have been renamed to one, one_none, zero, zero_none. [ENTRY] Module: kernel What: performance Rank: major [DESCRIPTION] Explicit disposal of actors has been reimplemented (the old design was nothing but darn stupid). The memory overhead of propagators is reduced by 40% for most propagators and 20% for all. That is, a binary propagator takes 30% less memory and a ternary propagator takes 25% less memory. Programs with many binary or ternary propagators can run up to 20% faster. [ENTRY] Module: kernel What: change Rank: minor [DESCRIPTION] Propagators and branchings that require disposal when a space is deleted must now be explicitly registered via a force function and explicitly deregistered by an unforce function. [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Fixed memory leak in reified dom constraint. [ENTRY] Module: set What: bug Rank: minor [DESCRIPTION] Fixed memory leak in distinct constraint for sets. [ENTRY] Module: example What: new Rank: major [DESCRIPTION] New example: Pentominoes. The example uses extensional constraints specified as regular expressions to place irregular-shaped pieces on a board. [RELEASE] Version: 1.3.1 Date: 2006-10-25 [DESCRIPTION] This is a minor release which fixes a major bug (the first real serious bug). Please update as soon as possible. [ENTRY] Module: kernel What: bug Rank: major Thanks: Rafael Meneses [DESCRIPTION] Branch&Bound search with ViewValBranchings (all standard branchings) together with batch recomputation was severely broken. The problems ranged from wrong search trees (missing solutions) to segmentation faults. The fix changes the way assigned variables are removed from the array in a ViewValBranching. [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Bounds-consistent distinct catches border case when an assigned variable during bounds propagation leads to value removal for value propagation. [ENTRY] Module: int What: performance Rank: minor [DESCRIPTION] Bounds-consistent distinct eliminates assigned variables more aggressively (can save up to 10% runtime in some cases). [ENTRY] Module: int What: bug Rank: minor Thanks: Alejandro Arbelaez [DESCRIPTION] IntVar::init now also raises exceptions for illegal domain specifications. [RELEASE] Version: 1.3.0 Date: 2006-09-19 [DESCRIPTION] This release adds a compiler for finite set projectors and provides new infrastructure making it easier to add new variable domains. In addition, it contains recent bug fixes and minor improvements. [ENTRY] Module: set What: new Rank: major [DESCRIPTION] Compiler for finite set projectors. Given a specification of a finite set constraint as a projector set, it generates C++ code for the corresponding propagator. Together with the dynamic propagator for finite set projectors, this implements the backend of the technique described in the paper "Generating Propagators for Finite Set Constraints" (Tack, Schulte, Smolka; CP 2006.). [ENTRY] Module: other What: new Rank: minor Thanks: Jorge Marques Pelizzoni [DESCRIPTION] Also pass options for linking standard libraries for MSVC. [ENTRY] Module: other What: bug Rank: minor [DESCRIPTION] The pkg-config files now contain the correct path if you configured to the default prefix (i.e. /usr/local). [ENTRY] Module: minimodel What: new Rank: minor [DESCRIPTION] Added aliases lex, atleast, atmost, and exactly for the count constraint. [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] Renamed lex constraint to rel (as it also supports equality and disequality). [ENTRY] Module: int What: performance Rank: minor [DESCRIPTION] Make count constraints with integer number of equal occurrences more incremental using dynamic subscriptions (gives a 20-30% speedup). [ENTRY] Module: example What: new Rank: minor [DESCRIPTION] Added an example for solving Black Hole patience games. [ENTRY] Module: kernel What: new Rank: major [DESCRIPTION] Subscription to variables now features an additional and optional Boolean argument whether the propagator is to be processed. This allows dynamically creation of subscriptions during propagation. [ENTRY] Module: other What: new Rank: minor [DESCRIPTION] New configure switches: --enable-audit to include audit code, which may contain expensive checks of internal invariants or alternative, checked implementations of critical parts of %Gecode. --enable-universal and --with-sdk, to support building universal binaries on Mac OS X. [ENTRY] Module: kernel What: new Rank: minor [DESCRIPTION] Variables can now be deallocated when the Space is deallocated (for example in case of failure). This is important in case a variable implementation needs to reference external resources. Deallocation can be switched on in the high-level description used for generating the variable implementation. [ENTRY] Module: minimodel What: bug Rank: minor Thanks: Rafael Meneses [DESCRIPTION] Under certain conditions (posting in a failed space), the post function returned uninitialized variables. [ENTRY] Module: kernel What: performance Rank: major [DESCRIPTION] Variable implementations are now generated from a high-level description (taking care of all aspects relating to modification events and propagation conditions). While simplifying the implementation of new variable domains considerably, this also can, in lucky cases, deliver a speed-up of 5%. [ENTRY] Module: kernel What: performance Rank: major [DESCRIPTION] Allocate subscriptions in separate memory area. Can speedup execution in some (but few) cases by up to 15-20%. [ENTRY] Module: int What: documentation Rank: minor Bug: 43 [DESCRIPTION] Fixed documentation problem due to doxygen... [ENTRY] Module: search What: new Rank: major [DESCRIPTION] Branch-and-bound search now interleaves recomputation with adding bounding constraints. This can prune the search tree much earlier: instead of recomputing many nodes from the same copy node and then adding a constraint that fails all these nodes, it might be possible to already fail the copy node directly. In principle, the difference can be exponential, however for examples we tried the effect is minor. [ENTRY] Module: kernel What: bug Rank: minor [DESCRIPTION] Now commits can be interleaved with adding new constraints during batch recomputation. This also entails that commit does not raise an exception when applied to an already failed space (it is simply ignored). The bug could not be observed (unless you did some very fancy search engines yourself) and one could actually see it as an extension. [RELEASE] Version: 1.2.2 Date: 2006-07-25 [DESCRIPTION] This release switches recomputation back on and removes some experimental code that had sneaked into the system... [ENTRY] Module: kernel What: performance Rank: major [DESCRIPTION] Some experimental code had sneaked into the release, slowing down the system by more than 10%... [ENTRY] Module: search What: bug Rank: major [DESCRIPTION] With the changes to search in %Gecode 1.2.1 recomputation was actually almost switched off... [ENTRY] Module: int What: performance Rank: minor [DESCRIPTION] Improve performance of domain-consistent distinct (by providing special ternary version). Can reduce runtime by 10-20% for some examples. [ENTRY] Module: int What: performance Rank: minor [DESCRIPTION] Cut memory requirements for element (for integer arrays) by half. [ENTRY] Module: example What: new Rank: minor [DESCRIPTION] Added stress test for element constraint (originally due to Neng-Fa Zhou). [ENTRY] Module: example What: new Rank: minor [DESCRIPTION] Added stress test for min constraint. [ENTRY] Module: example What: new Rank: minor [DESCRIPTION] Added possibility to stop the search for solutions in examples based on the time taken, the number of fails, or both. [ENTRY] Module: example What: new Rank: minor [DESCRIPTION] Added an example for solving Peacable co-existing armies of %Queens. [RELEASE] Version: 1.2.1 Date: 2006-07-19 [DESCRIPTION] In addition to the usual fixes and improvements, the biggest change is that all branchings now must support branching descriptions. This also entails straightforward changes (simplifications) to search-related space operations and to the implementation of search engines. [ENTRY] Module: kernel What: new Rank: minor [DESCRIPTION] Added a macro GECODE_NEVER that assert that this command is never executed. This is preferred over assert(false) as it is used for optimization, if supported by a compiler (for example, Microsoft Visual C++). [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Fixed fixpoint detection bug in n-ary min and max propagators. [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Min and max propagators now correctly handle cases such as min(x,y)=x. [ENTRY] Module: int What: removed Rank: minor [DESCRIPTION] Removed bounds-consistent propagation for count constraint (not worth the trouble, just use domain-consistent). [ENTRY] Module: kernel What: change Rank: minor Thanks: Martin Mann [DESCRIPTION] The ViewValBranching class now passes the home space to all member functions used in selecting the view and the value. [ENTRY] Module: set What: bug Rank: minor [DESCRIPTION] Fixed fixpoint detection for n-ary partition propagator. [ENTRY] Module: set What: new Rank: major [DESCRIPTION] Added finite set projection propagators. They allow to propagate all finite set constraints expressible as finite set projectors, including negated and reified constraints. [ENTRY] Module: support What: new Rank: minor [DESCRIPTION] Added simple class encapsulating a linear congruential pseudo-random number generator. [ENTRY] Module: kernel What: change Rank: major [DESCRIPTION] The interface for branchings has changed considerably, reflecting the fact now that all branchings must support branching descriptions. This is also reflected in the Space::status operation which has its arguments reversed and corrected const qualifiers on its arguments. But the good news is that it is considerably simpler than before. [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Assignment branchings (that is, branchings with a single alternative) could possibly take the wrong values for assignment during recomputation. [ENTRY] Module: kernel What: change Rank: major [DESCRIPTION] The status operation does not any longer accept an argument for the number of alternatives. The number of alternatives is now available from a branching description (where it is passed upon creation of the description). This reflects the fact that branching descriptions are mandatory now. [ENTRY] Module: search What: bug Rank: major [DESCRIPTION] Fixed a serious bug where during recomputation the search stack was always inspected behind the last element: the reason why recomputation never crashed has been that stacks always keep one element extra for optimization. So, serious bug but looks as if no one stumbled over this... [ENTRY] Module: kernel What: bug Rank: minor [DESCRIPTION] As Boolean variables can be derived from integer variables, the assumption that a not yet assigned Boolean variable can not be modified is wrong. [ENTRY] Module: other What: documentation Rank: minor [DESCRIPTION] Generate one page per version released in changelog. [ENTRY] Module: kernel What: change Rank: minor Bug: 41 [DESCRIPTION] Change exceptions thrown by %Gecode to be compliant with C++ exceptions. [ENTRY] Module: other What: bug Rank: minor Bug: 42 [DESCRIPTION] Renamed macros so as to avoid nameclashes (all macros start with GECODE_). [ENTRY] Module: search What: bug Rank: minor [DESCRIPTION] Search engines now correctly count the number of propagation steps including propagation that occurs when adaptive recomputation creates additional clones. [ENTRY] Module: search What: change Rank: major [DESCRIPTION] Branchings now must return branching descriptions and commit operations also insist on being provided with branching descriptions. This change reflects that batch recomputation is of vital importance for efficiency in %Gecode. [ENTRY] Module: int What: performance Rank: major [DESCRIPTION] Make Boolean linear constraints with constant right hand sides more incremental using dynamic subscriptions (gives a 20-30% speedup). [ENTRY] Module: minimodel What: performance Rank: minor [DESCRIPTION] Take advantage of specialized Boolean propagators in Boolean expressions and relations. [ENTRY] Module: int What: performance Rank: minor [DESCRIPTION] Made n-ary Boolean conjunction and disjunction more incremental by using dynamic subscriptions. [ENTRY] Module: int What: performance Rank: minor [DESCRIPTION] Provide special versions of Boolean propagators optimizing cases where n-ary disjunctions are true. [ENTRY] Module: int What: performance Rank: minor [DESCRIPTION] Change implementation of Boolean propagators from conjunction to disjunction so that disjunction can be used as special case for Boolean sum with inequalities. [RELEASE] Version: 1.2.0 Date: 2006-06-20 [DESCRIPTION] This release makes quite some drastic changes to how propagators and branchings are deleted: instead of using destructors they use a dispose method that allows passing a home space during deletion (we will use this infrastructure measure to speed up cloning considerably a little later). Moreover the directory structure has changed on popular request so that all include files are to be found in a gecode subdirectory. Apart from that, some small fixes and extensions due to requests. [ENTRY] Module: set What: bug Rank: minor Thanks: Luis Otero [DESCRIPTION] Fixed memory leak in finite set distinct propagator. [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Fixed memory leak in global cardinality constraint. [ENTRY] Module: int What: bug Rank: minor Thanks: Martin Mann [DESCRIPTION] Fixed bug in equality tests that could lead to reified (dis)equality propagators not achieving domain consistency. [ENTRY] Module: test What: new Rank: minor [DESCRIPTION] Added --enable-leak-debug configure option. This option causes the test suite to call mtrace() under Linux, which can be used to test for memory leaks. [ENTRY] Module: kernel What: performance Rank: minor [DESCRIPTION] More aggressive inlining for canceling subscriptions. [ENTRY] Module: search What: bug Rank: minor Bug: 39 [DESCRIPTION] Fixed linkage of BAB destructor under Cygwin. [ENTRY] Module: kernel What: change Rank: minor [DESCRIPTION] The branch member function for branchings now also takes a home space as argument. [ENTRY] Module: kernel What: change Rank: major [DESCRIPTION] Canceling subscriptions on views and variable implementations now require also a home space (this has become possible due to not using destructors but ordinary "dispose" member functions). [ENTRY] Module: kernel What: change Rank: major [DESCRIPTION] Actors (propagators and branchings) do not any longer use destructors but a "dispose" member function that takes a home space as argument and must return the size of the actor. Important: this requires that dispose member functions from super-classes and class members are called explicitly! [ENTRY] Module: kernel What: new Rank: minor [DESCRIPTION] Spaces can be queried for number of propagators and branchings. [ENTRY] Module: search What: new Rank: minor [DESCRIPTION] Search engines can now be checked whether they have been stopped. [ENTRY] Module: int What: documentation Rank: minor Thanks: Martin Mann [DESCRIPTION] Fixed bug in description of PC_INT_DOM. [ENTRY] Module: other What: change Rank: major Thanks: Martin Mann [DESCRIPTION] Moved library source code into gecode subdirectory. Facilitates cleaner installation. Programs compiling against %Gecode now need to include e.g. "gecode/int.hh". [ENTRY] Module: example What: change Rank: minor [DESCRIPTION] Sudoku example generalized to arbitrarily sized Sudokus. [RELEASE] Version: 1.1.0 Date: 2006-04-10 [DESCRIPTION] This minor release adds some new constraints (see below), adds support for stopping search engines based on definable criteria, and some other small fixes. Most notably, the test infrastructure has been extended to also check whether propagators correctly claim that they have computed a fixpoint (now all invariants a propagator must obey in %Gecode are covered by the test infrastructure). This has lead to many small fixes. [ENTRY] Module: other What: bug Bug: 37 Rank: minor Thanks: Kari Pahula [DESCRIPTION] Added a configure switch --enable-doc-dot. If enabled, this checks for presence of the dot tool (used for generating graphs in the documentation) [ENTRY] Module: example What: new Rank: minor [DESCRIPTION] Added all-interval series using distinct. [ENTRY] Module: minimodel What: new Rank: minor [DESCRIPTION] Added functions returning variables for arithmetic (min, max, abs, mult, plus, minus). [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] Support for shared views has been removed in sortedness propagator and in the propagator for global cardinality with fixed cardinalities. [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Fixed bug in fixpoint detection of sortedness and global cardinality propagator. [ENTRY] Module: set What: bug Rank: minor Bug: 36 Thanks: Javier Mena [DESCRIPTION] A non-debug version of %Gecode could not be linked to a program compiled with assertions switched on, as BndSet::isConsistent was missing from the library. [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] Staged propagation for domain-consistent absolute value propagator [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] EqBnd and EqDom now take two template parameters for their view types. This supports using different views, e.g. to express x0=-x1 using a MinusView. [ENTRY] Module: search What: new Rank: major Thanks: Rafael Meneses [DESCRIPTION] Added functionality to interrupt search engines (introduced a Search::Stop class). [ENTRY] Module: search What: change Rank: major [DESCRIPTION] Removed search engines optimizing for copying only (after all, one should always use some recomputation). [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Fixed bug in fixpoint detection of n-ary maximum/minimum propagator. [ENTRY] Module: kernel What: change Rank: minor [DESCRIPTION] The status member function now also allows the first argument to be optional. [ENTRY] Module: set What: bug Rank: minor [DESCRIPTION] Fixed bugs in fixpoint detection of several set propagators (match, convexity, sequence, n-ary (disjoint) union). [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Fixed bug in fixpoint detection of bounds-consistent element for variables propagator. [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Fixed bug in fixpoint detection of bounds-consistent squaring propagator (mult with the same variable twice). [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Fixed bug in fixpoint detection of bounds-consistent abs propagator. [ENTRY] Module: int What: performance Rank: minor [DESCRIPTION] Rewrite n-ary linear, min/max, and Boolean propagators to binary/ternary variants during cloning if possible (saves memory). [ENTRY] Module: int What: bug Rank: minor Thanks: Stefano Gualandi [DESCRIPTION] Fixed wrong assertion in gcc-bnd propagator. [ENTRY] Module: int What: bug Rank: major Thanks: Jean-Christophe Godart [DESCRIPTION] Fixed indexing bug in SupportSet (part of the domain consistent linear equation propagator). [ENTRY] Module: int What: new Rank: major [DESCRIPTION] Added new constraint channel for variable/value channeling between two variable arrays. [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] All distinct propagators raise an exception if a variable occurs multiply in its arguments. [ENTRY] Module: set What: change Rank: major [DESCRIPTION] Renamed the set propagators minElement to min, maxElement to max, and channelVarVal to channel. [ENTRY] Module: int What: performance Rank: major [DESCRIPTION] Improved initialization of domain-consistent distinct propagator, in common cases for distinct this can save up to 10% runtime. [ENTRY] Module: set What: bug Rank: minor Thanks: Patrick Pekczynski [DESCRIPTION] Fixed off-by-one bug in SetVarImp::lubMinN and SetVarImp::lubMaxN. [ENTRY] Module: minimodel What: bug Rank: minor Thanks: Olof Sivertsson [DESCRIPTION] (In-)Equations were still not correct with respect to the sign. [ENTRY] Module: minimodel What: bug Rank: minor Bug: 33 Thanks: Olof Sivertsson [DESCRIPTION] Slice-operation now returns elements in right order. [ENTRY] Module: minimodel What: bug Rank: minor Bug: 32 Thanks: Olof Sivertsson [DESCRIPTION] Possible array-out-of bounds access fixed for MiniModel::Matrix. [ENTRY] Module: example What: performance Rank: minor [DESCRIPTION] Added redundant constraint to social golfers example. [RELEASE] Version: 1.0.1 Date: 2006-03-01 [DESCRIPTION] Maintenance release including some additions of domain-consistent propagators and a fix for a serious bug in reified linear inequalities. [ENTRY] Module: search What: change Rank: minor [DESCRIPTION] Changed default copying recomputation distance to 8. [ENTRY] Module: minimodel What: bug Rank: minor Thanks: Olof Sivertsson [DESCRIPTION] (In-)Equations with an int on the left hand side (like 9==x) were translated with a wrong sign (as -9==x). [ENTRY] Module: other What: bug Rank: minor Bug: 31 [DESCRIPTION] The preprocessor macro NDEBUG for disabling assertions is no longer put into config.icc. Without this fix, user programs could not use assert if %Gecode was compiled with NDEBUG. [ENTRY] Module: minimodel What: new Rank: minor [DESCRIPTION] The post functions for linear expressions and relations also take an integer consistency level as optional argument. [ENTRY] Module: int What: new Rank: major [DESCRIPTION] Added domain-consistent linear equalities. [ENTRY] Module: int What: bug Rank: minor Bug: 30 [DESCRIPTION] Fixed fixpoint detection for ternary min and max. [ENTRY] Module: int What: bug Rank: minor [DESCRIPTION] Fixed subsumption detection for regular with multiple variable occurences. [ENTRY] Module: int What: change Rank: minor [DESCRIPTION] Cost computation for sortedness has been changed from static to dynamic (taking into account the variable reduction the propagator can perform). [ENTRY] Module: int What: change Rank: major [DESCRIPTION] Global cardinality changed to non-staged version. Further inference for cardinality variables added. Parts of the graph structure for the domain-consistent propagator have been revised so as to avoid unnecessary propagation in case of fixed cardinalities and to allow better staging for the propagator. Revision of propagation for fixed cardinalities has also been applied to bounds-consistent propagator. [ENTRY] Module: int What: new Rank: major [DESCRIPTION] Added domain-consistent version of the absolute value propagator. [ENTRY] Module: other What: performance Rank: major [DESCRIPTION] Switch assertions off in optimized builds with Microsoft's C++ compiler. [ENTRY] Module: int What: bug Rank: major Bug: 29 Thanks: Dominik Brill [DESCRIPTION] Fixed a very serious bug in the reified linear inequality propagator. [ENTRY] Module: other What: bug Rank: minor Thanks: Filip Konvicka [DESCRIPTION] Removed some compiler warnings for the Microsoft compiler with -W3. [ENTRY] Module: int What: bug Rank: major Bug: 27 [DESCRIPTION] The strongly connected components represented by the permutation variables in the extended version of Sortedness has been fixed restoring bounds consistency on the permutation variables. [ENTRY] Module: other What: change Rank: minor Bug: 24 [DESCRIPTION] The soname for libraries on Linux is now set properly, as well as the version information on Darwin (Mac OS). [ENTRY] Module: other What: change Rank: minor Bug: 25 [DESCRIPTION] The build system has been updated to support building both static and shared libraries at the same time on Unix-like systems. [ENTRY] Module: example What: change Rank: minor [DESCRIPTION] Examples now use per default the recomputation settings as defined in the search module. [RELEASE] Version: 1.0.0 Date: 2005-12-06 [DESCRIPTION] Initial release.