We had a meeting of the Mercury group on Fri Jan 5, 2001,
from 3:20pm to 4:45pm.

Attendees:
	Zoltan Somogyi (zs)
	David Jeffery (dgj)
	Mark Brown (dougl)
	Simon Taylor (stayl)
	Ina Cheng (inch)
	Kevin Glynn (keving)
	Levi Cameron (lpcam)
	Sam Thurairatnam (sthur)
	Simon Mei (xcsm)
	Julien Fischer (juliensf)
	Tyson Dowd (trd)
	Fergus Henderson (fjh)
	Thomas Conway (conway)

1. Microsoft grant.

	Zoltan was pleased to be able to bring us the news that we have
	been successful in getting the Microsoft grant we applied for.
	Well done, everyone!

2. Mercury on SourceForge.

	Peter Ross has given some feedback on accessing the Mercury site
	from outside Australia---it can be fairly bad.  One solution that
	has been suggested is to place some of the Mercury material on
	SourceForge (http://sourceforge.net/), which provides a range of
	services to support developers of Open Source projects.  These would
	also help improve some aspects of our development process, such as
	bug tracking and task management for releases, which are currently
	done in an ad-hoc fashion.

	We discussed which services we are most interested in putting to use.
	These include:

		- mailing lists
		- web page hosting
		- bug tracking
		- task management.

	We are not, however, considering moving our entire CVS repository to
	SourceForge.  We would want to do regular uploads of the release of
	the day, but daily uploads are likely to get expensive so it was
	suggested that weekly uploads would be better.

	Further discussion is deferred until more developers have had a look
	at what SourceForge has (or hasn't) to offer.

3. Progress reports.

	We went around the table, with each person in turn discussing what
	they had been working on recently and/or what they were planning
	to work on.

	Zoltan Somogyi (zs):

		- Has ready for review a change which delays the death
		  of named variables as long as possible, so they are
		  accessible in the debugger for as many events as possible.
		  This is now the default behaviour if the trace level is
		  `deep' or greater.

		  This increases the executable size, mainly due to more
		  static data, but does not increase execution time
		  significantly.

		  We debated whether this should be the default when tracing
		  optimized code.  It should: the point of tracing optimized
		  code is not to debug using less memory/execution time than
		  normal, but rather to understand how the code has been
		  optimized.  So we want to make more information available
		  even at the expense of code size.

		- Is working on a change to generate proc layouts as C
		  structs instead of rvals.  This will allow pseudotypeinfos
		  for a procedure to be stored in a single proc layout
		  instead of multiple label layouts.

		  This change will mitigate the code size increase due to
		  the previous change.

	David Jeffery (dgj):

		- Is working on HAL.

		- In particular, is removing dependencies on Mercury's
		  `HAL' branch from code generated by HAL.  The code is
		  getting close to standard Mercury.

	Mark Brown (dougl):

		- Is continuing to implement term dependency tracking in the
		  declarative debugger.  Due to some complexities in the way
		  this interacts with depth limited EDTs, this change will
		  be broken down into two (or more) changes: at first the
		  dependencies will only be tracked one step at a time, later
		  the search strategy will be developed to make better use
		  of the available information.

	Simon Taylor (stayl):

		- Has been away recently, but otherwise working on ADITI.

		- ADITI will reportedly be released real soon now.

	Ina Cheng (inch):

		- Is working on generating namespace aware XML documents.
		  The work has gone through an initial round of review, and
		  is now ready for the next.

		- Has been looking at the Quicksilver webserver by Peter Ross.

		Aside: should Quicksilver go in the extras distribution?
		It doesn't perform brilliantly at the moment, but there may
		be an easy fix.  This should be discussed with Peter.

	Kevin Glynn (keving):

		- Has not been working on Mercury.

	Levi Cameron (lpcam):

		- Has largely implemented the bytecode stuff.  Outstanding
		  issues include:

			- complex (partially instantiated) modes of unify;
			- boxed vs unboxed floats;
			- preds vs functions.

		  There are also issues with higher order code, but these
		  will be left for later.

	Sam Thurairatnam (sthur):

		- Is integrating his pretty printing work with the term
		  browser code.  This will involve adding a new portray
		  format, and probably also adding extra fields to the
		  format params.

	Simon Mei (xcsm):

		- Is working on Quickcheck-style testing.  Currently,
		  generating values of user types and function types.

		- There is a problem with higher order values, because they
		  cannot be built using "construct".  There are no semantic
		  problems, it's just that the implementation is a bit tricky.
		  The details will need to be discussed later.

	Julien Fischer (juliensf):

		- Is working on support for foreign code in the Java backend.

		- Support for enumerations, discriminated unions, and RTTI.
		  There is a Java class for each enumeration/discriminated
		  union.

	Tyson Dowd (trd):

		- Has committed the support for managed C++.  There are still
		  a few bugs, mainly related to Cygwin.

		- Is working on documentation.

		- Has been supervising.

		- Talked with Peter Schachte about rewriting the purity paper.
		  Potential targets were discussed: PPDP is a possibility,
		  but a more specifically logic programming workshop would be
		  preferable.

	Fergus Henderson (fjh):

		- Is on the program committee for BABEL'01.  Can PC members
		  submit?

		- Has been working on the gcc back-end (or "middle-end")
		  interface.  Features:

			- binary compatibility with hlc;
			- should improve compile time for code generation;
			- code duplication (eg RTTI) could be a problem, but
			  Fergus doesn't think it will be major;
			- doesn't have mmake support.

	Thomas Conway (conway):

		- Has been working on a deep profiling paper (with Zoltan).

		- Is reimplementing deep profiling as a source-to-source
		  transformation.  One problem is that multiple moded
		  predicates may be transformed into code that constructs
		  existentially typed values in one mode (thus requiring a
		  `new' operator), but deconstructs them in another (where the
		  operator would be incorrect).

		  Once again, we discussed the possibility of different code
		  for different modes.  No firm conclusions were drawn.

4. Release plans

	Aside from dealing with one or two bugs, there are no further changes
	planned before the upcoming release.

Minutes taken by Mark Brown (dougl@cs.mu.oz.au).