From: Paul F. Dietz
Subject: Poplog common lisp meets the gcl random tester
Date: 
Message-ID: <nK2dnfVHtovTaOXcRVn-vg@dls.net>
Prompted by Aaron Sloman's recent message, I downloaded poplog 15.53
and installed it on my x86 linux box.  I've been working on a conformance
test suite for ANSI Common Lisp (presently containing over 18,000 tests)
and am always looking for new targets.

The suite didn't even load, since the ANSI function COMPILE-FILE-PATHNAME
is not defined.  Conditionalizing that away so that the files are
loaded uncompiled, I managed to get the suite's random tester to load.
This generates, optionally compiles, and evaluates random legal lisp forms,
looking for evaluator and/or compiler errors, then minimizes the bug-inducing
forms.  It has very quickly found new bugs on every lisp implementation
(free or commercial) on which it's been run.

Here are some of the failures it came up with on Poplog common lisp:


(ash 1 -1000000000000)
  should be: 0
  actually: 'Integer shift amount needed'


(unwind-protect 0 (the integer 1))

  should be: 0
  actually: 'Excess type specifier(s) in THE special form'


(funcall
    (compile
     nil
     '(lambda (a) (declare (notinline > *))
        (declare (optimize (compilation-speed 0) (safety 2) (speed 2) (debug 0) (space 3)))
        (catch 'ct1 (* a (throw 'ct1 (if (> 0) a 0))))))
    5445205692802)

  should be: 5445205692802)
  actually:  T, 0


(loop for x below 2 count (not (not (typep x t))))

  should be: 2
  actually: 'Ste: stack empty (missing argument? missing result?)'


(let ((a 1)) (if (not (/= a 0)) a 0))

  should be: 1
  actually: 'Ste: stack empty (missing argument? missing result?)'


It also would go into an infinite loop on some forms (interrupt did not
cause a catchable error, so these forms could not be minimized.)

	Paul Dietz
	·····@dls.net

From: Frode Vatvedt Fjeld
Subject: Re: Poplog common lisp meets the gcl random tester
Date: 
Message-ID: <2hsm876jdn.fsf@vserver.cs.uit.no>
"Paul F. Dietz" <·····@dls.net> writes:

> (let ((a 1)) (if (not (/= a 0)) a 0))
>
>  should be: 1

You mean it should be 0, surely.

-- 
Frode Vatvedt Fjeld
From: Paul F. Dietz
Subject: Re: Poplog common lisp meets the gcl random tester
Date: 
Message-ID: <ztWdnQCUGJH6Z-XcRVn-vg@dls.net>
Frode Vatvedt Fjeld wrote:
> "Paul F. Dietz" <·····@dls.net> writes:
> 
> 
>>(let ((a 1)) (if (not (/= a 0)) a 0))
>>
>> should be: 1
> 
> 
> You mean it should be 0, surely.
> 

Ugh, right.

	Paul
From: Aaron Sloman
Subject: Re: Poplog common lisp meets the gcl random tester
Date: 
Message-ID: <clekqb$gqe$1@soapbox.cs.bham.ac.uk>
"Paul F. Dietz" <·····@dls.net> writes:

> Prompted by Aaron Sloman's recent message, I downloaded poplog 15.53
> and installed it on my x86 linux box.  I've been working on a conformance
> test suite for ANSI Common Lisp (presently containing over 18,000 tests)
> and am always looking for new targets.

Thanks very much for doing these tests and reporting the results
(recently followed up on the poplog-dev email list).

Development on The Poplog Common Lisp system essentially stopped
seven or eight years ago. Before that it had merely been
made consistent with most of CLTL rather than ANSI common lisp.

The status is summarised here:

    http://www.cs.bham.ac.uk/research/poplog/doc/lisphelp/bugs
    http://www.cs.bham.ac.uk/research/poplog/doc/lisphelp/lispnews

A few years after the work on Poplog Common Lisp ended, Poplog
became available as an open source free system (when SPSS bought
ISL www.isl.co.uk), but most of the development work since then has
concerned pop-11 the core language.

So it would be great if some Lisp experts were to take it in hand and
bring it up to ANSI common lisp standard, insofar as that is compatible
with the implementation using the Poplog virtual machine (no
interpreter, only an incremental compiler, etc.).

