Nikodemus Siivola [Tue, 15 Jan 2008 15:26:08 +0000 (15:26 +0000)]
1.0.13.39: record bug #421
* Unchecked RETURN reported by Kevin Reid.
Nikodemus Siivola [Tue, 15 Jan 2008 14:50:27 +0000 (14:50 +0000)]
1.0.13.38: final part of the debug-name improvements
* Use NAME-LAMBDALIKE to construct the debug-name if :NAME is NIL.
* Also make sure the SOURCE-NAME is not NIL, but .ANONYMOUS. if none
is provided.
* Correct handling of &OPTIONAL-PROCESSOR debug-names: the debug-name
keyword is provided by the callers, so we cannot default it as part
of the keyword parsing (in case it is NIL), additionally, even if
we have a debug-name already, we still want to make up an
&OPTIONAL-PROCESSOR debug-name.
* Ensure (and strategically AVER) that we have a non-null debug-name
for things which are .ANONYMOUS. -- by making up one using
NAME-LAMBDALIKE if nothing else.
* AVER that the second argument of DEBUG-NAME is not NIL.
* Test that (COMPILE NIL '(LAMBDA ...)) doesn't make function which
backtrace as NIL anymore.
Nikodemus Siivola [Tue, 15 Jan 2008 13:28:46 +0000 (13:28 +0000)]
1.0.13.37: skip compilation of null and non-symbol toplevel atoms
* Not a performance consideration, but rather part of tidying up code
paths that lead DEBUG-NAME to be called with NIL as the second
argument (in IR1-TOPLEVEL the form becomes part of the
TOP-LEVEL-FORM debug-name.)
Nikodemus Siivola [Tue, 15 Jan 2008 12:25:54 +0000 (12:25 +0000)]
1.0.13.36: better HAIRY-FUNCTION-ENTRY debug-names
* Instead of LVAR-FUN-NAME, use new LVAR-FUN-DEBUG-NAME, which works
even for multiply-used lvars, by returning the list of names
instead of just NIL.
Nikodemus Siivola [Tue, 15 Jan 2008 11:59:30 +0000 (11:59 +0000)]
1.0.13.35: preserve source- and debug-name in IR1-OPTIMIZE-MV-CALL
* Copying them from the original leaf before converting the
replacement function.
Nikodemus Siivola [Tue, 15 Jan 2008 11:17:27 +0000 (11:17 +0000)]
1.0.3.34: better debug-name construction
* Make *DEBUG-NAME-LEVEL* behave more like *PRINT-LEVEL*, and add
*DEBUG-NAME-LENGTH*. Now, instead of the old
(VARARG-ENTRY (LAMBDA (&OPTIONAL ("#<...>" . "#<...>") . "<...>")))
we get
(VARARG-ENTRY (LAMBDA (&OPTIONAL (FOO *BAR*) (QUUX *ZOT*)))
which is a lot more useful.
* Use slightly magical debug name markers that print as # and ...
instead of strings when abbreviating names.
Nikodemus Siivola [Tue, 15 Jan 2008 02:45:15 +0000 (02:45 +0000)]
1.0.3.33: use NAMED-LAMBDA instead of LAMBDA for pretty-printer predicates
* AKA less mysterious (LAMBDA (OBJECT)) potential in statistical
profiling &co. (No, I haven't been overly troubled by such functions,
but since it is easy to give these ones names, we just as well may.)
Nikodemus Siivola [Tue, 15 Jan 2008 02:29:50 +0000 (02:29 +0000)]
1.0.13.32: fix run-sbcl.sh when sh != bash in disguise
...2008! Shell portability issues! AAARGH!
(Ok, slightly embarrassed as well.)
Nikodemus Siivola [Mon, 14 Jan 2008 12:41:43 +0000 (12:41 +0000)]
1.0.13.31: update bug #108 (ROOM issues)
* 1.0.3.21 took care of the (SAP= CURRENT END) aver failure, but
other issues remain.
Nikodemus Siivola [Mon, 14 Jan 2008 12:22:11 +0000 (12:22 +0000)]
1.0.13.30: more README touchups
* Texinfo, not DocBook since late 2004. :) We're fast on things
like this.
* HTML available for download, not part of the normal binary
distribution.
* Mention BUGS.
* PURIFY doesn't happen on x86 Darwins, and I've never had to touch
the limits on PPC either -- so delete that bit.
Nikodemus Siivola [Mon, 14 Jan 2008 12:05:32 +0000 (12:05 +0000)]
1.0.13.29: run-sbcl.sh script
* I'm tired of typing the mantra, and it's probably good to make
it easy for users too to run SBCL before installation.
* Add to binary tarball, and mention in INSTALL.
Alexey Dejneka [Sun, 13 Jan 2008 20:39:21 +0000 (20:39 +0000)]
1.0.13.28: Add OPTIMIZE documentation for SBCL-specific optimize qualities.
Nikodemus Siivola [Sun, 13 Jan 2008 18:08:01 +0000 (18:08 +0000)]
1.0.13.27: commentary on BUG #420
...adapted from sbcl-devel.
Kevin Rosenberg [Sun, 13 Jan 2008 03:59:54 +0000 (03:59 +0000)]
1.0.13.26:
* sb-aclrepl: Display single-floats in IEEE-756 format for 64-bit
platforms for consistency with 32-bit platforms.
Nikodemus Siivola [Sat, 12 Jan 2008 15:29:02 +0000 (15:29 +0000)]
1.0.13.25: reinstante *PERIODIC-POLLING-FUNCTION*
* Instead of *MAX-EVENT-(U)SEC* use *PERIODIC-POLLING-PERIOD*.
* After polling, if there is any more waiting left to do, call
SUB-SERVE-EVENT again. (The old implementation did not do this,
but this seems right to me.)
* Export the API, and mark as EXPERIMENTAL. Unadvertised in the docs
or NEWS for now -- but the docstrings should be clear enough.
Waiting for happiness report from CLG folks before publishing this.
Kevin Rosenberg [Fri, 11 Jan 2008 18:59:58 +0000 (18:59 +0000)]
1.0.13.24:
* sb-aclrepl: Fix inspection of single-floats on 64-bit platforms
which are now unboxed data.
Nikodemus Siivola [Fri, 11 Jan 2008 11:03:18 +0000 (11:03 +0000)]
1.0.13.23: record READ-CHAR-NO-HANG bug on Windows (#421)
* Reported by Elliot Slaughter.
William Harold Newman [Thu, 10 Jan 2008 15:54:04 +0000 (15:54 +0000)]
1.0.13.22: text tweaks
* logged a bug
* searched for sbcl-devel references and added notes about
the need to subscribe (since the mailman bounce message is
particularly unhelpful, and I periodically get mail from
frustrated would-be posters)
* fixed a few typoes
* revised a few passages, and completely gave up on trying to
summarize SBCL performance in a paragraph in the man page
Nikodemus Siivola [Thu, 10 Jan 2008 14:41:27 +0000 (14:41 +0000)]
1.0.13.21: MAP-ALLOCATED-OBJECTS robustification
* There are two cases where we used to fail our AVER (SAP= CURRENT
END) in MAP-ALLOCATED-OBJECTS:
-- If we had constructed an unlucky bogus object or few during our
heap traversal, we might be just sufficiently out of synch to
overstep it.
-- If we allocated new objects past the original END during heap
traversal and, and the mapped over them.
* Fix the last case always: before calling the provided function,
check that the object ends before END.
* Fix the second case for fastidious callers (and add an optional
argument so callers can inform us about their fastidiousness) by
using MAKE-LISP-OBJ instead of %MAKE-LISP-OBJ. ROOM still uses the
old version, since the careful approach is too slow, and even
the slow path uses %MAKE-LISP-OBJ in the less-error-prone cases.
...so not quite perfect yet.
Nikodemus Siivola [Thu, 10 Jan 2008 11:32:46 +0000 (11:32 +0000)]
1.0.13.20: added SB-EXT:*EXIT-HOOKS*
* Also document *INIT-HOOKS* and *SAVE-HOOKS*.
* Trailing whitespace cleanup in start-stop.texinfo.
Richard M Kreuter [Thu, 10 Jan 2008 01:48:12 +0000 (01:48 +0000)]
1.0.13.19: Odds and ends (OpenBSD NEWS, minor bug in PROBE-FILE, mkstemp())
* Add note about OpenBSD revival in NEWS
* PROBE-FILE, TRUENAME were returning an extra value from filename parsing
* Have our internal mkstemp() binding take a mode, and remove
unix-chmod from sb-unix. This slightly improves RUN-PROGRAM
security on Unix platforms where mkstemp() doesn't create a new file
with mode #o0600.
Richard M Kreuter [Wed, 9 Jan 2008 19:12:23 +0000 (19:12 +0000)]
1.0.13.18: Revived OpenBSD support, contributed by Josh Elsasser
Alexey Dejneka [Sun, 6 Jan 2008 06:17:26 +0000 (06:17 +0000)]
1.0.3.17: new bug in DX value-cells.
Richard M Kreuter [Sat, 5 Jan 2008 14:43:13 +0000 (14:43 +0000)]
1.0.13.16: Fix regression in FILE-AUTHOR.
* Typo. File author should return the author, not the file write-date.
Spotted by Damien Diederen. Add test for same.
Juho Snellman [Fri, 4 Jan 2008 01:52:28 +0000 (01:52 +0000)]
1.0.13.15: Fix some VECTOR-PUSH-EXTEND problems
* Ensure that the vector is always extended by at least one element
when full, even if MIN-EXTENSION is smaller than 1. (Prevents
array index overflows).
* Don't try to extend a vector beyond ARRAY-DIMENSION-LIMIT.
* Patch by Paul Khuong.
Juho Snellman [Fri, 4 Jan 2008 01:49:37 +0000 (01:49 +0000)]
1.0.13.14: Reduce character stream input consing
* Inline UNIX-READ into REFILL-INPUT-BUFFER to remove SAP boxing,
remove non-local exits over full call boundaries (patch by Paul
Khuong).
* Inline REFILL-BUFFER in READ-SEQUENCE and READ-LINE.
* D-X-allocate value cells in REFILL-INPUT-BUFFER.
Christophe Rhodes [Thu, 3 Jan 2008 14:50:47 +0000 (14:50 +0000)]
1.0.13.13: Actually export RESOLVE-CONFLICT et al from SB-EXT
... as documented, but not as actually done.
Reported by Maciej Katafiasz sbcl-devel 2008-01-13
Also slightly better documentation links for *posix-argv*.
Juho Snellman [Thu, 3 Jan 2008 03:54:05 +0000 (03:54 +0000)]
1.0.13.12: Make :SB-HASH-TABLE-DEBUG feature more useful
* Only signal errors for concurrent writer/writer or reader/writer
accesses, not reader/reader. (The latter is basically intended to
always be safe).
* Patch by Attila Lendvai
Juho Snellman [Wed, 2 Jan 2008 23:07:15 +0000 (23:07 +0000)]
1.0.13.11: ensure that sb-cover records don't clash with constants in user code
* If a code coverage instrumentation record is coalesced with another
constant in the same file, the "we know what we're doing" comment
in INSTRUMENT-COVERAGE about modifying constants no longer applies.
Changes to the record will be reflected in the other constant too,
which is probably not what the user expected.
* Ensure that coalescing cannot happen by using a symbol internal to
SB-C as the CDR of the record (instead of NIL).
* Reported separately by Christophe Rhodes and Rahul Jain.
Nikodemus Siivola [Wed, 2 Jan 2008 12:04:08 +0000 (12:04 +0000)]
1.0.13.10: x86 MOVE-FROM-SIGNED & MOVE-FROM-UNSIGNED hackery
* SIGNED: use IMUL and JNO to fixnumize / check for overflow: just
one branch, but same size as the old SHL 1 & JNO twice method --
faster on modern x86en.
* UNSIGNED: always do the LEA after TEST. If we need to allocate a
bignum the LEA should be noise -- just one jump needed this way.
* Move bignum allocation out-of-line in both -- shrinks the core a
bit, and with any luck may help with cache effects: specialize the
allocation routines for each GP register, and pass the argument and
result in the same register to minimize the code-size at
call-sites. Thanks to NJF for the nicer out-of-line version using
just the single register.
* Remove / clarify old comments, and get rid of the old commented out
versions.
Juho Snellman [Tue, 1 Jan 2008 18:16:29 +0000 (18:16 +0000)]
1.0.13.9: Fix another segfault from the new RESTART-FRAME instrumentation
* When a function was inlined, and a XEP created for it in the same
component, it was possible that a BIND-SENTINEL VOP would be emitted
without a closing UNBIND-SENTINEL.
* Fix this by never instrumenting inlined functions.
* Reported by James Knight.
Richard M Kreuter [Tue, 1 Jan 2008 15:07:53 +0000 (15:07 +0000)]
1.0.13.8: Fix bug in ENSURE-DIRECTORIES-EXIST
* ENSURE-DIRECTORIES-EXIST used NAMESTRING rather than
NATIVE-NAMESTRING to construct filenames, and so failed when the
pathname denoted a filename containing wildcard characters.
* Add tests for same.
Juho Snellman [Tue, 1 Jan 2008 14:49:49 +0000 (14:49 +0000)]
1.0.13.7: Fix off-by-one regression in STRING-LIST-TO-C-STRVEC
* "Since 1.0.12.21, the size variable already includes the null byte."
* Patch by David Lichteblau
Juho Snellman [Tue, 1 Jan 2008 14:45:33 +0000 (14:45 +0000)]
1.0.13.6: Add missing sb-xc-host definition for sign-extend
* Patch by David Lichteblau
Richard M Kreuter [Tue, 1 Jan 2008 01:01:01 +0000 (01:01 +0000)]
1.0.13.5: Fix bugs in USER-HOMEDIR-PATHNAME, SBCL-HOMEDIR-PATHNAME
* Both these functions parsed filenames returned by system calls
implicitly using to the syntax of *DEFAULT-PATHNAME-DEFAULTS*, and
so would lose when *D-P-D* was a logical pathname host. So have
them parse filenames using explicit physical pathname hosts.
* Tests for same.
Richard M Kreuter [Mon, 31 Dec 2007 18:39:23 +0000 (18:39 +0000)]
1.0.13.4: Removing UNIX-NAMESTRING, part 4
* PROBE-FILE, TRUENAME, FILE-WRITE-DATE, FILE-AUTHOR rewritten.
Truenames now 78% more truthful.
Richard M Kreuter [Sun, 30 Dec 2007 22:30:34 +0000 (22:30 +0000)]
1.0.13.3: Fix minor bug in INPUT-STREAM-P, OUTPUT-STREAM-P
* ANSI-STREAM-{INPUT,OUTPUT}-STREAM-P incorrectly assumed that a
synonym stream's destination stream was an ANSI-STREAM, and so
signaled errors when a synonym stream's target was a user-defined
stream. Reported by Jean-Philippe "Hexstream" Paradis in #lisp.
* Also add test for same.
Richard M Kreuter [Sun, 30 Dec 2007 05:32:29 +0000 (05:32 +0000)]
1.0.13.2: Removing UNIX-NAMESTRING, part 3 (sort of)
* Add condition classes to SB-POSIX that are subclasses of FILE-ERROR,
to give more precise information than vanilla FILE-ERRORs after
users load SB-POSIX.
* Add code to sb-grovel in support of same.
Richard M Kreuter [Fri, 28 Dec 2007 19:46:57 +0000 (19:46 +0000)]
1.0.13.1: Various cleanups and touchups in tests/
* Tests written in shell modified to use shell functions, rather than
variables, so that tests written in shell can run when the build
directory's absolute pathname contains whitespace (as home
directories might tend to on Windows).
* tests/subr.sh: new file, with some shell functions, variables, and
settings to support the above. Files in the test suite written in
shell should source this file.
* Factored code for creating and cleaning up temporary directories for
tests written in shell that touch the file system. Test scripts
written in shell should now call "use_test_subdirectory" to create
and chdir to a test directory, and the shell should clean out the
test directory at exit time.
* Most tests written in shell now quote filenames that derive from the
truename of the current working directory or from an environment
variable, as such names may contain whitespace. (Variables set to
non-offending constant strings in the script itself need not be
quoted this way.)
* tests/filesys.test.sh was not prepared to deal with a TRUENAME that
resolves all symbolic links in a pathname, as a soon-to-be-committed
TRUENAME will; "/tmp" on MacOSX is a symbolic link to
"/private/tmp". POSIX pwd(1) takes a -P option to resolve symbolic
links in the working directory's path, so we'll try that.
* Tests now supply --no-userinit, --no-sysinit arguments, so that we
don't need to conditionalize these for win32.
* Some tests written in shell changed from using --eval <string> to
heredocs, which allows the Lisp code the be formatted nicer and
avoids some shell quotation headaches (not all, of course).
* Minor shell errors corrected in some tests. Notable example:
program; if [ $? != $value ]; then echo failed $?; fi
Because "[" is a child process, after the test $? is set to the exit
status of the "["; the exit status of "program" is lost.
William Harold Newman [Thu, 27 Dec 2007 13:12:29 +0000 (13:12 +0000)]
1.0.13: release, will be tagged as sbcl_1_0_13
Nikodemus Siivola [Mon, 24 Dec 2007 13:59:26 +0000 (13:59 +0000)]
1.0.12.44: rename misnamed files in the NetBSD port, hopefully fixing it
"oops"
Richard M Kreuter [Sat, 22 Dec 2007 22:07:11 +0000 (22:07 +0000)]
1.0.12.43: Two tiny RUN-PROGRAM-related cleanups
* Having removed FIND-EXECUTABLE-IN-SEARCH-PATH, remove the symbol
from package-data-list.lisp-expr.
* A recently-added test for RUN-PROGRAM used a non-conforming
"sleep 2s" command in a shell script. POSIX sleep(1) is not required to
accept the s.
Richard M Kreuter [Fri, 21 Dec 2007 00:42:23 +0000 (00:42 +0000)]
1.0.12.42: Fix minor regression in RUN-PROGRAM on win32
* Recent RUN-PROGRAM changes allowed strange errors in SBCL when a
child exited with a random negative exit status (e.g., when the
child crashes).
Nikodemus Siivola [Thu, 20 Dec 2007 14:44:06 +0000 (14:44 +0000)]
1.0.12.41: fix #-:sb-unicode build
* No need for cross-string replce transformations, as there is only
one character type.
Nikodemus Siivola [Thu, 20 Dec 2007 14:24:31 +0000 (14:24 +0000)]
1.0.12.40: NetBSD/Sparc port by Robert Swindells
* No NEWS entry yet, until someone can confirm this does what it says
on the tin. :)
* A random smattering of CREDITS updates.
Richard M Kreuter [Thu, 20 Dec 2007 01:15:40 +0000 (01:15 +0000)]
1.0.12.39: Fix minor bug in new LOAD
* A HANDLER-CASE was wrapped around too large a form, leading to a
misleading resignaling in some failure cases.
Nikodemus Siivola [Wed, 19 Dec 2007 16:10:11 +0000 (16:10 +0000)]
1.0.12.38: style-warning IMPLICIT-GENERIC-FUNCTION-WARNING
* Specific condition to signal when a generic function is implicitly
signalled instead of a SIMPLE-STYLE-WARNING.
Richard M Kreuter [Wed, 19 Dec 2007 02:28:12 +0000 (02:28 +0000)]
1.0.12.37: RUN-PROGRAM now uses execvp(3) to search for executables
* RUN-PROGRAM now uses execvp(3) in the child, rather than a Lisp
function in SBCL, to search for an executable to run. This makes
RUN-PROGRAM slightly closer to most other languages' process
creation facilities.
* The function FIND-EXECUTABLE-IN-SEARCH-PATH has been removed. A
note is added to the manual pointing users who need the old,
idiosyncratic search behavior to look for it it in the CVS history.
Richard M Kreuter [Mon, 17 Dec 2007 23:00:22 +0000 (23:00 +0000)]
1.0.12.36: Removing UNIX-NAMESTRING, part 2
* Rewrite LOAD in a manner that prepares it for a PROBE-FILE and
FILE-WRITE-DATE that can sometimes signal FILE-ERRORs.
* Add tests for every supported way of calling LOAD.
Nikodemus Siivola [Mon, 17 Dec 2007 13:34:26 +0000 (13:34 +0000)]
1.0.12.35: more safety -- less weakening of type checks
* Weaken type check only if SAFETY < 2, and SAFETY < SPEED. Thus
SAFETY 2 becomes a "always full type checks".
* Delete a stale comment above MAYBE-NEGATE-CHECK about weakening
checks there -- this has not been the case since 0.7.9.41.
* Fix type errors in target-sxhash.lisp that was masked by the
weakening that used happen there.
* Update commentary re. PROBABLE-TYPE-CHECK-P as per Alexey's email
on sbcl-devel. Delete some other stale comments re. weakening.
* Update the manual re. weakened type checks.
Richard M Kreuter [Sun, 16 Dec 2007 00:23:59 +0000 (00:23 +0000)]
1.0.12.34: fix bug, add error signalling in RUN-PROGRAM
* Incorrect initialization of one bookkeeping variable in
COPY-DESCRIPTOR-TO-STREAM left another bookkeeping variable with
garbage after a properly-encoded short read, causing subsequent
decoding attempts to fail. Only easily visible on when the child
line buffers to one or another descriptor.
* Add test for same.
* Additionally, signal an error if we have any not-yet-decoded octets
when the child closes its output or error.
* Add test for same.
Richard M Kreuter [Fri, 14 Dec 2007 06:12:57 +0000 (06:12 +0000)]
1.0.12.33: Have foreign.test.sh create .so files under the test directory
* If /tmp or TMPDIR is mounted noexec, loading foreign objects doesn't
fails, but it's not SBCL's fault.
* Also remember to bump version.lisp-expr (the last two commits forgot
this).
Richard M Kreuter [Thu, 13 Dec 2007 20:55:49 +0000 (20:55 +0000)]
1.0.12.32: Fix RUN-PROGRAM bug introduced in 1.0.12.31.
* An unnecessary comparison of external formats made some pathways
through RUN-PROGRAM hang. Oddly, this hanging didn't show up when
running the tests on linux/x86-64, linux/ppc, or netbsd/x86.
Nikodemus Siivola [Thu, 13 Dec 2007 20:15:32 +0000 (20:15 +0000)]
1.0.12.31: fix READ-SEQUENCE regression from 1.0.12.22
* Keep track of FRC buffer index properly.
* Test-case.
Richard M Kreuter [Thu, 13 Dec 2007 05:24:28 +0000 (05:24 +0000)]
1.0.12.31: using default external format for RUN-PROGRAM streams
* Have RUN-PROGRAM construct streams with the default external format
when :INPUT, :OUTPUT, or :ERROR is :STREAM, or to transcode data
to/from the child process when any of those arguments is a Lisp
stream.
* Miscellaneous attendant helper functions for same (mkstemp, chmod).
Nikodemus Siivola [Wed, 12 Dec 2007 12:19:42 +0000 (12:19 +0000)]
1.0.12.30: trivial compiler touchups
* Use &BODY for DEFINE-VOP bodies instead of &REST.
* Expand body of DO-USES only once, as per XXX note. Only 56 to
go... Also make it return the RESULT form if there was just a
single use -- not that we seem to be using the RESULT form at all
currently.
Nikodemus Siivola [Wed, 12 Dec 2007 11:58:03 +0000 (11:58 +0000)]
1.0.12.29: optimize POSITION & FIND families for strings
* If the string is simple, and the element type is know the old code
does well already. Add a dispatch for (SIMPLE-ARRAY CHARACTER (*))
to the out-of-line versions on unicode builds.
* To keep code size down to something reasonable, remove the
dispatch for SIMPLE-VECTOR: presumably POSITION & FIND are much
more common on strings of uncertain type, then random vectors.
Nikodemus Siivola [Wed, 12 Dec 2007 11:28:23 +0000 (11:28 +0000)]
1.0.12.28: small PCL cache cleanups
* Delete a few unused variables.
* Add a few declarations to speed up PROBE-CACHE (used by the PV
optimizations.)
Nikodemus Siivola [Wed, 12 Dec 2007 11:22:37 +0000 (11:22 +0000)]
1.0.12.27: FILL on lists was broken by 1.0.12.16, oops!
* Fix it, write some tests as penance.
kreuter [Mon, 10 Dec 2007 22:16:47 +0000 (22:16 +0000)]
1.0.12.26: Fix minor regression in win32 native-namestringification
src/code/win32-pathname.lisp: some Windows system calls don't accept
directory names ending with backslashes.
Juho Snellman [Mon, 10 Dec 2007 05:46:00 +0000 (05:46 +0000)]
1.0.12.25: fix some bogus indentation
Juho Snellman [Mon, 10 Dec 2007 05:42:46 +0000 (05:42 +0000)]
1.0.12.24: Add dx declarations for character comparison function &rest lists
* CHAR=, CHAR<, etc.
Juho Snellman [Mon, 10 Dec 2007 05:35:10 +0000 (05:35 +0000)]
1.0.12.23: Optimize STRING-*-TRIM
* Add deftransforms for STRING(-LEFT|-RIGHT|)-TRIM of simple strings.
As a sleazy benchmark trick, also optimize for constant character bags.
* Rewrite the function versions of the string trimmers for more
code reuse. New versions also no longer cons up a new string when
no trimming needs to be done. (Allowed in the spec, as pointed out
by Attila Lendvai)
* Add tests.
Juho Snellman [Mon, 10 Dec 2007 04:40:34 +0000 (04:40 +0000)]
1.0.12.22: Optimize READ-SEQUENCE into strings and READ-LINE
* Have READ-LINE and READ-SEQUENCE directly use the cin buffer whenever
one exists, instead of going through FAST-READ-CHAR. READ-LINE already
did this in some circumstances, but often .
* READ-LINE on normal data with short lines is around 50% faster, with
abnormally long lines about 75% faster. (On my laptop -- IIRC the
difference was smaller on a workstation).
* READ-SEQUENCE into a simple string is up to 80% faster.
* Modify FAST-READ-CHAR-REFILL a bit to make it nicer to use in the
non-read-char cases.
* Fix a utf-8 resyncing bug in READ-LINE (masked by the test case
in external-format.impure not having a newline at the end, which
caused READ-LINE to always take the slow path).
Nikodemus Siivola [Sun, 9 Dec 2007 18:11:51 +0000 (18:11 +0000)]
1.0.12.21: using default external format for RUN-PROGRAM args and env
* Patch by Harald Hanche-Olsen: use STRING-TO-OCTETS to build the
vector of string pointers. Also allows non-simple strings.
Nikodemus Siivola [Sun, 9 Dec 2007 15:19:21 +0000 (15:19 +0000)]
1.0.12.20: compiling files with unicode names
* Patch by Attile Lendvai: UTF-8 encode the original filename for
writing it ot the fasl.
Nikodemus Siivola [Sun, 9 Dec 2007 15:04:48 +0000 (15:04 +0000)]
1.0.12.19: runtime cleanups by Daniel Lowe
* Rename SymbolFunction to StaticSymbolFunction, and implement it as
an inline function instead of a macro.
* Implement make_lispobj, make_fixnum, and fixnum_value as inline
functions.
Nikodemus Siivola [Sun, 9 Dec 2007 14:37:22 +0000 (14:37 +0000)]
1.0.12.18: faster member-type operations
* XSET is a generic set implementation, that uses lists of small sets,
and switches to hashes for larger ones. Current switchoff point is
12 -- but some operations would benefit from a larger one. TODO:
There are other places in SBCL that will probably want to use XSET
as well.
* Instead of storing members directly in the set object, store them in
an XSET -- except for floating point zeros which go into a list of
their own, simplifying the canonicalization a bit. (By adding
complexity elsewhere, of course. Maybe this is not TRT after all...)
* ...now member type arithmetic is mostly O(1) or O(N), instead of
O(BAD), but some operations cons more then before: old implemenation
manageg eg. union without consing when either set was the subset of
the other one -- not so anymore.
Nikodemus Siivola [Wed, 5 Dec 2007 17:23:25 +0000 (17:23 +0000)]
1.0.12.17: Gray streams as part of composite streams
* READ-N-BYTES needs to deal with Gray streams.
Nikodemus Siivola [Wed, 5 Dec 2007 15:16:02 +0000 (15:16 +0000)]
1.0.12.16: sequence optimizations: FILL
* Use DEFUN instead of DEFINE-SEQUENCE-TRAVERSER for FILL: the
dispatched to functions do all the necessary checking, and do it
better since they know more about the types.
* New function: STRING-FILL*.
* Rewrite VECTOR-FILL* and LIST-FILL* for efficiency.
* Macros VECTOR-FILL and LIST-FILL were expanded only in VECTOR-FILL*
and LIST-FILL* -- get rid of them.
* Compile-time dispatch to STRING-FILL*, VECTOR-FILL*, LIST-FILL*, and
SB-SEQUENCE:FILL.
* Comment above %CHECK-VECTOR-SEQUENC-BOUNDS no longer applies, delete
it.
Brian Mastenbrook [Sun, 2 Dec 2007 17:00:14 +0000 (17:00 +0000)]
1.0.12.15: PPC/Darwin fixes
* Build fix on Leopard (10.5) thanks to Sidney Markowitz
* Finally remove obsolete G5 sigcontext fix as 10.2 is totally old
Nikodemus Siivola [Sat, 1 Dec 2007 18:57:57 +0000 (18:57 +0000)]
1.0.12.14: sequence optimizations: COPY-SEQ
* Compile-time dispatch to STRING-SUBSEQ*, VECTOR-SUBSEQ*,
LIST-COPY-SEQ*, and SB-SEQUENCE:COPY-SEQ.
* Share code between COPY-LIST and LIST-COPY-SEQ* via light macrology.
* COPY-SEQ on lists should check for improper lists.
Nikodemus Siivola [Sat, 1 Dec 2007 18:35:33 +0000 (18:35 +0000)]
1.0.12.13: sequence optimizations: SUBSEQ, part 3
* Split the optimized data-vector accessor fetching logic into a
global macro, so that sequence functions can fetch the appropriate
setter/getter just once, instead of doing the dispatch per access.
* Use this to optimize VECTOR-SUBSEQ*.
Nikodemus Siivola [Sat, 1 Dec 2007 18:06:11 +0000 (18:06 +0000)]
1.0.12.12: sequence optimizations: SUBSEQ, part 2
* New function: STRING-SUBSEQ*, and a compile-time dispatch to it with
the element-type or simplicity is uncertain.
* Slightly better VECTOR-SUBSEQ*.
Nikodemus Siivola [Sat, 1 Dec 2007 18:04:13 +0000 (18:04 +0000)]
1.0.12.11: WITH-ARRAY-DATA bugfixes
* Inverted bounds-checking test in WITH-ARRAY-DATA -- check bounds
when INSERT-ARRAY-BOUNDS-CHECKS is _not_ zero, not the other way
around. "Oops."
* Small optimization buglets TRANSFORM-%WITH-ARRAY-DATA/MUBLE: elided
bounds checking, bad return value for END, and careless caller might
pass in a complex arrey.
Nikodemus Siivola [Sat, 1 Dec 2007 17:05:38 +0000 (17:05 +0000)]
1.0.12.10: sequence optimizations: SUBSEQ, part 1
* Compile-time dispatch to VECTOR-SUBSEQ* for vectors
whose element-type or simplicity is uncertain.
* Compile-time dispatch to SB-SEQUENCE:SUBSEQ for generic
sequences.
Nikodemus Siivola [Fri, 30 Nov 2007 17:46:09 +0000 (17:46 +0000)]
1.0.12.9: don't limit TOUCH-OBJECT to descriptor-regs
* Allows objects known to be FIXNUM to be pinned. Question:
why is a FIXNUM not acceptable to a DESCRIPTOR-REG?
Nikodemus Siivola [Fri, 30 Nov 2007 14:18:31 +0000 (14:18 +0000)]
1.0.12.8: refactor bounding index error signalling functions
* We need two variants: one that uses ARRAY-TOTAL-SIZE for
the limit, other othat uses LENGTH. Call them ARRAY- and
SEQUENCE-BOUNDING-INDICES-BAD-ERROR.
Nikodemus Siivola [Fri, 30 Nov 2007 13:12:21 +0000 (13:12 +0000)]
1.0.12.7: oops, missed one SEARCH transform
* Check bounds properly before entry to the code, and
elide checks in the inner loop.
kreuter [Fri, 30 Nov 2007 02:16:25 +0000 (02:16 +0000)]
1.0.12.6: Removing UNIX-NAMESTRING, part 1
* Get NATIVE-NAMESTRING to do all and only the desired things for all
accepted non-wild NAME and TYPE components. Add a few tests for
these cases.
* Add new user-visible features to PARSE-NATIVE-NAMESTRING and
NATIVE-NAMESTRING for parsing/unparsing things "as files" or "as
directories"; these are convenient for use with SB-POSIX, and will
be handy in a few places in SBCL's internals, too.
Nikodemus Siivola [Thu, 29 Nov 2007 17:30:11 +0000 (17:30 +0000)]
1.0.12.5: WITH-ARRAY-DATA touchups
* Eliminate some double-bounds checks: since WITH-ARRAY-DATA does
bounds checking, there is no need to vet START and END with
%CHECK-VECTOR-SEQUENCE-BOUNDS.
* Eliminate some fill-pointer confusion: Since WITH-ARRAY-DATA is
used both in contexts where fill-pointer needs to be used, and
in contexts where we only care about the total array size, add
a :CHECK-FILL-POINTER argument to WITH-ARRAY-DATA.
* Do bounds checking in WITH-ARRAY-DATA based on
INSERT-ARRAY-BOUNDS-CHECKS policy -- not SPEED vs. SAFETY
comparison. Adjust tests to check for this.
Nikodemus Siivola [Thu, 29 Nov 2007 15:24:51 +0000 (15:24 +0000)]
1.0.12.4: delete bad ROOM test
* Invalid on most platforms.
Nikodemus Siivola [Mon, 26 Nov 2007 18:06:06 +0000 (18:06 +0000)]
1.0.12.3: less weakening of type-checks
* WEAKEN-TYPE used to return T for any union-type. Instead, handle
union-types implemented by backend properly.
* Also, if no supertype is found, don't replaces with T, as
eg. oddball union types weakened to T can easily lead to heap
corruption if the unchecked object ends up being trusted by the
compiler. (See: WEAKEN-UNION-2 in type.impure.lisp.)
Nikodemus Siivola [Mon, 26 Nov 2007 17:39:43 +0000 (17:39 +0000)]
1.0.12.2: oops, test in wrong place
Nikodemus Siivola [Mon, 26 Nov 2007 17:37:03 +0000 (17:37 +0000)]
1.0.12.1: more bogus FIXNUM declarations in ROOM
* Test-case by Sidney Markowitz.
William Harold Newman [Mon, 26 Nov 2007 00:33:55 +0000 (00:33 +0000)]
1.0.12: release, will be tagged as sbcl_1_0_12
Nikodemus Siivola [Tue, 20 Nov 2007 14:50:40 +0000 (14:50 +0000)]
1.0.11.35: fixed bug 417
* Don't store non-unique objects like symbols, fixnums,
or characters in *SOURCE-PATHS*.
* For future refactoring ease, always access *SOURCE-PATHS*
via GET-SOURCE-PATH and NOTE-SOURCE-PATH.
Nikodemus Siivola [Tue, 20 Nov 2007 14:19:54 +0000 (14:19 +0000)]
1.0.11.34: better SUBSEQ on lists
* Be prepared to handle bignum cases (once we support
them.)
* Better (and faster) error-checking.
Juho Snellman [Mon, 19 Nov 2007 23:54:22 +0000 (23:54 +0000)]
1.0.11.33: Oops, restore REPLACE deftransforms that got dropped in refactoring
Nikodemus Siivola [Mon, 19 Nov 2007 15:26:28 +0000 (15:26 +0000)]
1.0.11.32: fix bogus fixnum declarations in ROOM
...conservative approximation: some of the changed
declaractions may have been safe after all.
Juho Snellman [Mon, 19 Nov 2007 01:04:38 +0000 (01:04 +0000)]
1.0.11.31: Make SB-PROFILE cons less
* dx allocate the closed over variables for the profiling wrapper
* Fixes a bug where a profiled function A calling profiled function
B would cause 6 words of consing to be attributed to A in the
profiler.
kreuter [Sun, 18 Nov 2007 19:46:01 +0000 (19:46 +0000)]
1.0.11.30: restore buildability on Windows after 1.0.11.27.
src/runtime/wrap.c: move conditional definition of WIN32_LEAN_AND_MEAN
so that it precedes other #includes, to prevent
conflicting win32 stuff from being pulled in by the
new wrap.h.
src/runtime/wrap.h: Add preprocessor conditionals to guard against repeated
inclusion.
tools-for-build/grovel-headers.c: grovel the wrapped stat types on win32.
Juho Snellman [Sun, 18 Nov 2007 04:13:27 +0000 (04:13 +0000)]
1.0.11.29: Faster CONCATENATE on strings
* Add a result-type dependent DEFTRANSFORM which open-codes directly
to calls to REPLACE.
* Constant-fold the array reads for constant string arguments
in the transform (intended as a slezy benchmark trick, but actually
it looks as if having some literal strings mixed in with
variables is pretty common in real world CONCATENATE uses).
* Add transforms for REPLACE on mixed SIMPLE-BASE-STRINGS and
(SIMPLE-ARRAY CHARACTER (*)) to support.
* Speeds up a simple benchmark of concatenating two three-character
strings by a factor of 15, and by a factor of 30 when the strings
are constant. For a more real-world example, doing DIRECTORY on
a large set of files speeds up by 25%.
Also:
* Fix a broken test (extra close paren) that was uncovered by
the write-no-partial-fasls change.
kreuter [Sun, 18 Nov 2007 01:13:40 +0000 (01:13 +0000)]
1.0.11.28: Fix one Win32 regression introduced by 1.0.11.26-27.
* grovel-headers.c now pulls in src/code/runtime.h, and so needs a
kludge to keep Win32's definition of boolean from conflicting with
SBCL's. This kludge already existed in win32-os.c, so I moved it
into runtime.h.
kreuter [Sat, 17 Nov 2007 22:27:10 +0000 (22:27 +0000)]
1.0.11.27: Oops-fix -- committed intermediate code to 1.0.11.26
kreuter [Sat, 17 Nov 2007 20:23:29 +0000 (20:23 +0000)]
1.0.11.26: correcting some types in SB-UNIX.
Nikodemus Siivola [Sat, 17 Nov 2007 16:34:00 +0000 (16:34 +0000)]
1.0.11.25: don't leave incomplete fasls around after compilation
* CLHS says the first return value of COMPILE-FILE is
NIL if "file could not be created" -- interpret this
to mean "fasl could not be created" and don't count
incomplete fasls as fasls.
Nikodemus Siivola [Wed, 14 Nov 2007 18:30:14 +0000 (18:30 +0000)]
1.0.11.24: internal hash-table usage thread-safety, part 2
* Logical hosts.
* TRACE.
* Instrumenting profiler.
* Mapping over *PACKAGE-NAMES*.
Nikodemus Siivola [Wed, 14 Nov 2007 15:57:27 +0000 (15:57 +0000)]
1.0.11.23: internal hash-table usage thread-safety, part 1
* Use :SYNCHRONIZED hash-tables for the most part, and a light dash of
WITH-LOCKED-HASH-TABLE as approriapte: *FORWARD-REFERENCED-LAYOUTS*,
CLASSOID-SUBCLASSES, *COMPILED-DEBUG-FUNS*, *FUN-END-COOKIES*,
*COMPONENT-BREAKPOINT-OFFSETS*, *EFFECTIVE-METHOD-CACHE*.
* Replace *FOREIGN-LOCK* with *SHARED-OBJECT-LOCK* and hash-table
based locking for *LINKAGE-INFO* for efficiency.
Nikodemus Siivola [Mon, 12 Nov 2007 17:14:50 +0000 (17:14 +0000)]
1.0.11.22: hash-table synchronization support
* :SYNCHRONIZED argument to MAKE-HASH-TABLE.
* HASH-TABLE-SYNCHRONIZED-P predicate.
* WITH-LOCKED-HASH-TABLE for coarser locks.
* Additional MAPHASH & WITH-HASH-TABLE-ITERATOR documentation.
* :LOCKED argument added to DOHASH, and used where appropriate
(some usages might be overly conservative, though, and could
be removed.)