Permalink
Browse files

Merge branch 'windows-threads' into enhanced-windows-threads

  • Loading branch information...
2 parents 18c02b2 + e5dc25a commit 5e1e0b4f50cbe151035fdf3fa1e71bbf9ea99561 @dmitryvk committed Dec 19, 2010
Showing with 1,456 additions and 570 deletions.
  1. +24 −0 NEWS
  2. +0 −1 contrib/asdf/Makefile
  3. +157 −85 contrib/asdf/asdf.lisp
  4. +53 −15 contrib/asdf/asdf.texinfo
  5. +2 −6 contrib/sb-introspect/introspect.lisp
  6. +2 −4 contrib/sb-introspect/test-driver.lisp
  7. +18 −0 doc/manual/pathnames.texinfo
  8. +5 −1 make.sh
  9. +13 −2 package-data-list.lisp-expr
  10. +1 −2 src/code/coerce.lisp
  11. +54 −0 src/code/condition.lisp
  12. +3 −0 src/code/defboot.lisp
  13. +48 −4 src/code/early-extensions.lisp
  14. +3 −7 src/code/fd-stream.lisp
  15. +19 −17 src/code/filesys.lisp
  16. +12 −7 src/code/late-type.lisp
  17. +2 −1 src/code/macros.lisp
  18. +20 −13 src/code/ntrace.lisp
  19. +4 −4 src/code/numbers.lisp
  20. +14 −2 src/code/pathname.lisp
  21. +1 −1 src/code/signal.lisp
  22. +1 −1 src/code/sysmacs.lisp
  23. +21 −11 src/code/target-pathname.lisp
  24. +30 −25 src/code/target-thread.lisp
  25. +68 −36 src/code/unix-pathname.lisp
  26. +12 −5 src/code/unix.lisp
  27. +66 −32 src/code/win32-pathname.lisp
  28. +5 −3 src/code/win32.lisp
  29. +18 −0 src/compiler/alpha/call.lisp
  30. +6 −0 src/compiler/alpha/cell.lisp
  31. +13 −11 src/compiler/constraint.lisp
  32. +4 −1 src/compiler/dfo.lisp
  33. +27 −6 src/compiler/gtn.lisp
  34. +18 −0 src/compiler/hppa/call.lisp
  35. +6 −0 src/compiler/hppa/cell.lisp
  36. +1 −0 src/compiler/ir1-translators.lisp
  37. +4 −2 src/compiler/ir1tran-lambda.lisp
  38. +63 −64 src/compiler/ir1tran.lisp
  39. +2 −1 src/compiler/ir1util.lisp
  40. +74 −30 src/compiler/ir2tran.lisp
  41. +18 −14 src/compiler/locall.lisp
  42. +29 −18 src/compiler/main.lisp
  43. +17 −0 src/compiler/mips/call.lisp
  44. +6 −0 src/compiler/mips/cell.lisp
  45. +8 −0 src/compiler/node.lisp
  46. +30 −0 src/compiler/physenvanal.lisp
  47. +4 −6 src/compiler/policy.lisp
  48. +18 −0 src/compiler/ppc/call.lisp
  49. +5 −0 src/compiler/ppc/cell.lisp
  50. +4 −5 src/compiler/proclaim.lisp
  51. +17 −4 src/compiler/seqtran.lisp
  52. +17 −0 src/compiler/sparc/call.lisp
  53. +6 −0 src/compiler/sparc/cell.lisp
  54. +25 −12 src/compiler/srctran.lisp
  55. +20 −0 src/compiler/x86-64/call.lisp
  56. +6 −0 src/compiler/x86-64/cell.lisp
  57. +20 −0 src/compiler/x86/call.lisp
  58. +6 −0 src/compiler/x86/cell.lisp
  59. +52 −77 src/pcl/boot.lisp
  60. +0 −5 src/pcl/macros.lisp
  61. +5 −16 src/pcl/vector.lisp
  62. +1 −1 src/runtime/win32-os.c
  63. +14 −3 src/runtime/wrap.c
  64. +15 −0 tests/compiler.impure.lisp
  65. +98 −3 tests/compiler.pure.lisp
  66. +12 −0 tests/condition.pure.lisp
  67. +36 −0 tests/debug.impure.lisp
  68. +10 −0 tests/dynamic-extent.impure.lisp
  69. +29 −1 tests/mop.impure.lisp
  70. +25 −0 tests/pathnames.impure.lisp
  71. +4 −4 tests/threads.impure.lisp
  72. +1 −0 tools-for-build/whitespacely-canonical-filenames
  73. +4 −1 version.lisp-expr
