sbcl Log

Commit Date  
[0f2750] by Nikodemus Siivola Nikodemus Siivola documentation work related to move to Launchpad

* Delete SUPPORT and minimize BUGS.

The information that used to be there is now the first chapter of
the manual: "Getting Support and Reporting Bugs", Maybe it belongs
elsewhere, but IMO it should be as prominent as we can make it - so
the first chapter for now.

Refer to Lauchpad and sbcl-bugs in "Reporting Bugs".

Remove Dan B. from support providers for now, given that is currently domain-parked.

2009-06-03 09:09:52 Tree
[5b5853] by Nikodemus Siivola Nikodemus Siivola SHARED-INITIALIZE should initialize unbound :CLASS slots

* This has been around for a while, but despite the misleading
comment in the source the spec is clear enough.

2009-06-02 18:33:52 Tree
[7ce510] by Nikodemus Siivola Nikodemus Siivola regression from

* One leg of logic lost in the refactoring: if the type to verify is
(SIMPLE-ARRAY * (*)) we need to check that there is no array

2009-06-02 17:23:08 Tree
[c6fd5a] by Nikodemus Siivola Nikodemus Siivola two regressions from

* OPEN should not physicalize the pathname associated with
the stream.

* RENAME-FILE needs to deal with logical pathnames.

(Both revealed by ansi-tests, as were the last bunch.)

2009-06-02 15:59:33 Tree
[16f861] by Nikodemus Siivola Nikodemus Siivola two regressions from the 1.0.28. series

* from when destructuring a constant :INITIAL-CONTENTS to
MAKE-ARRAY, take care to quote the elements.

* from handle :BACK and :UP in CANONICALIZE-PATHNAME, and
make sure they do not appear after :WILD-INFERIORS or :ABSOLUTE.
I'm more and more concinved that MAKE-PATHNAME should canonicalize,
though, so that these checks don't need to be carried out by users
of pathnames -- but leaving that for later. appropriate that it is .71 that fixes both.

2009-06-02 15:03:03 Tree
[45ec97] by Nikodemus Siivola Nikodemus Siivola regression in ABOUT-TO-MODIFY-SYMBOL-VALUE from

* Patch and test-case by Stas Boukarev.

2009-05-23 08:27:21 Tree
[056761] by Nikodemus Siivola Nikodemus Siivola filesystem tests and small Windows improvements

* FILE-AUTHOR returns NIL instead of signalling an error on Windows

* Missing DIRECTORY canonicalization tests.

* Check one-letter devices for being alpha-chars when unparsing
them on Windows.

* NATIVE-NAMESTRING now has similar tailing-slash handling
on Windows as elsewhere -- adjust the test.

* Windows namestrings canonicalize / to \ -- make the random
namestring tests take that into account.

...filesys.pure.lisp passes on Windows.

2009-05-22 06:16:20 Tree
[f33fdd] by Nathan Froyd Nathan Froyd move PPC over to slimmed-down EMIT-ERROR-BREAK interface

nyef pointed out that compiler/generic/array.lisp was kinda ugly with the
#!+ condition goo it in. This patch is the first step towards moving all
backends over to the slimmer EMIT-ERROR-BREAK interface--one that doesn't
require duplicating lots of error generation code in VOP generation

2009-05-21 21:03:34 Tree
[ea95df] by Nathan Froyd Nathan Froyd fix build on powerpc-linux

lose() was not getting declared early enough; shuffle header files around
to ensure interr.h gets included before gc.h in the relevant places.

2009-05-21 16:22:54 Tree
[9a82b2] by Nikodemus Siivola Nikodemus Siivola implement SB-EXT:GET-TIME-OF-DAY

* On unixoid platforms is this pretty much what UNIX-GETTIMEOFDAY
used to be, whereas on Windows we build it on top of
SystemTimeAsFileTime since gettimeofday() doesn't give us
microseconds there -- it's almost as if the POSIX API support on
Windows as intentionally sucky...

* Keep UNIX-GETTIMEOFDAY around as a wrapper to GET-TIME-OF-DAY,
since there are applications in the wild that use it directly.
Scheduled for deletion towards to the end of 2009, or so.

2009-05-21 15:27:37 Tree
[d25e34] by Nathan Froyd Nathan Froyd fix compiling with *PROFILE-HASH-CACHE* set to T

We were trying to set the PROBES/MISSES variables prior to actually
defining them. Rearrange the logic and add a little OAOO to ensure the
variables are DEFVAR'd first.

2009-05-21 12:13:53 Tree
[8bc3c6] by Nikodemus Siivola Nikodemus Siivola more DIRECTORY work

