Next: 3.1 Contents of the
Up: BinProlog 5.75 User
Previous: 2 Obtaining BinProlog
BinProlog has been developed by Paul Tarau mostly
at the University of Moncton, Canada,
and is based on his BinWAM abstract machine,
a specialization of the WAM
for the efficient execution of binary logic programs.
BinProlog is a fast and compact Prolog compiler, based on the
transformation of Prolog to binary clauses. The compilation technique
is similar to the Continuation Passing Style transformation used in
some ML implementations. BinProlog 5.75 is also probably the first
Prolog system featuring dynamic recompilation of asserted predicates
(a technique similar to the one used in some object oriented
languages like SELF 4.0),
and a very efficient segment preserving copying heap garbage collector.
Although it (used to) incorporate some last minute research experiments,
which might look adventurous at the first sight,
BinProlog is a fairly robust and complete Prolog
implementation featuring both C-emulated execution
and generation of standalone applications
by compilation to C.
New features added in version 5.75 include:
.
New features added in version 5.25 include:
- online help system and integrated example-of-use generator (see info/0, info/1)
- dynamic recompilation (use options -l3, -l4, -l5) giving 10-50 times
speed-ups on asserted code (do cal and go. to see a how a calendar
computation in progs/cal.pl becomes faster than an empty loop :-).
- Java interface (see directory BP_JAVA) for Solaris 2.4, embedding
BinProlog (a dynamically linked library) as a native Java method
- dynamically growing/shrinking blackboard (use option -b0)
- multiple dynamic databases
- more space-efficient dynamic predicates
- multifile and discontiguous static predicates
- memoing: conventional and `delphi' lemmas (see LOPSTR'93 paper)
supporting ground term sharing (see files progs/dboyer.pl,dtak.pl)
- new builtins hkey/2 and term_hash/3 for multi-argument indexing
- efficient call/N, foldl/4, foldr/4, map/3 builtins
- OBJECTS (see library(objects))
- LogiMOO: a Linda-based virtual world, connecting BinProlog processes
over the INTERNET (a Solaris 2.x prototype is in the current distribution
in directory LogiMOO - see PAP'96 paper)
- extended set of linear and intuitionistic operators
- C-style and ISO-prolog input/output, pipes, improved Unix/DOS-shell interface
- New Cygnus gcc for Windows, Visual C/C++ 4.0, Watcom C/C++ binaries
- New Solaris 2.4 x86 binaries
- 5 load methods, some allowing listing and tracing of compiled code
others for SICStus/Quintus compatible consult/reconsult (use -l1..-l6)
- improved trace/1, allowing to keep goals to be watched later as they
are further instantiated
- improved warning control (use quietness -q0 for more warnings -q10 for none)
- improved command line options allowing customized startup from
Prolog files or goals
- improved list processing (2.8 MegaLIPS on a Toshiba 410 laptop!)
(see progs/brev.pl benchmark)
- new builtin ##/1 allowing compile-time execution of known goals
- cross reference tool with integrated help and examples of use
generating latex files (and HTML with latex2html)
(see file library/bpxref.pl).
For owners of academic and industrial source licenses:
- ANSI-C sources for run-time system
- New Cygnus gcc for Windows, Visual C/C++ 4.0, Watcom C/C makefiles
- improved Prolog-to-C translator, with ANSI-C code generation
- improved embedding (as a dynamic library) in C/C++ or Java applications
- transparent run-time system:
- new VSHARE macro allows declaring shared C and Prolog variables
- new vget/2, vset/2, make_array/2,array_get/3, array_set/3, destroy_array/1 builtins
allow handling arbitrary C objects from Prolog
- improved bootstrapping and source customization options
- 1 year of free upgrades
New features added in version 4.00:
- an efficient copying heap garbage collector developed by Bart Demoen and Geert Engels
- new version of Multi-BinProlog developed by Koen de Bosschere
- ability to start multiple engines from Prolog or C
- improved C-interface now moved to its own directory c_inter
- one file 32 bit DOS and Windows 3.1/95/NT executables (see file bpXXX.zip)
New features in added in version 3.30:
- source-level modules
- faster compilation to C and faster resulting C-code
- very small (dynamically linked) standalone executables (10K)
for Solaris 2.x
- improved (fileevent based) Tcl/Tk interface now running under
tcl7.4b2 and tk4.0b2
- help/1 detecting near-matching predicate definitions
- help warnings for singleton variables
- spy/1 for debugging compiled code
Some other BinProlog features are:
- robustness and PC/Unix portability
- efficient higher-order programming builtins,
- logical global variables,
- backtrackable destructive assignment,
- circular term unification,
- extended DCGs (now built in the engine as `Assumption Grammars'),
- continuation manipulation primitives,
- a garbage-collected
hashing based global dictionary for constant-time sparse
arrays and graphs,
- C-compatible floating point operations
Next: 3.1 Contents of the
Up: BinProlog 5.75 User
Previous: 2 Obtaining BinProlog
Paul Tarau
Thu Apr 3 10:26:39 AST 1997