<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/1999/REC-html401-19991224/strict.dtd"> <html> <head> <title>YAP change log</title> <link rel=stylesheet href="changes.css" type="text/css"> </head> <body> <hr> <h1>Changes in YAP-5.1</h1> <h2>Yap-5.1.2:</h2> <ul> <li> FIXED: avl_new/1 (obs from Miguel Filgueiras).</li> <li> FIXED: broken all/3 (obs from Miguel Filgueiras).</li> <li> FIXED: make 128 maximum disjunction depth (obs from Nicos Angelopoulos).</li> <li> FIXED: first cut at using timestamps with logical updates.</li> <li> FIXED: indexing on doubles wasn't working properly.</li> <li> FIXED: sending large lists of atomics to DB was very, very slow.</li> <li> FIXED: make library_directory/1 better protected.</li> <li> FIXED: make YAP smarter at finding libraries in WIN32.</li> <li> NEW: data structures using global variables: queues, heaps and beam search support.</li> <li> NEW: global variables a la hProlog, includes major changes in stack shifter, garbage collector, and setof.</li> <li> FIXED: do not call garbage collector if the space we need is more than what is available (obs from Nicos Angelopoulos).</li> <li> FIXED: recordaifnot(a,_,_) was broken (obs from Jesse Davis).</li> <li> SPEEDUP: some speedups to garbage collector (obs from Nicos Angelopoulos).</li> <li> NEW: a first cut at readutil.yap (request from Stefan Weinbrenner).</li> <li> FIXED: compile | as a disjunction (obs from Ole Edsberg).</li> <li> NEW: rbqueues keeps a simple db queue</li> <li> NEW: cut_up_to_next_disjunction/0 tries to prune until the closest choice-point from the parent disjunction (think query packs).</li> <li> FIXED: error condition when we expand to maximum number of variables.</li> <li> FIXED: bug when variable list in parser overflows.</li> <li> FIXED: min_list (obs from Filip Zelezny).</li> <li> FIXED: -l and -L options (again?).</li> <li> FIXED: if we cannot read more chars in saved state we're dead.</li> <li> FIXED: termination info for failed and detached threads (obs Paulo Moura).</li> <li> FIXED: check_callable should check for modules (obs Paulo Moura).</li> <li> NEW: add thread_sleep/1, mostly works like system:sleep/1 (request from Paulo Moura).</li> <li> NEW: add select/3 and intersection/3 to SWI emulation.</li> <li> FIXED: always keep in mind that Yap_WakeUp may change H (would break chr).</li> <li> FIXED: add_clause of new predicate could get in loop.</li> <li> FIXED: don't have to print anything if there is not anything to print.</li> <li> FIXED: current_thread/2 should fail if called with bad alias or ID (obs Paulo Moura).</li> <li> FIXED: correct code statistics with DL_MALLOC or SYSTEM_MALLOC.</li> <li> NEW: use true_file_name for file operations in system library (obs Paulo Moura).</li> <li> NEW: make YAP large address aware on WIN32 (should be able to allocate up to 3GB).</li> <li> FIXED: WIN32 may have a lot of fragmentation so several memory holes may be active at the same time, keep up to 32 open holes.</li> <li> FIXED: WIN32 may move functions without moving emulator: always fix C-functtions.</li> <li> FIXED: use $SYSTEMDRIVE to install YAP in WIN32.</li> <li> FIXED: compilation bug in arg(X,1,A).</li> <li> NEW: extend interface to pass chunks of integers/floats.</li> <li> FIXED: get rid of some more global variables.</li> <li> NEW: thread_yield/0 (request Paulo Moura).</li> <li> FIXED: current_thread was not returning aliases (obs Paulo Moura).</li> <li> FIXED: AuxSp was not properly initialised for new threads (obs Paulo Moura).</li> <li> FIXED: recusive indexing over unbound compound terms was broken (obs Ricardo Lopes).</li> <li> FIXED: toplevel_print_options and debugger_print_options was broken and undocumented (obs Ashwin Srinivasan).</li> <li> NEW: lock streams while using them (concurrent writing is still allowed).</li> <li> FIXED: make current_op only walk over atoms.</li> <li> FIXED: memory corruption when copying consult stack (obs Paulo Moura).</li> <li> FIXED: get rid of some silly locks.</li> <li> FIXED: don't compare block top with <= (obs Paulo Moura).</li> <li> FIXED: ! was not pruning right in p_execute_clause (obs Nicos Angelopoulos).</li> <li> FIXED: system/1 and shell/1 should check return code (obs Nicos Angelopoulos).</li> <li> FIXED: thread_peek_message should use aliases (obs Paulo Moura).</li> <li> FIXED: garbage collector should not rewrite cp_tr fields until after marking (obs Paulo Moura).</li> <li> FIXED: garbage collector was allowing garbage trail entries for multi-assignment variables. Namely, old var value might point to new space (obs Paulo Moura).</li> <li> FIXED: thread aliases were being cleaned up just after being installed (obs Paulo Moura).</li> <li> FIXED: rb_partial_map was broken.</li> <li> NEW: wdgraph and wundgraph libraries, for weighted graphs.</li> </ul> <h2>Yap-5.1.1:</h2> <ul> <li> FIXED: compatibility fixes .</li> </ul> <h2>Yap-5.1.0:</h2> <ul> <li> NEW: new implementation of association lists, based on red-black trees. </li> <li> NEW: undgraph library, based on dgraphs. </li> <li> NEW: dgraphs library, towards a more efficient implementation of directed graphs. </li> <li> NEW: rb_update, rb_apply, rb_visit, rb_keys and rb_map. </li> <li> FIXED: use rb_ prefix for all red black predicates. </li> <li> FIXED: got confused about position of syntax error (obs Mark Goadrich). </li> <li> FIXED: compiling inline lists would compile the lists and then some more (obs Nicos Angelopoulos). </li> <li> FIXED: message queue ops should not fail silently (obs Paulo Moura). </li> <li> FIXED: stream bugs in iopreds.c (Takeyuki SHIRAMOTO). </li> <li> FIXED: extra backtrack in informational_messages (obs Nicos Angelopoulos).</li> <li> NEW: abolish_module/1 at the request of Nicos Angelopoulos.</li> <li> FIXED: variable shunting needs HB initialised before any marking takes place!!!</li> <li> FIXED: handle possible overflow in term_variables</li> <li> FIXED: check for singleton warnings in .yap files, try to catch bugs before they bite people.</li> <li> FIXED: make threads compile again, fix some compilation warnings.</li> <li> FIXED: use different chains for dead static clauses, static indices and dead mega clauses. Extend dead clauses with next field so that they can added into chain. Fix restore to see dead clauses.</li> <li> FIXED: check if indexing code is live before purging it (obs Bernd Gutmann).</li> <li> FIXED: pass backtrackable C-preds all flags they ask for (obs Tiago Soares).</li> <li> FIXED: compilation with dynamic libraries and JPL compilation.</li> <li> FIXED: typo in manual (obs Bernd Gutmann).</li> <li> NEW: track the current block more aggressively, to avoid expand_index taking too long searching for a block.</li> <li> FIXED: if LU indices have groups, we should create try-retry-trust sequences immediately, otherwise LU semantics can be compromised (obs Bernd Gutmann).</li> <li> FIXED: when cleaning trail, gc would not always clean value field! (obs Remko Troncon).</li> <li> FIXED: when cleaning megaclauses, clean flag too.</li> <li> FIXED: don't put array twice in list of live arrays (gc would loop).</li> <li> NEW: debugger will not backtrack over complete deterministic computations.</li> <li> NEW: debugger can show CP stack.</li> <li> NEW: internal procedure to show choice-point stack.</li> <li> FIXED: Incremental GC could still get confused after backtracking over GEN marker. Associate GEN marker with timestamp and make sure we only use current GEN markers (obs Mark Goadrich).</li> <li> FIXED: Yap on OSX should not make CreepFlag a register, as this breaks Interrupt Handling. Also, it seems that if I do not reserve r13, GCC will use r14 for its own evil purposes.</li> <li> FIXED: make Yap files usable again as a script (obs Ales Kozumplik).</li> <li> FIXED: silent informational_messages was being ignored (obs Nicos Angelopoulos).</li> <li> FIXED: initialization should only be performed after all consulted files are done.</li> <li> FIXED: garbage collector now makes refs to erased LU clauses point to LogUpdErasedMarker.</li> <li> FIXED: get rid of old code referring to LogUpds from within ImmediateSemantics.</li> <li> FIXED: indexing code would get confused about size of inlined float/1 (obs Paulo Moura).</li> <li> FIXED: broken SIGINT with tkyap (Keri Harris).</li> <li> FIXED: indexing of bignums was broken, just disable it for now.</li> <li> FIXED: pipe open was returning the same descriptor twice (obs Christian Thaeter).</li> <li> FIXED: style check should compare with true file name.</li> <li> FIXED: ^c should take care about TR and B.</li> <li> FIXED: don't pass a pointer to a mpz_t. (obs Nuno Fonseca)</li> <li> FIXED: handle heap overflow from huge atoms in Yap_LookupAtom/scanner (obs Nuno Fonseca).</li> <li> FIXED: bignum was using int where should be long int (obs Roberto Bagnara).</li> <li> NEW: x86_64 should have registers, right? First cut at using them.</li> <li> FIXED: call_n would break under 64 bits, an int problem.</li> <li> FIXED: more compilation problems if GMP not there (obs Remko Troncon).</li> <li> FIXED: make syntax error report the line where the bug was (obs Jude Shavlik).</li> <li> FIXED: ok, MkBigInt shouldn't free the bigint.</li> <li> FIXED: MkBigInt already frees bigint.</li> <li> FIXED: don't pass a pointer to a mpz_t. (obs Nuno Fonseca)</li> <li> FIXED: YENV may be an HW register (could break some tabling code) (obs Remko Troncon) </li> <li> FIXED: All YAAM instructions are now brackedted, so Op introduced an { and EndOp intr oduces an }. This is because Ricardo assumes that. </li> <li> FIXED: compile attvars when COROUTING is undefined. </li> <li> FIXED: compiler warnings due to c-interface changes</li>. <li> FIXED: scanner would convert LONG_MIN to bigint, but it can be represent as a LONG; fixed by using mpz_fits_slong_p (obs Roberto Bagnara). </li> <li> FIXED: indexing cut should stop looking after a cut!!!! (obs Paulo Moura). <li> FIXED: mktime was broken in WIN32. </li> <li> FIXED: don't assume a fixed point for WIN32 memory allocation. </li> <li> FIXED: don't call goal_expand when looking for handlers of undefined procedures. </li> <li> FIXED: always walk through modules in the same order when waking up variables (otherwise, breaks CLP(QR)). </li> <li> NEW: SWI-like yap_flag(float_format,_). </li> <li> FIXED: change C-interface to use new interface. </li> <li> FIXED: << and >> should handle overflows. </li> <li> FIXED: mod and rem now implement ISO semantics (hopefully). </li> <li> FIXED: change implementation of bigints to be more like GMP style. </li> <li> FIXED: handle assert/retracts and gprof overhead right. </li> <li> FIXED: indexing code was not setting up properly registers on longjmps. </li> <li> FIXED: use RISC architecture on MacOsX (__POWERPC__ + _POWER). </li> <li> FIXED: init system predicates should generate full static clause. </li> <li> NEW: tabling does not conflit with depth limit (Trevor Walker). </li> <li> NEW: make scanner restartable on seekable files (Nuno Fonseca). </li> <li> NEW: improve error discovery within scanner (Jude Shavlik). </li> <li> NEW: change event profiler to do profiling online and off-line. </li> <li> NEW: routine to find clause/pred </li> <li> NEW: always end clauses with Ystop START, so that we can refer back to the clause's beginning. </li> <li> NEW: always have a pointer to Pred in clauses, so that we can find current predicate. </li> <li> NEW: heapgc should now be concurrent when using threads. </li> <li> FIXED: heapgc wo tags can handle trail overflows right. </li> <li> NEW: heapgc wo tags does not write on the collected areas during marking. </li> <li> FIXED: dif/2 might get into trouble restoring assignments to attributes. </li> <li> NEW: Yap_DebugPlWrite and Yap_DebugErrorPutc for those debugging moments. </li> <li> FIXED: get rid of dead internal variable MutableList. </li> <li> NEW: write_depth/3 for very large compound terms. </li> <li> FIXED: new bug in garbage collection. </li> <li> FIXED: overflow handling in DB/AttVars was resetting old var, and wasn't resetting trail. </li> <li> FIXED: when rebuilding DB term with attvars, set global var to point to attvar. </li> <li> NEW: add school CLP(BN) example. </li> <li> NEW: add sc CLP(BN) example. </li> <li> FIXED: make exception port more like a true port. </li> <li> FIXED: don't run ^ in setof if there are no excess variables. </li> <li> FIXED: prolog_load_context(directory) relied on dead code. </li> <li> FIXED: some small beautifications for system/1, getcwd/1, sh/1, rename/2. </li> <li> NEW: operating_system_error. </li> <li> FIXED: Restore could not recover DL_MALLOC info and was not recovering DBTerms correctly. </li> <li> FIXED: with locking field, AtomNil and friends might not be aligned, and would be confused with int. </li> <li> FIXED: variables should always be reset when doing trail expansion from the parser, even if there is no shifting (obs Trevor Walker). </li> <li> FIXED: growglobal with realloc was broken. </li> <li> FIXED: with threads, self-deadlocking in new array codes. </li> <li> FIXED: in tabling, use malloc when AllocCodeSpace fails. </li> <li> FIXED: in tabling don't look inside cp_ap == NULL and fix recent bug in walking dependency frames. </li> <li> FIXED: with tabling ASP sometimes was miscalculated, causing trouble with stack shifter (obs Kostis Sagonas). </li> <li> FIXED: ~D should print bignums (obs Jude Shavlik). </li> <li> FIXED: format's ~d and ~D were broken (obs Jude Shavlik). </li> <li> FIXED: profiler should not talk about hidden predicates or idb entries. </li> <li> FIXED: recentg change in setof could bind argument (obs Jude Shavlik). </li> <li> FIXED: EOF (-1) at debugger prompt would generate exception (obs Jude Shavlik). </li> <li> FIXED: ^C was very broken: break was not accepted, and debug, trace and statistics did not work at all (obs Jude Shavlik). </li> <li> FIXED: format_has_tabs could miss tab signs (obs Jude Shavlik). </li> <li> FIXED: plug holes in memory allocation from scanner (obs Mark Goadrich). </li> <li> FIXED: instrument memory allocation when using system malloc. </li> <li> FIXED: adjust_cp_hbs was readjusting consumer choice-points (it can only adjust hb once) (obs Remko Troncon). </li> <li> FIXED: try to make GC trace message "marked N vars" intelligible. </li> <li> FIXED: garbage collection of mabindings was broken with tabling (obs Remko Troncon). </li> <li> FIXED: did not initialise tabling variables (obs Remko Troncon). </li> <li> FIXED: should have meta-predicate definitions for calls and discontiguous. </li> <li> FIXED: have discontiguous as a builtin, not just as a declaration (obs Jude Shavlik). </li> <li> FIXED: if first argument was unbound, comparisons might be called with second argument undereferenced!! </li> <li> FIXED: strip ^ before doing execute in setof or bagof. </li> <li> FIXED: use CONST declarations in interface (thanks to Roberto Bagnara). </li> <li> FIXED: absmi should consult PREG, not P (obs Remko Troncon). </li> <li> FIXED: bad init in tabling code. </li> <li> FIXED: YAP_MkBigIntTerm was broken (obs Roberto Bagnara). </li> <li> NEW: update documentation to support new CLP(R) and CHR packages. </li> <li> FIXED: regression in clpbn/utils.yap. </li> <li> NEW: put_attrs/2. </li> <li> FIXED: don't install CLP unless coroutining && rational trees are active. </li> <li> FIXED: syntax error in ypp.yap (obs Paulo Moura). </li> <li> FIXED: save/restore should be as usual if using YAP allocation. </li> <li> FIXED: save/restore FZ regs. </li> <li> FIXED: $loop_stream could be defined early in boot process. </li> <li> NEW: make rational trees default. </li> v<li> NEW: make enable-max-memory default. </li> <li> FIXED: allow people to disable indexing (obs Ricardo Lopes). </li> <li> FIXED: make undefined exception more ISO like (obs Paulo Moura). </li> <li> FIXED: add missing dependency in chr's Makefile.in. </li> <li> FIXED: fix corruption in ypp.yap. </li> <li> FIXED: ~@ makes format a meta-predicate. </li> <li> FIXED: format should do immediate exit on exception (from Prolog call). </li> <li> FIXED: make format reentrant and thread-safe (format may call itself). </li> <li> FIXED: don't complain if a module is loading a reexported predicate and the original predicate. </li> <li> FIXED: change a few defaults for SWI compatibility. </li> <li> FIXED: library prandom was broken (obs Nuno Fonseca). </li> <li> NEW: add max_tagged_integer and min_tagged_inter prolog_flags. </li> <li> NEW: add ~@ option to format. </li> <li> NEW: memberchk/2 is like builtin in SWI emulation lib. </li> <li> NEW: SWI like prolog_source_location/2 </li> <li> FIXED: $loop_stream usage was broken. Fix $fetch_stream_alias to be bidirectional.</li> <li> FIXED: allow nb_set followed by b_set, bheakkkk! The other way round is still not allowed.</li> <li> NEW: from SWI maplist/2, maplist/3, maplist/4.</li> <li> NEW: call/2, call/3, call/4.</li> <li> FIXED: disable mutables in SWI mode. </li> <li> FIXED: safe C-preds should always use P when calling garbage collector, aarrggh :-(, CP use found in GetTermFromArray.</li> <li> NEW: SWI-like ord_empty/1 and ord_memberchk/2 in library(ordsets).</li> <li> FIXED: safe call_c should check for signals before calling a built-in.</li> <li> NEW: -p option allows setting path from command line.</li> <li> FIXED: during grow, heap references should not be followed from trail.</li> <li> FIXED: \= was not resetting wakeups correctly.</li> <li> FIXED: copy_term was broken if attrs were an unbound variable.</li> <li> FIXED: during garbage collection, heap references should be copied to trail, and that's it.</li> <li> FIXED: excessive backtracking in multifile declaration.</li> <li> NEW: allow style_check(singleton) and style_check(-singleton).</li> <li> NEW: SWI module now makes atom_concat/{2,3} behave like atomic_concat/{2,3}.</li> <li> NEW: add SWI-like copy_term_nat/2.</li> <li> NEW: add SWI-like get_time and convert_time, but using integers, not floats.</li> <li> NEW: add SWI-like working_directory/2 and chdir/2.</li> <li> NEW: add append/3 and member/2 to SWI module.</li> <li> FIXED: use bootstrap/1 to load up system.</li> <li> FIXED: use_module/3 did not get info on loaded_module.</li> <li> NEW: use_load_files as main file loading option.</li> <li> FIXED: broken do_print_message for defined_elsewhere.</li> <li> FIXED: debugger option.</li> <li> FIXED: trace through undefined predicates correctly.</li> <li> FIXED: WIN32 missing include files (untested)</li> <li> FIXED: -L trouble (my thanks to Takeyuchi Shiramoto-san)!</li> <li> FIXED: debugging of backtrable user-C preds would core dump.</li> <li> FIXED: redeclaring a C-predicate as Prolog core dumps.</li> <li> FIXED: badly protected YapInterface.h.</li> <li> FIXED: break/0 was failing at exit.</li> <li> FIXED: YAP_cut_fail and YAP_cut_succeed were different from manual.</li> <li> FIXED: tracing through data-bases could core dump.</li> <li> FIXED: cut could break on very large computations.</li> <li> FIXED: first pass at BigNum issues (obs Roberto Bagnara).</li> <li> FIXED: debugger could get go awol after fail port.</li> <li> FIXED: weird message on wrong debugger option.</li> <li> FIXED: cases where restore/1 could break.</li> <li> NEW: SWI predicates now update prolog module</li> <li> NEW: port of Leslie's CLP(R) system.</li> <li> NEW: generations in garbage collector.</li> <li> SPEEDUP: optimise some garbage collector code.</li> </ul> <hr> </body> </html>