14 Jun 90
	Problem: cannot import predicate into current module more than once.
	Fix: in load.c/c_import(), do not set readonly flag on imported proc.

18 Jun 90
	Problem: one tag bit wasn't being used.
	Fix: in objs.h and gc.c, shift tag bits and gc bit up to enable
	value field to be 26 bits. Also extended short ints to 26 bits.

18 Jun 90
	Problem: shmem.{alliant,multimax}.c not updated from V1.0
	Fix: Tidy up all shmem.*.c files. Attempt to make alliant version
	extend memory seems not to work.

18 Jun 90
	Problem: sun4 version crashes when loading compiler.
	Fix: in load.c/load(), missing bzero statement before calling
	get_bytecode (ifdef-ed ALIGN). This is at least the 3rd time this
	fix has been made!

19 Jun 90
	Problem: -m option doesn't increase number of free segments in
	global pool, thus compiler won't load on multimax.
	Fix: change local allocation in main.c/configure() to get HEAPSIZE+3

20 Jun 90
	Problem: butterfly version doesn't startup in parallel.
	Fix: use barrier 1 in main.c/top() as processors were getting to
	barrier 0 in private code load event before it was reset in top().

20 Jun 90
	Cleanups: merge butterfly + standard versions of synch.h;
	consistancy changes to shmem.{multimax,butterfly}.c

V1.4.1
======

30 Jan 91	dac
	Problem: checking the type of a tag sometimes gives the wrong result.
	Fix: the definition for the tag macro in objs.h was changed to use the
	top 5 bits only instead of erroneously using the top 7 bits as before.  

5 Feb 91	dac
	Problem: source code generates many lint errors.
	Fix: The code has been cleaned up.  Introduced catch_quit() to catch
	SIGQUIT on Suns.  Added timer functions for Sun and Sequent Balance.
	Substituted references in trace.c to undefined variable 'codesize' by
	'*code_size'.

12 Feb 91	dac
	Problem: more space than required is being allocated for each atom.
	Fix: Changed memory allocation for new atoms and definition of atomsize
	in load.c. 

13 Mar 91	dac
	Problem: calling the predicate get(X) causes a segmentation fault.
	Fix: The function io_get(Args) should use JAM register A1 instead of A0.

9 Jul 91	dac
	Problem: when unifying two variables, the one with the higher address
	should be bound to the lower.  A typo in unify.c nullified this address
	comparison.
	Fix: corrected the typo.

25 Jul 91	dac
	Problem: missing arguments to a 'printf' statement when tracing failure
	caused unpredictable results.
	Fix: supplied the required arguments.

25 Jul 91	dac
	Problem: In trace.c, the calculation of offsets for user-specified
	process structures is wrong.
	Fix: adjusted the offset for process structures.

29 Jul 91	dac
	Problem: when a parallel conjunction contains a goal which fails and an
	I/O primitive which is scheduled subsequently, their dead parent
	process is queued.  This causes a segmentation fault.
	Fix: do not enqueue dead parents in execute_io().

V1.4.2
======

9 Jan 92	dac
	Problem: When an I/O primitive fails in execute_io(), the parent
	process P ends up having the same value in P->cont and P->nextcl.
	When P is requeued and subsequently executed, the C and FL registers
	are the same and an infinite loop is thus entered.
	Fix: after setting P->cont to P->nextcl, we should reset P->nextcl to 0.

18 Mar 92	dac
	Problem: load_foreign/5 contained incorrect last argument.  The opcodes
	for enter_c and enter_io_c are 85 and 86, not 81 and 82 as in the code.
	Fix: system/env/unix.par

20 Mar 92	dac
	Problem: typing '?' to get help at the Parlog interrupt prompt
	automatically ends the interruption.
	Fix: system/env/trace.par
	After reading a character, we need to skip to the end of line.

	Problem: typing a character other than the ones allowed at the
	interrupt prompt or the debugger prompt causes a top level failure.
	Fix: system/env/trace.par
	All other characters should display the option menu.

10 Apr 92	dac
	Problem: parlog foreign code dumps core when output arguments
	are specified.
	Fix: utilities/foreign/foreign.par
	The automatically-generated C interface code for foreign functions
	contained a bug.  For output arguments, we need to allocate a local
	variable to store the result instead of just having a pointer to it.

V1.4.3
======

14 Apr 92	dac
	Problem: the list in boot_2/1 of makeboot.par is too long.  This
	causes a segmentation fault when we try to compile it.
	Fix: system/makeboot.par
	Split the list into two halves.

23 Apr 92	dac
	Problem: compilation of
		a <- (b & b), (c & c).
	produces
		procedure(a/0, [trust(3), label(3), commit,
		call_promoted(0,a1b/0), call_promoted_last(0,a1b/0)]),

		procedure(a1b/0, [trust(3), label(3), commit,
		call_last(0,b/0), call_promoted_last(0,b/0)]),

		procedure(a1b/0, [trust(3), label(3), commit,
		call_last(0,c/0), call_promoted_last(0,c/0)])

	Note that the label 'a1b' is used TWICE !!  The effect of this is
	the same as if we were to compile the clause
		a <- (c & c), (c & c).

	Fix: system/comp/dtree1.par
	In conj_check_seq/7 and conj_check_par/7, we need to generate new
	labels to avoid reusing old ones.