However I don't know whether there is a real need for a free open source
common lisp, as I am not really a user of lisp. (I would be if I did not
have Pop11 !!)

If anyone wishes to work on it I and others interested in the
development of poplog would be willing to help, and of course when the
port to OSX is complete there would be more beneficiaries.

The same applies to anyone who wishes to work on bringing poplog
Prolog or Poplog ML up to date.

Steve Leach's comments on Paul's message identifying possible remedial
steps were sent only to the poplog-dev email list. But they could
be made available to anyone wishing to take this further.

Aaron
====
Aaron Sloman, ( http://www.cs.bham.ac.uk/~axs/ )
PAPERS: http://www.cs.bham.ac.uk/research/cogaff/  (also talks in /talks )
FREE BOOK: http://www.cs.bham.ac.uk/research/cogaff/crp/
FREE TOOLS: http://www.cs.bham.ac.uk/research/poplog/packages/simagent.html
From: Paul F. Dietz
Subject: Re: Poplog common lisp meets the gcl random tester
Date: 
Message-ID: <cLWdnZgwjp0ze-fcRVn-uA@dls.net>
Aaron Sloman wrote:

> However I don't know whether there is a real need for a free open source
> common lisp, as I am not really a user of lisp. (I would be if I did not
> have Pop11 !!)

There are several competing FOSS lisps aside from Poplog, actually; see

    http://www.cliki.net/Common%20Lisp%20implementation

and related pages.  I was testing poplog's CL mostly to exercise the random
tester.

	Paul
From: Aaron Sloman
Subject: Re: Poplog common lisp meets the gcl random tester
Date: 
Message-ID: <clet8i$h30$1@soapbox.cs.bham.ac.uk>
"Paul F. Dietz" writes:

> Aaron Sloman wrote:
>
> > However I don't know whether there is a real need for a free open source
> > common lisp, as I am not really a user of lisp. (I would be if I did not
> > have Pop11 !!)
>
> There are several competing FOSS lisps aside from Poplog, actually; see
>
>     http://www.cliki.net/Common%20Lisp%20implementation
>
> and related pages.  I was testing poplog's CL mostly to exercise the random
> tester.

Thanks for the pointer.

I was vaguely aware of the existence of others, and did not phrase
my comment well. I should have written:

    However I don't know whether there is a real need for another
    free open source common lisp ....

The run-time speed of Poplog Common Lisp will never compete with a
stand-alone expert implementation of CL. Its compiler is very fast,
but that is connected with the fact that it does not do as much
compile-time optimization as some others do. Moreover, the
Poplog virtual machine (like the core language pop11) has a boolean
data type (with two instances true and false), whereas Lisp, alas,
uses nil for false. That discrepancy will also affect speed of
Poplog common lisp because of the need to 'translate' between the
two. It can't simply use the poplog false object as nil, because of
a design requirement that allows pop11 and common lisp (and the
other Poplog languages, prolog and ML) to share data-structures,
including lists.

I wonder whether any of the benchmark tests specifically measure
garbage collection times? The Poplog garbage collector (written in a
'system' dialect of pop11 with C-like extensions) is pretty fast and
supports a heap with 'holes' where non-relocatable (e.g. externally
linked) code can be stored but does not have all the flexibility of
a generational garbage collector, though it allows heap-locking for
stuff that is never going to be garbage collected.

Poplog includes an integrated programmable editor Ved, which 'knows'
about documentation and program libraries and can pass source to the
compiler, or receive printout from the compiler. That can be useful
for program development or teaching without the overhead of a
separate Emacs process (or similar). But most people don't like
learning to use a new editor.

The windows version of poplog still needs a lot of work as it does
not yet support any graphical capability. (The openpoplog project
aims to do that.)

There's also still work to be done improving the packaging, to
simplify installation, maintenance, etc.

Incidentally, the licence is modelled on the XFree86 licence rather
than GPL, so anyone who wants to can do anything they like with the
poplog source code.

On a different topic: apparently nobody has responded to the
original offer to test the Darwin+PC port (though several people are
interested int he OSX port). Does that mean no common lisp users are
interested in Darwin?

The Release notes in

    http://www.cs.bham.ac.uk/research/poplog/darwin+pc/

mention an assembler problem, with a temporary workaround that's not
ideal, and the people doing the port would welcome help from a
Darwin expert.

Aaron
===
====
Aaron Sloman, ( http://www.cs.bham.ac.uk/~axs/ )
PAPERS: http://www.cs.bham.ac.uk/research/cogaff/  (also talks in /talks )
FREE BOOK: http://www.cs.bham.ac.uk/research/cogaff/crp/
FREE TOOLS: http://www.cs.bham.ac.uk/research/poplog/packages/simagent.html
From: Bruno Haible
Subject: Re: Poplog common lisp meets the gcl random tester
Date: 
Message-ID: <cljsvl$i1o$1@laposte.ilog.fr>
Aaron Sloman wrote:
> Incidentally, the licence is modelled on the XFree86 licence

I hope you mean, on the X11 license? The XFree86 license has changed
in unacceptable ways a few months ago.

> On a different topic: apparently nobody has responded to the
> original offer to test the Darwin+PC port (though several people are
> interested int he OSX port). Does that mean no common lisp users are
> interested in Darwin?

It more probably means that most people who use Darwin use it on PowerPC,
not x86 platforms.

Instead of porting
   Linux/x86 -> Darwin/x86 -> Darwin/PowerPC -> MacOS X/PowerPC
it might make more sense to go this route:
   Linux/x86 -> Linux/PowerPC -> Darwin/PowerPC -> MacOS X/PowerPC
or to skip the intermediate platform altogether.

                     Bruno
From: Aaron Sloman
Subject: Re: Poplog common lisp meets the gcl random tester
Date: 
Message-ID: <clk1ho$n1b$1@soapbox.cs.bham.ac.uk>
Bruno Haible <·····@clisp.org> writes:

> Date: 25 Oct 2004 21:59:17 GMT
> Organization: ILOG S.A., France
>
> Aaron Sloman wrote:
> > Incidentally, the licence is modelled on the XFree86 licence
>
> I hope you mean, on the X11 license? The XFree86 license has changed
> in unacceptable ways a few months ago.

It is based on the MIT/XFree86 license as it was around 1999. The
precise wording is here
    http://www.cs.bham.ac.uk/research/poplog/copyright.html

> > On a different topic: apparently nobody has responded to the
> > original offer to test the Darwin+PC port (though several people are
> > interested int he OSX port). Does that mean no common lisp users are
> > interested in Darwin?
>
> It more probably means that most people who use Darwin use it on PowerPC,
> not x86 platforms.

Interesting. Is that simply because they are then not restricted to
Apple hardware?

Or does Darwin have some advantags over OSX.

(I have never used Darwin, OSX or any Mac except for a few minutes
about 13 years ago.)

> Instead of porting
>    Linux/x86 -> Darwin/x86 -> Darwin/PowerPC -> MacOS X/PowerPC
> it might make more sense to go this route:
>    Linux/x86 -> Linux/PowerPC -> Darwin/PowerPC -> MacOS X/PowerPC
> or to skip the intermediate platform altogether.

I think the port to Darwin/x86 was chosen as the easiest thing to do
in order to learn how to port poplog, given the complexities of
bootstrapping involved, since most of the poplog core is implemented
in pop11, which requires a running poplog to build a new system.

The people doing the work had never previously used poplog or pop11,
let alone ported it.

For anyone interested there's information about porting
and rebuilding poplog here.
    http://www.cs.bham.ac.uk/research/poplog/sysdoc/

Aaron
====
Aaron Sloman, ( http://www.cs.bham.ac.uk/~axs/ )
PAPERS: http://www.cs.bham.ac.uk/research/cogaff/  (also talks in /talks )
FREE BOOK: http://www.cs.bham.ac.uk/research/cogaff/crp/
FREE TOOLS: http://www.cs.bham.ac.uk/research/poplog/packages/simagent.html
From: David Steuber
Subject: Re: Poplog common lisp meets the gcl random tester
Date: 
Message-ID: <87fz41puw3.fsf@david-steuber.com>
Aaron Sloman <···@cs.bham.ac.uk> writes:

> Or does Darwin have some advantags over OSX.

My understanding is that Darwin provides the POSIX APIs for OS X.
OpenMCL has Darwin and Linux versions on PPC but can also access the
various frameworks (Carbon, Cocoa, etc) on OS X.

-- 
An ideal world is left as an excercise to the reader.
   --- Paul Graham, On Lisp 8.1