* While DIRECTORY on local UNC paths worked as of, turns
out Windows network shares don't exist as far as stat() is
concerned -- and hence using the proper share path didn't work.
sans stat, and we're good.

* Canonicalize the pathnames for DIRECTORY, so that (DIRECTORY #P".")
is equivalent to (DIRECTORY #P"./") -- ditto for #P".." and
#P"../". Also make DIRECTORY treat :UNSPECIFIC names and types as
if they were NIL.

2009-05-21 10:30:27 Tree
[146ca8] by Nikodemus Siivola Nikodemus Siivola SB-EXT:DEFINE-HASH-TABLE-TEST

* Based on old SB-INT:DEFINE-HASH-TABLE-TEST, but:
** macro, not a function.
** only two arguments: name of the test function, and the hash function
(which can also be a lambda form.)
** :TEST accepts both 'NAME, and #'NAME as well.
** pick up redefinitions of the test and hash-function without
re-executing the D-H-T-T form.
** protected by package locks.

* MAKE-HASH-TABLE :HASH-FUNCTION supported as well. EQ-based hashing
not legal for user-provided hash functions, accidents prevented by
wrapping functions which may return a true secondary value in
a closure.

* Documentation -- other hash-table extensions as well.

* Documentation generation improvements:
** use the shortest package name available -- CL:FOO, not
** kludge around texi2pdf making &key and company bold
** add exceptions so that we don't format words ANSI and CLHS
as lowecase symbols.

2009-05-21 09:56:16 Tree
[47a747] by Nathan Froyd Nathan Froyd restore SYSCALL macros to the target build

Apparently there were other clients floating out in the wild.

2009-05-21 01:50:52 Tree
[621eeb] by Nikodemus Siivola Nikodemus Siivola partial re-implementation of DIRECTORY

* Rip out !ENUMERATE-MATCHES, which insisted on walking the
directory tree from the root -- making using DIRECTORY on
UNC pathnames a losing proposition.

* New guts built on top of MAP-DIRECTORY, and it's lower level cousin
WITH-NATIVE-DIRECTORY-ITERATOR. This seems easier to understand to
me at least, and was certainly easier than trying to re-architect
!ENUMERATE-MATCHES. ...and DIRECTORY now works on UNC shares, yay!

...and a bunch of associated secondary changes:

** Rename UNIX-FILE-KIND NATIVE-FILE-KIND, and move it to

UNIX-DIRENT-NAME -- later to be turned into OS-*, and possibly
moved into SB-SYS.

** *IGNORE-WILDCARDS* is no longer needed in MAYBE-MAKE-PATTERN,
kill it.

and Unix: both have the same lisp namestring syntax for pieces,
and if a third pathname host appears it probably should too.

keyword there.

in GENSYM instead.

** Kill PATHAME-ORDER, unused.

** Follow the same convention as elsewhere for :AS-FILE in
NATIVE-NAMESTRING on Windows -- users needing the
no-trailing-slash version are supposed to say :AS-FILE. OS
pickiness on slash-or-no seems universal...

2009-05-20 13:51:53 Tree
[8ebb91] by Nikodemus Siivola Nikodemus Siivola partial UNC pathname support for Windows

UNC hosts are represented using the devíce components of pathnames,
as are drives. This is sleightly lossy since it prevents accessing
network hosts named with a single letter -- single-letter devices
are taken to mean drives.

However, since storing the host in the pathname host component
would lead to confusion between logical hosts and UNC hosts,
this seems preferable right now, so that

(make-pathname :host "foo" ...)

remains unambiguous. DIRECTORY does not work yet with UNC pathnames
since it insists on walking the path from root -- which Windows
doesn't seem to allow for UNC paths, not even local ones.

2009-05-19 12:30:24 Tree
[be6abf] by Nikodemus Siivola Nikodemus Siivola give UNIX-NAMESTRING the chop

Use PROBE-FILE and NATIVE-NAMESTRING instead as appropriate.

2009-05-18 20:38:44 Tree
[e4c6f7] by Nikodemus Siivola Nikodemus Siivola more MAKE-ARRAY goodness


The transform for LIST dimensions replaces this with an identical
call, except that the dimensions will be 3.

The transform for INTEGER dimensions fires, but does not yet
see the (LIST X Y Z) in INITIAL-CONTENTS, since it is now an
argument to the lambda introduced by the previous call.

One option would be to delay the latter transform if we don't see
how to compile it nicely, because after a couple of IR1-OPTIMIZE
passes the call to LIST will be there, and the intermediate lambda

However, because multiple roundtrips like that suck, instead make
the source transform for MAKE-ARRAY smart enough to recognize this
case, and transform to the integer argument case directly., this makes me think we really should try to eliminate /
simplify lambdas introduced by TRANSFORM-CALL up front somehow.

2009-05-18 09:17:49 Tree
[7f9f1f] by Nikodemus Siivola Nikodemus Siivola cross compiler is able to reason about host complexes

...based on the type the host object will take in target,
which just needs to follow the same logic our dumper uses.

...fixing which shows the the new FILL transform didn't handle
complex single floats quite right yet.

2009-05-18 07:58:11 Tree
[81b3f0] by Nikodemus Siivola Nikodemus Siivola more robust stack frame pointer checking in SB-SPROF

Foreign code might not have a frame pointer like we expect. Use

Patch by Bart Botta.

2009-05-17 18:01:01 Tree
[cfc3b6] by Nikodemus Siivola Nikodemus Siivola transform FILL to a UB*-BASH-FILL when possible

The performance boost for all cases which previously used
VECTOR-FILL* is quite noticeable.

Also delay the FILL transform if the vector element type is
not yet known.

...also one leftover #+sb-xc-host from the previous commit.

2009-05-17 17:30:23 Tree
[1c15a3] by Nikodemus Siivola Nikodemus Siivola more principled approach to complex dumping in the xc

can be REAL on some hosts, in which case the host will happily
agree that (TYPEP #C(2 2) '(COMPLEX DOUBLE-FLOAT)) is true... etc.

So in the cross compiler look at the type of the parts of the
complex, and refuse to dump it if it doesn't look like something we
can handle correctly.

2009-05-17 17:11:59 Tree
[879c75] by Nikodemus Siivola Nikodemus Siivola enable dumping of specialized complexes in the cross-compiler

* No reason to disable it that I can see, and if it is disabled the
cross-compiler will dump slightly bogus objects for complex single
and double floats -- using the generic complex widetag.

Noticed while trying to initialize arrays using the

2009-05-17 12:44:17 Tree
[3137bf] by Nikodemus Siivola Nikodemus Siivola fix x86-64 build, oops

Name data vector accessor VOPs consistently, using the -WITH-OFFSET/
style names, since on x86-64 they all are with offsets.
(INITIALIZE-VECTOR has a macrolet that generates VOP calls based on
the platform, and wants consistent names.)

2009-05-16 15:10:54 Tree
[e840f4] by Nikodemus Siivola Nikodemus Siivola better MAKE-ARRAY transforms

* Add a source transform for MAKE-ARRAY that declaims LIST and VECTOR
as NOTINLINE, so the the MAKE-ARRAY deftransforms are able to pick
them apart (for DIMENSIONS and :INITIAL-CONTENTS.)

* INITIALIZE-VECTOR is a new magic function with a IR2-CONVERT
transform. It's purpose is to allow open coding :INITIAL-CONTENTS
initialization without inhibiting stack allocation.

* Turns out that making stack allocation decisions during locall
analysis is not enough since optimization iterates: if a transform
occurs and introduces new LVARs that would be good for DX after
the locall analysis has run for the combination, the new LVARs
will not get their share of stacky goodness. Therefore, after
a transform propagate DX information to the new functional

* The new logic is in TRANSFORM-MAKE-ARRAY-VECTOR, which handles
all the cases of vector allocation with a known element type:

are picked apart when the length matches the vector length,
and their arguments are spliced into the call.

Constant :INITIAL-CONTENTS is picked apart as well.

Initialization is done using INITIALIZE-VECTOR.

** Otherwise :INITIAL-CONTENTS is splatted in place using
REPLACE after we have checked that the length matches.

** :INITIAL-ELEMENT not EQL to the default element uses

** Otherwise the default initialization is fine.

Some additional hair here, since MAYBE-PROPAGATE-DYNAMIC-EXTENT
cannot deal with OPTIONAL-DISPATCH functionals. So to ensure we get
full benefit of it, make sure the lambdas we transform to have only
required arguments -- courtesy of new ELIMINATE-KEYWORD-ARGUMENT
utility. (Note: it might be worth it to do something like this for
many cases automatically, to reduce the number of lambdas the
compiler generates. For inline lambdas we could do the whole &key
handling _before_ the lambda is converted...)

* Identify the case of (LIST N) as dimensions as being a vector,

* More efficient allocation of simple multidimensional arrays in
the presence of :INITIAL-CONTENTS (still slow, though) and

* Fix the source transform for VECTOR so that it too can stack

* Updates tests and docs.

2009-05-16 12:23:13 Tree
Older >