6 May 92	dac
	Problem: the following goal dumps core.
		a(b) =.. [X].
	Fix: system/env/prims.par
	There are two clauses for '=..'.  The first one suspended and the
	second one failed in unification.  However during the unification,
	the variable suspended in the first clause was bound without waking
	the suspended clause.  The result was an attempted suspension on
	a bound value, hence core dump.  The fix is to commit to the second
	clause before performing output unification.

13 Jun 92	dac
	Problem: writeq(.) does not print quotes.
	Fix: load.c
	Need to check for this special case of graphic atom explicitly.

16 Jul 92	dac
	Problem: the goal 'X is integer(3.14)' fails with a warning that
	fn/3 is undefined.
	Fix: system/env/syspred.par
	fn/3 should be included in the public list.

17 Jul 92	dac
	Problem: integer/1 in guard gives compiler error.
	Fix: system/comp/dtree1.par
	Special case of integer/1 in guard is no longer special.  Line
	deleted from source.

1 Oct 92	dac
	Problem: overflows in integer arithmetic were not being caught.
	Fix: builtin.c
	Need to catch overflows in addition, subtraction and multiplication.

V1.4.4
======

14 Oct 92	dac
	Problem: cannot read the single character atom '1' correctly.
	Fix: builtin.c system/env/rdtok.par
	Added new builtin that converts list of chars to an atom without
	checking for possible conversion to a number.

30 Oct 92	dac
	Problem: variables in local environments were not being initialised.
	Fix: execute.c
	Temporary measure to initialise all variables when environments
	are allocated.  A longer term solution may involve checking at
	garbage collection time for valid cells.

2 Nov 92	dac
	Problem: compiler sometimes generates wrong code when using
	get_list_* instructions.
	Fix: system/comp/codegen4.par
	Instructions are now re-ordered so that get_list_* instructions
	do not refer to arguments which may have been overwritten.

4 Nov 92	dac
	Re: fix made on 30 Oct 92
	Fix: alloc.c execute.c
	The previous fix was undone.  A more permanent solution is to
	initialise all memory segments which are used for the argument
	stack.  This has the advantage that the overhead is minimised.

7 Nov 92	dac
	Problem: programs sometimes hang unexpectedly.
	Fix: io.c
	When I/O primitives return SUSPEND, the counter Nsuspv should be
	reset to 0, otherwise the next 'innocent' predicate might suspend. 

14 Nov 92       dac
	Problem: Parlog channels do not work properly.
	Fix: support.c
	Writing to a channel should wake up processes suspended on it.

	Problem: the goals 'X =.. [a|Y], Y=[]' and 'name(X, [97|Y]), Y=[]'
	deadlock when they should succeed.
	Fix: system/env/prims.par
	'=..'/2 and name/2 should not call the underlying primitive with a
	non-ground list.

	Problem: Parlog reader does not understand escape characters.
	Change: rdtok.par and affected parlog source files.

	Problem: merge/3 and append/3 were not defined in the system.
	Fix: system/env/syspred.par system/comp/dtree2.par
	Defined a fair merge/3 that replaces the merge/3 in the compiler.
	Made the new merge/3 and append/3 public.

	Change: support.c funcs.h initial.c
	Added new primitives realtime/1, getenv/2, concat_atom/2.

19 Nov 92	dac,adb
	Problem: Compiler errors.
	Fix: system/comp/{kernel,codegen1,dtree2,compile}.par
	Parallel deep guards are now detected and displays a warning.
	User specified one-way unification in the guard now compile
	correctly.
	Primitive calls in the guard common to multiple clauses now
	compile correctly.

23 Nov 92	dac
	Problem: atoms in solutions were not being quoted.
	Fix: toplev.par
	Use writeq/2 for R.H.S. of equations.

	Change: prims.par
	Added atom_chars/2 and number_chars/2.

	Problem: quoted atoms with escape chars are not displayed correctly.
	Fix: io.c
	Display escaped chars as '\X'.

24 Nov 92       dac
	Change: rdtok.par
	Added more escape sequences to quoted atoms.  The term reader
	now understands octal chars, control chars, continuation lines
	and layout chars.

26 Nov 92	dac
	Change: support.c system/env/syspred.par
	Added defined/1 to determine whether predicates were defined or not.

	Change: support.c
	Added stat/6 to retrieve info about files.

22 Dec 92	adb
	Problem: Name clashes of auxiliary predicates introduced to handle
	sequential conjunctions nested within parallel conjunctions.
	Fix: system/comp/dtree1.par
	Generate unique names.

	Problem: is/2 expressions containing variables are erroneously
	optimised away in Parlog compiler.
	Fix:system/comp/kernel.par
	Do not optimise in these cases.
