sbcl Log

Commit Date  
[b85af7] by Nikodemus Siivola Nikodemus Siivola , pushed by Nikodemus Siivola Nikodemus Siivola

waiting for arbitrary events SB-EXT:WAIT-FOR

While using this to wait for other threads isn't good style,
sometimes it is _much_ easier to just state the thing you're
waiting for than build the synchronization to make it nice.

And sometimes the event lives in the external world, in which case
you really need to poll anyways:

(wait-for (probe-file pathname))

2011-10-28 15:56:49 Tree
[4783db] by Christophe Rhodes Christophe Rhodes

remove myself as a provider of official support

2011-09-04 19:32:03 Tree
[77bb7c] by Paul Khuong Paul Khuong

Optionally mark pages from cores as de-duplicatable

Linux supports optimistic virtual-memory-level de-duplication for
identical pages. By default, only enable this for compressed cores.
Runtime options --[no-]merge-core-pages can be used to override the

Very much experimental and a hack, but compressed cores would sometimes
be gratuitously inefficient otherwise. If/when support is generalized
to more OSes, figure out how to do this right.

Thanks to David Lichteblau for the idea.

2011-08-28 03:24:14 Tree
[20db73] by David Lichteblau David Lichteblau

New toplevel options --quit and --non-interactive

Implements lp#822712.

2011-08-09 14:50:43 Tree
[d9479b] by Nikodemus Siivola Nikodemus Siivola

export SIZE-T and OFF-T from SB-ALIEN

They're pretty common interface types.

2011-06-26 18:01:48 Tree
[92e62a] by Nikodemus Siivola Nikodemus Siivola


I have no idea why I didn't do that in the first place.

2011-06-10 17:19:37 Tree
[bf5163] by Nikodemus Siivola Nikodemus Siivola

A git-only SBCL workflow

This updates the SBCL build and release process to be more compatible
with distributed development -- to facilitate moving the upstream
repository into Git.

A detailed description of what is going on here is in

Some highlights:

* Drop version.lisp-expr and branch-version.lisp-expr.

* Auto-generate the version at build time using information
from Git, incorporating:
- Last release number.
- Number of commits on origin/master since last release.
- Current branch, if there are commits not on origin/master.
- Number of commits not on origin/master.
- SHA1 id of the last commit.
- Optional -dirty marker.

* Update to work with Git.

* Make exclude the .git directory from tarballs.

* Release tags contain NEWS for that release.

2011-06-06 06:48:08 Tree
[f71d9c] by Nikodemus Siivola Nikodemus Siivola SB-EXT:GC-LOGFILE

GENCGC only.

(SETF SB-EXT:GC-LOGFILE) to a pathname starts logging before/after
generation statistics there. Doing the same with NIL stops logging.

2011-05-30 12:00:19 Tree
[1100ef] by Nikodemus Siivola Nikodemus Siivola MAKE-ALIEN-STRING

An easy way to copy lisp strings to malloc'ed memory.

I can't believe we didn't have this before. ...just seems
insane. I keep expecting to find a nice way to do this
squirreled away somewhere in SB-ALIEN. Here's hoping I won't
embarrass myself by finding one.

Also fix the OAOOM in MAKE-ALIEN and FREE-ALIEN documentation: make
the docstrings the canonical versions, and include them in the

2011-05-30 11:59:18 Tree
[4993cd] by Nikodemus Siivola Nikodemus Siivola --script bits and pieces

* Leaving out the script name means to read the script from standard
input. In this case the shebang line is _not_ handle -- simply
because I ran out steam. (Our shebang line processing assumes a
seekable stream.)

* Stream errors on standard streams cause scripts to exit silently.

* Scripts no longer us *TTY* for *TERMINAL-IO*, but make up a two-way
stream from *STDIN* and *STDOUT*. Similarly for *DEBUG-IO* but
using *STDERR*. This means that backtraces from errors are now
neatly captured in the standard error stream.

2011-05-30 00:21:03 Tree
[e8011f] by Nikodemus Siivola Nikodemus Siivola automatic &rest to &more conversion


Automatically convert

(values-list rest-arg)
(%more-arg-values more-context 0 more-count)

when possible, making functions such as

(defun foo (f1 f2 &rest args)
(apply f1 args)
(apply f2 args))


The conversion is done iff:

* The rest arg is never assigned to.

* The rest arg only appears in VALUES-LIST (incl. APPLY)

* Those calls are all in either the same lambda that
allocates the rest-list, or one that has been declared
dynamic extent. (Conservative guess re. escaping.)

The way this works is as follows:

