[m-dev.] Mercury meeting minutes (extract)
Fergus Henderson
fjh at cs.mu.OZ.AU
Tue Oct 3 18:15:37 AEDT 2000
Hi,
We had a meeting of the Mercury group on Fri Sep 29th, 3:15pm to 5:55pm.
This is an extract from the minutes (I've omitted stuff like the
discussion about hardware which is only of local interest).
Attendees:
David Jeffery <dgj>
David Overton <dmo>
Mark Brown <dougl>
Zoltan Somogyi <zs>
Tyson Dowd <trd>
Fergus Henderson <fjh>
Peter Stuckey <pjs> (for part of the meeting)
1. 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.
David Jeffery <dgj>:
- Had been mostly working on HAL stuff.
- Is planning to merge the changes on the HAL branch
(`no_alias') of the cvs repository back into the
main branch. These changes were adding three new grade
components, which had the following effects:
(1) allocating a VAR tag (with value zero) on every
data type
(2) filling in a field in the type_ctor_info RTTI
structures with the address of the solver
equality procedure for that type
(3) likewise filling in another field with the solver
initialization procedure for that type
- Had been working on a paper on existential types (with fjh).
David Overton <dmo>:
- Had been finishing off the change to support polymorphic modes
(i.e. allowing inst variables which can be instantatied
to any ground inst in mode declarations).
The problem with this change was performance --
mode checking for a version of tree234 using polymorphic
modes was 1 minute 45 seconds, as compared to 17 seconds
for the non-polymorphically moded version.
This is getting much too slow.
However, since the changes didn't slow down mode checking
of existing code, we agreed that it was OK to commit this
change, particularly since this would help other people
experiment with it, work on it, and perhaps fix the
performance problem. David Overton speculated that
the performance problem might not be fixable in the
current mode system implementation.
- Is planning more work on the new mode system implementation
- stage 1 (determining producers and consumers)
is nearly complete -- dmo thinks he has
got higher-order support nearly finished
- stage 2 (reordering conjunctions appropriately)
not yet done. There was some discussion about
how to do this -- need to be careful to avoid
exponential complexity.
Mark Brown <dougl>:
Has mainly been working on extending the declarative debugger
to allow the user to mark a particular subterm as being
the "suspicious" subterm. The way this works is that
the term browser is extended with a new command that
marks the current term (or a term with a named path
from the current term) as suspicious and then quits
the browser. In particular, Mark has been figuring
out what algorithm the declarative debugger needs to
apply to support this.
Has also been working on reorganizing the parameters
used for the different browsers/pretty-printers.
Currently pretty printer doesn't support a line limit.
There was some discussion about limiting lines displayed
by the debugger -- this should be handled by a single
mechanism for all the different parts of the debugger,
including pretty printer, stack traces and printing
help messages.
Mark said he has also been testing the declarative debugger
by trying it out on bugs in the Mercury team's ICFP contest
entry. In particular, the variable naming bug in
`inside_sphere', and also the unsolved bug with an apparent
false shadow in a two-cylinder test case.
This bug remained in our final submitted solution, despite
a two or more hours search by lots of the team
members. By narrowing the field of focus to the area
which was incorrectly rendered, and changing the
resolution to 1 pixel by 1 pixel, he was able to come
up with a test case that he could use with the
declarative debugger, and had managed to find (and fix?)
the bug! (Applause.) It turned out to be a bug in the
cylinder intersection code.
Someone suggested that this would be a very good
example to write up for a paper on the declarative
debugger, and everyone agreed.
Zoltan Somogyi <zs>:
Had been working on extending mdb to allow attaching commands
to breakpoints. This would include attaching multiple
commands (by putting multi-command sequences in quotes
with commands separated by semicolons).
There was some discussion about what should happen if
you attach a movement command to a breakpoint.
Had been working on adding an option to selectively supress
given event types (except for call events, which can't
easily be supressed since some mdb commands depend on them,
and which it probably isn't useful to suppress anyway),
and also to suppress declarative debugger support (?)
and program representations.
An old change which involved changing retry to use the
"fail" command to skip to a
`fail' rather than just to an `exit' for nondet tabled
predicates (or something along those lines?)
was delayed because the reviewer (fjh) objected to it
since it didn't handle the situation where there was
a commit and thus no `fail' event.
Since (a) this problem only affected model_non tabled
predicates, which are documented as not working anyway,
and (b) the cause of the problem was arguably a problem
in the fail command, rather than this change (?),
we agreed that it would be OK to go ahead and commit
this change.
Tyson Dowd <trd>
Has been working on the IL back-end.
Most of the changes for that were now in the process
of being merged back into the main cvs repository,
and soon they would all be.
Planned to work on the IL runtime library support.
Since some routines will need to be implemented in
different languages, this required extending the foreign
language support in two ways: (1) allowing different
languages than C and (2) allowing more than one implementation
for each procedure, so long as each implementation is in
a different language, and then having some mapping from
target language to a list of implementation languages
in order of preference, so that for a given target language
the compiler can determine which implementation it uses
for each procedure.
Tyson said he now plans to implement the library in C# rather
than Managed C++, since C# would be a bit neater for this
kind of thing, the Managed C++ compiler was not considered
very reliable, and anyway Managed C++ is just as non-portable
as C#.
Tyson had also been working on MCORBA (and will
continue with this). Someone on the net has been
using it, and had reported some bugs which Tyson has
been working on.
Fergus Henderson <fjh>
Had been working on documenting the support for
parallelism/multithreading. Planned to rename the
`--parallel' option as `--thread-safe' or `--threads'
or `--multi-threaded' or something like that.
Concensus was that it should be called `--mt' /
`--multi-threaded' and `.mt' as the grade component.
Had been working on going through the bug list,
fixing bugs, and making the compiler pass its test
suite again.
Had been working on MLDS back-end. Planned to continue
this. Need to fix some bugs and generate better code
for switches.
Another thing we briefly discussed was using the new
high-level C code grade for the ICFP2000 contest and
seeing if there is any improvement in speed.
Tyson said he checked this out and remembered why we
didn't do it -- the contest code uses global.m, which
needs a working implementation of compare for univ (it
stores a map of string to univs). Currently that is
unimplemented in hlc.gc.
Planned to continue working on existential types paper
with dgj.
2. Summer Studentship Projects
Suggestions included
- distributed Mmake: distribute work over multiple
machines on local area networks with NFS
(if time permits, same person could also work on
keeping object files in different directories for
different grades/architectures)
This is really a systems project involving Make and
shell scripts rather than a Mercury project.
- distributed Mercury: provide a Mercury library to
support distributed programming. This would
probably be a wrapper over one of the existing
libraries for this, e.g. MPI.
- support for SOAP/XML: provide a Mercury library
for supporting SOAP/XML.
- COM interface: modify existing MCORBA implementation
to support COM (if not already implemented by Mission
Critical)
- IIOP server: implement the CORBA IIOP protocol
in Mercury, so that MCORBA can use this rather
than wrapping the C++ CORBA implementation.
--
Fergus Henderson <fjh at cs.mu.oz.au> | "I have always known that the pursuit
WWW: <http://www.cs.mu.oz.au/~fjh> | of excellence is a lethal habit"
PGP: finger fjh at 128.250.37.3 | -- the last words of T. S. Garp.
--------------------------------------------------------------------------
mercury-developers mailing list
Post messages to: mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions: mercury-developers-request at cs.mu.oz.au
--------------------------------------------------------------------------
More information about the developers
mailing list