Debugging is twice as hard as writing the code in the first place.
Therefore, if you write the code as cleverly as possible, you are,
by definition, not smart enough to debug it.
-- Brian W. Kernighan
The PPL developers encourage you to report any bugs you find using the bug tracking system. Here `bug' should be interpreted in its broadest sense: outright software errors, misfeatures, bad interfaces, missing or unclear documentation... whatever is a subject for possible improvement.
As far as software bugs are concerned, the best reports are those that are reproducible. When possible, including (or pointing us to) code that exhibits the reported misbehavior is the best thing you can do to help us fix the library. Of course, this is not always possible and we will welcome any kind of bug report. Anyway, you may be interested to read How to Report Bugs Effectively, by Simon Tatham.
Known Bugs in PPL 1.0There are no known bugs in PPL 1.0. We will list here all the bugs we will find. There is also an archive of all known bugs affecting various releases of the PPL.
Known Bugs in PPL 0.11.2Here is the list of all the known bugs in PPL 0.11.2
Boxwhereby, provided any argument is an empty box and under other rather specific conditions, the computed result was correct but unnecessarily imprecise. Relevant commit is 50bf9eb645f7db8db9157788112b41d88cf18f08.
Grid::relation_with(const Constraint&) constwhereby, under specific conditions, the method was creating invalid Grid_Generator objects and providing an incorrect result. Relevant commit is b67af6c1ba5a560e2ab48a37cccf8fc18782a257.
Known Bugs in PPL 0.11Here is the list of all the known bugs in PPL 0.11 (even though it is likely that there are other bugs in it). All these bugs have been fixed in PPL 0.11.2.
- February 10, 2011
- Fixed a bug in the input method for checked integers whereby, under specific conditions, the input stream state bits were not updated. The bug was only affecting builds using checked integer coefficients. Relevant commit is d0f6bd037c90676130e9547e5ed909cf6ba8eee9.
- February 5, 2011
Fixed a bug in the OCaml interface, which was affecting functions
ppl_Pointset_Powerset_<INSTANCE>_get_disjunct. Relevant commit is c23ded5ce0023a753fdd5da2dbbd99d1a084566c.
- February 5, 2011
Corrected a couple of resource (re-)allocation problems that, under
specific conditions, could affect the correctness of Grid constructor
Grid::Grid(const Box<Interval>& box)and NNC_Polyhedron method
Polyhedron::generalized_affine_image(). Relevant commits are a01fecf4cde756aaefe88b8f309f9bdf3e07b670 and bf1edca5e0ddb03674a35218dccce6bc421469e2.
- February 4, 2011
Corrected a problem in the simplification of
PIP_Problemsolution trees whereby, under specific conditions, the node merging process produced decision nodes that did not satisfy their class invariant. Relevant commit is caaa126b56ccb07884217b33b6cc8c1f79e7f6ca.
- October 19, 2010
Fixed a precision bug in method
Octagonal_Shape<T>::affine_image()whereby in the case of an invertible affine transformation implementing a variable sign symmetry (and optional translation), the computed result was correct but unnecessarily imprecise. Relevant commit is 5c95fc0eab6a38442751ed16c6cfa9d538917f3f.
- October 16, 2010
Fixed a bug whereby the argument of all the methods
unconstrain(Variable var)was not checked correctly for space dimension compatibility. Relevant commit is ff5b0796773b34ef9d1e26d2a40b4fdb8376dc8f.
- September 16, 2010
Corrected an efficiency bug in the C language interface function
ppl_Linear_Expression_add_to_coefficient(). Relevant commit is ba9f6c92b49afbbfc37d864f59fff70df90f6536.
- September 7, 2010
Fixed a bug affecting constructor
Interval::Interval(const char* s)whereby a wrong interval would be constructed if the string argument denotes a number that can only be represented as an infinity. Relevant commit is 3e2fe287b4efd3b58127951793cc00ffe0ca21c0.
- August 29, 2010
Fixed a bug affecting the input routine of
ppl_lpsol, whereby the inhomogeneous term of the objective function was disregarded. The bug could only affect the optimized value of the objective function, while having no effect onthe problem's optimization state. Relevant commit is c82a27391846139072cadf0754f59f4805f4f99b.
- August 13, 2010
Fixed a bug affecting methods
Box::CC76_widening_assign(const T&, Iterator, Iterator)and
Interval::CC76_widening_assign(const From&, Iterator, Iterator)whereby a lower bound would not be computed correctly when the two iterators specify an empty list of stop points. Relevant commit is 535657baab7b4f5e6d884a7fcdc2138b1ea0797c.