B-Prolog 6.7Version of implementation B-Prolog of programming language Prolog
A version of B-Prolog, released on March 31, 2005.
- Changed hashtables to be dynamic, with automatic size expansions once the number of elements is double the size of the bucket.
- Compiler uses modes to generate more specialized programs. A predicate may be indexed on multiple arguments if mode is given.
- Introduction of a new directive “:-eager_consume F/N” which informs the system to use the eager consumption strategy for the predicate “F/N”. For tabled predicates that contain cuts or that reside in the scopes of cuts, the eager strategy should be used.
- Speed improvement of the tabling system.
- Macros expansion at compile time. A predicate is treated as a macro if it is cut-free and contains only one clause. This optimization can be suppressed by setting the flag “macro_expansion” to “off”.
- Modified to support large memory address spaces used in Linux systems such as RedHad Enterprise.
- Performance improvement of arithmetic equality (#=) and disequality (#>=) constraints (more than 10% speed-up over B-Prolog 6.6).
- Significant speed-up (more than 3 times faster than version 6.6) for CNF-form Boolean constraints (Conjunctive Normal Form, i.e., L1 #/…#/Ln #= 1).
- Change of the definition of Vars :: D to represent sparse domains more efficiently.
- New event types “generated” and “bound(X)” are introduced. The event type “mimmax(X)” is obsolete now.
- Debugger enables debugging of tabled predicates and action rules.
- A watermark is used to check if garbage collection is needed. Garbage collection is invoked each time the top of the heap hits the watermark.
- An unquoted file name like abc.txt in consult or compile is converted into quoted one automatically.
- More frequent check of control-c during execution.
- Bug fix in dynamic clauses that occurred with RedHat Linux.
- Bug fix in unify_with_occurs_check/2.
- All exceptions thrown by a user program are caught by the system if not caught by the user program.