1. When we convert a lambda with a non-ignored &rest argument, as add
more-context and more-count arguments to the function, and
stick their lambda-vars into arg-info-default of the &rest arg.

2. When we source-transform a values-list form, we check if its argument is
a &rest argument for which context and count are available. If so, we
source-transform into

(%values-list-or-context list context count)

3. When we are optimizing, a deftransform fires for the form above. It
checks if all the necessary conditions hold and converts into either
%more-arg-values or values-list.

The reason for this roundabout way of doing things lies in locall analysis:
unless the extra context and count argument are used nontrivially when it
runs, they get deleted -- and we don't know if we want them or not until the
entire function has been converted. Absent a convenient pass between
conversion and locall analysis, we must therefore do things in two stages.

2011-05-25 23:02:28 Tree
[edb7ac] by Nikodemus Siivola Nikodemus Siivola explicitly indefinite-extent leaves, safer dynamic-extent &REST

dynamic-extent propagation through the leaf.

Use this in CONVERT-MORE-CALL / CONVERT-HAIRY-FUN-ENTRY by proclaiming the
variables in the open-coded &REST list as having indefinite-extent.

The upshot is that dynamic-extent &REST will only stack allocate the spine
of the rest list, making it easier and safer to use.

Document this in the manual and attach appropriate caveats re. portability.

2011-05-24 08:49:45 Tree
[ee9dfe] by Stas Boukarev Stas Boukarev Fix typo in the man page.

In the description of the runtime option --script, equivalent runtime
options should be terminated by --end-runtime-options, not

Thanks to Sebastian Tennant.

2011-04-22 21:57:17 Tree
[bb3994] by Nikodemus Siivola Nikodemus Siivola add :NOT-NULL option to C-STRING type

By default NIL is a valid C-STRING, translated to and from C's NULL. This is
very convenient because many C functions that normally return strings return
NULL to indicate "false" or "don't know" -- and less commonly also special
case it as an argument.

There are however many C functions that don't check for NULL, so we want a
non-horrible way to say that NIL is not a good value to pass on... remains to be seen if this is non-horrible enough, but at least it
fixes a bunch of memory faults from doing things like (posix-getenv nil), and
replaces them with type-errors.

Not all C-STRING types have been audited yet, just a bunch of the more
obvious ones.

2011-03-02 09:40:22 Tree
[838316] by Nikodemus Siivola Nikodemus Siivola export SB-PCL:+SLOT-UNBOUND+

Using STANDARD-INSTANCE-ACCESS with this provided is much nicer --
no need to muck around with SLOT-BOUNDP-USING-CLASS and such.

Also add quick SIA tests and some dependant update abuse
to tests.


2011-02-13 20:34:14 Tree
[c77617] by Nikodemus Siivola Nikodemus Siivola fix a typo in the manual

Patch by "adicarlo", lp#706139.

Correct name of special var that turns off beginner's help in
the debugger.

2011-02-12 15:49:21 Tree
[9df2ab] by Nikodemus Siivola Nikodemus Siivola expand ~ in pathnames

~/... => (:ABSOLUTE :HOME ...)

~user/... => (:ABSOLUTE (:HOME "user") ...)

Translation back to NAMESTRING reinstates the tilde, so we retain
read/write consistency.

NATIVE-NAMESTRING is responsible for getting the actual full path
to specified home directory.

