gcl-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Gcl-devel] CLtL1 (was Axiom build error)


From: Camm Maguire
Subject: Re: [Gcl-devel] CLtL1 (was Axiom build error)
Date: 29 Jun 2004 16:27:57 -0400
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.2

Greetings, and thanks you once again for your valuable insights and
feedback! 

Michael Koehne <address@hidden> writes:

> Moin Camm Maguire,
> 
> > OK, I'm missing the head of the thread so far, but first off, axiom
> > will not build with gcl in ANSI mode due at the very least to the
> > in-package issue.
> 
>   Axiom does not build, because it does'nt build by design ;( The idea
>   to requiring a source code, to patch it - could be done in a patch
>   like mine - but is a shoot in the foot for any project that lasts
>   longer than half a year - Axiom build is not obscure, its opaque ;)
> 

Now be nice :-)

> > GCL will support both CLTL1 and ANSI modes going
> > forward.  Hopefully this will be considered a strong feature of GCL
> > given all the historical high quality work done under the earlier
> > dialect. 
> 
>   I have to disagree here - The CLTL1/ANSI double coding is a pain in
>   the ass, and should be dropped together with all those broken #ifdef
>   UNIX constructs. 
> 

I don't find a lot of ansi ifdefs in the C code.  Even these I think
can be eliminated.

>   e.g. implementing pprint-dispatch was'nt that difficult - but I'm
>   currently stuck, because I'm unable to raise a 'type-error form a
>   ./lsp/*.lsp file, because clcs does'nt exist at this moment.
> 

You can use (specific-error ... ) here.  Might not be optimal but
works.  But in general, stuff that needs ansi should be in mod/ or a
directory of its own loaded after clcs.  o/ lsp/ and cmpnew/ should
comprise the cltl1 core.  By in large, ansi is cltl1 + stuff.  The
exceptions we can deal with in init_ansi.lsp with a (fmakunbound ...)
for all obsoleted functions (e.g. lsp/serror) followed by (gbc t).

>   So lets throw away the complete ./clcs/ directory and rework all
>   errors to become conditions.

These is a subtle circular dependency between pcl and clcs which makes
this impossible.  You can check out the unixport/sys_....c files to
reverse engineer the details which I've now forgotten. 

> 
>   Same with PCL - PCL is like a shiny hype on top of a rotten base.
>   CLOS should go into the GCL kernel - perhaps with a few small *.lsp
>   functions aside.
> 

Problem is that most of the large sophisticated lisp programs which
have come into the open source world or conceivably might in the near
future most likely don't use clos, and to them it is considerable
bloat.  

>   One might use CLTL1 behavoir by pushing :CLTL1 to *features*, to
>   supress ANSI only error conditions, if GCL is implemented in a way
>   that its mostly ANSI with CLTL1 backward compatibility.
> 

I'd prefer to go the other way and have the newer stuff keyed by
:ansi-cl in features.  This is again because logically speaking, with
a few exceptions, cltl1 is a subset of ansi.

>   e.g. my current in-package is a special - and not a macro - so its
>   able to 'eat shit' and deal with the old compiler and old code - and
>   also with new ANSI code from Common Lisp Controller.
> 

This is a good idea.  Like cmucl, and will remove one ifdef from
packages.d. 

>   So #:foo and 'foo and "foo" are all valid as packages, and :use '(lisp)
>   is still possible. But there is an ANSI only error condition, if the
>   package does not yet exist. This condition wont happen, if :CLTL1 is
>   in *features* - thus we would have a GCL that is able to run ANSI
>   CL by default - and offers some CLTL1 backward compatibility tricks,
>   if in need.
> 
>   This backward compatibility is not a big problem, e.g. I'm compiling
>   and testing Maxima on regulary base. But this is impossible for Axiom.
>   reason : see above !
> 
>   Axiom should become able to compile from a plain /usr/local/gcl, else
>   nobody could support it. If this means, that we need to extend GCL
>   to incorporate some good things from Axiom - than we should include
>   those Axiom patches, or provide a way for a user to tweak some
>   variables. e.g.:
> 
>   gcl-2.6.1.o.main.c.patch
>   - increasing stack size should become a command line option
>   gcl-2.6.1.unixport.init_gcl.lsp.in.patch
>   - quite start should become a command line option
>   gcl-2.6.1.cmpnew.gcl_cmp????.lsp.patch
>   - is not necessary, just (setq *suppress-compiler-notes* t)
>   gcl-2.6.1.h.linux.defs.patch
>   gcl-2.6.1.unixport.makefile.patch
>   - Axiom should use compile-link, to build its own first image,
>     as long as we dont have a elf-loader using -ldl.
> 

Yes the Debian axiom package uses an extern gcl for its build.  You
can check out the axiom patches in the diff if interested.

In general, though, I feel it important that we continue to support
cltl1 going forward.  That is not to say that we should not design
this carefully so we avoid double coding.  Double coding is indeed
bad, but it does not appear to be necessary in this case to any
significant degree.  

My reasons stem basically from the observation that most of the heavy
lifting in the lisp world appears to have been done under cltl1, and
most of the talent that produced it originally have left lisp for
other languages.  There is a lot of interest in ansi now, but mostly
to my knowledge from isolated individuals looking for a good tool for
their personal projects, and those interested in language design
aesthetics, etc.  It is unclear to me if this new crop of interest in
lisp will be able to muster the sustained coordinated and concentrated
effort to produce from scratch new programs of the quality and
complexity of maxima, acl2 and axiom.  There are literally decades of
work in these bodies of code.  Given this situation, it would be
prudent for a compiler to be able to support the existing codebase.
Gcc used to have a 'kernigan and richie' mode, for example.

This is not to say that full ansi compliance in our ansi build is not
important.  It is rather now our top priority.

Take care,

> Bye Michael
> -- 
>   mailto:address@hidden             UNA:+.? 'CED+2+:::Linux:2.4.22'UNZ+1'
>   http://www.xml-edifact.org/           CETERUM CENSEO WINDOWS ESSE DELENDAM
> 
> 
> 

-- 
Camm Maguire                                            address@hidden
==========================================================================
"The earth is but one country, and mankind its citizens."  --  Baha'u'llah




reply via email to

[Prev in Thread] Current Thread [Next in Thread]