Nikodemus Siivola [Tue, 10 May 2011 19:16:53 +0000 (19:16 +0000)]
1.0.48.6: %SIMPLE-EVAL and backtraces
Functions from %SIMPLE-EVAL have names such as (EVAL (DEFMACRO FOO)),
which looks pretty confusing in the backtrace.
Replace that with #:EVAL-THUNK, which is more descriptive and
less head-scratchy.
Also, calls to SIMPLE-EVAL-IN-LEXENV and EVAL -- when they show
up in backtraces -- have lisp forms as arguments. This causes
pretty-printing to try and split things onto multiple lines,
but *PRINT-LINES* tends to be 1 during backtracing.
...so bind *PRINT-PRETTY* to NIL when printing eval-frame
arguments iff *PRINT-LINES* is 1 in order to have something
useful show up the backtrace.
Nikodemus Siivola [Mon, 9 May 2011 22:20:49 +0000 (22:20 +0000)]
1.0.48.5: update ASDF to 2.015.1
2.015 broke LOAD-SOURCE-OP, this should fix it.
Nikodemus Siivola [Mon, 9 May 2011 22:12:27 +0000 (22:12 +0000)]
1.0.48.4: source locations for init files
Refactor PROCESS-INIT-FILE to share code with LOAD-AS-SOURCE.
Also add in contrib/sb-introspect/load-test.lisp which was
left out from the last commit.
Nikodemus Siivola [Mon, 9 May 2011 19:47:03 +0000 (19:47 +0000)]
1.0.48.3: source-locations from LOAD of source files, and EVAL-WHEN :COMPILE-TOPLEVEL
* Bind *SOURCE-INFO* and bind and populate *SOURCE-PATHS* in
LOAD-AS-SOURCE.
* EVAL-TLF provides a way to evaluate things while providing the
toplevel form number. It also captures the current *SOURCE-INFO*
and passes it onwards to be reused by ACTUALLY-COMPILE.
* In ACTUALLY-COMPILE, when asked to reuse a source-info object,
also retain the old *SOURCE-PATHS*.
Nikodemus Siivola [Mon, 9 May 2011 12:33:46 +0000 (12:33 +0000)]
1.0.48.2: ASDF 2.015
ASDF no longer ships with a separate LICENSE file, so remove it.
Nikodemus Siivola [Mon, 9 May 2011 10:41:25 +0000 (10:41 +0000)]
1.0.48.1: WITH-COMPILATION-UNIT :SOURCE-NAMESTRING
Allows specifying an alternate namestring to use for debug-source.
This will help us get redefinition warnings working nicely with C-c C-c in
Slime.
Nikodemus Siivola [Mon, 9 May 2011 10:21:34 +0000 (10:21 +0000)]
1.0.48.1: WITH-COMPILATION-UNIT :SOURCE-NAMESTRING
Allows specifying an alternate namestring to use for debug-source.
This will help us get redefinition warnings working nicely with C-c C-c in
Slime.
Juho Snellman [Mon, 9 May 2011 00:27:12 +0000 (00:27 +0000)]
1.0.48: Will be tagged as sbcl_1_0_48
Juho Snellman [Sun, 8 May 2011 22:28:58 +0000 (22:28 +0000)]
1.0.47.32: Fix build on MinGW
* Patch by Elliott Slaughter (lp#777339)
Stas Boukarev [Fri, 29 Apr 2011 13:33:40 +0000 (13:33 +0000)]
1.0.47.31: set-macro-character shouldn't accept NIL as a function designator.
Use %coerce-callable-to-fun before passing it to sb-impl::set-cmt-entry, although
set-cmt-entry calls %coerce-callable-to-fun, it does that only on non-nil values.
Stas Boukarev [Sat, 23 Apr 2011 19:02:56 +0000 (19:02 +0000)]
1.0.47.30: sb-cltl2:function-information didn't work on setf-functions.
Change sb-cltl2:function-information ftype declaration from
(symbol ...) to ((or symbol cons) ...).
Fixes lp#769596.
Cyrus Harmon [Sat, 23 Apr 2011 15:43:53 +0000 (15:43 +0000)]
1.0.47.29: reinstate Darwin interrupt tests that now succeed
* runnability likely due to 1.0.42.50 which works around a Darwin nanosleep bug
Stas Boukarev [Fri, 22 Apr 2011 21:57:17 +0000 (21:57 +0000)]
1.0.47.28: 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
--end-toplevel-options.
Thanks to Sebastian Tennant.
Nikodemus Siivola [Thu, 21 Apr 2011 11:08:12 +0000 (11:08 +0000)]
1.0.47.27: limit open coding from MEMBER, ASSOC, &co
Open coding massive lists doesn't really help, and a sufficiently
long list can blow the stack during compilation.
Nikodemus Siivola [Thu, 21 Apr 2011 11:06:14 +0000 (11:06 +0000)]
1.0.47.26: BEST-SUB-SOURCE-PATH should ignore quoted constants
Not only can they be improper, they can also be cyclic.
Fixes lp#767959.
Nikodemus Siivola [Thu, 21 Apr 2011 09:26:58 +0000 (09:26 +0000)]
1.0.47.25: make instances obsolete if slot definition classes change
Fixes lp#766271.
Regression from 1.0.46.11: previously SLOT-VALUE-USING-CLASS inhibited using
permutation vectors, so not obsoleting the instances didn't cause so easily
observed symptoms.
Now, however, since slot-infos from the previous definition can live
in the method cache, the wrappers must be invalidated so that caches
are flushed properly.
Nikodemus Siivola [Mon, 11 Apr 2011 11:32:50 +0000 (11:32 +0000)]
1.0.47.24: more conservative FTYPE proclamations
Full warnings for changing FTYPE proclamations in the
cross-compiler, and always a CERROR when the function is a known one
and the new type is not a subtype of the old one.
This necessitates the following changes:
* Rewriting DEF-MATH-RTN not to use DEFINE-ALIEN-ROUTINE which
proclaims its FTYPE.
* Fix the DEFKNOWN for CLASSOID-NAME to match the DEFSTRUCT.
* Fix STRING-OUTPUT-STREAM-ELEMENT-TYPE slot type, and DEFKNOWN
result type.
Nikodemus Siivola [Mon, 11 Apr 2011 10:52:03 +0000 (10:52 +0000)]
1.0.47.23: remove defknowns for condition slot accessors
Condition slot types aren't checked, and DEFINE-CONDITION throws the
fndb type-information out of the window -- but the defknowns cause
code compiled before that to trust the types.
Fixes lp#705690.
Nikodemus Siivola [Sun, 10 Apr 2011 13:08:52 +0000 (13:08 +0000)]
1.0.47.22: better --dynamic-space-size argument validation
Based on patch by Roman Marynchak, lp#721457.
1. Check for trailing junk, in case of someone trying to use eg.
--dynamic-space-size 1Gb.
2. Check the range before converting to bytes to avoid weirdness.
Nikodemus Siivola [Sun, 10 Apr 2011 12:22:35 +0000 (12:22 +0000)]
protect compile-time side-effects of DEFUN with a package-lock
Ie. proclaiming as a function, possibly nuking existing inline
definitions.
Fixes lp#675584.
Now compiling a file with
(DEFUN LOCKED:FOO ...)
signals a compile-time error.
(WITHOUT-PACKAGE-LOCKS (DEFUN LOCKED:FOO ...))
still works, as the DEFUN stops being a toplevel form, and hence no
longer has compile-time side effects except for those inherent to
compiling a NAMED-LAMBDA.
Nikodemus Siivola [Sun, 10 Apr 2011 10:34:38 +0000 (10:34 +0000)]
1.0.47.20: don't handle errors during compile-time-too processing
Essentially reverts 1.0.33.13.
Handling compile-time-too errors has a nasty tendency to swallow
things package conflict errors from DEFPACKAGE forms, and dump them
into fasls without allowing the user to handle them reasonably.
While it may be that there are specific cases which should/could be
handled and converted into compiler-errors, I believe they are the
the minority. For a moment I considered simply not handling
conditions which have restarts associated with them, but it seems to
me that
(eval-when (:compile-toplevel) (error "oops"))
is most often a signal that something is seriously wrong, and
compiling rest of the file is a waste of time and only obfuscates
the real problem.
Nikodemus Siivola [Sun, 10 Apr 2011 09:21:46 +0000 (09:21 +0000)]
1.0.47.19: another MAKE-INSTANCE regression from 1.0.45.18
...which was masked by another regression till 1.0.46.15.
Inverted conditional: (SLOT-BOUNDP-USING-CLASS ...) where it should
have been (NOT (SLOT-BOUNDP-USING-CLASS ...)).
Reported by Pascal Costanza on sbcl-devel.
Nikodemus Siivola [Fri, 8 Apr 2011 15:38:26 +0000 (15:38 +0000)]
1.0.47.18: less verbose source forms for functions from EVAL
Fixes lp#747485.
When generating debug information, exclude the outer lambda
introduced by %SIMPLE-EVAL from the source form.
Nikodemus Siivola [Fri, 8 Apr 2011 13:11:56 +0000 (13:11 +0000)]
1.0.47.17: %FUNCALL IR1 translator was careless about FUNCTION argcount
This allowed forms such as (FUNCALL (FUNCTION FOO OOPS) ...) to
compile without complaint.
Fix line-wrapping in NEWS for the last couple of commits.
Nikodemus Siivola [Fri, 8 Apr 2011 13:06:38 +0000 (13:06 +0000)]
1.0.47.16: more ((LAMBDA ..) ..) and (FUNCALL (LAMBDA ..) ..) equivalence
This was mostly the case already, but for consistency's sake convert
((LAMBDA ...) ...) via (%FUNCALL ...) instead of using
IR1-CONVERT-COMBINATION directly.
Fixes lp#720382.
Nikodemus Siivola [Fri, 8 Apr 2011 13:02:26 +0000 (13:02 +0000)]
1.0.47.15: %FUNCALL IR1 translator macroexpands the function form
Code compiled correctly without this, but added an unnecessary cast
to FUNCTION for the lambda in
(FUNCALL (LAMBDA ...) ...)
forms, which prevented local-call conversion and inlining for the
lambda. Note:
(FUNCALL (FUNCTION (LAMBDA ...)) ...)
forms did not suffer from this.
Step on the way to fixing lp#720382.
Nikodemus Siivola [Thu, 7 Apr 2011 13:05:01 +0000 (13:05 +0000)]
1.0.47.14: optimize list DELETE to DELQ in more cases
Optimize in the presence of explicit EQL test if the item is known
to be such that EQ and EQL work the same.
Optimize for implicit EQL for fixnums as well -- not just
non-numbers as previously.
Nikodemus Siivola [Thu, 7 Apr 2011 13:02:02 +0000 (13:02 +0000)]
1.0.47.13: extend LVAR-FUN-IS to constant functions and function names
Allows optizing eg. (MEMBER X Y :TEST 'EQ) unlike the previous one.
Additionally make the code work like the comment says, and return
true only if the function is not NOTINLINE.
Nikodemus Siivola [Thu, 7 Apr 2011 12:53:32 +0000 (12:53 +0000)]
1.0.47.12: robustify test for bug-654289
Run GC before timing the compilation, so that garbage from earlier
tests doesn't get accounted here.
Up the fixed leeway to 1/10th of a second -- if we have a real
regression the expected blowup is several seconds or tens of
seconds.
Also make the error message report the times for easier eyeballing
of future failures.
Stas Boukarev [Tue, 5 Apr 2011 18:36:12 +0000 (18:36 +0000)]
1.0.47.11: isqrt: Fix reference to `fast-isqrt'.
It was originally named `fast-isqrt', but the self-recursive call wasn't renamed.
Jim Wise [Mon, 4 Apr 2011 15:28:19 +0000 (15:28 +0000)]
Better Solaris support in tests:
a.) support for Solaris /bin/sh in sh-based tests (`...` for $(...), and no
test -e)
b.) Make run-compiler.sh obey $CC, if set, and teach it about Solaris
arch support.
Christophe Rhodes [Sun, 3 Apr 2011 06:17:13 +0000 (06:17 +0000)]
1.0.47.9: Oh very funny
Commit NEWS and version.lisp-expr as well. I feel like a newb. (On the
other hand, this is a good way to test whether syncmail is working again)
Christophe Rhodes [Sat, 2 Apr 2011 14:19:36 +0000 (14:19 +0000)]
1.0.47.8: No more INSTANCE-LAMBDA
So long! Farewell! It's time to say goodbye!
Nikodemus Siivola [Wed, 30 Mar 2011 18:39:01 +0000 (18:39 +0000)]
1.0.47.7: sb-posix: add rdev member to stat
Patch by Philipp Marek.
Nikodemus Siivola [Wed, 30 Mar 2011 18:06:04 +0000 (18:06 +0000)]
1.0.47.6: marginally faster ISQRT
Thanks to Robert Smith, lp#713343.
Nikodemus Siivola [Wed, 30 Mar 2011 16:48:49 +0000 (16:48 +0000)]
1.0.47.5: sb-posix: add read(2) and write(2)
Patch by Daniel Lowe.
Also add missing NEWS entries.
Alastair Bridgewater [Tue, 29 Mar 2011 17:35:44 +0000 (17:35 +0000)]
1.0.47.4: Fix slot-documentation for SB-POSIX:TERMIOS slot CC.
* Unlike every other documentation string for a DEFINE-PROTOCOL-CLASS
slot, this one documentation string did not end in a period (#\.).
Fixed.
* While we're at it, alter the DEFINE-PROTOCOL-CLASS macro to not
ignore DEFCLASS slot options after an :ARRAY-LENGTH option (reported
by mon_key in #lisp).
Nikodemus Siivola [Tue, 29 Mar 2011 11:55:58 +0000 (11:55 +0000)]
1.0.47.3: better DEFSTRUCT constructor type declarations
Lift the argument types into the FTYPE declarations, instead
of just having them internal to the constructor functions.
Prior to this the declared type of MAKE-FOO after
(DEFSTRUCT FOO (X 0.0 :TYPE SINGLE-FLOAT) (Y))
was (FUNCTION * (VALUES FOO &OPTIONAL)), after this it
becomes
(FUNCTION (&KEY (:X SINGLE-FLOAT) (:Y T)) (VALUES FOO &OPTIONAL))
as appropriate -- allowing types to propagate better, and providing
warnings for signature mismatches even if the constructor is not
inlined.
Also fix whitespace damage in ntrace.lisp.
Nikodemus Siivola [Tue, 29 Mar 2011 04:54:22 +0000 (04:54 +0000)]
1.0.47.2: nicer error behaviour for TRACE
Fixed lp#740717.
Instead of an error, warn about the undefined function and ignore
it.
Similar behaviour for attempts to TRACE special operators or invalid
function names.
(Trace is virtually always invoked interactively, which means that a
warning about the issue interrupts the flow less than hitting the
debugger. Also, CLHS doesn't require any errors.)
Cyrus Harmon [Mon, 28 Mar 2011 02:42:09 +0000 (02:42 +0000)]
1.0.47.1: fix longstanding bug in os_get_runtime_executable_path on darwin
* in os_get_runtime_executable_path, we were wrongly assuming that
size would be set to the actual size of the string on a successful
call to NSGetExecutablePath. This isn't the case and we were
setting path[1025] = '\0'; causing things to break with XCode 4's
CLANG compiler.
* While we're at it, we should check to make that runtime_path is not
NULL before we free it, as there is a code path where we might end
up trying to free runtime_path when it was NULL but
saved_runtime_path was non-NULL.
Juho Snellman [Sun, 27 Mar 2011 12:46:43 +0000 (12:46 +0000)]
1.0.47: Will be tagged as 1_0.47
Alastair Bridgewater [Thu, 24 Mar 2011 19:33:04 +0000 (19:33 +0000)]
1.0.46.44: room: Fix map-stack-references for stack-grows-upward systems.
* SAP+ is (function (system-area-pointer integer) (values
system-area-pointer)).
* SAP- is (function (system-area-pointer system-area-pointer) (values
integer)).
* When negating the delta in a SAP+ operation, don't use SAP-.
Instead, negate the offset. Otherwise, you get a WARNING for passing an
integer where a system-area-pointer is expected.
Cyrus Harmon [Thu, 24 Mar 2011 04:45:55 +0000 (04:45 +0000)]
1.0.46.43: fix sb-introspect on non-threaded builds
* put #+sb-thread around calls inspecting sb-thread::%thread-local-references
Nikodemus Siivola [Tue, 22 Mar 2011 17:00:17 +0000 (17:00 +0000)]
1.0.46.42: more on threads in SB-INTROSPECT:MAP-ROOT
* Thread local values: filter out invalid values correctly (oops),
also change SB-THREAD::%THREAD-LOCAL-REFERENCES to work on current
thread only.
* References from stack: SB-VM::MAP-STACK-REFERENCES walks the
current thread stack looking for things that look like references
to heap objects.
* MAP-ROOT interrupts the thread it wants to check out, unless it is
the current one -- a bit tacky, but seems preferable to stopping
the world.
Nikodemus Siivola [Tue, 22 Mar 2011 16:49:33 +0000 (16:49 +0000)]
1.0.46.41: double-check simple functions in looks_like_valid_lisp_pointer_p
* A function contained in a code object is always a simple function.
Make sure that we actually have one, instead of a random location
in the code object.
Nikodemus Siivola [Sun, 20 Mar 2011 18:37:55 +0000 (18:37 +0000)]
1.0.46.40: more comprehensive MAP-ROOT
* EXT defaults to T and provides:
** EQL specializers on the object
** symbol values in other threads
** MACRO-FUNCTION on symbols
* Threads map to thread-local values as well, courtesy of
SB-THREAD::%THREAD-LOCAL-VALUES.
* Don't report multiple references to the same object.
Nikodemus Siivola [Sun, 20 Mar 2011 18:36:01 +0000 (18:36 +0000)]
get rid of *EQL-SPECIALIZER-TABLE-LOCK*
Use WITH-LOCKED-HASH-TABLE instead.
Nikodemus Siivola [Sat, 19 Mar 2011 14:33:16 +0000 (14:33 +0000)]
1.0.46.38: tad more information PACKAGE-LOCK-VIOLATION conditions
* Add the current *PACKAGE* when the error is signaled to the
condition.
* Now that SIMPLE-CONDITION :FORMAT-CONTROL defaults to NIL,
PACKAGE-LOCK-VIOLATION can inherit from SIMPLE-CONDITION instead of
definining its own FORMAT-CONTROL and FORMAT-ARGUMENTS slots.
Nikodemus Siivola [Sat, 19 Mar 2011 14:31:29 +0000 (14:31 +0000)]
1.0.46.37: SIMPLE-CONDITION slots are initialized with NIL if not supplied
So says CLHS.
When there is no format control and *PRINT-ESCAPE* is false,
signal an error.
Nikodemus Siivola [Tue, 15 Mar 2011 15:11:53 +0000 (15:11 +0000)]
1.0.46.36: par for course, committed the wrong version of MAP-ROOT as 1.0.46.35
This one actually works instead of having package errors.
Nikodemus Siivola [Tue, 15 Mar 2011 14:54:47 +0000 (14:54 +0000)]
1.0.46.35: first cut at MAP-ROOT
Walking references from an arbitrary lisp object.
Stas Boukarev [Sat, 12 Mar 2011 21:29:37 +0000 (21:29 +0000)]
1.0.46.34: Fix tests for builds without sb-eval.
Add #+sb-evel to cases which bind sb-ext:*evaluator-mode* to :interpret.
Alastair Bridgewater [Fri, 11 Mar 2011 15:35:30 +0000 (15:35 +0000)]
1.0.46.33: constraint: Don't substitute REFs when replacement LEAF is not visible.
* Bug reported by Frank Duncan, additional diagnosis by Heka Treep,
patch review and revision by Nikodemus Siivola.
* Introduce LEAF-VISIBLE-FROM-NODE-P, which verifies that the LEAF
about to be substituted is visible from the NODE to be modified.
* Add LEAF-VISIBLE-FROM-NODE-P as an additional precondition to
calling CHANGE-REF-LEAF, which does the actual substitution.
* And, for good measure, added a test to the test suite.
cracauer [Tue, 8 Mar 2011 23:21:14 +0000 (23:21 +0000)]
1.0.46.32: export sb-kernel::redefinition-with-defmacro
Export sb-kernel::redefinition-with-defmacro the same way we already
export sb-kernel:redefinition-with-defun and it's CLOS friends.
Cyrus Harmon [Tue, 8 Mar 2011 15:33:44 +0000 (15:33 +0000)]
1.0.46.31: clean up mach port deallocation on x86
* don't deallocate the exception_port port and check the return
values from deallocating the thread and task ports
Cyrus Harmon [Tue, 8 Mar 2011 02:56:27 +0000 (02:56 +0000)]
1.0.46.30: don't deallocate exception_port and check return values from mach_port_deallocate calls
* mach_port_deallocate of the exception_port was returning
KERN_INVALID_RIGHT; assume this call was bogus and remove it. So
now we can be more strict about checking the return values of the
other deallocate calls.
Cyrus Harmon [Tue, 8 Mar 2011 01:44:41 +0000 (01:44 +0000)]
1.0.46.29: fix run-compiler.sh for darwin/x86
* default arch is now x86_64, so check for x86 and use arch i386 if
appropriate
Cyrus Harmon [Tue, 8 Mar 2011 01:41:25 +0000 (01:41 +0000)]
1.0.46.28: fix mach port leakage on x86 too
* call mach_port_deallocate on exception_port, thread and task at the
end of x86 version of catch_exception_raise
Cyrus Harmon [Tue, 8 Mar 2011 00:55:10 +0000 (00:55 +0000)]
1.0.46.27: fix mach port leakage
* store mach_thread_self() results in current_mach_thread and
deallocate the mach_port after thread_set_exception_ports call
* fix error messages in lose strings in mach_thread_init
* catch_exception_raise now calls mach_port_deallocate for the
exception_port, the thread and the task
* These changes seem to get rid of most of the leaking port
rights. However, MachPortDump shows when running the
threads.impure.lisp tests, there are still a number of ports that
stick around with a single send right.
Cyrus Harmon [Mon, 7 Mar 2011 23:41:24 +0000 (23:41 +0000)]
1.0.46.26: mach-exception-handler improvement: current_mach_task
* define current_mach_task variable, squirrel away the value of
mach_task_self there and use that instead of calling mach_task_self
so that we don't leak send rights all over the place
Cyrus Harmon [Mon, 7 Mar 2011 23:14:01 +0000 (23:14 +0000)]
1.0.46.25: consolidate common code from x86-64-darwin-os.c and x86-darwin-os.c into darwin-os.c
* lots of code in x86-64-darwin-os.c and x86-darwin-os.c was
duplicated. consolidated into darwin-os.c and wrapped with
appropriate #ifdefs.
* darwin-os.c now #includes "thread.h" but not "bsd-os.h"
Nikodemus Siivola [Fri, 4 Mar 2011 08:16:48 +0000 (08:16 +0000)]
1.0.46.24: fix MAKE-INSTANCE regression from 1.0.45.19
lp#728650
We cannot use an optimized CTOR if there is an :AROUND method potentially
supplying initialization arguments via CALL-NEXT-METHOD.
So:
* Add SIMPLE-NEXT-METHOD-CALL slot to STANDARD-METHOD: initialize it to T iff
the method doesn't use CALL-NEXT-METHOD at all, or only as
(CALL-NEXT-METHOD).
* Allow an optimized CTOR in the presence of INITIALIZE-INSTANCE :AROUND
methods iff those methods only contain simple forms of CALL-NEXT-METHOD.
jimwise [Thu, 3 Mar 2011 20:01:37 +0000 (20:01 +0000)]
1.0.46.23: fix an actual random bug in mkstemp test
On some platforms (including Solaris, FWIW), the character "." is one of
the characters mkstemp can use when filling in an "XXXXXX" template. When
this (randomly) occurs during the running of this test, PATHNAME-NAME, of
course breaks on the last such random "." character, and the test fails in
a way which will not repeat until the next time such a character is
randomly chosen.
Since readdir actually returns a string, break the string on the first "."
explicitly, instead of making a path from the string and calling
pathname-name.
This will need to be revisited if we add mkstemp support on win32 in the
future.
jimwise [Thu, 3 Mar 2011 19:50:21 +0000 (19:50 +0000)]
1.0.46.22: fix sb-posix readdir on SunOS/x86
for the time being, disable :largefile on SunOS/x86. Unfortunately,
sb-grovel cannot navigate the somewhat sticky way in which struct
dirent gets setup for a 32-bit host with 64-bit ino_t on SunOS, so
sb-posix:readdir breaks
:largefile works fine on SunOS x86_64, and will be re-enabled on x86
after I get some more time to fight with the alien def for struct dirent
Nikodemus Siivola [Wed, 2 Mar 2011 10:59:41 +0000 (10:59 +0000)]
1.0.46.21: renaming oops in MAKE-PACKAGE
When WITH-PACKAGES was renamed WITH-PACKAGE-GRAPH, MAKE-PACKAGE was
not updated -- but amusingly no error was signalled, because
* The form was that of a function call, so no program-error.
* Before the undefined function could be called, a non-local transfer always
took control elsewhere, so no undefined-function error.
Nikodemus Siivola [Wed, 2 Mar 2011 10:21:03 +0000 (10:21 +0000)]
1.0.46.20: better error messages for invalid variables
Based on patch by Roman Marynchak, lp#387333.
* Same code checks for LET and LET* in addition to lambda-lists, so make sure
the messages make sense for both contexts. Binding forms converted to
LAMBDA -- like MULTIPLE-VALUE-BIND -- still get odd messages for duplicate
variable names, though.
* Make the messages for keywords, defined constants, and global lexicals
better.
Nikodemus Siivola [Wed, 2 Mar 2011 09:40:22 +0000 (09:40 +0000)]
1.0.46.19: 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...
...it 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.
Nikodemus Siivola [Wed, 2 Mar 2011 09:30:09 +0000 (09:30 +0000)]
1.0.46.18: terser C-STRING unparsing
Omit parts with default values from the unparsing: just
(C-STRING :EXTERNAL-FORMAT :DEFAULT :ELEMENT-TYPE CHARACTER)
becomes C-STRING, and
(C-STRING :EXTERNAL-FORMAT :UTF-8 :ELEMENT-TYPE CHARACTER)
becomes (C-STRING :EXTERNAL-FORMAT :UTF-8), etc.
Nikodemus Siivola [Mon, 28 Feb 2011 12:12:19 +0000 (12:12 +0000)]
1.0.46.17: nicer STYLE-WARNINGS from IGNORE and IGNORABLE declarations
Fixes lp#726331, based on patch by Robert P. Goldman.
Nikodemus Siivola [Mon, 28 Feb 2011 11:45:36 +0000 (11:45 +0000)]
1.0.46.16: death to "in: LAMBDA NIL" in compiler messages
The LAMBDA NIL was 99% of the time the lambda introduced by
%SIMPLE-EVAL-IN-LEXENV -- in other words totally uninteresting.
Have EVAL save original form, and use that to name the lambda
introduced in %SIMPLE-EVAL-IN-LEXENV:
`(NAMED-LAMBDA (EVAL ,SOURCE-CONTEXT) ...)
Finally, DEFINE-SOURCE-CONTEXT for NAMED-LAMBDA that understands the
source context stashed into the name by %SIMPLE-EVAL-IN-LEXENV.
Additionally, in case there is a legitimate (LAMBDA () ...) form the
compiler wants to complain about, make sure it is printed as LAMBDA (),
not LAMBDA NIL.
Nikodemus Siivola [Mon, 28 Feb 2011 08:57:19 +0000 (08:57 +0000)]
1.0.46.15: fix MAKE-INSTANCE regression from 1.0.45.18
If we use a fake MAKE-INSTANCE emf in the presence of (SETF
SLOT-VALUE-USING-CLASS) or SLOT-BOUNDP-USING-CLASS methods, we need
to initialize the instance vector using +SLOT-UNBOUND+ before any
slots are touched, because accessing any slot can potentially cause
another to be accessed -- which in turn requires boundp information
to be present.
Reported by Slobodan Milnović on sbcl-help.
Nikodemus Siivola [Sat, 26 Feb 2011 16:37:25 +0000 (16:37 +0000)]
1.0.45.14: CHECK-KEY-ARGS didn't take :ALLOW-OTHER-KEYS into account
Cases of interest are:
* No :ALLOW-OTHER-KEYS present for sure.
* :ALLOW-OTHER-KEYS with a non-constant argument, or a non-constant
keyword argument which may turn out to be :ALLOW-OTHER-KEYS at
runtime.
* Constant :ALLOW-OTHER-KEYS NIL.
* Constant :ALLOW-OTHER-KEYS T.
Thanks to Xach for the heads-up!
Nikodemus Siivola [Thu, 24 Feb 2011 08:48:31 +0000 (08:48 +0000)]
1.0.46.13: hopefully fix SB-POSIX tests on Windows 7
Based on patch by Marko Kocić on sbcl-devel.
Nikodemus Siivola [Sun, 20 Feb 2011 16:32:49 +0000 (16:32 +0000)]
1.0.46.12: faster core startup
Patch by Lutz Euler, lp#557357.
Remove unnecessary page_table initialization loop: it is allocated
using calloc, which zero-initializes it -- which as it happens is
enough for us.
Nikodemus Siivola [Sun, 20 Feb 2011 11:48:50 +0000 (11:48 +0000)]
1.0.46.11: faster slot-accesses in the presence of SLOT-VALUE-USING-CLASS &co
* Introducing SLOT-INFO: a structure we save into the each
EFFECTIVE-SLOT-DEFINITION object, which provides us with fast-accesses to
typecheck, reader, writer, and boundp functions for that slot. (These
functions already pre-exist, and currently live directly in the slot
definition objects.)
This replaces typecheckfuns in permutation vectors, and both the
typecheckfun and slotd in slot-tables.
Given this, when we run into SLOT-VALUE in a method body when there is an
applicable non-standard SLOT-VALUE-USING-CLASS, we don't have to punt to
the slow path, but can instead replace the SLOT-VALUE form with
`(funcall (slot-info-reader (svref .pv. (1+ ,pv-offset))) ,parameter)
which is pretty snappy as these things go. Analogously for SET-SLOT-VALUE,
and SLOT-BOUNDP.
* Previously slot typechecking functions were generated as part of the
DEFCLASS expansion and made part of DIRECT-SLOT-DEFINITION objects. This
was a bit wasteful, as (1) we don't need them for direct slot definitions,
and (2) we used to get a separate typechecking function for each slot in
each safe class, even if they all had the same type.
Now there's only one typechecking function per type, and that is saved only
in the SLOT-INFO structure of the relevant effective slot definitions.
* In a couple of places finalize the class a bit earlier if possible to have
a better idea of how to best implement slot
accesses. TRY-FINALIZE-INHERITANCE tries, but refuses if there are forward
referenced superclasses. CAN-OPTIMIZE-ACCESS will signal a compiler-note
about such cases.
* WRAPPER-INSTANCE-SLOTS-LAYOUT now also includes slot-types, and we consider
the instance to be obsoleted when slot-type changes. (This was a bug that
our previous type-check-function setup accidentally worked around.)
Detect slot-type violations while updating instances of safe classes.
Similarly for CHANGE-CLASS.
Nikodemus Siivola [Sun, 20 Feb 2011 10:51:39 +0000 (10:51 +0000)]
1.0.46.10: define STRING-WITH-FILL-POINTER type properly
...can't rely on the evaluation order of type clauses: types aren't
expressions but set specifications.
Nikodemus Siivola [Sun, 20 Feb 2011 10:48:32 +0000 (10:48 +0000)]
1.0.46.9: detect invalid use of :PREDICATE with DEFSTRUCT :TYPE
Based on patch by Roman Marynchak, lp#520607.
In case there are :TYPE and :PREDICATE options specified, :NAMED DEFSTRUCT
option should be specified too. To check this, add the flag for :PREDICATE
option in the function SB-KERNEL::PARSE-DEFSTRUCT-NAME-AND-OPTIONS, and
verify that the flag is set, :TYPEP is set but :NAMED option is not provided.
Also includes the regression test.
Nikodemus Siivola [Sun, 20 Feb 2011 10:43:24 +0000 (10:43 +0000)]
1.0.46.8: warn about (FORMAT "~A" ...)
Add a compiler-macro that only checks if the destination argument is a
literal string.
Fixes lp#327223.
Nikodemus Siivola [Sun, 20 Feb 2011 10:38:12 +0000 (10:38 +0000)]
1.0.46.7: better error message for an invalid lambda in COMPILE, etc
Patch by Roman Marynchak, lp#718905.
Make the error from NAME-LAMBDALIKE clearer.
Nikodemus Siivola [Sun, 20 Feb 2011 10:33:43 +0000 (10:33 +0000)]
1.0.46.6: better MACHINE-VERSION on Darwin
Patch by Josh Elsasser.
Use machdep.cpu.brand_string instead of hw.model.
lp#668332
Nikodemus Siivola [Sun, 20 Feb 2011 10:30:22 +0000 (10:30 +0000)]
1.0.46.5: split (:BACKTRACE :MISC) test into smaller pieces
Nuff said.
Nikodemus Siivola [Sun, 20 Feb 2011 10:27:38 +0000 (10:27 +0000)]
1.0.46.4: redefinition warnings for macros
Similar logic as when not to warn as DEFUN has.
Also refactor the existing redefinition conditions and
uninterestingness-tests a bit.
Nikodemus Siivola [Sun, 20 Feb 2011 10:23:16 +0000 (10:23 +0000)]
1.0.46.3: muffle STYLE-WARNINGs and COMPILER-NOTEs from --script loading
I have a hard time coming up with a case where either is
desirable in a script, and they can be hard to avoid in
some cases.
Fixes lp#677779, and then some.
Nikodemus Siivola [Sun, 20 Feb 2011 10:19:47 +0000 (10:19 +0000)]
1.0.46.2: SB-SPROF: fix threaded wallclock profiling on x86-64
Type error due to reversed argument types in pthread_kill definition.
Nikodemus Siivola [Sun, 20 Feb 2011 10:12:03 +0000 (10:12 +0000)]
1.0.46.1: be careful about stack-allocation in BACKTRACE-AS-LIST
Replace DX objects with heap-allocated ones to avoid leaking invalid
references.
Note: doesn't deal with objects allocated on stacks of other threads
yet, as current %SYMBOL-VALUE-IN-THREAD isn't really something I
want to call during backtracing: iterating over all_threads is a
crock.
Fixes lp#310175.
Juho Snellman [Sun, 20 Feb 2011 04:48:34 +0000 (04:48 +0000)]
1.0.46: will be tagged as sbcl_1_0_46
Juho Snellman [Fri, 18 Feb 2011 01:12:02 +0000 (01:12 +0000)]
1.0.45.36: Fix solaris x86-64 page size issue
* Patch lp#720800 from Jim Wise
Nikodemus Siivola [Wed, 16 Feb 2011 10:35:57 +0000 (10:35 +0000)]
1.0.45.35: revert 1.0.45.30 due to regression (lp#677779)
Reported by Ariel Badichi on sbcl-devel.
Using WITH-COMPILATION-UNIT to silence UNDEFINED-FUNCTION style-warnings for
forward-referenced functions was a bad idea after all: it caused cores dumped
using it to be started with **WORLD-LOCK** held by a dead thread.
...and it's not like WITH-COMPILATION-UNIT would ever get to summarize the
unit anyways the way it was used there.
Proper fix for this is to use UNDEFINED-REFERENCE-STYLE-WARNING as separate
condition class and just muffle those -- but this is too much to put in
during the freeze and will wait till after 1.0.46.
Nikodemus Siivola [Tue, 15 Feb 2011 12:01:55 +0000 (12:01 +0000)]
1.0.45.34: #+sb-thread the new waitqueue printing test
In despite the freeze as this is test-fix and a regression.
Thanks to Harald Hanche-Olsen for the heads-up.
Nikodemus Siivola [Mon, 14 Feb 2011 15:08:06 +0000 (15:08 +0000)]
1.0.45.33: optimize CHARPOS on string-streams
The POSITION in STRING-OUT-MISC wasn't getting optimized at all due
to insufficient type-information.
This speeds up pretty-printing on string-streams somewhat.
Nikodemus Siivola [Sun, 13 Feb 2011 20:34:14 +0000 (20:34 +0000)]
1.0.45.32: 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.
lp#718039
Nikodemus Siivola [Sun, 13 Feb 2011 20:29:21 +0000 (20:29 +0000)]
1.0.45.31: make COPY-PPRINT-DISPATCH have access to a pristine table
...so that it can always be used to restore the original.
Fixes lp#678409.
Also add missing NEWS entry for last commit.
Nikodemus Siivola [Sun, 13 Feb 2011 20:22:08 +0000 (20:22 +0000)]
1.0.45.30: wrap --script loading in a WITH-COMPILATION-UNIT
Avoid UNDEFINED-FUNCTION warnings for code like
(defun foo () (bar))
(defun bar () 42)
by wrapping the LOAD done by --script in a WITH-COMPILATION-UNIT.
Fixes lp#677779.
Nikodemus Siivola [Sat, 12 Feb 2011 15:54:21 +0000 (15:54 +0000)]
1.0.45.29: fix a copy and paste comment error
Patch by William Halliburton, lp#710024.
Plus missing NEWS entry for last commit.
Nikodemus Siivola [Sat, 12 Feb 2011 15:51:47 +0000 (15:51 +0000)]
1.0.45.28: add LIMIT and PRINT-NO-CALL-LIST arguments to SB-PROFILE:REPORT
Patch by William Halliburton, lp#710017.
These arguments are used to control the amount of information printed
by REPORT as many times you are only looking for the top contenders
and the other information is unnecessary and, at times, inundating.
Nikodemus Siivola [Sat, 12 Feb 2011 15:49:21 +0000 (15:49 +0000)]
1.0.45.27: 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.
Nikodemus Siivola [Sat, 12 Feb 2011 15:45:38 +0000 (15:45 +0000)]
1.0.45.26: fix a long-standing UNINTERN bug
Patch by Stas Boukarev, lp#693796.
UNINTERN is specified to take a symbol, not a symbol
designator: if P1 has the symbol P1:S, which is not EQ
to P2:S, then (UNINTERN 'P2:S :P1) should not remove
P1:S from P1.
Nikodemus Siivola [Sat, 12 Feb 2011 15:42:48 +0000 (15:42 +0000)]
1.0.45.25: better constant folding in arithmetic functions
Patch by Heka Deep, lp#676414, edited to retain identities
and added a random-tester.
* Folds constants in expressions such as (+ 3 a 5 b 7 c).
* Constants are collected by calling the `reduce-constants' function
from the `source-transform-transitive' and
`source-transform-intransitive' functions. Constants adding up to
identities are retained so that SNaNs don't sneak past.
Nikodemus Siivola [Sat, 12 Feb 2011 15:38:32 +0000 (15:38 +0000)]
1.0.45.24: minor MAKE-TIMER cleanups
Patch by Brit Butler, lp#672252.
* Improve the docstring for SB-EXT:MAKE-TIMER.
* Add a minor comment to unschedule-timer.
...with minor edits by yours truly, including dropping
the bogus SCHEDULE-TIMER change from the original patch.
Nikodemus Siivola [Sat, 12 Feb 2011 15:22:25 +0000 (15:22 +0000)]
more pedantic clean.sh
Patch by Jim Wise, lp#666884.
Takes care of the few cases of temporary files which are currently
left behind after running clean.sh.
While there, it normalizes the name used for scratch files used in
contrib testing, and updates .cvsignore to match.
This is obviously pedantry, but it's nice to have a clean tree at
the end of clean.sh.