View
24 NEWS
@@ -1,4 +1,28 @@
;;;; -*- coding: utf-8; fill-column: 78 -*-
+changes relative to sbcl-1.0.44:
+ * enhancement: ~/ and ~user/ are treated specially in pathnames.
+ Refer to documentation for details.
+ * enhancement: ASDF has been updated to version 2.010.
+ * optimization: mutated closed-over variables that are only accessed by
+ DYNAMIC-EXTENT closures (currently only FLET and LABELS functions
+ declared to be DYNAMIC-EXTENT) are stored directly in their containing
+ stack frame, rather than allocating a VALUE-CELL (lp#586103).
+ * optimization: UNWIND-PROTECT cleanup functions are now declared
+ DYNAMIC-EXTENT.
+ * bug fix: backtracing function with &REST arguments now shows the full
+ argument list. (lp#310173)
+ * bug fix: return types for functions with complex lambda-lists are now
+ derived properly (lp#384892)
+ * bug fix: when SPEED > SPACE compiling CONCATENATE 'STRING with constant
+ long string arguments slowed the compiler down to a crawl.
+ * bug fix: closure VALUE-CELLs are no longer stack-allocated (lp#308934).
+ * bug fix: non-standard MAKE-METHOD-LAMBDA methods could break RETURN-FROM
+ in the DEFMETHOD body.
+ * bug fix: #<SB-C::DEFINED-FUN ...> should no longer appear in compiler
+ messages, being instead replaced with the corresponding function name.
+ * bug fix: don't derive overly complex unions of numeric types for arithmetic
+ operators. (lp#309448)
+
changes in sbcl-1.0.44 relative to sbcl-1.0.43:
* enhancement: RUN-PROGRAM accepts :EXTERNAL-FORMAT argument to select the
external-format for its :INPUT, :OUTPUT, AND :ERROR :STREAMs.
View
@@ -10,5 +10,4 @@ up:
cp asdf-upstream/asdf.lisp asdf.lisp
cp asdf-upstream/doc/asdf.texinfo asdf.texinfo
cp asdf-upstream/README README
- cd asdf-upstream ; make archive
cp asdf-upstream/LICENSE LICENSE
View

Large diffs are not rendered by default.

Oops, something went wrong.
View
@@ -772,7 +772,7 @@ has the effect of
@end lisp
where @code{...} is the component in question.
-In this case @code{...} would expand to something like
+In this case @code{...} would expand to something like
@lisp
(find-component (find-system "foo") "mod")
@@ -795,20 +795,34 @@ For more details on what these methods do, @pxref{Operations} in
@comment node-name, next, previous, up
@section The defsystem grammar
+@c FIXME: @var typesetting not consistently used here. We should either expand
+@c its use to everywhere, or we should kill it everywhere.
+
+
@example
-system-definition := ( defsystem system-designator @var{option}* )
+system-definition := ( defsystem system-designator @var{system-option}* )
+
+system-option := :defsystem-depends-on system-list
+ | module-option
+ | option
-option := :components component-list
+module-option := :components component-list
+ | :serial [ t | nil ]
+ | :if-component-dep-fails component-dep-fail-option
+
+option :=
| :pathname pathname-specifier
- | :default-component-class
+ | :default-component-class class-name
| :perform method-form
| :explain method-form
| :output-files method-form
| :operation-done-p method-form
| :depends-on ( @var{dependency-def}* )
- | :serial [ t | nil ]
| :in-order-to ( @var{dependency}+ )
+
+system-list := ( @var{simple-component-name}* )
+
component-list := ( @var{component-def}* )
component-def := ( component-type simple-component-name @var{option}* )
@@ -834,8 +848,12 @@ pathname-specifier := pathname | string | symbol
method-form := (operation-name qual lambda-list @&rest body)
qual := method qualifier
+
+component-dep-fail-option := :fail | :try-next | :ignore
@end example
+
+
@subsection Component names
Component names (@code{simple-component-name})
@@ -849,6 +867,14 @@ the current package. So a component type @code{my-component-type}, in
the current package @code{my-system-asd} can be specified as
@code{:my-component-type}, or @code{my-component-type}.
+@subsection Defsystem depends on
+
+The @code{:defsystem-depends-on} option to @code{defsystem} allows the
+programmer to specify another ASDF-defined system or set of systems that
+must be loaded @emph{before} the system definition is processed.
+Typically this is used to load an ASDF extension that is used in the
+system definition.
+
@subsection Pathname specifiers
@cindex pathname specifiers
@@ -918,7 +944,7 @@ Unhappily, ASDF 1 didn't properly support
parsing component names as strings specifying paths with directories,
and the cumbersome @code{#.(make-pathname ...)} syntax had to be used.
-Note that when specifying pathname objects,
+Note that when specifying pathname objects,
ASDF does not do any special interpretation of the pathname
influenced by the component type, unlike the procedure for
pathname-specifying strings.
@@ -930,7 +956,7 @@ be forced upon you if you were specifying a string.
@subsection Warning about logical pathnames
-@cindex logical pathnames
+@cindex logical pathnames
We recommend that you not use logical pathnames
in your asdf system definitions at this point,
@@ -1031,6 +1057,13 @@ and @code{*load-truename*} is currently unbound
from within an editor without clobbering its source location)
@end itemize
+@subsection if-component-dep-fails option
+
+This option is only appropriate for module components (including
+systems), not individual source files.
+
+For more information about this option, @pxref{Pre-defined subclasses of component}.
+
@node Other code in .asd files, , The defsystem grammar, Defining systems with defsystem
@section Other code in .asd files
@@ -1700,11 +1733,14 @@ to be found, for systems to be found the current directory
(at the time that the configuration is initialized) as well as
@code{:directory} entries for @file{$XDG_DATA_DIRS/common-lisp/systems/} and
@code{:tree} entries for @file{$XDG_DATA_DIRS/common-lisp/source/}.
+For instance, SBCL will include directories for its contribs
+when it can find them; it will look for them where SBCL was installed,
+or at the location specified by the @code{SBCL_HOME} environment variable.
@end enumerate
-Each of these configuration is specified as a SEXP
-in a trival domain-specific language (defined below).
+Each of these configurations is specified as an s-expression
+in a trivial domain-specific language (defined below).
Additionally, a more shell-friendly syntax is available
for the environment variable (defined yet below).
@@ -1733,14 +1769,14 @@ On Windows platforms, when not using Cygwin,
instead of the XDG base directory specification,
we try to use folder configuration from the registry regarding
@code{Common AppData} and similar directories.
-However, support querying the Windows registry is limited as of ASDF 2,
+However, support for querying the Windows registry is limited as of ASDF 2,
and on many implementations, we may fall back to always using the defaults
without consulting the registry.
Patches welcome.
@section Backward Compatibility
-For backward compatibility as well as for a practical backdoor for hackers,
+For backward compatibility as well as to provide a practical backdoor for hackers,
ASDF will first search for @code{.asd} files in the directories specified in
@code{asdf:*central-registry*}
before it searches in the source registry above.
@@ -1754,10 +1790,10 @@ but will take precedence over the new mechanism if you do use it.
@section Configuration DSL
-Here is the grammar of the SEXP DSL for source-registry configuration:
+Here is the grammar of the s-expression (SEXP) DSL for source-registry configuration:
@example
-;; A configuration is single SEXP starting with keyword :source-registry
+;; A configuration is a single SEXP starting with keyword :source-registry
;; followed by a list of directives.
CONFIGURATION := (:source-registry DIRECTIVE ...)
@@ -1779,6 +1815,8 @@ DIRECTIVE :=
(:exclude PATTERN ...) |
;; augment the defaults for exclusion patterns
(:also-exclude PATTERN ...) |
+ ;; Note that the scope of a an exclude pattern specification is
+ ;; the rest of the current configuration expression or file.
;; splice the parsed contents of another config file
(:include REGULAR-FILE-PATHNAME-DESIGNATOR) |
@@ -1823,7 +1861,6 @@ once contained:
:inherit-configuration)
@end example
-
@section Configuration Directories
Configuration directories consist in files each contains
@@ -1886,6 +1923,7 @@ list of paths, where
@section Search Algorithm
+@vindex *default-source-registry-exclusions*
In case that isn't clear, the semantics of the configuration is that
when searching for a system of a given name,
@@ -3417,7 +3455,7 @@ but that's all.
The defsystem 4 proposal tends to look more at the external features,
whereas this one centres on a protocol for system introspection.
-@section kmp's ``The Description of Large Systems'', MIT AI Memu 801
+@section kmp's ``The Description of Large Systems'', MIT AI Memo 801
Available in updated-for-CL form on the web at
@url{http://nhplace.com/kent/Papers/Large-Systems.html}
@@ -424,14 +424,10 @@ If an unsupported TYPE is requested, the function will return NIL.
;; FIXME there may be other structure predicate functions
(member self (list *struct-predicate*))))
-(defun function-arglist (function)
- "Deprecated alias for FUNCTION-LAMBDA-LIST."
+(sb-int:define-deprecated-function :late "1.0.24.5" function-arglist function-lambda-list
+ (function)
(function-lambda-list function))
-(define-compiler-macro function-arglist (function)
- (sb-int:deprecation-warning 'function-arglist 'function-lambda-list)
- `(function-lambda-list ,function))
-
(defun function-lambda-list (function)
"Describe the lambda list for the extended function designator FUNCTION.
Works for special-operators, macros, simple functions, interpreted functions,
@@ -378,12 +378,10 @@
(deftest function-type.2
(values (type-equal (function-type 'sun) (function-type #'sun))
- ;; Does not currently work due to Bug #384892. (1.0.31.26)
- #+nil
(type-equal (function-type #'sun)
'(function (fixnum fixnum &key (:k1 (member nil t)))
(values (member t) &optional))))
- t #+nil t)
+ t t)
;; Local functions
@@ -516,7 +514,7 @@
'(function ((member nil t)
fixnum fixnum
&key (:k1 (member nil t)))
- *)))
+ (values (member nil t) &optional))))
t t)
;; Misc
@@ -70,6 +70,24 @@ implementation-defined and so need documentation.
@c * Other symbols and integers have implementation-defined meaning.
@c (19.2.2.4.6)
+@subsection Home Directory Specifiers
+
+SBCL accepts the keyword @code{:home} and a list of the form
+@code{(:home "username")} as a directory component immediately
+following @code{:absolute}.
+
+@code{:home} is represented in namestrings by @code{~/} and
+@code{(:home "username"} by @code{~username/} at the start of the
+namestring. Tilde-characters elsewhere in namestrings represent
+themselves.
+
+Home directory specifiers are resolved to home directory of the
+current or specified user by @code{native-namestring}, which is used
+by the implementation to translate pathnames before passing them on to
+operating system specific routines.
+
+Using @code{(:home "user")} form on Windows signals an error.
+
@subsection The SYS Logical Pathname Host
@cindex Logical pathnames
View
@@ -121,7 +121,11 @@ Options:
Default prefix is: /usr/local
- --dynamic-space-size=<size> Specify default dynamic-space size.
+ --dynamic-space-size=<size> Default dynamic-space size for target.
+
+ This specifies the default dynamic-space size for the SBCL
+ being built. If you need to control the dynamic-space size
+ of the host SBCL, use the --xc-host option.
If not provided, the default is platform-specific. <size> is
taken to be megabytes unless explicitly suffixed with Gb in
@@ -219,6 +219,7 @@ of SBCL which maintained the CMU-CL-style split into two packages.)"
"ALLOCATE-CODE-OBJECT" "ALLOCATE-FRAME"
"ALLOCATE-DYNAMIC-CODE-OBJECT" "ALLOCATE-FULL-CALL-FRAME"
"ALWAYS-TRANSLATABLE"
+ "ANCESTOR-FRAME-REF" "ANCESTOR-FRAME-SET"
"ANY" "ARG-COUNT-ERROR" "ASSEMBLE-FILE"
"ATTRIBUTES" "ATTRIBUTES-INTERSECTION" "ATTRIBUTES-UNION"
"ATTRIBUTES=" "BIND"
@@ -231,7 +232,7 @@ of SBCL which maintained the CMU-CL-style split into two packages.)"
"CHECK-SYMBOL"
;; FIXME: 32/64-bit issues
"CHECK-UNSIGNED-BYTE-32" "CHECK-UNSIGNED-BYTE-64"
- "CLOSURE-INIT" "CLOSURE-REF"
+ "CLOSURE-INIT" "CLOSURE-REF" "CLOSURE-INIT-FROM-FP"
"CODE-CONSTANT-REF" "CODE-CONSTANT-SET"
"*CODE-COVERAGE-INFO*"
"COMPARE-AND-SWAP-SLOT"
@@ -669,6 +670,7 @@ like *STACK-TOP-HINT* and unsupported stuff like *TRACED-FUN-LIST*."
"IMPLICIT-GENERIC-FUNCTION-NAME"
"IMPLICIT-GENERIC-FUNCTION-WARNING"
"INVALID-FASL"
+ "DEPRECATION-CONDITION"
"NAME-CONFLICT" "NAME-CONFLICT-FUNCTION"
"NAME-CONFLICT-DATUM" "NAME-CONFLICT-SYMBOLS"
@@ -960,6 +962,14 @@ possibly temporariliy, because it might be used internally."
"*N-BYTES-FREED-OR-PURIFIED*"
+ ;; Deprecating stuff
+ "DEFINE-DEPRECATED-FUNCTION"
+ "EARLY-DEPRECATION-WARNING"
+ "LATE-DEPRECATION-WARNING"
+ "FINAL-DEPRECATION-WARNING"
+ "DEPRECATION-WARNING"
+ "DEPRECATION-ERROR"
+
;; miscellaneous non-standard but handy user-level functions..
"ASSQ" "DELQ" "MEMQ" "POSQ" "NEQ"
"ADJUST-LIST"
@@ -976,7 +986,6 @@ possibly temporariliy, because it might be used internally."
"PSXHASH"
"%BREAK"
"NTH-BUT-WITH-SANE-ARG-ORDER"
- "DEPRECATION-WARNING"
"BIT-VECTOR-="
"READ-EVALUATED-FORM"
"MAKE-UNPRINTABLE-OBJECT"
@@ -1341,6 +1350,7 @@ is a good idea, but see SB-SYS re. blurring of boundaries."
"%WITH-ARRAY-DATA"
"%WITH-ARRAY-DATA/FP"
"%WITH-ARRAY-DATA-MACRO"
+ "*APPROXIMATE-NUMERIC-UNIONS*"
"*CURRENT-LEVEL-IN-PRINT*"
"*EMPTY-TYPE*"
"*EVAL-CALLS*"
@@ -2348,6 +2358,7 @@ no guarantees of interface stability."
"NANOSLEEP"
"UID-USERNAME"
"UID-HOMEDIR"
+ "USER-HOMEDIR"
"WITH-RESTARTED-SYSCALL"
"SB-MKSTEMP"
"UNIX-OFFSET"
View
@@ -81,8 +81,7 @@
;; become COMPILE instead of EVAL, which seems nicer to me.
(eval `(function ,object)))
((instance-lambda)
- (deprecation-warning 'instance-lambda 'lambda)
- (eval `(function ,object)))
+ (deprecation-error "0.9.3.32" 'instance-lambda 'lambda))
(t
(error 'simple-type-error
:datum object
Oops, something went wrong.

0 comments on commit 5e1e0b4

Please sign in to comment.