This late resolution is necessary to have (open "~/foo") and
(open #p"~/foo") open the same file in compiled code -- regardless
of who compiled the file.

Tilde is treated specially only at the start of the first directory
component: it doesn't need to be escaped anywhere else. After trying
out the various options (escape everywhere, escape in directory
components, escape at the start of directory components, escape at
the start of all components) this seemed both least intrusive and
least ambiguous when documented -- not to mention most backwards

Currently escaping the tilde does not work on Windows, but this is due to
current general inability to escape the first directory component on
Windows, since \\ is used also as a directory separator for non-native
pathnames as well. See lp#673625. Test-case added for this.

(:HOME "user") also doesn't work on Windows, which is documented
in the manual.

2010-11-10 17:49:30 Tree
[ec0e9d] by Nikodemus Siivola Nikodemus Siivola implement SB-EXT:DELETE-DIRECTORY

Extend MAP-DIRECTORY with :CLASSIFY-SYMLINKS so implementing "delete
symlinks but don't follow them" behaviour for :RECURSIVE T is nice
and easy.

2010-10-15 10:16:48 Tree
[7e4eb6] by Nikodemus Siivola Nikodemus Siivola teach docstrings.lisp about parentheses

Kludge to get things like (SIMPLE-ARRAY T (3)) right in docstrings.


2010-10-15 09:52:58 Tree
[29be1c] by Nikodemus Siivola Nikodemus Siivola index SB-EXT:*EVALUATOR-MODE* under #'EVAL in the manual

Looking for "Interpreter" in the concept index isn't probably the
first thing most people do.

Fixes the documentation half of lp#654289.

2010-10-04 09:15:32 Tree
[f13a53] by Nikodemus Siivola Nikodemus Siivola disable split html manual building

Makeinfo tries to generate an overly long filename for one of the
split parts (SB-BSD-SOCKETS:SOCKET-MAKE-STREAM, to be exact),
breaking the documentation build.

Fixes lp#643636. Regression since 1.0.42.

2010-09-21 15:29:10 Tree
[0e1933] by Nikodemus Siivola Nikodemus Siivola grab-bag of Solaris related fixes

Patch by Jim Wise, lp#627581.

* make work on SunOS (due to old /bin/sh)

* avoid the struct dirent distrust-length build issue in sb-posix

* fix an issue in the run-program.ed test

* add .html to .cvsignore

2010-09-01 18:11:09 Tree
[d84e1d] by Alastair Bridgewater Alastair Bridgewater ppc: Documentation and NEWS updates for threading.

* Threading now officially experimentally supported on Linux/PPC.

* Added PPC Linux to the list of platforms with experimental
thread support in the INSTALL file and the manual.

* Updated NEWS.

2010-08-08 01:14:39 Tree
[c30109] by Alastair Bridgewater Alastair Bridgewater threads: Document BARRIER macro and implicit barriers.

* Not much to say, new manual subsection under Threading.

* Also added a NEWS entry for barriers.

2010-08-04 18:04:21 Tree
[74cfbf] by Christophe Rhodes Christophe Rhodes improvements to the manual

These improvements mainly centre around better indexing, including
some nifty trickery to get suitably collated and aligned index
entries (to cope with issues like *earmuffs* and sb-foo package
prefixes). This patch also incorporates work by Robert Goldman to
document the commands for enabling and disabling the debuggers.

The remainder of this log message is a squashed version of my git
branch's log messages:

improve text relating to my support availability

Remove a stray comma in instructions for signal-related bug reporting

Patch from Robert Goldman for enable/disable-debugger documentation

trick texinfo's collation engine into producing a better index

The issue is that the sort order and what is printed (both in the
index and as the title of a definition entry) are deeply tied together
in texinfo, and there's no obvious way short of rewriting lots of TeX
code to undo that. There is one get-out clause, though: texinfo
macros are replaced by their arguments. So define a number of macros
which hide from the collation engine things that we would rather not
play a part in the sorting (package names, "(setf", *earmuffs*)

In the process, note that @deffoo in texinfo automatically produces an
index entry, so get rid of the apparently redundant extra index
entries produced by docstrings.lisp
Mostly move to using the new indexing helper macros

Only mostly: there are a few remaining issues. The first is
declarations, which are treated as types; I think they might warrant
their own index; similarly, various commands (debugger, inspector)
aren't really functions. Hardest of all is the ffi chapter, which has
handwritten function documentation which is highly similar to but not
exactly the same as the docstrings for those operators; it would be
good to merge the documentation into the docstrings, include the
autogenerated texinfo snippets into the manual, and thereby gain
complete consistency.
add some index entries from the efficiency chapter

... because why not?
manually (!) change the entries for FFI-related functions and macros

Making the docstrings match the text match reality is an exercise for
the future.
make index in info form mostly work

info readers apparently parse the formatted index to work out where to
go. This is hilariously bad if the index entries contain colons, so
define macros conditional on output format to make sure that they
don't in info.
better, more useful indexes

Now that collation is sorted (!), getting the display of index entries
to be useful is important. This not-quite-general trick is to make
the package name as small as possible, have the colon always in the
same horizontal position, and arrange that the package name extends at
most three characters ("sb-") into the left margin. This is the most
tolerable I can find.

Continue not having package information at all in info format; in
other formats, place the package information after the symbol name.
This probably goes wrong in corner cases like
(setf sb-mop:symbol-value-using-class)
deal with remaining manually-documented functions

make documentation for declarations consistent

Arbitrarily decide that declarations belong in the function index
rather than the type index; use the package prefix texinfo macros to
get them properly indented.
One more manually-documented thing which needed a package macro decoration

Fix the nopkg{} macro to align index entries in TeX mode

Use it for debugger commands.

2010-06-06 20:43:57 Tree
Older >