B-Prolog 7.1

Version of implementation B-Prolog of programming language Prolog

A version of B-Prolog, released on June 25, 2008.


  • Stack initialization is unnecessary in TOAM Jr. now.
  • Programs with large numbers of clauses compile faster now.
  • An improvement of the performance of the memory manager.
  • An improvement of the debugger which leads to an order-of-magnitude reduction in memory consumption by programs run in the debug mode.
  • New functions: log(Base,X), ‘e’ (2.7182818284590455), min(L), max(L), sum(L), float_fractional_part(X), and float_integer_part(X).
  • mod redefined: X mod Y = X-(integer(floor(X/Y))*Y).
  • A bug fix in directory_files/2.
  • The number of streams that can be open at a time is increased to 40 from 20.
  • The code generator generates faster code for if-then-else than before.
  • The following built-ins are modified to accept string file names: cl/1, consult/1,[]/1, compile/1, and load/1.
  • The compiler issues error messages when a program to be compiled contains an atom that is longer than 225 characters or a structure whose arity is bigger than 225.
  • A fix of a memory leak in findall when used with catch/throw.
  • Change of throw/1 to make it ISO compliant.
  • A critical section is used to control Timer threads and the main thread when shared data are accessed.
  • New global constraint disjunctive_tasks(Starts,Durations), which is equivalent to cumulative(Starts,Durations,Resources,Limit) where Resources and Limit are all unit.
  • Improvements in constraint propagators: global constraints (element/3, cumulative/3, X#=min(L), X#=max(L)), nonlinear constraints (X#=abs(Y),X#=abs(Y-Z)), and disjunctive constraints.
  • statistics/0 and statistics/2 are extended to show statistics on numbers of backtracks in labeling finite domain variables.
  • New directive multifile/1 added.