sbcl-devel

Well, there were some errors in my patch of yesterday for SPARC
support; firstly, I forgot to turn off the VOP that I'd identifying as
causing the badness in cold-init; secondly, I forgot to turn off
underflow traps, thus preventing it from building itself; less
criminally, I'd also forgotten to tweak (bytes-consed-between-gcs) to
make it build at an acceptable speed.
I therefore have a revised patch; in fact, it's now three patches
(though unfortunately they're not completely independent of each
other). The first (attached) is a patch[1] to the core lisp code,
which I hope is relatively uncontroversial and can go in fairly
easily; it
* adds one or two files needed for SPARC;
* tweaks (bytes-consed-between-gcs) for non-gencgc systems;
* solves some endian problems in dump.lisp and genesis.lisp.
Because it moves some files around, it depends on the diff to
build-order.lisp-expr which is in the second (attached) patch[2],
which deals with building sbcl and the runtime. Here there are still
two portions:
* cleans up the build and runtime slightly by using target-foo.h
symlinks and header files;
* adds the runtime files needed for SPARC.
The third patch, which I haven't attached because it's fundamentally
not very interesting (though large), is the addition of the
compiler/sparc/ and assembly/sparc/ files. This can be downloaded from
http://www-jcsu.jesus.cam.ac.uk/~csr21/sparc.backend.patch.gz
While I am not claiming that these patches are perfect by any means,
from my perspective they're ready to be merged if that's OK with you;
I'm running out of space on my hard drive for sbcl trees... also, I
suspect it would help Dan Barlow when he comes to forward port the ppc
work he's been doing, as many of the issues are the same.
The only thing in the patches that's immediately visible to the
end-user as "odd" is that GC is a bit chatty (I have PRINTNOISE on in
the patches). The SIMPLE-ERROR<->TYPE-ERROR mismatch, it turned out,
was caused by a bug in the linux-2.2 kernel (surprise!) which I have
worked around; currently, I'm fprint()ing to stderr (see linux-os.c in
os_init(); clearly it would be correct to SHOW, but SHOW doesn't
currently work...
Currently failing tests: irrat.pure.lisp, compiler.impure.lisp,
foreign.test.sh, filesys.test.sh[3].
Cheers,
Christophe
[1] Also available at:
http://www-jcsu.jesus.cam.ac.uk/~csr21/sparc.code.patch.gz
[2] Likewise available at:
http://www-jcsu.jesus.cam.ac.uk/~csr21/sparc.runtime.patch.gz
[3] TRUENAMES=(#P"/var/tmp/sbcl/tests/filesys-test-16387/link-1"
#P"/var/tmp/sbcl/tests/filesys-test-16387/link-2"
#P"/var/tmp/sbcl/tests/filesys-test-16387/link-3"
#P"/var/tmp/sbcl/tests/filesys-test-16387/link-4"
#P"/var/tmp/sbcl/tests/filesys-test-16387/link-5"
#P"/var/tmp/sbcl/tests/filesys-test-16387/link-6"
#P"/var/tmp/sbcl/tests/filesys-test-16387/test-1.tmp"
#P"/var/tmp/sbcl/tests/filesys-test-16387/test-2.tmp")
--
Jesus College, Cambridge, CB5 8BL +44 1223 510 299
http://www-jcsu.jesus.cam.ac.uk/~csr21/ (defun pling-dollar
(str schar arg) (first (last +))) (make-dispatch-macro-character #\! t)
(set-dispatch-macro-character #\! #\$ #'pling-dollar)

I've merged the SPARC patches in 0.7.1.20.
I had to do a fair number of CVS operations by hand (e.g. telling CVS
about the new subdirectories, then telling it about the new files in
the new subdirectories), and it would have been easy to miss
something. Also, I tweaked a few things to get it to work on
X86/OpenBSD. You should probably make a fresh checkout from the
repository and test it to make sure that I didn't overlook or break
anything.
> * tweaks (bytes-consed-between-gcs) for non-gencgc systems;
Should we perhaps set BYTES-CONSED-BETWEEN-GCS to a large value by
default everywhere (in cold-init.lisp or something, not just in
warm.lisp) when #-GENCGC? If it's a big performance win on non-X86
machines, and seldom a performance problem, I'd be happy to do that.
(Thank you!)
--
William Harold Newman <william.newman@...>
"Look on my works, ye Mighty, and despair!" -- Ozymandias, King of Kings
PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C

On Fri, Feb 15, 2002 at 10:57:36AM -0600, William Harold Newman wrote:
> I've merged the SPARC patches in 0.7.1.20.
<fx: does a little dance>
> I had to do a fair number of CVS operations by hand (e.g. telling CVS
> about the new subdirectories, then telling it about the new files in
> the new subdirectories), and it would have been easy to miss
> something. Also, I tweaked a few things to get it to work on
> X86/OpenBSD. You should probably make a fresh checkout from the
> repository and test it to make sure that I didn't overlook or break
> anything.
I've started a build, and I hope to be able to report back in about 16
hours' time... :-)
> > * tweaks (bytes-consed-between-gcs) for non-gencgc systems;
>
> Should we perhaps set BYTES-CONSED-BETWEEN-GCS to a large value by
> default everywhere (in cold-init.lisp or something, not just in
> warm.lisp) when #-GENCGC? If it's a big performance win on non-X86
> machines, and seldom a performance problem, I'd be happy to do that.
Well, even on my relatively ancient SPARC with (only) 64Mb RAM it's a
huge performance win; it takes about 2 hours off the build time for a
cross-compile, and I wouldn't want to think about doing a sparc->sparc
compile without it. So I guess if it's such a big performance win
there, it's unlikely ever to hurt...
> (Thank you!)
You're (individually and collectively) most welcome. I think I'll
probably take a short break from sparc/sbcl hacking, but I shall be
back in the near future with some patches to address the issues I've
already identified (unless someone else fixes them first, of course
:-).
Cheers,
Christophe
--
Jesus College, Cambridge, CB5 8BL +44 1223 510 299
http://www-jcsu.jesus.cam.ac.uk/~csr21/ (defun pling-dollar
(str schar arg) (first (last +))) (make-dispatch-macro-character #\! t)
(set-dispatch-macro-character #\! #\$ #'pling-dollar)

On Fri, Feb 15, 2002 at 05:36:38PM +0000, Christophe Rhodes wrote:
> On Fri, Feb 15, 2002 at 10:57:36AM -0600, William Harold Newman wrote:
> > I've merged the SPARC patches in 0.7.1.20.
> > [...]
> > You should probably make a fresh checkout from the
> > repository and test it to make sure that I didn't overlook or break
> > anything.
>
> I've started a build, and I hope to be able to report back in about 16
> hours' time... :-)
Well, it took closer to 36 hours, but the CVS is fine; it passes the
same tests as my personal tree, anyway.
It took so long because, as usual, I forgot to set up
customize-target-features.lisp to remove :gencgc from
*shebang-features*; this only causes problems in make-target-1, and I
didn't discover it 'till the following morning. I can imagine being
sufficiently irritated by this to have the motivation to submit some
kind of mechanism to prevent this and similar things happening
again... :-)
Cheers,
Christophe
--
Jesus College, Cambridge, CB5 8BL +44 1223 510 299
http://www-jcsu.jesus.cam.ac.uk/~csr21/ (defun pling-dollar
(str schar arg) (first (last +))) (make-dispatch-macro-character #\! t)
(set-dispatch-macro-character #\! #\$ #'pling-dollar)

On Sun, Feb 17, 2002 at 12:38:36PM +0000, Christophe Rhodes wrote:
> On Fri, Feb 15, 2002 at 05:36:38PM +0000, Christophe Rhodes wrote:
> > On Fri, Feb 15, 2002 at 10:57:36AM -0600, William Harold Newman wrote:
> > > I've merged the SPARC patches in 0.7.1.20.
> > > [...]
> > > You should probably make a fresh checkout from the
> > > repository and test it to make sure that I didn't overlook or break
> > > anything.
> >
> > I've started a build, and I hope to be able to report back in about 16
> > hours' time... :-)
>
> Well, it took closer to 36 hours, but the CVS is fine; it passes the
> same tests as my personal tree, anyway.
OK, good.
> It took so long because, as usual, I forgot to set up
> customize-target-features.lisp to remove :gencgc from
> *shebang-features*; this only causes problems in make-target-1, and I
> didn't discover it 'till the following morning. I can imagine being
> sufficiently irritated by this to have the motivation to submit some
> kind of mechanism to prevent this and similar things happening
> again... :-)
Hmm, yes, I hadn't thought about machine dependent *FEATURES*
elements.
I'd be happy to add a patch if it didn't cause inconvenience for
systems which use the defaults. (E.g. the make-host-1 code could
first initialize the features to a default, then search for
`uname`-customize-target-features.lisp and
`uname -m`-customize-target-features.lisp and
`uname`-`uname -m`-customize-features.lisp and LOAD
them if it finds them.) (Or the filenames could be
customize-target-features/`uname`.lisp and so on, to
reduce clutter in the toplevel directory.)
Alternatively, I have some real misgivings about autoconf (mostly
since it seems to end up awfully hairy in practice), but if someone
understands it and wants to make a detailed case for it against my
skepticism, I'm prepared to listen, since I notice that it ends up
being used very widely by people who know what they're doing. I can
believe that it might end up being less ugly than accreting ad hoc
solutions one by one.
--
William Harold Newman <william.newman@...>
"Look on my works, ye Mighty, and despair!" -- Ozymandias, King of Kings
PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C

On Mon, Feb 18, 2002 at 12:34:19PM +0000, Christophe Rhodes wrote:
> One thing I should ask is when (if?) you're planning to make the next
> maintenance release, as there are a couple of cleanups that should
> probably be done by then (if nothing else, reducing the noise emitted
> in gc).
Maybe in about a month.
I don't want to be in the position of responding to reports of
problems with "that's been fixed in the CVS version, please download
it and use that" when I could say "that's been fixed in release 0.7.x,
please upgrade." But as long as the release version seems roughly as
usable as the current CVS, I expect I'll release upgrades less than
once a month. Every two months seems like a reasonable rate.
Of course, estimating roughly-as-usability isn't an exact science. In
particular, it depends on my wild guesses of what people want to do.
E.g. if there are people who are waiting impatiently for your SPARC
port (but aren't bleeding edge enough that they're following the CVS
anyway:-) then I should release a new version this week. (Feedback on
this kind of thing is welcome.)
For my purposes, SBCL has become pretty usable (and extremely usable
compared to the current state of the Go-playing program that I also
work on:-). That, combined with the aftereffects of my overexpenditure
of time and energy on 0.7.0, is likely to keep the level of my
maintenance work on it down for a while. However, I'm still happy to
merge other people's work. (Speaking of which, I should merge your
precedence/sequence gotchas patch.) (And AFAIK that's the only pending
patch.)
> I'll try to get the trivial cleanups done this week, at any rate.
OK.
--
William Harold Newman <william.newman@...>
"Look on my works, ye Mighty, and despair!" -- Ozymandias, King of Kings
PGP key fingerprint 85 CE 1C BA 79 8D 51 8C B9 25 FB EE E0 C3 E5 7C

Community

Help

Get latest updates about Open Source Projects, Conferences and News.

Sign up for the SourceForge newsletter:

CountryState

JavaScript is required for this form.

I agree to receive quotes, newsletters and other information from sourceforge.net and its partners regarding IT services and products. I understand that I can withdraw my consent at any time. Please refer to our Privacy Policy or Contact Us for more details