cmucl-cvs
Threads by month
- ----- 2025 -----
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- 1 participants
- 3233 discussions

[cmucl-cvs] [git] CMU Common Lisp branch master updated. snapshot-2013-03-a-4-g50b1339
by Raymond Toy 23 Mar '13
by Raymond Toy 23 Mar '13
23 Mar '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMU Common Lisp".
The branch, master has been updated
via 50b13399f16ca49f7b54a0b5bc427ad0a67b9579 (commit)
from a1c04fe77fbea96b5c038547f64a6fff0089ed77 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 50b13399f16ca49f7b54a0b5bc427ad0a67b9579
Author: Raymond Toy <toy.raymond(a)gmail.com>
Date: Sat Mar 23 10:38:29 2013 -0700
Update from logs.
diff --git a/src/general-info/release-20e.txt b/src/general-info/release-20e.txt
index 231c85d..5ec6b03 100644
--- a/src/general-info/release-20e.txt
+++ b/src/general-info/release-20e.txt
@@ -53,6 +53,8 @@ New in this release:
supported length can be handled. (See ticket #66 and #68.)
* A serious error in FILE-POSITION on streams using an encoding
other than latin1 has been fixed. See ticket #74.
+ * Fix startup crashes on some Debian Linux versions. This was
+ caused by the release string not having a patch version.
* Trac Tickets:
* Ticket #52 reopened.
@@ -67,6 +69,7 @@ New in this release:
* Ticket #73 fixed.
* Ticket #74 fixed.
* Ticket #76 fixed.
+ * Ticket #79 fixed.
* Other changes:
* -8 option for build-all.sh is deprecated since we don't
-----------------------------------------------------------------------
Summary of changes:
src/general-info/release-20e.txt | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
hooks/post-receive
--
CMU Common Lisp
1
0

[cmucl-cvs] [git] CMU Common Lisp branch master updated. snapshot-2013-03-a-3-ga1c04fe
by Raymond Toy 23 Mar '13
by Raymond Toy 23 Mar '13
23 Mar '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMU Common Lisp".
The branch, master has been updated
via a1c04fe77fbea96b5c038547f64a6fff0089ed77 (commit)
from f51ee9dc1f66b02f7a9a0826b70550f3bc9fb222 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit a1c04fe77fbea96b5c038547f64a6fff0089ed77
Author: Raymond Toy <toy.raymond(a)gmail.com>
Date: Sat Mar 23 10:27:43 2013 -0700
Fix ticket:79
* Initialize in-length to in-buffer-length, not 0.
* Added a few more debugging prints.
diff --git a/src/code/fd-stream.lisp b/src/code/fd-stream.lisp
index 7fcd0bc..80e2941 100644
--- a/src/code/fd-stream.lisp
+++ b/src/code/fd-stream.lisp
@@ -260,7 +260,7 @@
;; in-buffer-length, but could be less if we reached the
;; end-of-file.
#+unicode
- (in-length 0 :type index)
+ (in-length in-buffer-length :type index)
;;
;; Indicates how to handle errors when converting octets to
;; characters. If NIL, then the external format should handle it
@@ -1697,6 +1697,8 @@
(posn errno)
(unix:unix-lseek (fd-stream-fd stream) 0 unix:l_incr)
(declare (type (or (integer 0) null) posn))
+ #+nil
+ (format t "lseek returns ~D ~D~%" posn errno)
(cond (posn
;; Adjust for buffered output:
;; If there is any output buffered, the *real* file position
@@ -1716,6 +1718,8 @@
(decf posn (- (fd-stream-ibuf-tail stream)
(fd-stream-ibuf-head stream)))
+ #+nil
+ (format t "Updated posn = ~D~%" posn)
#+unicode
(when (fd-stream-string-buffer stream)
;; The string buffer contains Lisp characters,
@@ -1742,6 +1746,7 @@
(progn
(format t "new posn = ~D~%" posn)
(format t "in-buffer-length = ~D~%" in-buffer-length)
+ (format t "in-length = ~D~%" (fd-stream-in-length stream))
(format t "fd-stream-in-index = ~D~%" (fd-stream-in-index stream))))))
(when (fd-stream-in-buffer stream)
;; When we have an in-buffer (whether we have a
-----------------------------------------------------------------------
Summary of changes:
src/code/fd-stream.lisp | 7 ++++++-
1 files changed, 6 insertions(+), 1 deletions(-)
hooks/post-receive
--
CMU Common Lisp
1
0

[cmucl-cvs] [git] CMU Common Lisp branch master updated. snapshot-2013-03-a-2-gf51ee9d
by Raymond Toy 23 Mar '13
by Raymond Toy 23 Mar '13
23 Mar '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMU Common Lisp".
The branch, master has been updated
via f51ee9dc1f66b02f7a9a0826b70550f3bc9fb222 (commit)
from 1e8b06be53f874e64d4f687247188349388fb1b4 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit f51ee9dc1f66b02f7a9a0826b70550f3bc9fb222
Author: Raymond Toy <toy.raymond(a)gmail.com>
Date: Fri Mar 22 20:10:16 2013 -0700
Try to be careful about extracting the linux version from the (uname)
release. Some Debian versions have a release name like "3.7-trunk",
which is missing the patch version.
diff --git a/src/lisp/Linux-os.c b/src/lisp/Linux-os.c
index 296ff2a..cbd25fd 100644
--- a/src/lisp/Linux-os.c
+++ b/src/lisp/Linux-os.c
@@ -76,12 +76,26 @@ check_personality(struct utsname *name, char *const *argv, char *const *envp)
#if defined(__i386) || defined(__x86_64)
int major_version, minor_version, patch_version;
char *p;
+
p = name->release;
major_version = atoi(p);
- p = strchr(p,'.')+1;
- minor_version = atoi(p);
- p = strchr(p,'.')+1;
- patch_version = atoi(p);
+
+ /*
+ * Try to extract the minor and patch version, but if we can't
+ * just set it to zero. In particular, some Debian systems have a
+ * release like "3.7-trunk-686-pae" which is missing the patch
+ * version.
+ */
+
+ p = strchr(p,'.');
+ if (p) {
+ minor_version = atoi(p + 1);
+ p = strchr(p + 1,'.');
+ patch_version = p ? atoi(p + 1) : 0;
+ } else {
+ minor_version = 0;
+ patch_version = 0;
+ }
if ((major_version == 2
/* Some old kernels will apparently lose unsupported personality flags
-----------------------------------------------------------------------
Summary of changes:
src/lisp/Linux-os.c | 22 ++++++++++++++++++----
1 files changed, 18 insertions(+), 4 deletions(-)
hooks/post-receive
--
CMU Common Lisp
1
0

[cmucl-cvs] [git] CMU Common Lisp branch master updated. snapshot-2013-03-a-1-g1e8b06b
by Raymond Toy 10 Mar '13
by Raymond Toy 10 Mar '13
10 Mar '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMU Common Lisp".
The branch, master has been updated
via 1e8b06be53f874e64d4f687247188349388fb1b4 (commit)
from 90b155a2a8cbf269e022f191f9b8566da8ace0da (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 1e8b06be53f874e64d4f687247188349388fb1b4
Author: Raymond Toy <toy.raymond(a)gmail.com>
Date: Sat Mar 9 21:24:25 2013 -0800
Support ppc.
diff --git a/bin/build-all.sh b/bin/build-all.sh
index 7cf7c88..d5823af 100755
--- a/bin/build-all.sh
+++ b/bin/build-all.sh
@@ -60,8 +60,11 @@ done
# If -b not given, try to derive one instead of just using "build".
if [ -z "$BASE" ]; then
case `uname -s` in
- Darwin) # We only support darwin-x86 now. No ppc available anymore.
- BASE=darwin ;;
+ Darwin)
+ case `uname -p` in
+ powerpc) BASE=ppc ;;
+ i386) BASE=darwin ;;
+ esac ;;
SunOS)
case `uname -m` in
sun4u) BASE=sparc ;;
@@ -118,6 +121,8 @@ buildsun4 ()
case `uname -m` in
i386*|x86*|i86pc) buildx86 ;;
- sun*) buildsun4 ;;
+ sun*|"Power Mac*")
+ # buildsun4 works for sparc and ppc.
+ buildsun4 ;;
*) echo "Unsupported architecture: `uname -m`" ;;
esac
-----------------------------------------------------------------------
Summary of changes:
bin/build-all.sh | 11 ++++++++---
1 files changed, 8 insertions(+), 3 deletions(-)
hooks/post-receive
--
CMU Common Lisp
1
0

[cmucl-cvs] [git] CMU Common Lisp annotated tag snapshot-2013-03-a created. snapshot-2013-03-a
by Raymond Toy 08 Mar '13
by Raymond Toy 08 Mar '13
08 Mar '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMU Common Lisp".
The annotated tag, snapshot-2013-03-a has been created
at 415e27b9c0f1c1cf45733384ffc1c3926cfcff36 (tag)
tagging 90b155a2a8cbf269e022f191f9b8566da8ace0da (commit)
replaces snapshot-2013-03
tagged by Raymond Toy
on Thu Mar 7 21:09:51 2013 -0800
- Log -----------------------------------------------------------------
Snapshot 2013-03-a fixing a serious issue in REPLACE, caused by
a bug in DO-UNARY-BYTE-BASH.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (Darwin)
iEYEABECAAYFAlE5csAACgkQJ5IjUmgZO7KCjACdE7QJR5iHCwutBlhj8Wyk4xjN
qaoAoNK0u7HfwhovgKWDpIk8xmp7sqq5
=UvC0
-----END PGP SIGNATURE-----
Raymond Toy (12):
Update to Unicode 6.2.
Oops. Remove debugging echo.
Note ticket #74 fixed, and move a Change item to a Bugfix item.
Update to ASDF 2.32.
Update from logs.
Fix PARSE-WORD-BREAK-LINE to handle codepoints outside the BMP. The
Implement Rule WB13c for regional indicators.
Fix ticket:76
Update.
Merge branch 'master' into rtoy-unicode-6.2
Reindent STRING-NEXT-WORD-BREAK neatly.
Update.
-----------------------------------------------------------------------
hooks/post-receive
--
CMU Common Lisp
1
0

[cmucl-cvs] [git] CMU Common Lisp branch rtoy-unicode-6.2 created. snapshot-2013-03-12-g90b155a
by Raymond Toy 07 Mar '13
by Raymond Toy 07 Mar '13
07 Mar '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMU Common Lisp".
The branch, rtoy-unicode-6.2 has been created
at 90b155a2a8cbf269e022f191f9b8566da8ace0da (commit)
- Log -----------------------------------------------------------------
-----------------------------------------------------------------------
hooks/post-receive
--
CMU Common Lisp
1
0

[cmucl-cvs] [git] CMU Common Lisp branch master updated. snapshot-2013-03-12-g90b155a
by Raymond Toy 07 Mar '13
by Raymond Toy 07 Mar '13
07 Mar '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMU Common Lisp".
The branch, master has been updated
via 90b155a2a8cbf269e022f191f9b8566da8ace0da (commit)
via e129c45a44b1dc1bd8806f19caf5782ca5f60f78 (commit)
via 58b88ebd2133e51ad084ae6835dc65137138cfb3 (commit)
via cae10dd1d8688fdbcd1e4c3a16d0130b8e8cdb41 (commit)
via b735224c492e7ff7a2dcd4fe1804a950401e8a65 (commit)
via 424edfe8570cd4eb38086d6bdbaa8cd7b0030772 (commit)
from 10ebd126e43b344377d384c55c1c611a82e9f4ae (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 90b155a2a8cbf269e022f191f9b8566da8ace0da
Author: Raymond Toy <toy.raymond(a)gmail.com>
Date: Wed Mar 6 19:18:04 2013 -0800
Update.
diff --git a/src/general-info/release-20e.txt b/src/general-info/release-20e.txt
index a438863..231c85d 100644
--- a/src/general-info/release-20e.txt
+++ b/src/general-info/release-20e.txt
@@ -41,6 +41,8 @@ New in this release:
derivation.)
* :I486 and :PENTIUM (Always assume we're running on at least a
Pentium.)
+ * Update unicode to support Unicode 6.2.
+
* ANSI compliance fixes:
* Attempts to modify the standard readtable or the standard pprint
dispatch table will now signal a continuable error.
commit e129c45a44b1dc1bd8806f19caf5782ca5f60f78
Author: Raymond Toy <toy.raymond(a)gmail.com>
Date: Wed Mar 6 00:37:50 2013 -0800
Reindent STRING-NEXT-WORD-BREAK neatly.
diff --git a/src/code/string.lisp b/src/code/string.lisp
index 7c6e3c1..4b90930 100644
--- a/src/code/string.lisp
+++ b/src/code/string.lisp
@@ -1586,80 +1586,80 @@
2
1))
(cat (char-word-break-category c)))
- (case cat
- ((:extend-or-format)
- (case context
- ((:cr :sep) j)
- (otherwise (lookup (+ j next-j) context))))
- (otherwise
- (case context
- ((:cr)
- (if (= c (char-code #\linefeed))
- ;; Rule WB3: Don't break CRLF, continue looking
- (lookup (+ j next-j) cat)
- j))
- ((:aletter)
- (case cat
- ((:aletter :numeric :extendnumlet)
- ;; Rules WB5, WB9, ?
- (lookup (+ j next-j) cat))
- ((:midletter :midnumlet)
- ;; Rule WB6, need to keep looking
- (lookup (+ j next-j) :aletter-midletter))
- (otherwise j)))
- ((:aletter-midletter)
- (case cat
- ((:aletter)
- ;; Rule WB7
- (lookup (+ j next-j) cat))
- (otherwise
- ;; Rule WB6 and WB7 were extended, but the
- ;; region didn't end with :aletter. So
- ;; backup and break at that point.
- (let ((j2 (index-of-previous-non-ignored j)))
- (if (< i j2) j2 j)))))
- ((:numeric)
- (case cat
- ((:numeric :aletter :extendnumlet)
- ;; Rules WB8, WB10, ?
- (lookup (+ j next-j) cat))
- ((:midnum :midnumlet)
- ;; Rules WB11, need to keep looking
- (lookup (+ j next-j) :numeric-midnum))
- (otherwise j)))
- ((:numeric-midnum)
- (case cat
- ((:numeric)
- ;; Rule WB11, keep looking
- (lookup (+ j next-j) cat))
- (otherwise
- ;; Rule WB11, WB12 were extended, but the
- ;; region didn't end with :numeric, so
- ;; backup and break at that point.
- (let ((j2 (index-of-previous-non-ignored j)))
- (if (< i j2) j2 j)))))
- ((:midletter :midnum :midnumlet)
- ;; Rule WB14
- j)
- ((:katakana)
- (case cat
- ((:katakana :extendnumlet)
- ;; Rule WB13, WB13a
- (lookup (+ j next-j) cat))
- (otherwise j)))
- ((:extendnumlet)
- (case cat
- ((:extendnumlet :aletter :numeric :katakana)
- ;; Rule WB13a, WB13b
- (lookup (+ j next-j) cat))
- (otherwise j)))
- ((:regional_indicator)
- (case cat
- ((:regional_indicator)
- ;; Rule WB13c
- (lookup (+ j next-j) cat))
- (otherwise j)))
- (otherwise j)))))))))
+ (case cat
+ ((:extend-or-format)
+ (case context
+ ((:cr :sep) j)
+ (otherwise (lookup (+ j next-j) context))))
+ (otherwise
+ (case context
+ ((:cr)
+ (if (= c (char-code #\linefeed))
+ ;; Rule WB3: Don't break CRLF, continue looking
+ (lookup (+ j next-j) cat)
+ j))
+ ((:aletter)
+ (case cat
+ ((:aletter :numeric :extendnumlet)
+ ;; Rules WB5, WB9, ?
+ (lookup (+ j next-j) cat))
+ ((:midletter :midnumlet)
+ ;; Rule WB6, need to keep looking
+ (lookup (+ j next-j) :aletter-midletter))
+ (otherwise j)))
+ ((:aletter-midletter)
+ (case cat
+ ((:aletter)
+ ;; Rule WB7
+ (lookup (+ j next-j) cat))
+ (otherwise
+ ;; Rule WB6 and WB7 were extended, but the
+ ;; region didn't end with :aletter. So
+ ;; backup and break at that point.
+ (let ((j2 (index-of-previous-non-ignored j)))
+ (if (< i j2) j2 j)))))
+ ((:numeric)
+ (case cat
+ ((:numeric :aletter :extendnumlet)
+ ;; Rules WB8, WB10, ?
+ (lookup (+ j next-j) cat))
+ ((:midnum :midnumlet)
+ ;; Rules WB11, need to keep looking
+ (lookup (+ j next-j) :numeric-midnum))
+ (otherwise j)))
+ ((:numeric-midnum)
+ (case cat
+ ((:numeric)
+ ;; Rule WB11, keep looking
+ (lookup (+ j next-j) cat))
+ (otherwise
+ ;; Rule WB11, WB12 were extended, but the
+ ;; region didn't end with :numeric, so
+ ;; backup and break at that point.
+ (let ((j2 (index-of-previous-non-ignored j)))
+ (if (< i j2) j2 j)))))
+ ((:midletter :midnum :midnumlet)
+ ;; Rule WB14
+ j)
+ ((:katakana)
+ (case cat
+ ((:katakana :extendnumlet)
+ ;; Rule WB13, WB13a
+ (lookup (+ j next-j) cat))
+ (otherwise j)))
+ ((:extendnumlet)
+ (case cat
+ ((:extendnumlet :aletter :numeric :katakana)
+ ;; Rule WB13a, WB13b
+ (lookup (+ j next-j) cat))
+ (otherwise j)))
+ ((:regional_indicator)
+ (case cat
+ ((:regional_indicator)
+ ;; Rule WB13c
+ (lookup (+ j next-j) cat))
+ (otherwise j)))
+ (otherwise j)))))))))
(declare (notinline lookup left-context))
(cond ((< i 0)
;; Rule WB1
commit 58b88ebd2133e51ad084ae6835dc65137138cfb3
Merge: cae10dd 10ebd12
Author: Raymond Toy <toy.raymond(a)gmail.com>
Date: Wed Mar 6 00:30:11 2013 -0800
Merge branch 'master' into rtoy-unicode-6.2
commit cae10dd1d8688fdbcd1e4c3a16d0130b8e8cdb41
Author: Raymond Toy <toy.raymond(a)gmail.com>
Date: Wed Mar 6 00:13:22 2013 -0800
Implement Rule WB13c for regional indicators.
diff --git a/src/code/string.lisp b/src/code/string.lisp
index 5a1a814..7c6e3c1 100644
--- a/src/code/string.lisp
+++ b/src/code/string.lisp
@@ -1653,6 +1653,12 @@
;; Rule WB13a, WB13b
(lookup (+ j next-j) cat))
(otherwise j)))
+ ((:regional_indicator)
+ (case cat
+ ((:regional_indicator)
+ ;; Rule WB13c
+ (lookup (+ j next-j) cat))
+ (otherwise j)))
(otherwise j)))))))))
(declare (notinline lookup left-context))
(cond ((< i 0)
commit b735224c492e7ff7a2dcd4fe1804a950401e8a65
Author: Raymond Toy <toy.raymond(a)gmail.com>
Date: Tue Mar 5 22:15:43 2013 -0800
Fix PARSE-WORD-BREAK-LINE to handle codepoints outside the BMP. The
count needs to be incremented one to adjust for the UTF-16 encoding of
strings that we use.
diff --git a/src/i18n/tests/word-break-test.lisp b/src/i18n/tests/word-break-test.lisp
index 2fefec7..899b5a2 100644
--- a/src/i18n/tests/word-break-test.lisp
+++ b/src/i18n/tests/word-break-test.lisp
@@ -33,8 +33,12 @@
(let ((c (read s nil nil)))
(unless c
(return))
+ ;; Handle codepoints outside the BMP carefully.
(if (> c #xffff)
(let ((s (lisp::codepoints-string (list c))))
+ ;; Need to increment the count because of our
+ ;; UTF-16 encoding of strings.
+ (incf count)
(vector-push-extend (aref s 0) string)
(vector-push-extend (aref s 1) string))
(vector-push-extend (code-char c) string))
commit 424edfe8570cd4eb38086d6bdbaa8cd7b0030772
Author: Raymond Toy <toy.raymond(a)gmail.com>
Date: Mon Mar 4 21:54:28 2013 -0800
Update to Unicode 6.2.
Still needs work because the word-break tests fail.
diff --git a/src/code/unidata.lisp b/src/code/unidata.lisp
index 37134cc..55e3a28 100644
--- a/src/code/unidata.lisp
+++ b/src/code/unidata.lisp
@@ -22,7 +22,7 @@
(defvar *unidata-path* #p"ext-formats:unidata.bin")
-(defvar *unidata-version* "$Revision: 1.28 $")
+(defvar *unidata-version* "$Revision: 1.29 $")
(defstruct unidata
range
@@ -61,7 +61,7 @@
;; The expected Unicode version. This needs to be synced with
;; build-unidata.lisp.
(defconstant +unicode-major-version+ 6)
-(defconstant +unicode-minor-version+ 1)
+(defconstant +unicode-minor-version+ 2)
(defconstant +unicode-update-version+ 0)
;;; These need to be synched with tools/build-unidata.lisp
@@ -1163,7 +1163,7 @@
;; pack-word-break in tools/build-unidata.lisp!
(aref #(:other :cr :lf :newline :extend :format
:katakana :aletter :midnumlet :midletter :midnum
- :numeric :extendnumlet)
+ :numeric :extendnumlet :regional_indicator)
(unicode-word-break-code code)))
;; Support for character name completion for slime.
diff --git a/src/i18n/BidiMirroring.txt b/src/i18n/BidiMirroring.txt
index 2e719bc..ec41b76 100644
--- a/src/i18n/BidiMirroring.txt
+++ b/src/i18n/BidiMirroring.txt
@@ -1,19 +1,19 @@
-# BidiMirroring-6.1.0.txt
-# Date: 2011-12-20, 19:31:00 GMT [KW, LI]
+# BidiMirroring-6.2.0.txt
+# Date: 2012-05-15, 24:19:00 GMT [KW, LI]
#
# Bidi_Mirroring_Glyph Property
#
# This file is an informative contributory data file in the
# Unicode Character Database.
#
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# This data file lists characters that have the Bidi_Mirrored=Yes property
# value, for which there is another Unicode character that typically has a glyph
# that is the mirror image of the original character's glyph.
#
-# The repertoire covered by the file is Unicode 6.1.0.
+# The repertoire covered by the file is Unicode 6.2.0.
#
# The file contains a list of lines with mappings from one code point
# to another one for character-based mirroring.
@@ -30,16 +30,8 @@
# characters exist with mirrored glyphs, are
# listed as comments at the end of the file.
#
-# Note: (2011-12-19) There is an inconsistency between the
-# following statement about the default value
-# of the Bidi_Mirroring_Glyph property and the
-# value of the @missing line for Bidi_Mirroring_Glyph in
-# PropertyValueAliases.txt. This inconsistency was discovered too
-# late in the release process to be resolved by
-# the UTC. The inconsistency will be resolved in a future revision.
-#
# Formally, the default value of the Bidi_Mirroring_Glyph property
-# for each code point is the code point itself, unless a mapping to
+# for each code point is <none>, unless a mapping to
# some other character is specified in this data file. When a code
# point has the default value for the Bidi_Mirroring_Glyph property,
# that means that no other character exists whose glyph is suitable
@@ -50,12 +42,13 @@
#
# This file was originally created by Markus Scherer.
# Extended for Unicode 3.2, 4.0, 4.1, 5.0, 5.1, 5.2, and 6.0 by Ken Whistler,
-# and for Unicode 6.1 by Ken Whistler and Laurentiu Iancu.
+# and for Unicode 6.1 and 6.2 by Ken Whistler and Laurentiu Iancu.
#
# ############################################################
#
# Property: Bidi_Mirroring_Glyph
#
+# @missing: 0000..10FFFF; <none>
0028; 0029 # LEFT PARENTHESIS
0029; 0028 # RIGHT PARENTHESIS
diff --git a/src/i18n/CaseFolding.txt b/src/i18n/CaseFolding.txt
index 0d9a409..df1813d 100644
--- a/src/i18n/CaseFolding.txt
+++ b/src/i18n/CaseFolding.txt
@@ -1,8 +1,8 @@
-# CaseFolding-6.1.0.txt
-# Date: 2011-07-25, 21:21:56 GMT [MD]
+# CaseFolding-6.2.0.txt
+# Date: 2012-08-14, 17:54:49 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
#
@@ -1222,3 +1222,5 @@ FF3A; C; FF5A; # FULLWIDTH LATIN CAPITAL LETTER Z
10425; C; 1044D; # DESERET CAPITAL LETTER ENG
10426; C; 1044E; # DESERET CAPITAL LETTER OI
10427; C; 1044F; # DESERET CAPITAL LETTER EW
+#
+# EOF
diff --git a/src/i18n/CompositionExclusions.txt b/src/i18n/CompositionExclusions.txt
index f12f7d6..cd19f42 100644
--- a/src/i18n/CompositionExclusions.txt
+++ b/src/i18n/CompositionExclusions.txt
@@ -1,5 +1,5 @@
-# CompositionExclusions-6.1.0.txt
-# Date: 2011-07-12, 00:13:00 GMT [KW, LI]
+# CompositionExclusions-6.2.0.txt
+# Date: 2012-05-15, 22:21:00 GMT [KW, LI]
#
# This file lists the characters for the Composition Exclusion Table
# defined in UAX #15, Unicode Normalization Forms.
@@ -7,7 +7,7 @@
# This file is a normative contributory data file in the
# Unicode Character Database.
#
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# For more information, see
@@ -203,3 +203,4 @@ FB4E # HEBREW LETTER PE WITH RAFE
# Total code points: 4
+# EOF
diff --git a/src/i18n/DerivedNormalizationProps.txt b/src/i18n/DerivedNormalizationProps.txt
index 2d71747..2ecd8e2 100644
--- a/src/i18n/DerivedNormalizationProps.txt
+++ b/src/i18n/DerivedNormalizationProps.txt
@@ -1,8 +1,8 @@
-# DerivedNormalizationProps-6.1.0.txt
-# Date: 2011-07-26, 04:18:07 GMT [MD]
+# DerivedNormalizationProps-6.2.0.txt
+# Date: 2012-05-23, 20:34:48 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
diff --git a/src/i18n/NameAliases.txt b/src/i18n/NameAliases.txt
index 3992620..482fb92 100644
--- a/src/i18n/NameAliases.txt
+++ b/src/i18n/NameAliases.txt
@@ -1,5 +1,5 @@
-# NameAliases-6.1.0.txt
-# Date: 2012-01-03, 21:52:00 GMT [KW]
+# NameAliases-6.2.0.txt
+# Date: 2012-05-15, 18:44:00 GMT [KW]
#
# This file is a normative contributory data file in the
# Unicode Character Database.
@@ -216,6 +216,7 @@
01A2;LATIN CAPITAL LETTER GHA;correction
01A3;LATIN SMALL LETTER GHA;correction
034F;CGJ;abbreviation
+0709;SYRIAC SUBLINEAR COLON SKEWED LEFT;correction
0CDE;KANNADA LETTER LLLA;correction
0E9D;LAO LETTER FO FON;correction
0E9F;LAO LETTER FO FAY;correction
diff --git a/src/i18n/NormalizationCorrections.txt b/src/i18n/NormalizationCorrections.txt
index 61800b8..b53bb40 100644
--- a/src/i18n/NormalizationCorrections.txt
+++ b/src/i18n/NormalizationCorrections.txt
@@ -1,10 +1,10 @@
-# NormalizationCorrections-6.1.0.txt
-# Date: 2011-06-23, 00:46:00 GMT [KW, LI]
+# NormalizationCorrections-6.2.0.txt
+# Date: 2012-05-15, 22:25:00 GMT [KW, LI]
#
# This file is a normative contributory data file in the
# Unicode Character Database.
#
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
#
# The normalization stability policy of the Unicode Consortium
@@ -46,3 +46,5 @@ F951;96FB;964B;3.2.0 # Corrigendum 3
2F91F;43AB;243AB;4.0.0 # Corrigendum 4
2F95F;7AAE;7AEE;4.0.0 # Corrigendum 4
2F9BF;4D57;45D7;4.0.0 # Corrigendum 4
+
+# EOF
diff --git a/src/i18n/SpecialCasing.txt b/src/i18n/SpecialCasing.txt
index d650b6d..994043f 100644
--- a/src/i18n/SpecialCasing.txt
+++ b/src/i18n/SpecialCasing.txt
@@ -1,8 +1,8 @@
-# SpecialCasing-6.1.0.txt
-# Date: 2011-11-27, 05:10:51 GMT [MD]
+# SpecialCasing-6.2.0.txt
+# Date: 2012-05-23, 20:35:15 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
#
diff --git a/src/i18n/UnicodeData.txt b/src/i18n/UnicodeData.txt
index 9f20405..086379e 100644
--- a/src/i18n/UnicodeData.txt
+++ b/src/i18n/UnicodeData.txt
@@ -7190,6 +7190,7 @@
20B7;SPESMILO SIGN;Sc;0;ET;;;;;N;;;;;
20B8;TENGE SIGN;Sc;0;ET;;;;;N;;;;;
20B9;INDIAN RUPEE SIGN;Sc;0;ET;;;;;N;;;;;
+20BA;TURKISH LIRA SIGN;Sc;0;ET;;;;;N;;;;;
20D0;COMBINING LEFT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING LEFT HARPOON ABOVE;;;;
20D1;COMBINING RIGHT HARPOON ABOVE;Mn;230;NSM;;;;;N;NON-SPACING RIGHT HARPOON ABOVE;;;;
20D2;COMBINING LONG VERTICAL LINE OVERLAY;Mn;1;NSM;;;;;N;NON-SPACING LONG VERTICAL BAR OVERLAY;;;;
@@ -18703,8 +18704,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
1242F;CUNEIFORM NUMERIC SIGN THREE SHARU VARIANT FORM;Nl;0;L;;;;3;N;;;;;
12430;CUNEIFORM NUMERIC SIGN FOUR SHARU;Nl;0;L;;;;4;N;;;;;
12431;CUNEIFORM NUMERIC SIGN FIVE SHARU;Nl;0;L;;;;5;N;;;;;
-12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;;N;;;;;
-12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;;N;;;;;
+12432;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS DISH;Nl;0;L;;;;216000;N;;;;;
+12433;CUNEIFORM NUMERIC SIGN SHAR2 TIMES GAL PLUS MIN;Nl;0;L;;;;432000;N;;;;;
12434;CUNEIFORM NUMERIC SIGN ONE BURU;Nl;0;L;;;;1;N;;;;;
12435;CUNEIFORM NUMERIC SIGN TWO BURU;Nl;0;L;;;;2;N;;;;;
12436;CUNEIFORM NUMERIC SIGN THREE BURU;Nl;0;L;;;;3;N;;;;;
@@ -18739,8 +18740,8 @@ FFFD;REPLACEMENT CHARACTER;So;0;ON;;;;;N;;;;;
12453;CUNEIFORM NUMERIC SIGN FOUR BAN2 VARIANT FORM;Nl;0;L;;;;4;N;;;;;
12454;CUNEIFORM NUMERIC SIGN FIVE BAN2;Nl;0;L;;;;5;N;;;;;
12455;CUNEIFORM NUMERIC SIGN FIVE BAN2 VARIANT FORM;Nl;0;L;;;;5;N;;;;;
-12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;;N;;;;;
-12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;;N;;;;;
+12456;CUNEIFORM NUMERIC SIGN NIGIDAMIN;Nl;0;L;;;;-1;N;;;;;
+12457;CUNEIFORM NUMERIC SIGN NIGIDAESH;Nl;0;L;;;;-1;N;;;;;
12458;CUNEIFORM NUMERIC SIGN ONE ESHE3;Nl;0;L;;;;1;N;;;;;
12459;CUNEIFORM NUMERIC SIGN TWO ESHE3;Nl;0;L;;;;2;N;;;;;
1245A;CUNEIFORM NUMERIC SIGN ONE THIRD DISH;Nl;0;L;;;;1/3;N;;;;;
diff --git a/src/i18n/WordBreakProperty.txt b/src/i18n/WordBreakProperty.txt
index 7f3225c..2caa16b 100644
--- a/src/i18n/WordBreakProperty.txt
+++ b/src/i18n/WordBreakProperty.txt
@@ -1,8 +1,8 @@
-# WordBreakProperty-6.1.0.txt
-# Date: 2011-11-27, 05:10:51 GMT [MD]
+# WordBreakProperty-6.2.0.txt
+# Date: 2012-08-13, 19:12:09 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
@@ -395,6 +395,12 @@ E0100..E01EF ; Extend # Mn [240] VARIATION SELECTOR-17..VARIATION SELECTOR-256
# ================================================
+1F1E6..1F1FF ; Regional_Indicator # So [26] REGIONAL INDICATOR SYMBOL LETTER A..REGIONAL INDICATOR SYMBOL LETTER Z
+
+# Total code points: 26
+
+# ================================================
+
00AD ; Format # Cf SOFT HYPHEN
0600..0604 ; Format # Cf [5] ARABIC NUMBER SIGN..ARABIC SIGN SAMVAT
06DD ; Format # Cf ARABIC END OF AYAH
diff --git a/src/i18n/tests/NormalizationTest.txt b/src/i18n/tests/NormalizationTest.txt
index 68e5f07..806021a 100644
--- a/src/i18n/tests/NormalizationTest.txt
+++ b/src/i18n/tests/NormalizationTest.txt
@@ -1,8 +1,8 @@
-# NormalizationTest-6.1.0.txt
-# Date: 2011-11-27, 05:10:33 GMT [MD]
+# NormalizationTest-6.2.0.txt
+# Date: 2012-08-14, 17:54:58 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
#
@@ -18428,4 +18428,4 @@ D750 0334 11B5;D750 0334 11B5;1112 1173 0334 11B5;D750 0334 11B5;1112 1173 0334
11131 0334 11127;11131 0334 11127;11131 0334 11127;11131 0334 11127;11131 0334 11127; # (◌𑄱◌̴◌𑄧; ◌𑄱◌̴◌𑄧; ◌𑄱◌̴◌𑄧; ◌𑄱◌̴◌𑄧; ◌𑄱◌̴◌𑄧; ) CHAKMA O MARK, COMBINING TILDE OVERLAY, CHAKMA VOWEL SIGN A
11132 0334 11127;11132 0334 11127;11132 0334 11127;11132 0334 11127;11132 0334 11127; # (◌𑄲◌̴◌𑄧; ◌𑄲◌̴◌𑄧; ◌𑄲◌̴◌𑄧; ◌𑄲◌̴◌𑄧; ◌𑄲◌̴◌𑄧; ) CHAKMA AU MARK, COMBINING TILDE OVERLAY, CHAKMA VOWEL SIGN A
#
-# END OF FILE
+# EOF
diff --git a/src/i18n/tests/WordBreakTest.txt b/src/i18n/tests/WordBreakTest.txt
index 7957ea3..864dbce 100644
--- a/src/i18n/tests/WordBreakTest.txt
+++ b/src/i18n/tests/WordBreakTest.txt
@@ -1,8 +1,8 @@
-# WordBreakTest-6.1.0.txt
-# Date: 2011-12-07, 23:28:40 GMT [MD]
+# WordBreakTest-6.2.0.txt
+# Date: 2012-08-22, 12:41:18 GMT [MD]
#
# Unicode Character Database
-# Copyright (c) 1991-2011 Unicode, Inc.
+# Copyright (c) 1991-2012 Unicode, Inc.
# For terms of use, see http://www.unicode.org/terms_of_use.html
# For documentation, see http://www.unicode.org/reports/tr44/
#
@@ -15,7 +15,7 @@
# × wherever there is not.
# <comment> the format can change, but currently it shows:
# - the sample character name
-# - (x) the Word_Break property* for the sample character
+# - (x) the Word_Break property value for the sample character
# - [x] the rule that determines whether there is a break or not
#
# These samples may be extended or changed in the future.
@@ -42,6 +42,8 @@
÷ 0001 × 0308 ÷ 0030 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0001 ÷ 005F ÷ # ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 0001 × 0308 ÷ 005F ÷ # ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0001 ÷ 1F1E6 ÷ # ÷ [0.2] <START OF HEADING> (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0001 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0001 × 00AD ÷ # ÷ [0.2] <START OF HEADING> (Other) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0001 × 0308 × 00AD ÷ # ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0001 × 0300 ÷ # ÷ [0.2] <START OF HEADING> (Other) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -86,6 +88,8 @@
÷ 000D ÷ 0308 ÷ 0030 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 000D ÷ 005F ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 000D ÷ 0308 ÷ 005F ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 000D ÷ 1F1E6 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 000D ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 000D ÷ 00AD ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 000D ÷ 0308 × 00AD ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 000D ÷ 0300 ÷ # ÷ [0.2] <CARRIAGE RETURN (CR)> (CR) ÷ [3.1] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -130,6 +134,8 @@
÷ 000A ÷ 0308 ÷ 0030 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 000A ÷ 005F ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 000A ÷ 0308 ÷ 005F ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 000A ÷ 1F1E6 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 000A ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 000A ÷ 00AD ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 000A ÷ 0308 × 00AD ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 000A ÷ 0300 ÷ # ÷ [0.2] <LINE FEED (LF)> (LF) ÷ [3.1] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -174,6 +180,8 @@
÷ 000B ÷ 0308 ÷ 0030 ÷ # ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 000B ÷ 005F ÷ # ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 000B ÷ 0308 ÷ 005F ÷ # ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 000B ÷ 1F1E6 ÷ # ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 000B ÷ 0308 ÷ 1F1E6 ÷ # ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 000B ÷ 00AD ÷ # ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 000B ÷ 0308 × 00AD ÷ # ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 000B ÷ 0300 ÷ # ÷ [0.2] <LINE TABULATION> (Newline) ÷ [3.1] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -218,6 +226,8 @@
÷ 3031 × 0308 ÷ 0030 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 3031 × 005F ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 3031 × 0308 × 005F ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 3031 ÷ 1F1E6 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 3031 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 3031 × 00AD ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 3031 × 0308 × 00AD ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 3031 × 0300 ÷ # ÷ [0.2] VERTICAL KANA REPEAT MARK (Katakana) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -262,6 +272,8 @@
÷ 0041 × 0308 × 0030 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0041 × 005F ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 0041 × 0308 × 005F ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0041 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0041 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0041 × 00AD ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0041 × 0308 × 00AD ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0041 × 0300 ÷ # ÷ [0.2] LATIN CAPITAL LETTER A (ALetter) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -306,6 +318,8 @@
÷ 003A × 0308 ÷ 0030 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 003A ÷ 005F ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 003A × 0308 ÷ 005F ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 003A ÷ 1F1E6 ÷ # ÷ [0.2] COLON (MidLetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 003A × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 003A × 00AD ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 003A × 0308 × 00AD ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 003A × 0300 ÷ # ÷ [0.2] COLON (MidLetter) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -350,6 +364,8 @@
÷ 002C × 0308 ÷ 0030 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 002C ÷ 005F ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 002C × 0308 ÷ 005F ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 002C ÷ 1F1E6 ÷ # ÷ [0.2] COMMA (MidNum) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 002C × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 002C × 00AD ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 002C × 0308 × 00AD ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 002C × 0300 ÷ # ÷ [0.2] COMMA (MidNum) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -394,6 +410,8 @@
÷ 0027 × 0308 ÷ 0030 ÷ # ÷ [0.2] APOSTROPHE (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0027 ÷ 005F ÷ # ÷ [0.2] APOSTROPHE (MidNumLet) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 0027 × 0308 ÷ 005F ÷ # ÷ [0.2] APOSTROPHE (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0027 ÷ 1F1E6 ÷ # ÷ [0.2] APOSTROPHE (MidNumLet) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0027 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] APOSTROPHE (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0027 × 00AD ÷ # ÷ [0.2] APOSTROPHE (MidNumLet) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0027 × 0308 × 00AD ÷ # ÷ [0.2] APOSTROPHE (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0027 × 0300 ÷ # ÷ [0.2] APOSTROPHE (MidNumLet) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -438,6 +456,8 @@
÷ 0030 × 0308 × 0030 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [8.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0030 × 005F ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 0030 × 0308 × 005F ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0030 ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0030 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0030 × 00AD ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0030 × 0308 × 00AD ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0030 × 0300 ÷ # ÷ [0.2] DIGIT ZERO (Numeric) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -482,6 +502,8 @@
÷ 005F × 0308 × 0030 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 005F × 005F ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 005F × 0308 × 005F ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 005F ÷ 1F1E6 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 005F × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 005F × 00AD ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 005F × 0308 × 00AD ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 005F × 0300 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -504,6 +526,52 @@
÷ 005F × 0308 × 0031 ÷ 002C ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
÷ 005F × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 005F × 0308 × 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] LOW LINE (ExtendNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F1E6 ÷ 0001 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0001 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
+÷ 1F1E6 ÷ 000D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 000D ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
+÷ 1F1E6 ÷ 000A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 000A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE FEED (LF)> (LF) ÷ [0.3]
+÷ 1F1E6 ÷ 000B ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 000B ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [3.2] <LINE TABULATION> (Newline) ÷ [0.3]
+÷ 1F1E6 ÷ 3031 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 3031 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] VERTICAL KANA REPEAT MARK (Katakana) ÷ [0.3]
+÷ 1F1E6 ÷ 0041 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0041 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN CAPITAL LETTER A (ALetter) ÷ [0.3]
+÷ 1F1E6 ÷ 003A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 003A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F1E6 ÷ 002C ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 002C ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F1E6 ÷ 0027 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] APOSTROPHE (MidNumLet) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0027 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] APOSTROPHE (MidNumLet) ÷ [0.3]
+÷ 1F1E6 ÷ 0030 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0030 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
+÷ 1F1E6 ÷ 005F ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 005F ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 1F1E6 × 1F1E6 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 1F1E6 × 0308 × 1F1E6 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.3] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 1F1E6 × 00AD ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 1F1E6 × 0308 × 00AD ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
+÷ 1F1E6 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 1F1E6 × 0308 × 0300 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
+÷ 1F1E6 ÷ 0061 × 2060 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0061 × 2060 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F1E6 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0061 ÷ 003A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F1E6 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0061 ÷ 0027 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) ÷ [0.3]
+÷ 1F1E6 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0061 ÷ 0027 × 2060 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F1E6 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0061 ÷ 002C ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F1E6 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0031 ÷ 003A ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [0.3]
+÷ 1F1E6 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidNumLet) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0031 ÷ 0027 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidNumLet) ÷ [0.3]
+÷ 1F1E6 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0031 ÷ 002C ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [0.3]
+÷ 1F1E6 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
+÷ 1F1E6 × 0308 ÷ 0031 ÷ 002E × 2060 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 00AD ÷ 0001 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 00AD × 0308 ÷ 0001 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] <START OF HEADING> (Other) ÷ [0.3]
÷ 00AD ÷ 000D ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [3.2] <CARRIAGE RETURN (CR)> (CR) ÷ [0.3]
@@ -526,6 +594,8 @@
÷ 00AD × 0308 ÷ 0030 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 00AD ÷ 005F ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 00AD × 0308 ÷ 005F ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 00AD ÷ 1F1E6 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 00AD × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 00AD × 00AD ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 00AD × 0308 × 00AD ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 00AD × 0300 ÷ # ÷ [0.2] SOFT HYPHEN (Format_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -570,6 +640,8 @@
÷ 0300 × 0308 ÷ 0030 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0300 ÷ 005F ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 0300 × 0308 ÷ 005F ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0300 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0300 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0300 × 00AD ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0300 × 0308 × 00AD ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0300 × 0300 ÷ # ÷ [0.2] COMBINING GRAVE ACCENT (Extend_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -614,6 +686,8 @@
÷ 0061 × 2060 × 0308 × 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [9.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0061 × 2060 × 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 0061 × 2060 × 0308 × 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [13.1] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0061 × 2060 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0061 × 2060 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0061 × 2060 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0061 × 2060 × 0308 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0061 × 2060 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -658,6 +732,8 @@
÷ 0061 ÷ 003A × 0308 ÷ 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0061 ÷ 003A ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 0061 ÷ 003A × 0308 ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0061 ÷ 003A ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0061 ÷ 003A × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0061 ÷ 003A × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0061 ÷ 003A × 0308 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0061 ÷ 003A × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -702,6 +778,8 @@
÷ 0061 ÷ 0027 × 0308 ÷ 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0061 ÷ 0027 ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 0061 ÷ 0027 × 0308 ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0061 ÷ 0027 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0061 ÷ 0027 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0061 ÷ 0027 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0061 ÷ 0027 × 0308 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0061 ÷ 0027 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -746,6 +824,8 @@
÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0061 ÷ 0027 × 2060 ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0061 ÷ 0027 × 2060 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0061 ÷ 0027 × 2060 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0061 ÷ 0027 × 2060 × 0308 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0061 ÷ 0027 × 2060 × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -790,6 +870,8 @@
÷ 0061 ÷ 002C × 0308 ÷ 0030 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0061 ÷ 002C ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 0061 ÷ 002C × 0308 ÷ 005F ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0061 ÷ 002C ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0061 ÷ 002C × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0061 ÷ 002C × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0061 ÷ 002C × 0308 × 00AD ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0061 ÷ 002C × 0300 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -834,6 +916,8 @@
÷ 0031 ÷ 003A × 0308 ÷ 0030 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0031 ÷ 003A ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 0031 ÷ 003A × 0308 ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0031 ÷ 003A ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0031 ÷ 003A × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0031 ÷ 003A × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0031 ÷ 003A × 0308 × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0031 ÷ 003A × 0300 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COLON (MidLetter) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -878,6 +962,8 @@
÷ 0031 × 0027 × 0308 × 0030 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] APOSTROPHE (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0031 ÷ 0027 ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidNumLet) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 0031 ÷ 0027 × 0308 ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0031 ÷ 0027 ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidNumLet) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0031 ÷ 0027 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0031 ÷ 0027 × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0031 ÷ 0027 × 0308 × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0031 ÷ 0027 × 0300 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] APOSTROPHE (MidNumLet) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -922,6 +1008,8 @@
÷ 0031 × 002C × 0308 × 0030 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0031 ÷ 002C ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 0031 ÷ 002C × 0308 ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0031 ÷ 002C ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0031 ÷ 002C × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0031 ÷ 002C × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0031 ÷ 002C × 0308 × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0031 ÷ 002C × 0300 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] COMMA (MidNum) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -966,6 +1054,8 @@
÷ 0031 × 002E × 2060 × 0308 × 0030 ÷ # ÷ [0.2] DIGIT ONE (Numeric) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [11.0] DIGIT ZERO (Numeric) ÷ [0.3]
÷ 0031 ÷ 002E × 2060 ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
÷ 0031 ÷ 002E × 2060 × 0308 ÷ 005F ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] LOW LINE (ExtendNumLet) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
+÷ 0031 ÷ 002E × 2060 × 0308 ÷ 1F1E6 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [0.3]
÷ 0031 ÷ 002E × 2060 × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0031 ÷ 002E × 2060 × 0308 × 00AD ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING DIAERESIS (Extend_FE) × [4.0] SOFT HYPHEN (Format_FE) ÷ [0.3]
÷ 0031 ÷ 002E × 2060 × 0300 ÷ # ÷ [0.2] DIGIT ONE (Numeric) ÷ [999.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [4.0] COMBINING GRAVE ACCENT (Extend_FE) ÷ [0.3]
@@ -998,4 +1088,17 @@
÷ 2060 ÷ 0061 × 2060 × 0062 × 2060 × 00AD × 2060 × 0062 × 2060 × 0079 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER B (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] SOFT HYPHEN (Format_FE) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER B (ALetter) × [4.0] WORD JOINER (Format_FE) × [5.0] LATIN SMALL LETTER Y (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 ÷ 0061 × 2060 ÷ 0024 × 2060 ÷ 002D × 2060 ÷ 0033 × 2060 × 0034 × 2060 × 002C × 2060 × 0035 × 2060 × 0036 × 2060 × 0037 × 2060 × 002E × 2060 × 0031 × 2060 × 0034 × 2060 ÷ 0025 × 2060 ÷ 0062 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] DOLLAR SIGN (Other) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] HYPHEN-MINUS (Other) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] DIGIT THREE (Numeric) × [4.0] WORD JOINER (Format_FE) × [8.0] DIGIT FOUR (Numeric) × [4.0] WORD JOINER (Format_FE) × [12.0] COMMA (MidNum) × [4.0] WORD JOINER (Format_FE) × [11.0] DIGIT FIVE (Numeric) × [4.0] WORD JOINER (Format_FE) × [8.0] DIGIT SIX (Numeric) × [4.0] WORD JOINER (Format_FE) × [8.0] DIGIT SEVEN (Numeric) × [4.0] WORD JOINER (Format_FE) × [12.0] FULL STOP (MidNumLet) × [4.0] WORD JOINER (Format_FE) × [11.0] DIGIT ONE (Numeric) × [4.0] WORD JOINER (Format_FE) × [8.0] DIGIT FOUR (Numeric) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] PERCENT SIGN (Other) × [4.0] WORD JOINER (Format_FE) ÷ [999.0] LATIN SMALL LETTER B (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
÷ 2060 ÷ 0033 × 2060 × 0061 × 2060 × 2060 ÷ # ÷ [0.2] WORD JOINER (Format_FE) ÷ [999.0] DIGIT THREE (Numeric) × [4.0] WORD JOINER (Format_FE) × [10.0] LATIN SMALL LETTER A (ALetter) × [4.0] WORD JOINER (Format_FE) × [4.0] WORD JOINER (Format_FE) ÷ [0.3]
-# Lines: 978
+÷ 0061 ÷ 1F1E6 ÷ 0062 ÷ # ÷ [0.2] LATIN SMALL LETTER A (ALetter) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) ÷ [999.0] LATIN SMALL LETTER B (ALetter) ÷ [0.3]
+÷ 1F1F7 × 1F1FA ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER R (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER U (Regional_Indicator) ÷ [0.3]
+÷ 1F1F7 × 1F1FA × 1F1F8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER R (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER U (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER S (Regional_Indicator) ÷ [0.3]
+÷ 1F1F7 × 1F1FA × 1F1F8 × 1F1EA ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER R (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER U (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER S (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER E (Regional_Indicator) ÷ [0.3]
+÷ 1F1F7 × 1F1FA ÷ 200B ÷ 1F1F8 × 1F1EA ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER R (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER U (Regional_Indicator) ÷ [999.0] ZERO WIDTH SPACE (Other) ÷ [999.0] REGIONAL INDICATOR SYMBOL LETTER S (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER E (Regional_Indicator) ÷ [0.3]
+÷ 1F1E6 × 1F1E7 × 1F1E8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER B (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER C (Regional_Indicator) ÷ [0.3]
+÷ 1F1E6 × 200D × 1F1E7 × 1F1E8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [4.0] ZERO WIDTH JOINER (Extend_FE) × [13.3] REGIONAL INDICATOR SYMBOL LETTER B (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER C (Regional_Indicator) ÷ [0.3]
+÷ 1F1E6 × 1F1E7 × 200D × 1F1E8 ÷ # ÷ [0.2] REGIONAL INDICATOR SYMBOL LETTER A (Regional_Indicator) × [13.3] REGIONAL INDICATOR SYMBOL LETTER B (Regional_Indicator) × [4.0] ZERO WIDTH JOINER (Extend_FE) × [13.3] REGIONAL INDICATOR SYMBOL LETTER C (Regional_Indicator) ÷ [0.3]
+÷ 0020 × 200D ÷ 0646 ÷ # ÷ [0.2] SPACE (Other) × [4.0] ZERO WIDTH JOINER (Extend_FE) ÷ [999.0] ARABIC LETTER NOON (ALetter) ÷ [0.3]
+÷ 0646 × 200D ÷ 0020 ÷ # ÷ [0.2] ARABIC LETTER NOON (ALetter) × [4.0] ZERO WIDTH JOINER (Extend_FE) ÷ [999.0] SPACE (Other) ÷ [0.3]
+#
+# Lines: 1078
+#
+# EOF
diff --git a/src/i18n/tests/word-break-test.lisp b/src/i18n/tests/word-break-test.lisp
index 42d961a..2fefec7 100644
--- a/src/i18n/tests/word-break-test.lisp
+++ b/src/i18n/tests/word-break-test.lisp
@@ -33,7 +33,11 @@
(let ((c (read s nil nil)))
(unless c
(return))
- (vector-push-extend (code-char c) string)
+ (if (> c #xffff)
+ (let ((s (lisp::codepoints-string (list c))))
+ (vector-push-extend (aref s 0) string)
+ (vector-push-extend (aref s 1) string))
+ (vector-push-extend (code-char c) string))
(let ((c (read s)))
(handle-break c))
(incf count)))))
diff --git a/src/i18n/unidata.bin b/src/i18n/unidata.bin
index 0ee2dd9..30816cf 100644
Binary files a/src/i18n/unidata.bin and b/src/i18n/unidata.bin differ
diff --git a/src/tools/build-unidata.lisp b/src/tools/build-unidata.lisp
index 363d095..0f5bc42 100644
--- a/src/tools/build-unidata.lisp
+++ b/src/tools/build-unidata.lisp
@@ -54,7 +54,7 @@
;; The expected Unicode version
(defconstant +unicode-major-version+ 6)
-(defconstant +unicode-minor-version+ 1)
+(defconstant +unicode-minor-version+ 2)
(defconstant +unicode-update-version+ 0)
;;; These need to be synched with code/unidata.lisp
@@ -281,11 +281,14 @@
(cdr x))))
(mapc (lambda (x) (pass2 (cdr x))) (rest trie))))
(format t "~& Initializing...~%")
+ (force-output)
(let ((trie (cons nil nil)))
(loop for (name . code) in entries do (add-to-trie trie name code))
(format t "~& Pass 1...~%")
+ (force-output)
(pass1 trie 0)
(format t "~& Sorting...~%")
+ (force-output)
(dolist (key (sort (loop for k being the hash-keys of khash
collect k)
#'> :key #'length))
@@ -316,8 +319,10 @@
vec2 (make-array top :element-type '(unsigned-byte 32))
vec3 (make-array top :element-type '(unsigned-byte 32)))
(format t "~& Pass 2...~%")
+ (force-output)
(pass2 trie)
(format t "~& Finalizing~%")
+ (force-output)
(dotimes (i top)
(let ((xxx (aref vec2 i)))
(dotimes (j (aref keyl (ash xxx -18)))
@@ -614,9 +619,10 @@
;; ucd-directory should be the directory where UnicodeData.txt is
;; located.
(defun foreach-ucd (name ucd-directory fn)
- (format t "~& ~A~%" name)
+ (format t "~& ~A~%" name)
(with-open-file (s (make-pathname :name name :type "txt"
:defaults ucd-directory))
+ (format t "file = ~s~%" s)
(cond
((string= name "Unihan")
(loop for line = (read-line s nil) while line do
@@ -811,6 +817,7 @@
ucd-directory
(lambda (min max prop)
(let ((code (intern (string-upcase prop) "KEYWORD")))
+ (format t "~X-~X code = ~S~%" min max code)
(loop for i from min to max
as ent = (find-ucd i) do
(when ent
@@ -941,16 +948,18 @@
(or (position (ucdent-word-break ucdent)
'(:other :cr :lf :newline :extend :format
:katakana :aletter :midnumlet :midletter :midnum
- :numeric :extendnumlet))
+ :numeric :extendnumlet :regional_indicator))
0))
;; ucd-directory should be the directory where UnicodeData.txt is
;; located.
(defun build-unidata (&optional (ucd-directory "target:i18n/"))
(format t "~&Reading data from ~S~%" (probe-file ucd-directory))
+ (force-output)
(multiple-value-bind (ucd range) (read-data ucd-directory)
(setf (unidata-range *unicode-data*) range)
(format t "~&Building character name tables~%")
+ (force-output)
(let* ((data (loop for ent across ucd
when (char/= (char (ucdent-name ent) 0) #\<)
collect (cons (ucdent-name ent) (ucdent-code ent))
@@ -965,6 +974,7 @@
(make-ntrie32 :split #x54 :hvec hvec :mvec mvec :lvec lvec))))
(format t "~&Building Unicode 1.0 character name tables~%")
+ (force-output)
(let* ((data (loop for ent across ucd
when (plusp (length (ucdent-name1 ent)))
collect (cons (ucdent-name1 ent) (ucdent-code ent))))
@@ -976,12 +986,14 @@
(make-ntrie32 :split #x54 :hvec hvec :mvec mvec :lvec lvec))))
(format t "~&Building general category table~%")
+ (force-output)
(multiple-value-bind (hvec mvec lvec)
(pack ucd range #'ucdent-cat 0 8 #x53)
(setf (unidata-category *unicode-data*)
(make-ntrie8 :split #x53 :hvec hvec :mvec mvec :lvec lvec)))
(format t "~&Building simple case-conversion table~%")
+ (force-output)
(let ((svec (make-array 100 :element-type '(unsigned-byte 16)
:fill-pointer 0 :adjustable t)))
(vector-push-extend 0 svec)
@@ -993,12 +1005,14 @@
:svec (copy-seq svec)))))
(format t "~&Building numeric-values table~%")
+ (force-output)
(multiple-value-bind (hvec mvec lvec)
(pack ucd range #'pack-numeric 0 32 #x63)
(setf (unidata-numeric *unicode-data*)
(make-ntrie32 :split #x63 :hvec hvec :mvec mvec :lvec lvec)))
(format t "~&Building decomposition table~%")
+ (force-output)
(let ((tabl (make-array 6000 :element-type '(unsigned-byte 16)
:fill-pointer 0 :adjustable t)))
(multiple-value-bind (hvec mvec lvec)
@@ -1009,12 +1023,14 @@
:tabl (copy-seq tabl)))))
(format t "~&Building combining-class table~%")
+ (force-output)
(multiple-value-bind (hvec mvec lvec)
(pack ucd range #'ucdent-comb 0 8 #x64)
(setf (unidata-combining *unicode-data*)
(make-ntrie8 :split #x64 :hvec hvec :mvec mvec :lvec lvec)))
(format t "~&Building bidi information table~%")
+ (force-output)
(let ((tabl (make-array 10 :element-type '(unsigned-byte 16)
:fill-pointer 0 :adjustable t)))
(multiple-value-bind (hvec mvec lvec)
@@ -1025,6 +1041,7 @@
:tabl (copy-seq tabl)))))
(format t "~&Building normalization quick-check tables~%")
+ (force-output)
(progn
(multiple-value-bind (hvec mvec lvec)
(pack ucd range (lambda (x)
@@ -1056,6 +1073,7 @@
(make-ntrie2 :split #x55 :hvec hvec :mvec mvec :lvec lvec))))
(format t "~&Building composition exclusion table~%")
+ (force-output)
(let ((exclusions (make-array 1 :element-type '(unsigned-byte 32)
:adjustable t
:fill-pointer 0)))
@@ -1065,8 +1083,10 @@
(setf (unidata-comp-exclusions *unicode-data*) (copy-seq exclusions)))
(format t "~&Building full case mapping tables~%")
+ (force-output)
(progn
(format t "~& Lower...~%")
+ (force-output)
(let ((tabl (make-array 100 :element-type '(unsigned-byte 16)
:fill-pointer 0 :adjustable t))
(split #x65))
@@ -1077,6 +1097,7 @@
(make-full-case :split split :hvec hvec :mvec mvec :lvec lvec
:tabl (copy-seq tabl)))))
(format t "~& Title...~%")
+ (force-output)
(let ((tabl (make-array 100 :element-type '(unsigned-byte 16)
:fill-pointer 0 :adjustable t))
(split #x65))
@@ -1087,6 +1108,7 @@
(make-full-case :split split :hvec hvec :mvec mvec :lvec lvec
:tabl (copy-seq tabl)))))
(format t "~& Upper...~%")
+ (force-output)
(let ((tabl (make-array 100 :element-type '(unsigned-byte 16)
:fill-pointer 0 :adjustable t))
(split #x65))
@@ -1098,8 +1120,10 @@
:tabl (copy-seq tabl))))))
(format t "~&Building case-folding tables~%")
+ (force-output)
(progn
(format t "~& Simple...~%")
+ (force-output)
(let ((split #x54))
(multiple-value-bind (hvec mvec lvec)
(pack ucd range (lambda (x) (pack-case-folding-simple x))
@@ -1107,6 +1131,7 @@
(setf (unidata-case-fold-simple *unicode-data*)
(make-ntrie32 :split split :hvec hvec :mvec mvec :lvec lvec))))
(format t "~& Full...~%")
+ (force-output)
(let ((tabl (make-array 100 :element-type '(unsigned-byte 16)
:fill-pointer 0 :adjustable t))
(split #x65))
@@ -1118,6 +1143,7 @@
:tabl (copy-seq tabl))))))
(format t "~&Building word-break table~%")
+ (force-output)
(let ((split #x66))
(multiple-value-bind (hvec mvec lvec)
(pack ucd range (lambda (x) (pack-word-break x))
-----------------------------------------------------------------------
Summary of changes:
src/code/string.lisp | 142 +++++++++++++++++---------------
src/code/unidata.lisp | 6 +-
src/general-info/release-20e.txt | 2 +
src/i18n/BidiMirroring.txt | 21 ++---
src/i18n/CaseFolding.txt | 8 +-
src/i18n/CompositionExclusions.txt | 7 +-
src/i18n/DerivedNormalizationProps.txt | 6 +-
src/i18n/NameAliases.txt | 5 +-
src/i18n/NormalizationCorrections.txt | 8 +-
src/i18n/SpecialCasing.txt | 6 +-
src/i18n/UnicodeData.txt | 9 +-
src/i18n/WordBreakProperty.txt | 12 ++-
src/i18n/tests/NormalizationTest.txt | 8 +-
src/i18n/tests/WordBreakTest.txt | 113 ++++++++++++++++++++++++-
src/i18n/tests/word-break-test.lisp | 10 ++-
src/i18n/unidata.bin | Bin 1490793 -> 1490993 bytes
src/tools/build-unidata.lisp | 32 +++++++-
17 files changed, 273 insertions(+), 122 deletions(-)
hooks/post-receive
--
CMU Common Lisp
1
0

[cmucl-cvs] [git] CMU Common Lisp branch master updated. snapshot-2013-03-6-g10ebd12
by Raymond Toy 06 Mar '13
by Raymond Toy 06 Mar '13
06 Mar '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMU Common Lisp".
The branch, master has been updated
via 10ebd126e43b344377d384c55c1c611a82e9f4ae (commit)
via 45fabc8f3fad8876627831708ec3c997d46ce4f8 (commit)
from 9c3da08b86682b804da381ebf7d6e2f6843a4394 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 10ebd126e43b344377d384c55c1c611a82e9f4ae
Author: Raymond Toy <toy.raymond(a)gmail.com>
Date: Wed Mar 6 00:29:09 2013 -0800
Update.
diff --git a/src/general-info/release-20e.txt b/src/general-info/release-20e.txt
index d16df6b..a438863 100644
--- a/src/general-info/release-20e.txt
+++ b/src/general-info/release-20e.txt
@@ -52,7 +52,6 @@ New in this release:
* A serious error in FILE-POSITION on streams using an encoding
other than latin1 has been fixed. See ticket #74.
-
* Trac Tickets:
* Ticket #52 reopened.
* Ticket #66 fixed.
@@ -65,6 +64,7 @@ New in this release:
* Ticket #72 fixed.
* Ticket #73 fixed.
* Ticket #74 fixed.
+ * Ticket #76 fixed.
* Other changes:
* -8 option for build-all.sh is deprecated since we don't
commit 45fabc8f3fad8876627831708ec3c997d46ce4f8
Author: Raymond Toy <toy.raymond(a)gmail.com>
Date: Wed Mar 6 00:27:44 2013 -0800
Fix ticket:76
Missed one place in DO-UNARY-BYTE-BASH to adjust the call to END-MASK
to use a bit offset instead of a byte offset. This affects anything
that was using DO-UNARY-BYTE-BASH, including REPLACE.
diff --git a/src/code/bit-bash.lisp b/src/code/bit-bash.lisp
index a9bb688..ba2706a 100644
--- a/src/code/bit-bash.lisp
+++ b/src/code/bit-bash.lisp
@@ -562,7 +562,7 @@
(unless (zerop dst-byte-offset)
;; We are only writing part of the first word, so mask off the
;; bits we want to preserve.
- (let ((mask (end-mask (- dst-byte-offset)))
+ (let ((mask (end-mask (* vm:byte-bits (- dst-byte-offset))))
(orig (funcall dst-ref-fn dst dst-word-offset))
(value (funcall src-ref-fn src src-word-offset)))
(declare (type unit mask orig value))
-----------------------------------------------------------------------
Summary of changes:
src/code/bit-bash.lisp | 2 +-
src/general-info/release-20e.txt | 2 +-
2 files changed, 2 insertions(+), 2 deletions(-)
hooks/post-receive
--
CMU Common Lisp
1
0

[cmucl-cvs] [git] CMU Common Lisp branch master updated. snapshot-2013-03-4-g9c3da08
by Raymond Toy 06 Mar '13
by Raymond Toy 06 Mar '13
06 Mar '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMU Common Lisp".
The branch, master has been updated
via 9c3da08b86682b804da381ebf7d6e2f6843a4394 (commit)
from 55fff7e73fa96ab34090f8c64dd32bafbc047764 (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 9c3da08b86682b804da381ebf7d6e2f6843a4394
Author: Raymond Toy <toy.raymond(a)gmail.com>
Date: Tue Mar 5 19:52:16 2013 -0800
Update from logs.
diff --git a/src/general-info/release-20e.txt b/src/general-info/release-20e.txt
index dd56d03..d16df6b 100644
--- a/src/general-info/release-20e.txt
+++ b/src/general-info/release-20e.txt
@@ -23,7 +23,7 @@ New in this release:
* Feature enhancements
* Changes
- * ASDF2 updated to version 2.30.
+ * ASDF2 updated to version 2.32.
* DEFINE-COMPILER-MACRO now has source-location information for
the macro definition.
* :ALIEN-CALLBACK added to *FEATURES* for platforms that support
-----------------------------------------------------------------------
Summary of changes:
src/general-info/release-20e.txt | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
hooks/post-receive
--
CMU Common Lisp
1
0

[cmucl-cvs] [git] CMU Common Lisp branch master updated. snapshot-2013-03-3-g55fff7e
by Raymond Toy 06 Mar '13
by Raymond Toy 06 Mar '13
06 Mar '13
This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "CMU Common Lisp".
The branch, master has been updated
via 55fff7e73fa96ab34090f8c64dd32bafbc047764 (commit)
from 3840e31732c81220de96788dd3d5ea71d1bd2bca (commit)
Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.
- Log -----------------------------------------------------------------
commit 55fff7e73fa96ab34090f8c64dd32bafbc047764
Author: Raymond Toy <toy.raymond(a)gmail.com>
Date: Tue Mar 5 19:46:38 2013 -0800
Update to ASDF 2.32.
diff --git a/src/contrib/asdf/asdf.lisp b/src/contrib/asdf/asdf.lisp
index bdd55ad..d3c63b2 100644
--- a/src/contrib/asdf/asdf.lisp
+++ b/src/contrib/asdf/asdf.lisp
@@ -1,5 +1,5 @@
;;; -*- mode: Common-Lisp; Base: 10 ; Syntax: ANSI-Common-Lisp -*-
-;;; This is ASDF 2.30: Another System Definition Facility.
+;;; This is ASDF 2.32: Another System Definition Facility.
;;;
;;; Feedback, bug reports, and patches are all welcome:
;;; please mail to <asdf-devel(a)common-lisp.net>.
@@ -71,8 +71,7 @@
(existing-version-number (and existing-version (read-from-string existing-major-minor)))
(away (format nil "~A-~A" :asdf existing-version)))
(when (and existing-version (< existing-version-number
- #+abcl 2.25 #+clisp 2.27 #+clozure 2.27
- #+cmu 2.018 #+ecl 2.21 #+xcl 2.27))
+ (or #+abcl 2.25 #+cmu 2.018 2.27)))
(rename-package :asdf away)
(when *load-verbose*
(format t "; Renamed old ~A package away to ~A~%" :asdf away))))))
@@ -82,28 +81,28 @@
;;
;; See https://bugs.launchpad.net/asdf/+bug/485687
;;
-;; CAUTION: we must handle the first few packages specially for hot-upgrade.
-;; asdf/package will be frozen as of ASDF 3
-;; to forever export the same exact symbols.
-;; Any other symbol must be import-from'ed
-;; and reexported in a different package
-;; (alternatively the package may be dropped & replaced by one with a new name).
-
-(defpackage :asdf/package
+
+(defpackage :uiop/package
+ ;; CAUTION: we must handle the first few packages specially for hot-upgrade.
+ ;; This package definition MUST NOT change unless its name too changes;
+ ;; if/when it changes, don't forget to add new functions missing from below.
+ ;; Until then, asdf/package is frozen to forever
+ ;; import and export the same exact symbols as for ASDF 2.27.
+ ;; Any other symbol must be import-from'ed and re-export'ed in a different package.
(:use :common-lisp)
(:export
#:find-package* #:find-symbol* #:symbol-call
- #:intern* #:unintern* #:export* #:make-symbol*
- #:symbol-shadowing-p #:home-package-p #:rehome-symbol
+ #:intern* #:export* #:import* #:shadowing-import* #:shadow* #:make-symbol* #:unintern*
+ #:symbol-shadowing-p #:home-package-p
#:symbol-package-name #:standard-common-lisp-symbol-p
#:reify-package #:unreify-package #:reify-symbol #:unreify-symbol
- #:nuke-symbol-in-package #:nuke-symbol
+ #:nuke-symbol-in-package #:nuke-symbol #:rehome-symbol
#:ensure-package-unused #:delete-package*
- #:fresh-package-name #:rename-package-away #:package-names #:packages-from-names
+ #:package-names #:packages-from-names #:fresh-package-name #:rename-package-away
#:package-definition-form #:parse-define-package-form
#:ensure-package #:define-package))
-(in-package :asdf/package)
+(in-package :uiop/package)
;;;; General purpose package utilities
@@ -140,6 +139,12 @@ or when loading the package is optional."
(let* ((package (find-package* package-designator))
(symbol (intern* name package)))
(export (or symbol (list symbol)) package)))
+ (defun import* (symbol package-designator)
+ (import (or symbol (list symbol)) (find-package* package-designator)))
+ (defun shadowing-import* (symbol package-designator)
+ (shadowing-import (or symbol (list symbol)) (find-package* package-designator)))
+ (defun shadow* (name package-designator)
+ (shadow (string name) (find-package* package-designator)))
(defun make-symbol* (name)
(etypecase name
(string (make-symbol name))
@@ -258,8 +263,8 @@ or when loading the package is optional."
(multiple-value-bind (sym stat) (find-symbol name package)
(when (and (member stat '(:internal :external)) (eq symbol sym))
(if (symbol-shadowing-p symbol package)
- (shadowing-import (get-dummy-symbol symbol) package)
- (unintern symbol package))))))
+ (shadowing-import* (get-dummy-symbol symbol) package)
+ (unintern* symbol package))))))
(defun nuke-symbol (symbol &optional (packages (list-all-packages)))
#+(or clisp clozure)
(multiple-value-bind (setf-symbol kind)
@@ -284,18 +289,18 @@ or when loading the package is optional."
(package-name package) overwritten-symbol-status overwritten-symbol-shadowing-p)
(when old-package
(if shadowing
- (shadowing-import shadowing old-package))
- (unintern symbol old-package))
+ (shadowing-import* shadowing old-package))
+ (unintern* symbol old-package))
(cond
(overwritten-symbol-shadowing-p
- (shadowing-import symbol package))
+ (shadowing-import* symbol package))
(t
(when overwritten-symbol-status
- (unintern overwritten-symbol package))
- (import symbol package)))
+ (unintern* overwritten-symbol package))
+ (import* symbol package)))
(if shadowing
- (shadowing-import symbol old-package)
- (import symbol old-package))
+ (shadowing-import* symbol old-package)
+ (import* symbol old-package))
#+(or clisp clozure)
(multiple-value-bind (setf-symbol kind)
(get-setf-function-symbol symbol)
@@ -308,7 +313,7 @@ or when loading the package is optional."
(symbol-name setf-symbol) (symbol-package-name setf-symbol)
(symbol-name new-setf-symbol) (symbol-package-name new-setf-symbol))
(when (symbol-package setf-symbol)
- (unintern setf-symbol (symbol-package setf-symbol)))
+ (unintern* setf-symbol (symbol-package setf-symbol)))
(setf (fdefinition new-setf-symbol) setf-function)
(set-setf-function-symbol new-setf-symbol symbol kind))))
#+(or clisp clozure)
@@ -435,7 +440,34 @@ or when loading the package is optional."
(or (home-package-p import-me from-package) (symbol-package-name import-me))
(package-name to-package) status
(and status (or (home-package-p existing to-package) (symbol-package-name existing)))))
- (shadowing-import import-me to-package))))))
+ (shadowing-import* import-me to-package))))))
+ (defun ensure-imported (import-me into-package &optional from-package)
+ (check-type import-me symbol)
+ (check-type into-package package)
+ (check-type from-package (or null package))
+ (let ((name (symbol-name import-me)))
+ (multiple-value-bind (existing status) (find-symbol name into-package)
+ (cond
+ ((not status)
+ (import* import-me into-package))
+ ((eq import-me existing))
+ (t
+ (let ((shadowing-p (symbol-shadowing-p existing into-package)))
+ (note-package-fishiness
+ :ensure-imported name
+ (and from-package (package-name from-package))
+ (or (home-package-p import-me from-package) (symbol-package-name import-me))
+ (package-name into-package)
+ status
+ (and status (or (home-package-p existing into-package) (symbol-package-name existing)))
+ shadowing-p)
+ (cond
+ ((or shadowing-p (eq status :inherited))
+ (shadowing-import* import-me into-package))
+ (t
+ (unintern* existing into-package)
+ (import* import-me into-package))))))))
+ (values))
(defun ensure-import (name to-package from-package shadowed imported)
(check-type name string)
(check-type to-package package)
@@ -446,27 +478,18 @@ or when loading the package is optional."
(when (null import-status)
(note-package-fishiness
:import-uninterned name (package-name from-package) (package-name to-package))
- (setf import-me (intern name from-package)))
+ (setf import-me (intern* name from-package)))
(multiple-value-bind (existing status) (find-symbol name to-package)
(cond
- ((gethash name imported)
- (unless (eq import-me existing)
+ ((and imported (gethash name imported))
+ (unless (and status (eq import-me existing))
(error "Can't import ~S from both ~S and ~S"
name (package-name (symbol-package existing)) (package-name from-package))))
((gethash name shadowed)
(error "Can't both shadow ~S and import it from ~S" name (package-name from-package)))
(t
- (setf (gethash name imported) t)
- (unless (and status (eq import-me existing))
- (when status
- (note-package-fishiness
- :import name
- (package-name from-package)
- (or (home-package-p import-me from-package) (symbol-package-name import-me))
- (package-name to-package) status
- (and status (or (home-package-p existing to-package) (symbol-package-name existing))))
- (unintern* existing to-package))
- (import import-me to-package)))))))
+ (setf (gethash name imported) t))))
+ (ensure-imported import-me to-package from-package)))
(defun ensure-inherited (name symbol to-package from-package mixp shadowed imported inherited)
(check-type name string)
(check-type symbol symbol)
@@ -484,7 +507,7 @@ or when loading the package is optional."
(note-package-fishiness
:import-uninterned name
(package-name from-package) (package-name to-package) mixp)
- (import symbol from-package)
+ (import* symbol from-package)
(setf sp (package-name from-package)))
(cond
((gethash name shadowed))
@@ -557,7 +580,7 @@ or when loading the package is optional."
(defun symbol-recycled-p (sym recycle)
(check-type sym symbol)
(check-type recycle list)
- (member (symbol-package sym) recycle))
+ (and (member (symbol-package sym) recycle) t))
(defun ensure-symbol (name package intern recycle shadowed imported inherited exported)
(check-type name string)
(check-type package package)
@@ -591,6 +614,7 @@ or when loading the package is optional."
(check-type symbol symbol)
(check-type to-package package)
(check-type recycle list)
+ (assert (equal name (symbol-name symbol)))
(multiple-value-bind (existing status) (find-symbol name to-package)
(unless (and status (eq symbol existing))
(let ((accessible
@@ -604,7 +628,7 @@ or when loading the package is optional."
(or (home-package-p existing to-package) (symbol-package-name existing))
status shadowing)
(if (or (eq status :inherited) shadowing)
- (shadowing-import symbol to-package)
+ (shadowing-import* symbol to-package)
(unintern existing to-package))
t)))))
(when (and accessible (eq status :external))
@@ -612,7 +636,8 @@ or when loading the package is optional."
(defun ensure-exported (name symbol from-package &optional recycle)
(dolist (to-package (package-used-by-list from-package))
(ensure-exported-to-user name symbol to-package recycle))
- (import symbol from-package)
+ (unless (eq from-package (symbol-package symbol))
+ (ensure-imported symbol from-package))
(export* name from-package))
(defun ensure-export (name from-package &optional recycle)
(multiple-value-bind (symbol status) (find-symbol* name from-package)
@@ -694,9 +719,9 @@ or when loading the package is optional."
(note-package-fishiness
:shadow-imported (package-name package) name
(symbol-package-name existing) status shadowing)
- (shadowing-import dummy package)
- (import dummy package)))))))
- (shadow name package))
+ (shadowing-import* dummy package)
+ (import* dummy package)))))))
+ (shadow* name package))
(loop :for (p . syms) :in shadowing-import-from
:for pp = (find-package* p) :do
(dolist (sym syms) (ensure-shadowing-import (string sym) package pp shadowed imported)))
@@ -784,6 +809,9 @@ or when loading the package is optional."
(pushnew :gcl2.6 *features*))
(t
(pushnew :gcl2.7 *features*))))
+
+;; Compatibility with whoever calls asdf/package
+(define-package :asdf/package (:use :cl :uiop/package) (:reexport :uiop/package))
;;;; -------------------------------------------------------------------------
;;;; Handle compatibility with multiple implementations.
;;; This file is for papering over the deficiencies and peculiarities
@@ -792,11 +820,11 @@ or when loading the package is optional."
;;; A few functions are defined here, but actually exported from utility;
;;; from this package only common-lisp symbols are exported.
-(asdf/package:define-package :asdf/common-lisp
- (:nicknames :asdf/cl)
- (:use #-genera :common-lisp #+genera :future-common-lisp :asdf/package)
+(uiop/package:define-package :uiop/common-lisp
+ (:nicknames :uoip/cl :asdf/common-lisp :asdf/cl)
+ (:use #-genera :common-lisp #+genera :future-common-lisp :uiop/package)
(:reexport :common-lisp)
- (:recycle :asdf/common-lisp :asdf)
+ (:recycle :uiop/common-lisp :uoip/cl :asdf/common-lisp :asdf/cl :asdf)
#+allegro (:intern #:*acl-warn-save*)
#+cormanlisp (:shadow #:user-homedir-pathname)
#+cormanlisp
@@ -808,7 +836,7 @@ or when loading the package is optional."
#+genera (:shadowing-import-from :scl #:boolean)
#+genera (:export #:boolean #:ensure-directories-exist)
#+mcl (:shadow #:user-homedir-pathname))
-(in-package :asdf/common-lisp)
+(in-package :uiop/common-lisp)
#-(or abcl allegro clisp clozure cmu cormanlisp ecl gcl genera lispworks mcl mkcl sbcl scl xcl)
(error "ASDF is not supported on your implementation. Please help us port it.")
@@ -859,13 +887,13 @@ or when loading the package is optional."
#+gcl2.6
(eval-when (:compile-toplevel :load-toplevel :execute)
- (shadow 'type-of :asdf/common-lisp)
- (shadowing-import 'system:*load-pathname* :asdf/common-lisp))
+ (shadow 'type-of :uiop/common-lisp)
+ (shadowing-import 'system:*load-pathname* :uiop/common-lisp))
#+gcl2.6
(eval-when (:compile-toplevel :load-toplevel :execute)
- (export 'type-of :asdf/common-lisp)
- (export 'system:*load-pathname* :asdf/common-lisp))
+ (export 'type-of :uiop/common-lisp)
+ (export 'system:*load-pathname* :uiop/common-lisp))
#+gcl2.6 ;; Doesn't support either logical-pathnames or output-translations.
(eval-when (:load-toplevel :compile-toplevel :execute)
@@ -933,24 +961,33 @@ or when loading the package is optional."
;;;; compatfmt: avoid fancy format directives when unsupported
(eval-when (:load-toplevel :compile-toplevel :execute)
- (defun remove-substrings (substrings string)
+ (defun frob-substrings (string substrings &optional frob)
+ (declare (optimize (speed 0) (safety 3) (debug 3)))
(let ((length (length string)) (stream nil))
- (labels ((emit (start end)
- (when (and (zerop start) (= end length))
- (return-from remove-substrings string))
+ (labels ((emit-string (x &optional (start 0) (end (length x)))
(when (< start end)
(unless stream (setf stream (make-string-output-stream)))
- (write-string string stream :start start :end end)))
+ (write-string x stream :start start :end end)))
+ (emit-substring (start end)
+ (when (and (zerop start) (= end length))
+ (return-from frob-substrings string))
+ (emit-string string start end))
(recurse (substrings start end)
(cond
((>= start end))
- ((null substrings) (emit start end))
- (t (let* ((sub (first substrings))
+ ((null substrings) (emit-substring start end))
+ (t (let* ((sub-spec (first substrings))
+ (sub (if (consp sub-spec) (car sub-spec) sub-spec))
+ (fun (if (consp sub-spec) (cdr sub-spec) frob))
(found (search sub string :start2 start :end2 end))
(more (rest substrings)))
(cond
(found
(recurse more start found)
+ (etypecase fun
+ (null)
+ (string (emit-string fun))
+ (function (funcall fun sub #'emit-string)))
(recurse substrings (+ found (length sub)) end))
(t
(recurse more start end))))))))
@@ -959,20 +996,21 @@ or when loading the package is optional."
(defmacro compatfmt (format)
#+(or gcl genera)
- (remove-substrings `("~3i~_" #+(or genera gcl2.6) ,@'("~@<" "~@;" "~@:>" "~:>")) format)
+ (frob-substrings format `("~3i~_" #+(or genera gcl2.6) ,@'("~@<" "~@;" "~@:>" "~:>")))
#-(or gcl genera) format))
;;;; -------------------------------------------------------------------------
;;;; General Purpose Utilities for ASDF
-(asdf/package:define-package :asdf/utility
- (:recycle :asdf/utility :asdf)
- (:use :asdf/common-lisp :asdf/package)
+(uiop/package:define-package :uiop/utility
+ (:nicknames :asdf/utility)
+ (:recycle :uiop/utility :asdf/utility :asdf)
+ (:use :uiop/common-lisp :uiop/package)
;; import and reexport a few things defined in :asdf/common-lisp
- (:import-from :asdf/common-lisp #:compatfmt #:loop* #:remove-substrings
+ (:import-from :uiop/common-lisp #:compatfmt #:loop* #:frob-substrings
#+ecl #:use-ecl-byte-compiler-p #+mcl #:probe-posix)
- (:export #:compatfmt #:loop* #:remove-substrings #:compatfmt
+ (:export #:compatfmt #:loop* #:frob-substrings #:compatfmt
#+ecl #:use-ecl-byte-compiler-p #+mcl #:probe-posix)
(:export
;; magic helper to define debugging functions:
@@ -994,7 +1032,7 @@ or when loading the package is optional."
#:call-with-muffled-conditions #:with-muffled-conditions
#:lexicographic< #:lexicographic<=
#:parse-version #:unparse-version #:version< #:version<= #:version-compatible-p)) ;; version
-(in-package :asdf/utility)
+(in-package :uiop/utility)
;;;; Defining functions in a way compatible with hot-upgrade:
;; DEFUN* and DEFGENERIC* use FMAKUNBOUND to delete any previous fdefinition,
@@ -1056,7 +1094,7 @@ or when loading the package is optional."
(with-upgradability ()
(defvar *asdf-debug-utility*
'(or (ignore-errors
- (symbol-call :asdf :system-relative-pathname :asdf-driver "contrib/debug.lisp"))
+ (symbol-call :asdf :system-relative-pathname :asdf "contrib/debug.lisp"))
(merge-pathnames "cl/asdf/contrib/debug.lisp" (user-homedir-pathname)))
"form that evaluates to the pathname to your favorite debugging utilities")
@@ -1405,9 +1443,10 @@ or a string describing the format-control of a simple-condition."
;;;; ---------------------------------------------------------------------------
;;;; Access to the Operating System
-(asdf/package:define-package :asdf/os
- (:recycle :asdf/os :asdf)
- (:use :asdf/common-lisp :asdf/package :asdf/utility)
+(uiop/package:define-package :uiop/os
+ (:nicknames :asdf/os)
+ (:recycle :uiop/os :asdf/os :asdf)
+ (:use :uiop/common-lisp :uiop/package :uiop/utility)
(:export
#:featurep #:os-unix-p #:os-windows-p #:os-genera-p #:detect-os ;; features
#:getenv #:getenvp ;; environment variables
@@ -1418,7 +1457,7 @@ or a string describing the format-control of a simple-condition."
;; Windows shortcut support
#:read-null-terminated-string #:read-little-endian
#:parse-file-location-info #:parse-windows-shortcut))
-(in-package :asdf/os)
+(in-package :uiop/os)
;;; Features
(with-upgradability ()
@@ -1622,7 +1661,7 @@ then returning the non-empty string value of the variable"
#+cormanlisp (pathname (pl::get-current-directory)) ;; Q: what type does it return?
#+ecl (ext:getcwd)
#+gcl (parse-namestring ;; this is a joke. Isn't there a better way?
- (first (symbol-call :asdf/driver :run-program '("/bin/pwd") :output :lines)))
+ (first (symbol-call :uiop :run-program '("/bin/pwd") :output :lines)))
#+genera *default-pathname-defaults* ;; on a Lisp OS, it *is* canonical!
#+lispworks (system:current-directory)
#+mkcl (mk-ext:getcwd)
@@ -1729,9 +1768,10 @@ then returning the non-empty string value of the variable"
;; This layer allows for portable manipulation of pathname objects themselves,
;; which all is necessary prior to any access the filesystem or environment.
-(asdf/package:define-package :asdf/pathname
- (:recycle :asdf/pathname :asdf)
- (:use :asdf/common-lisp :asdf/package :asdf/utility :asdf/os)
+(uiop/package:define-package :uiop/pathname
+ (:nicknames :asdf/pathname)
+ (:recycle :uiop/pathname :asdf/pathname :asdf)
+ (:use :uiop/common-lisp :uiop/package :uiop/utility :uiop/os)
(:export
;; Making and merging pathnames, portably
#:normalize-pathname-directory-component #:denormalize-pathname-directory-component
@@ -1763,7 +1803,7 @@ then returning the non-empty string value of the variable"
#:directory-separator-for-host #:directorize-pathname-host-device
#:translate-pathname*
#:*output-translation-function*))
-(in-package :asdf/pathname)
+(in-package :uiop/pathname)
;;; Normalizing pathnames across implementations
@@ -2393,9 +2433,10 @@ then it is merged with the PATHNAME-DIRECTORY-PATHNAME of PATHNAME."
;;;; -------------------------------------------------------------------------
;;;; Portability layer around Common Lisp filesystem access
-(asdf/package:define-package :asdf/filesystem
- (:recycle :asdf/pathname :asdf)
- (:use :asdf/common-lisp :asdf/package :asdf/utility :asdf/os :asdf/pathname)
+(uiop/package:define-package :uiop/filesystem
+ (:nicknames :asdf/filesystem)
+ (:recycle :uiop/filesystem :asdf/pathname :asdf)
+ (:use :uiop/common-lisp :uiop/package :uiop/utility :uiop/os :uiop/pathname)
(:export
;; Native namestrings
#:native-namestring #:parse-native-namestring
@@ -2416,7 +2457,7 @@ then it is merged with the PATHNAME-DIRECTORY-PATHNAME of PATHNAME."
#:ensure-all-directories-exist
#:rename-file-overwriting-target
#:delete-file-if-exists))
-(in-package :asdf/filesystem)
+(in-package :uiop/filesystem)
;;; Native namestrings, as seen by the operating system calls rather than Lisp
(with-upgradability ()
@@ -2872,15 +2913,16 @@ TRUENAMIZE uses TRUENAMIZE to resolve as many symlinks as possible."
;;;; ---------------------------------------------------------------------------
;;;; Utilities related to streams
-(asdf/package:define-package :asdf/stream
- (:recycle :asdf/stream)
- (:use :asdf/common-lisp :asdf/package :asdf/utility :asdf/os :asdf/pathname :asdf/filesystem)
+(uiop/package:define-package :uiop/stream
+ (:nicknames :asdf/stream)
+ (:recycle :uiop/stream :asdf/stream :asdf)
+ (:use :uiop/common-lisp :uiop/package :uiop/utility :uiop/os :uiop/pathname :uiop/filesystem)
(:export
#:*default-stream-element-type* #:*stderr* #:setup-stderr
#:detect-encoding #:*encoding-detection-hook* #:always-default-encoding
#:encoding-external-format #:*encoding-external-format-hook* #:default-encoding-external-format
#:*default-encoding* #:*utf-8-external-format*
- #:with-safe-io-syntax #:call-with-safe-io-syntax
+ #:with-safe-io-syntax #:call-with-safe-io-syntax #:safe-read-from-string
#:with-output #:output-string #:with-input
#:with-input-file #:call-with-input-file
#:finish-outputs #:format! #:safe-format!
@@ -2895,7 +2937,7 @@ TRUENAMIZE uses TRUENAMIZE to resolve as many symlinks as possible."
#:call-with-temporary-file #:with-temporary-file
#:add-pathname-suffix #:tmpize-pathname
#:call-with-staging-pathname #:with-staging-pathname))
-(in-package :asdf/stream)
+(in-package :uiop/stream)
(with-upgradability ()
(defvar *default-stream-element-type* (or #+(or abcl cmu cormanlisp scl xcl) 'character :default)
@@ -2914,10 +2956,16 @@ TRUENAMIZE uses TRUENAMIZE to resolve as many symlinks as possible."
;;; Encodings (mostly hooks only; full support requires asdf-encodings)
(with-upgradability ()
- (defvar *default-encoding* :default
+ (defparameter *default-encoding*
+ ;; preserve explicit user changes to something other than the legacy default :default
+ (or (if-let (previous (and (boundp '*default-encoding*) (symbol-value '*default-encoding*)))
+ (unless (eq previous :default) previous))
+ :utf-8)
"Default encoding for source files.
-The default value :default preserves the legacy behavior.
-A future default might be :utf-8 or :autodetect
+The default value :utf-8 is the portable thing.
+The legacy behavior was :default.
+If you (asdf:load-system :asdf-encodings) then
+you will have autodetection via *encoding-detection-hook* below,
reading emacs-style -*- coding: utf-8 -*- specifications,
and falling back to utf-8 or latin1 if nothing is specified.")
@@ -2975,7 +3023,11 @@ and implementation-defined external-format's")
(*read-default-float-format* 'double-float)
(*print-readably* nil)
(*read-eval* nil))
- (funcall thunk)))))
+ (funcall thunk))))
+
+ (defun safe-read-from-string (string &key (package :cl) (eof-error-p t) eof-value (start 0) end preserve-whitespace)
+ (with-safe-io-syntax (:package package)
+ (read-from-string string eof-error-p eof-value :start start :end end :preserve-whitespace preserve-whitespace))))
;;; Output to a stream or string, FORMAT-style
@@ -3325,9 +3377,10 @@ For the latter case, we ought pick random suffix and atomically open it."
;;;; -------------------------------------------------------------------------
;;;; Starting, Stopping, Dumping a Lisp image
-(asdf/package:define-package :asdf/image
- (:recycle :asdf/image :xcvb-driver)
- (:use :asdf/common-lisp :asdf/package :asdf/utility :asdf/pathname :asdf/stream :asdf/os)
+(uiop/package:define-package :uiop/image
+ (:nicknames :asdf/image)
+ (:recycle :uiop/image :asdf/image :xcvb-driver)
+ (:use :uiop/common-lisp :uiop/package :uiop/utility :uiop/pathname :uiop/stream :uiop/os)
(:export
#:*image-dumped-p* #:raw-command-line-arguments #:*command-line-arguments*
#:command-line-arguments #:raw-command-line-arguments #:setup-command-line-arguments
@@ -3342,7 +3395,7 @@ For the latter case, we ought pick random suffix and atomically open it."
#:call-image-restore-hook #:call-image-dump-hook
#:restore-image #:dump-image #:create-image
))
-(in-package :asdf/image)
+(in-package :uiop/image)
(with-upgradability ()
(defvar *lisp-interaction* t
@@ -3653,9 +3706,10 @@ if we are not called from a directly executable image."
;;;; -------------------------------------------------------------------------
;;;; run-program initially from xcvb-driver.
-(asdf/package:define-package :asdf/run-program
- (:recycle :asdf/run-program :xcvb-driver)
- (:use :asdf/common-lisp :asdf/utility :asdf/pathname :asdf/os :asdf/filesystem :asdf/stream)
+(uiop/package:define-package :uiop/run-program
+ (:nicknames :asdf/run-program)
+ (:recycle :uiop/run-program :asdf/run-program :xcvb-driver)
+ (:use :uiop/common-lisp :uiop/utility :uiop/pathname :uiop/os :uiop/filesystem :uiop/stream)
(:export
;;; Escaping the command invocation madness
#:easy-sh-character-p #:escape-sh-token #:escape-sh-command
@@ -3668,7 +3722,7 @@ if we are not called from a directly executable image."
#:subprocess-error
#:subprocess-error-code #:subprocess-error-command #:subprocess-error-process
))
-(in-package :asdf/run-program)
+(in-package :uiop/run-program)
;;;; ----- Escaping strings for the shell -----
@@ -4042,10 +4096,11 @@ Use ELEMENT-TYPE and EXTERNAL-FORMAT for the stream passed to the OUTPUT process
;;;; -------------------------------------------------------------------------
;;;; Support to build (compile and load) Lisp files
-(asdf/package:define-package :asdf/lisp-build
- (:recycle :asdf/interface :asdf :asdf/lisp-build)
- (:use :asdf/common-lisp :asdf/package :asdf/utility
- :asdf/os :asdf/pathname :asdf/filesystem :asdf/stream :asdf/image)
+(uiop/package:define-package :uiop/lisp-build
+ (:nicknames :asdf/lisp-build)
+ (:recycle :uiop/lisp-build :asdf/lisp-build :asdf)
+ (:use :uiop/common-lisp :uiop/package :uiop/utility
+ :uiop/os :uiop/pathname :uiop/filesystem :uiop/stream :uiop/image)
(:export
;; Variables
#:*compile-file-warnings-behaviour* #:*compile-file-failure-behaviour*
@@ -4063,12 +4118,13 @@ Use ELEMENT-TYPE and EXTERNAL-FORMAT for the stream passed to the OUTPUT process
#:reify-deferred-warnings #:reify-undefined-warning #:unreify-deferred-warnings
#:reset-deferred-warnings #:save-deferred-warnings #:check-deferred-warnings
#:with-saved-deferred-warnings #:warnings-file-p #:warnings-file-type #:*warnings-file-type*
+ #:enable-deferred-warnings-check #:disable-deferred-warnings-check
#:current-lisp-file-pathname #:load-pathname
#:lispize-pathname #:compile-file-type #:call-around-hook
#:compile-file* #:compile-file-pathname*
#:load* #:load-from-string #:combine-fasls)
(:intern #:defaults #:failure-p #:warnings-p #:s #:y #:body))
-(in-package :asdf/lisp-build)
+(in-package :uiop/lisp-build)
(with-upgradability ()
(defvar *compile-file-warnings-behaviour*
@@ -4233,7 +4289,7 @@ Note that ASDF ALWAYS raises an error if it fails to create an output file when
((or number character simple-string pathname) sexp)
(cons (cons (reify-simple-sexp (car sexp)) (reify-simple-sexp (cdr sexp))))
(simple-vector (vector (mapcar 'reify-simple-sexp (coerce sexp 'list))))))
-
+
(defun unreify-simple-sexp (sexp)
(etypecase sexp
((or symbol number character simple-string pathname) sexp)
@@ -4255,15 +4311,21 @@ Note that ASDF ALWAYS raises an error if it fails to create an output file when
(destructuring-bind (&key filename start-pos end-pos source) source-note
(ccl::make-source-note :filename filename :start-pos start-pos :end-pos end-pos
:source (unreify-source-note source)))))
+ (defun unsymbolify-function-name (name)
+ (if-let (setfed (gethash name ccl::%setf-function-name-inverses%))
+ `(setf ,setfed)
+ name))
+ (defun symbolify-function-name (name)
+ (if (and (consp name) (eq (first name) 'setf))
+ (let ((setfed (second name)))
+ (gethash setfed ccl::%setf-function-names%))
+ name))
(defun reify-function-name (function-name)
- (if-let (setfed (gethash function-name ccl::%setf-function-name-inverses%))
- `(setf ,setfed)
- function-name))
+ (let ((name (or (first function-name) ;; defun: extract the name
+ (first (second function-name))))) ;; defmethod: keep gf name, drop method specializers
+ (list name)))
(defun unreify-function-name (function-name)
- (if (and (consp function-name) (eq (first function-name) 'setf))
- (let ((setfed (second function-name)))
- (gethash setfed ccl::%setf-function-names%))
- function-name))
+ function-name)
(defun reify-deferred-warning (deferred-warning)
(with-accessors ((warning-type ccl::compiler-warning-warning-type)
(args ccl::compiler-warning-args)
@@ -4271,8 +4333,11 @@ Note that ASDF ALWAYS raises an error if it fails to create an output file when
(function-name ccl:compiler-warning-function-name)) deferred-warning
(list :warning-type warning-type :function-name (reify-function-name function-name)
:source-note (reify-source-note source-note)
- :args (destructuring-bind (fun . formals) args
- (cons (reify-function-name fun) formals)))))
+ :args (destructuring-bind (fun formals env) args
+ (declare (ignorable env))
+ (list (unsymbolify-function-name fun)
+ (mapcar (constantly nil) formals)
+ nil)))))
(defun unreify-deferred-warning (reified-deferred-warning)
(destructuring-bind (&key warning-type function-name source-note args)
reified-deferred-warning
@@ -4282,7 +4347,7 @@ Note that ASDF ALWAYS raises an error if it fails to create an output file when
:source-note (unreify-source-note source-note)
:warning-type warning-type
:args (destructuring-bind (fun . formals) args
- (cons (unreify-function-name fun) formals))))))
+ (cons (symbolify-function-name fun) formals))))))
#+(or cmu scl)
(defun reify-undefined-warning (warning)
;; Extracting undefined-warnings from the compilation-unit
@@ -4478,9 +4543,15 @@ possibly in a different process."
((:clozure :ccl) "ccl-warnings")
((:scl) "scl-warnings")))
- (defvar *warnings-file-type* (warnings-file-type)
+ (defvar *warnings-file-type* nil
"Type for warnings files")
+ (defun enable-deferred-warnings-check ()
+ (setf *warnings-file-type* (warnings-file-type)))
+
+ (defun disable-deferred-warnings-check ()
+ (setf *warnings-file-type* nil))
+
(defun warnings-file-p (file &optional implementation-type)
(if-let (type (if implementation-type
(warnings-file-type implementation-type)
@@ -4502,7 +4573,7 @@ possibly in a different process."
(unreify-deferred-warnings
(handler-case (safe-read-file-form file)
(error (c)
- (delete-file-if-exists file)
+ ;;(delete-file-if-exists file) ;; deleting forces rebuild but prevents debugging
(push c file-errors)
nil))))))
(dolist (error file-errors) (error error))
@@ -4711,10 +4782,11 @@ it will filter them appropriately."
;;;; ---------------------------------------------------------------------------
;;;; Generic support for configuration files
-(asdf/package:define-package :asdf/configuration
- (:recycle :asdf/configuration :asdf)
- (:use :asdf/common-lisp :asdf/utility
- :asdf/os :asdf/pathname :asdf/filesystem :asdf/stream :asdf/image)
+(uiop/package:define-package :uiop/configuration
+ (:nicknames :asdf/configuration)
+ (:recycle :uiop/configuration :asdf/configuration :asdf)
+ (:use :uiop/common-lisp :uiop/utility
+ :uiop/os :uiop/pathname :uiop/filesystem :uiop/stream :uiop/image)
(:export
#:get-folder-path
#:user-configuration-directories #:system-configuration-directories
@@ -4726,7 +4798,7 @@ it will filter them appropriately."
#:*clear-configuration-hook* #:clear-configuration #:register-clear-configuration-hook
#:resolve-location #:location-designator-p #:location-function-p #:*here-directory*
#:resolve-relative-location #:resolve-absolute-location #:upgrade-configuration))
-(in-package :asdf/configuration)
+(in-package :uiop/configuration)
(with-upgradability ()
(define-condition invalid-configuration ()
@@ -5008,17 +5080,18 @@ directive.")
;;;; -------------------------------------------------------------------------
;;; Hacks for backward-compatibility of the driver
-(asdf/package:define-package :asdf/backward-driver
- (:recycle :asdf/backward-driver :asdf)
- (:use :asdf/common-lisp :asdf/package :asdf/utility
- :asdf/pathname :asdf/stream :asdf/os :asdf/image
- :asdf/run-program :asdf/lisp-build
- :asdf/configuration)
+(uiop/package:define-package :uiop/backward-driver
+ (:nicknames :asdf/backward-driver)
+ (:recycle :uiop/backward-driver :asdf/backward-driver :asdf)
+ (:use :uiop/common-lisp :uiop/package :uiop/utility
+ :uiop/pathname :uiop/stream :uiop/os :uiop/image
+ :uiop/run-program :uiop/lisp-build
+ :uiop/configuration)
(:export
#:coerce-pathname #:component-name-to-pathname-components
#+(or ecl mkcl) #:compile-file-keeping-object
))
-(in-package :asdf/backward-driver)
+(in-package :uiop/backward-driver)
;;;; Backward compatibility with various pathname functions.
@@ -5048,19 +5121,19 @@ directive.")
;;;; ---------------------------------------------------------------------------
;;;; Re-export all the functionality in asdf/driver
-(asdf/package:define-package :asdf/driver
- (:nicknames :asdf-driver :asdf-utils)
- (:use :asdf/common-lisp :asdf/package :asdf/utility
- :asdf/os :asdf/pathname :asdf/stream :asdf/filesystem :asdf/image
- :asdf/run-program :asdf/lisp-build
- :asdf/configuration :asdf/backward-driver)
+(uiop/package:define-package :uiop/driver
+ (:nicknames :uiop :asdf/driver :asdf-driver :asdf-utils)
+ (:use :uiop/common-lisp :uiop/package :uiop/utility
+ :uiop/os :uiop/pathname :uiop/stream :uiop/filesystem :uiop/image
+ :uiop/run-program :uiop/lisp-build
+ :uiop/configuration :uiop/backward-driver)
(:reexport
;; NB: excluding asdf/common-lisp
;; which include all of CL with compatibility modifications on select platforms.
- :asdf/package :asdf/utility
- :asdf/os :asdf/pathname :asdf/stream :asdf/filesystem :asdf/image
- :asdf/run-program :asdf/lisp-build
- :asdf/configuration :asdf/backward-driver))
+ :uiop/package :uiop/utility
+ :uiop/os :uiop/pathname :uiop/stream :uiop/filesystem :uiop/image
+ :uiop/run-program :uiop/lisp-build
+ :uiop/configuration :uiop/backward-driver))
;;;; -------------------------------------------------------------------------
;;;; Handle upgrade as forward- and backward-compatibly as possible
;; See https://bugs.launchpad.net/asdf/+bug/485687
@@ -5115,7 +5188,7 @@ You can compare this string with e.g.: (ASDF:VERSION-SATISFIES (ASDF:ASDF-VERSIO
;; "3.4.5.67" would be a development version in the official upstream of 3.4.5.
;; "3.4.5.0.8" would be your eighth local modification of official release 3.4.5
;; "3.4.5.67.8" would be your eighth local modification of development version 3.4.5.67
- (asdf-version "2.30")
+ (asdf-version "2.32")
(existing-version (asdf-version)))
(setf *asdf-version* asdf-version)
(when (and existing-version (not (equal asdf-version existing-version)))
@@ -5182,16 +5255,11 @@ You can compare this string with e.g.: (ASDF:VERSION-SATISFIES (ASDF:ASDF-VERSIO
(unless (equal old-version new-version)
(push new-version *previous-asdf-versions*)
(when old-version
- (cond
- ((version-compatible-p new-version old-version)
- (asdf-message (compatfmt "~&~@<; ~@;Upgraded ASDF from version ~A to version ~A~@:>~%")
- old-version new-version))
- ((version-compatible-p old-version new-version)
- (warn (compatfmt "~&~@<; ~@;Downgraded ASDF from version ~A to version ~A~@:>~%")
- old-version new-version))
- (t
- (asdf-message (compatfmt "~&~@<; ~@;Changed ASDF from version ~A to incompatible version ~A~@:>~%")
- old-version new-version)))
+ (if (version<= new-version old-version)
+ (error (compatfmt "~&~@<; ~@;Downgraded ASDF from version ~A to version ~A~@:>~%")
+ old-version new-version)
+ (asdf-message (compatfmt "~&~@<; ~@;Upgraded ASDF from version ~A to version ~A~@:>~%")
+ old-version new-version))
(call-functions (reverse *post-upgrade-cleanup-hook*))
t))))
@@ -5200,7 +5268,7 @@ You can compare this string with e.g.: (ASDF:VERSION-SATISFIES (ASDF:ASDF-VERSIO
We need do that before we operate on anything that may possibly depend on ASDF."
(let ((*load-print* nil)
(*compile-print* nil))
- (handler-bind (((or style-warning warning) #'muffle-warning))
+ (handler-bind (((or style-warning) #'muffle-warning))
(symbol-call :asdf :load-system :asdf :verbose nil))))
(register-hook-function '*post-upgrade-cleanup-hook* 'upgrade-configuration))
@@ -5219,7 +5287,8 @@ You can compare this string with e.g.: (ASDF:VERSION-SATISFIES (ASDF:ASDF-VERSIO
#:file-component
#:source-file #:c-source-file #:java-source-file
#:static-file #:doc-file #:html-file
- #:source-file-type ;; backward-compatibility
+ #:file-type
+ #:source-file-type #:source-file-explicit-type ;; backward-compatibility
#:component-in-order-to #:component-sibling-dependencies
#:component-if-feature #:around-compile-hook
#:component-description #:component-long-description
@@ -5350,7 +5419,8 @@ another pathname in a degenerate way."))
(defclass file-component (child-component)
((type :accessor file-type :initarg :type))) ; no default
(defclass source-file (file-component)
- ((type :initform nil))) ;; NB: many systems have come to rely on this default.
+ ((type :accessor source-file-explicit-type ;; backward-compatibility
+ :initform nil))) ;; NB: many systems have come to rely on this default.
(defclass c-source-file (source-file)
((type :initform "c")))
(defclass java-source-file (source-file)
@@ -5627,13 +5697,13 @@ in which the system specification (.asd file) is located."
(setf (gethash key *asdf-cache*) value-list)
value-list)))
- (defun consult-asdf-cache (key thunk)
+ (defun consult-asdf-cache (key &optional thunk)
(if *asdf-cache*
(multiple-value-bind (results foundp) (gethash key *asdf-cache*)
(if foundp
(apply 'values results)
- (set-asdf-cache-entry key (multiple-value-list (funcall thunk)))))
- (funcall thunk)))
+ (set-asdf-cache-entry key (multiple-value-list (call-function thunk)))))
+ (call-function thunk)))
(defmacro do-asdf-cache (key &body body)
`(consult-asdf-cache ,key #'(lambda () ,@body)))
@@ -5666,7 +5736,7 @@ in which the system specification (.asd file) is located."
:asdf/component :asdf/system :asdf/cache)
(:export
#:remove-entry-from-registry #:coerce-entry-to-directory
- #:coerce-name #:primary-system-name
+ #:coerce-name #:primary-system-name #:coerce-filename
#:find-system #:locate-system #:load-asd #:with-system-definitions
#:system-registered-p #:register-system #:registered-systems #:clear-system #:map-systems
#:system-definition-error #:missing-component #:missing-requires #:missing-parent
@@ -5728,6 +5798,9 @@ in which the system specification (.asd file) is located."
;; the first of the slash-separated components.
(first (split-string (coerce-name name) :separator "/")))
+ (defun coerce-filename (name)
+ (frob-substrings (coerce-name name) '("/" ":" "\\") "--"))
+
(defvar *defined-systems* (make-hash-table :test 'equal)
"This is a hash table whose keys are strings, being the
names of the systems, and whose values are pairs, the first
@@ -5891,6 +5964,25 @@ Going forward, we recommend new users should be using the source-registry.
(list new)
(subseq *central-registry* (1+ position))))))))))
+ (defvar *preloaded-systems* (make-hash-table :test 'equal))
+
+ (defun make-preloaded-system (name keys)
+ (apply 'make-instance (getf keys :class 'system)
+ :name name :source-file (getf keys :source-file)
+ (remove-plist-keys '(:class :name :source-file) keys)))
+
+ (defun sysdef-preloaded-system-search (requested)
+ (let ((name (coerce-name requested)))
+ (multiple-value-bind (keys foundp) (gethash name *preloaded-systems*)
+ (when foundp
+ (make-preloaded-system name keys)))))
+
+ (defun register-preloaded-system (system-name &rest keys)
+ (setf (gethash (coerce-name system-name) *preloaded-systems*) keys))
+
+ (register-preloaded-system "asdf" :version *asdf-version*)
+ (register-preloaded-system "asdf-driver" :version *asdf-version*)
+
(defmethod find-system ((name null) &optional (error-p t))
(declare (ignorable name))
(when error-p
@@ -5912,6 +6004,12 @@ Going forward, we recommend new users should be using the source-registry.
(let ((*systems-being-defined* (make-hash-table :test 'equal)))
(call-with-asdf-cache thunk))))
+ (defun clear-systems-being-defined ()
+ (when *systems-being-defined*
+ (clrhash *systems-being-defined*)))
+
+ (register-hook-function '*post-upgrade-cleanup-hook* 'clear-systems-being-defined)
+
(defmacro with-system-definitions ((&optional) &body body)
`(call-with-system-definitions #'(lambda () ,@body)))
@@ -5940,6 +6038,46 @@ Going forward, we recommend new users should be using the source-registry.
(with-muffled-loader-conditions ()
(load* pathname :external-format external-format)))))))
+ (defvar *old-asdf-systems* (make-hash-table :test 'equal))
+
+ (defun check-not-old-asdf-system (name pathname)
+ (or (not (equal name "asdf"))
+ (null pathname)
+ (let* ((version-pathname (subpathname pathname "version.lisp-expr"))
+ (version (and (probe-file* version-pathname :truename nil)
+ (read-file-form version-pathname)))
+ (old-version (asdf-version)))
+ (or (version<= old-version version)
+ (let ((old-pathname
+ (if-let (pair (system-registered-p "asdf"))
+ (system-source-file (cdr pair))))
+ (key (list pathname old-version)))
+ (unless (gethash key *old-asdf-systems*)
+ (setf (gethash key *old-asdf-systems*) t)
+ (warn "~@<~
+ You are using ASDF version ~A ~:[(probably from (require \"asdf\") ~
+ or loaded by quicklisp)~;from ~:*~S~] and have an older version of ASDF ~
+ ~:[(and older than 2.27 at that)~;~:*~A~] registered at ~S. ~
+ Having an ASDF installed and registered is the normal way of configuring ASDF to upgrade itself, ~
+ and having an old version registered is a configuration error. ~
+ ASDF will ignore this configured system rather than downgrade itself. ~
+ In the future, you may want to either: ~
+ (a) upgrade this configured ASDF to a newer version, ~
+ (b) install a newer ASDF and register it in front of the former in your configuration, or ~
+ (c) uninstall or unregister this and any other old version of ASDF from your configuration. ~
+ Note that the older ASDF might be registered implicitly through configuration inherited ~
+ from your system installation, in which case you might have to specify ~
+ :ignore-inherited-configuration in your in your ~~/.config/common-lisp/source-registry.conf ~
+ or other source-registry configuration file, environment variable or lisp parameter. ~
+ Indeed, a likely offender is an obsolete version of the cl-asdf debian or ubuntu package, ~
+ that you might want to upgrade (if a recent enough version is available) ~
+ or else remove altogether (since most implementations ship with a recent asdf); ~
+ if you lack the system administration rights to upgrade or remove this package, ~
+ then you might indeed want to either install and register a more recent version, ~
+ or use :ignore-inherited-configuration to avoid registering the old one. ~
+ Please consult ASDF documentation and/or experts.~@:>~%"
+ old-version old-pathname version pathname)))))))
+
(defun locate-system (name)
"Given a system NAME designator, try to locate where to load the system from.
Returns five values: FOUNDP FOUND-SYSTEM PATHNAME PREVIOUS PREVIOUS-TIME
@@ -5957,12 +6095,20 @@ PREVIOUS-TIME when not null is the time at which the PREVIOUS system was loaded.
(previous-time (car in-memory))
(found (search-for-system-definition name))
(found-system (and (typep found 'system) found))
- (pathname (or (and (typep found '(or pathname string)) (pathname found))
- (and found-system (system-source-file found-system))
- (and previous (system-source-file previous))))
- (pathname (ensure-pathname (resolve-symlinks* pathname) :want-absolute t))
+ (pathname (ensure-pathname
+ (or (and (typep found '(or pathname string)) (pathname found))
+ (and found-system (system-source-file found-system))
+ (and previous (system-source-file previous)))
+ :want-absolute t :resolve-symlinks *resolve-symlinks*))
(foundp (and (or found-system pathname previous) t)))
(check-type found (or null pathname system))
+ (unless (check-not-old-asdf-system name pathname)
+ (cond
+ (previous (setf found nil pathname nil))
+ (t
+ (setf found (sysdef-preloaded-system-search "asdf"))
+ (assert (typep found 'system))
+ (setf found-system found pathname nil))))
(values foundp found-system pathname previous previous-time)))
(defmethod find-system ((name string) &optional (error-p t))
@@ -5988,7 +6134,7 @@ PREVIOUS-TIME when not null is the time at which the PREVIOUS system was loaded.
(translate-logical-pathname pathname)
(translate-logical-pathname previous-pathname))))
(stamp<= stamp previous-time))))))
- ;; only load when it's a pathname that is different or has newer content
+ ;; only load when it's a pathname that is different or has newer content, and not an old asdf
(load-asd pathname :name name)))
(let ((in-memory (system-registered-p name))) ; try again after loading from disk if needed
(return
@@ -6002,21 +6148,7 @@ PREVIOUS-TIME when not null is the time at which the PREVIOUS system was loaded.
(reinitialize-source-registry-and-retry ()
:report (lambda (s)
(format s (compatfmt "~@<Retry finding system ~A after reinitializing the source-registry.~@:>") name))
- (initialize-source-registry))))))
-
- (defvar *preloaded-systems* (make-hash-table :test 'equal))
-
- (defun sysdef-preloaded-system-search (requested)
- (let ((name (coerce-name requested)))
- (multiple-value-bind (keys foundp) (gethash name *preloaded-systems*)
- (when foundp
- (apply 'make-instance 'system :name name :source-file (getf keys :source-file) keys)))))
-
- (defun register-preloaded-system (system-name &rest keys)
- (setf (gethash (coerce-name system-name) *preloaded-systems*) keys))
-
- (register-preloaded-system "asdf" :version *asdf-version*)
- (register-preloaded-system "asdf-driver" :version *asdf-version*))
+ (initialize-source-registry)))))))
;;;; -------------------------------------------------------------------------
;;;; Finding components
@@ -6152,15 +6284,13 @@ PREVIOUS-TIME when not null is the time at which the PREVIOUS system was loaded.
;;;; Operations
(asdf/package:define-package :asdf/operation
- (:recycle :asdf/operation :asdf)
+ (:recycle :asdf/operation :asdf/action :asdf) ;; asdf/action for FEATURE pre 2.31.5.
(:use :asdf/common-lisp :asdf/driver :asdf/upgrade)
(:export
#:operation
#:operation-original-initargs ;; backward-compatibility only. DO NOT USE.
#:build-op ;; THE generic operation
- #:*operations*
- #:make-operation
- #:find-operation))
+ #:*operations* #:make-operation #:find-operation #:feature))
(in-package :asdf/operation)
;;; Operation Classes
@@ -6202,7 +6332,10 @@ PREVIOUS-TIME when not null is the time at which the PREVIOUS system was loaded.
(declare (ignorable context))
spec)
(defmethod find-operation (context (spec symbol))
- (apply 'make-operation spec (operation-original-initargs context)))
+ (unless (member spec '(nil feature))
+ ;; NIL designates itself, i.e. absence of operation
+ ;; FEATURE is the ASDF1 misfeature that comes with IF-COMPONENT-DEP-FAILS
+ (apply 'make-operation spec (operation-original-initargs context))))
(defmethod operation-original-initargs ((context symbol))
(declare (ignorable context))
nil)
@@ -6226,7 +6359,7 @@ PREVIOUS-TIME when not null is the time at which the PREVIOUS system was loaded.
#:input-files #:output-files #:output-file #:operation-done-p
#:action-status #:action-stamp #:action-done-p
#:component-operation-time #:mark-operation-done #:compute-action-stamp
- #:perform #:perform-with-restarts #:retry #:accept #:feature
+ #:perform #:perform-with-restarts #:retry #:accept
#:traverse-actions #:traverse-sub-actions #:required-components ;; in plan
#:action-path #:find-action #:stamp #:done-p))
(in-package :asdf/action)
@@ -6305,17 +6438,19 @@ You can put together sentences using this phrase."))
"Returns a list of dependencies needed by the component to perform
the operation. A dependency has one of the following forms:
- (<operation> <component>*), where <operation> is a class
- designator and each <component> is a component
- designator, which means that the component depends on
+ (<operation> <component>*), where <operation> is an operation designator
+ with respect to FIND-OPERATION in the context of the OPERATION argument,
+ and each <component> is a component designator with respect to
+ FIND-COMPONENT in the context of the COMPONENT argument,
+ and means that the component depends on
<operation> having been performed on each <component>; or
(FEATURE <feature>), which means that the component depends
- on <feature>'s presence in *FEATURES*.
+ on the <feature> expression satisfying FEATUREP.
+ (This is DEPRECATED -- use :IF-FEATURE instead.)
Methods specialized on subclasses of existing component types
- should usually append the results of CALL-NEXT-METHOD to the
- list."))
+ should usually append the results of CALL-NEXT-METHOD to the list."))
(defgeneric component-self-dependencies (operation component))
(define-convenience-action-methods component-depends-on (operation component))
(define-convenience-action-methods component-self-dependencies (operation component))
@@ -6520,7 +6655,8 @@ in some previous image, or T if it needs to be done.")
(:recycle :asdf/lisp-action :asdf)
(:intern #:proclamations #:flags)
(:use :asdf/common-lisp :asdf/driver :asdf/upgrade
- :asdf/cache :asdf/component :asdf/system :asdf/find-component :asdf/operation :asdf/action)
+ :asdf/cache :asdf/component :asdf/system :asdf/find-component :asdf/find-system
+ :asdf/operation :asdf/action)
(:export
#:try-recompiling
#:cl-source-file #:cl-source-file.cl #:cl-source-file.lsp
@@ -6621,7 +6757,7 @@ in some previous image, or T if it needs to be done.")
"~/asdf-action::format-action/" (list (cons o c))))))
(defun report-file-p (f)
- (equal (pathname-type f) "build-report"))
+ (equalp (pathname-type f) "build-report"))
(defun perform-lisp-warnings-check (o c)
(let* ((expected-warnings-files (remove-if-not #'warnings-file-p (input-files o c)))
(actual-warnings-files (loop :for w :in expected-warnings-files
@@ -6674,7 +6810,7 @@ in some previous image, or T if it needs to be done.")
(defmethod output-files ((o compile-op) (c system))
(when (and *warnings-file-type* (not (builtin-system-p c)))
(if-let ((pathname (component-pathname c)))
- (list (subpathname pathname (component-name c) :type "build-report"))))))
+ (list (subpathname pathname (coerce-filename c) :type "build-report"))))))
;;; load-op
(with-upgradability ()
@@ -6771,6 +6907,7 @@ in some previous image, or T if it needs to be done.")
(declare (ignorable o))
`((load-op ,c) ,@(call-next-method))))
+
;;;; -------------------------------------------------------------------------
;;;; Plan
@@ -6945,11 +7082,12 @@ the action of OPERATION on COMPONENT in the PLAN"))
(with-upgradability ()
(defun map-direct-dependencies (operation component fun)
(loop* :for (dep-o-spec . dep-c-specs) :in (component-depends-on operation component)
- :unless (eq dep-o-spec 'feature) ;; avoid the "FEATURE" misfeature
- :do (loop :with dep-o = (find-operation operation dep-o-spec)
- :for dep-c-spec :in dep-c-specs
- :for dep-c = (resolve-dependency-spec component dep-c-spec)
- :do (funcall fun dep-o dep-c))))
+ :for dep-o = (find-operation operation dep-o-spec)
+ :when dep-o
+ :do (loop :for dep-c-spec :in dep-c-specs
+ :for dep-c = (and dep-c-spec (resolve-dependency-spec component dep-c-spec))
+ :when dep-c
+ :do (funcall fun dep-o dep-c))))
(defun reduce-direct-dependencies (operation component combinator seed)
(map-direct-dependencies
@@ -7230,30 +7368,9 @@ processed in order by OPERATE."))
(in-package :asdf/operate)
(with-upgradability ()
- (defgeneric* (operate) (operation component &key &allow-other-keys))
- (define-convenience-action-methods
- operate (operation component &key)
- :operation-initargs t ;; backward-compatibility with ASDF1. Yuck.
- :if-no-component (error 'missing-component :requires component))
-
- (defvar *systems-being-operated* nil
- "A boolean indicating that some systems are being operated on")
-
- (defmethod operate :around (operation component
- &key verbose
- (on-warnings *compile-file-warnings-behaviour*)
- (on-failure *compile-file-failure-behaviour*) &allow-other-keys)
- (declare (ignorable operation component))
- ;; Setup proper bindings around any operate call.
- (with-system-definitions ()
- (let* ((*verbose-out* (and verbose *standard-output*))
- (*compile-file-warnings-behaviour* on-warnings)
- (*compile-file-failure-behaviour* on-failure))
- (call-next-method))))
-
- (defmethod operate ((operation operation) (component component)
- &rest args &key version &allow-other-keys)
- "Operate does three things:
+ (defgeneric* (operate) (operation component &key &allow-other-keys)
+ (:documentation
+ "Operate does three things:
1. It creates an instance of OPERATION-CLASS using any keyword parameters as initargs.
2. It finds the asdf-system specified by SYSTEM (possibly loading it from disk).
@@ -7271,30 +7388,60 @@ The :FORCE or :FORCE-NOT argument to OPERATE can be:
without recursively forcing the other systems we depend on.
:ALL to force all systems including other systems we depend on to be rebuilt (resp. not).
(SYSTEM1 SYSTEM2 ... SYSTEMN) to force systems named in a given list
-:FORCE has precedence over :FORCE-NOT; builtin systems cannot be forced."
- (let* (;; I'd like to remove-plist-keys :force :force-not :verbose,
- ;; but swank.asd relies on :force (!).
- (systems-being-operated *systems-being-operated*)
+:FORCE has precedence over :FORCE-NOT; builtin systems cannot be forced."))
+
+ (define-convenience-action-methods
+ operate (operation component &key)
+ ;; I'd like to at least remove-plist-keys :force :force-not :verbose,
+ ;; but swank.asd relies on :force (!).
+ :operation-initargs t ;; backward-compatibility with ASDF1. Yuck.
+ :if-no-component (error 'missing-component :requires component))
+
+ (defvar *systems-being-operated* nil
+ "A boolean indicating that some systems are being operated on")
+
+ (defmethod operate :around (operation component &rest keys
+ &key verbose
+ (on-warnings *compile-file-warnings-behaviour*)
+ (on-failure *compile-file-failure-behaviour*) &allow-other-keys)
+ (declare (ignorable operation component))
+ (let* ((systems-being-operated *systems-being-operated*)
(*systems-being-operated* (or systems-being-operated (make-hash-table :test 'equal)))
- (system (component-system component)))
- (setf (gethash (coerce-name system) *systems-being-operated*) system)
- (unless (version-satisfies component version)
- (error 'missing-component-of-version :requires component :version version))
+ (operation-name (reify-symbol (etypecase operation
+ (operation (type-of operation))
+ (symbol operation))))
+ (component-path (typecase component
+ (component (component-find-path component))
+ (t component))))
;; Before we operate on any system, make sure ASDF is up-to-date,
;; for if an upgrade is ever attempted at any later time, there may be BIG trouble.
(unless systems-being-operated
- (let ((operation-name (reify-symbol (type-of operation)))
- (component-path (component-find-path component)))
- (when (upgrade-asdf)
- ;; If we were upgraded, restart OPERATE the hardest of ways, for
- ;; its function may have been redefined, its symbol uninterned, its package deleted.
- (return-from operate
- (apply (find-symbol* 'operate :asdf)
- (unreify-symbol operation-name)
- component-path args)))))
- (let ((plan (apply 'traverse operation system args)))
- (perform-plan plan)
- (values operation plan))))
+ (when (upgrade-asdf)
+ ;; If we were upgraded, restart OPERATE the hardest of ways, for
+ ;; its function may have been redefined, its symbol uninterned, its package deleted.
+ (return-from operate
+ (apply (find-symbol* 'operate :asdf)
+ (unreify-symbol operation-name)
+ component-path keys))))
+ ;; Setup proper bindings around any operate call.
+ (with-system-definitions ()
+ (let* ((*verbose-out* (and verbose *standard-output*))
+ (*compile-file-warnings-behaviour* on-warnings)
+ (*compile-file-failure-behaviour* on-failure))
+ (call-next-method)))))
+
+ (defmethod operate :before ((operation operation) (component component)
+ &key version &allow-other-keys)
+ (let ((system (component-system component)))
+ (setf (gethash (coerce-name system) *systems-being-operated*) system))
+ (unless (version-satisfies component version)
+ (error 'missing-component-of-version :requires component :version version)))
+
+ (defmethod operate ((operation operation) (component component)
+ &rest keys &key &allow-other-keys)
+ (let ((plan (apply 'traverse operation component keys)))
+ (perform-plan plan)
+ (values operation plan)))
(defun oos (operation component &rest args &key &allow-other-keys)
(apply 'operate operation component args))
@@ -7354,18 +7501,54 @@ for how to load or compile stuff")
(defun require-system (s &rest keys &key &allow-other-keys)
(apply 'load-system s :force-not (already-loaded-systems) keys))
+ (defvar *modules-being-required* nil)
+
+ (defclass require-system (system)
+ ((module :initarg :module :initform nil :accessor required-module)))
+
+ (defmethod perform ((o compile-op) (c require-system))
+ (declare (ignorable o c))
+ nil)
+
+ (defmethod perform ((o load-op) (s require-system))
+ (declare (ignorable o))
+ (let* ((module (or (required-module s) (coerce-name s)))
+ (*modules-being-required* (cons module *modules-being-required*)))
+ (assert (null (component-children s)))
+ (require module)))
+
+ (defmethod resolve-dependency-combination (component (combinator (eql :require)) arguments)
+ (declare (ignorable component combinator))
+ (unless (length=n-p arguments 1)
+ (error (compatfmt "~@<Bad dependency ~S for ~S. ~S takes only one argument~@:>")
+ (cons combinator arguments) component combinator))
+ (let* ((module (car arguments))
+ (name (string-downcase module))
+ (system (find-system name nil)))
+ (assert module)
+ ;;(unless (typep system '(or null require-system))
+ ;; (warn "~S depends on ~S but ~S is registered as a ~S"
+ ;; component (cons combinator arguments) module (type-of system)))
+ (or system (let ((system (make-instance 'require-system :name name)))
+ (register-system system)
+ system))))
+
(defun module-provide-asdf (name)
- (handler-bind
- ((style-warning #'muffle-warning)
- (missing-component (constantly nil))
- (error #'(lambda (e)
- (format *error-output* (compatfmt "~@<ASDF could not load ~(~A~) because ~A.~@:>~%")
- name e))))
- (let ((*verbose-out* (make-broadcast-stream))
- (system (find-system (string-downcase name) nil)))
- (when system
- (require-system system :verbose nil)
- t)))))
+ (let ((module (string-downcase name)))
+ (unless (member module *modules-being-required* :test 'equal)
+ (let ((*modules-being-required* (cons module *modules-being-required*))
+ #+sbcl (sb-impl::*requiring* (remove module sb-impl::*requiring* :test 'equal)))
+ (handler-bind
+ ((style-warning #'muffle-warning)
+ (missing-component (constantly nil))
+ (error #'(lambda (e)
+ (format *error-output* (compatfmt "~@<ASDF could not load ~(~A~) because ~A.~@:>~%")
+ name e))))
+ (let ((*verbose-out* (make-broadcast-stream)))
+ (let ((system (find-system module nil)))
+ (when system
+ (require-system system :verbose nil)
+ t)))))))))
;;;; Some upgrade magic
@@ -7645,27 +7828,27 @@ effectively disabling the output translation facility."
(initialize-output-translations)))
(defun* (apply-output-translations) (path)
- #+cormanlisp (resolve-symlinks* path) #-cormanlisp
- (etypecase path
- (logical-pathname
- path)
- ((or pathname string)
- (ensure-output-translations)
- (loop* :with p = (resolve-symlinks* path)
- :for (source destination) :in (car *output-translations*)
- :for root = (when (or (eq source t)
- (and (pathnamep source)
- (not (absolute-pathname-p source))))
- (pathname-root p))
- :for absolute-source = (cond
- ((eq source t) (wilden root))
- (root (merge-pathnames* source root))
- (t source))
- :when (or (eq source t) (pathname-match-p p absolute-source))
- :return (translate-pathname* p absolute-source destination root source)
- :finally (return p)))))
+ (etypecase path
+ (logical-pathname
+ path)
+ ((or pathname string)
+ (ensure-output-translations)
+ (loop* :with p = (resolve-symlinks* path)
+ :for (source destination) :in (car *output-translations*)
+ :for root = (when (or (eq source t)
+ (and (pathnamep source)
+ (not (absolute-pathname-p source))))
+ (pathname-root p))
+ :for absolute-source = (cond
+ ((eq source t) (wilden root))
+ (root (merge-pathnames* source root))
+ (t source))
+ :when (or (eq source t) (pathname-match-p p absolute-source))
+ :return (translate-pathname* p absolute-source destination root source)
+ :finally (return p)))))
;; Hook into asdf/driver's output-translation mechanism
+ #-cormanlisp
(setf *output-translation-function* 'apply-output-translations)
#+abcl
@@ -8155,8 +8338,9 @@ system names to pathnames of .asd files")
(or (loop :for symbol :in (list
type
(find-symbol* type *package* nil)
- (find-symbol* type :asdf/interface nil))
- :for class = (and symbol (find-class* symbol nil))
+ (find-symbol* type :asdf/interface nil)
+ (and (stringp type) (safe-read-from-string type :package :asdf/interface)))
+ :for class = (and symbol (symbolp symbol) (find-class* symbol nil))
:when (and class
(#-cormanlisp subtypep #+cormanlisp cl::subclassp
class (find-class* 'component)))
@@ -8174,7 +8358,7 @@ system names to pathnames of .asd files")
(define-condition duplicate-names (system-definition-error)
((name :initarg :name :reader duplicate-names-name))
(:report (lambda (c s)
- (format s (compatfmt "~@<Error while defining system: multiple components are given same name ~A~@:>")
+ (format s (compatfmt "~@<Error while defining system: multiple components are given same name ~S~@:>")
(duplicate-names-name c)))))
(defun sysdef-error-component (msg type name value)
@@ -8194,18 +8378,34 @@ system names to pathnames of .asd files")
(sysdef-error-component ":components must be NIL or a list of components."
type name components)))
- (defun normalize-version (form pathname)
- (etypecase form
- ((or string null) form)
- (real
- (asdf-message "Invalid use of real number ~D as :version in ~S. Substituting a string."
- form pathname)
- (format nil "~D" form)) ;; 1.0 is "1.0"
- (cons
- (ecase (first form)
- ((:read-file-form)
- (destructuring-bind (subpath &key (at 0)) (rest form)
- (safe-read-file-form (subpathname pathname subpath) :at at))))))))
+ (defun* (normalize-version) (form &key pathname component parent)
+ (labels ((invalid (&optional (continuation "using NIL instead"))
+ (warn (compatfmt "~@<Invalid :version specifier ~S~@[ for component ~S~]~@[ in ~S~]~@[ from file ~S~]~@[, ~A~]~@:>")
+ form component parent pathname continuation))
+ (invalid-parse (control &rest args)
+ (unless (builtin-system-p (find-component parent component))
+ (apply 'warn control args)
+ (invalid))))
+ (if-let (v (typecase form
+ ((or string null) form)
+ (real
+ (invalid "Substituting a string")
+ (format nil "~D" form)) ;; 1.0 becomes "1.0"
+ (cons
+ (case (first form)
+ ((:read-file-form)
+ (destructuring-bind (subpath &key (at 0)) (rest form)
+ (safe-read-file-form (subpathname pathname subpath) :at at :package :asdf-user)))
+ ((:read-file-line)
+ (destructuring-bind (subpath &key (at 0)) (rest form)
+ (read-file-lines (subpathname pathname subpath) :at at)))
+ (otherwise
+ (invalid))))
+ (t
+ (invalid))))
+ (if-let (pv (parse-version v #'invalid-parse))
+ (unparse-version pv)
+ (invalid))))))
;;; Main parsing function
@@ -8218,7 +8418,7 @@ system names to pathnames of .asd files")
;; remove-plist-keys form. important to keep them in sync
components pathname perform explain output-files operation-done-p
weakly-depends-on depends-on serial
- do-first if-component-dep-fails (version nil versionp)
+ do-first if-component-dep-fails version
;; list ends
&allow-other-keys) options
(declare (ignorable perform explain output-files operation-done-p builtin-system-p))
@@ -8249,13 +8449,10 @@ system names to pathnames of .asd files")
(apply 'reinitialize-instance component args)
(setf component (apply 'make-instance (class-for-type parent type) args)))
(component-pathname component) ; eagerly compute the absolute pathname
- (let ((sysdir (system-source-directory (component-system component)))) ;; requires the previous
+ (let ((sysfile (system-source-file (component-system component)))) ;; requires the previous
(when (and (typep component 'system) (not bspp))
- (setf (builtin-system-p component) (lisp-implementation-pathname-p sysdir)))
- (setf version (normalize-version version sysdir)))
- (when (and versionp version (not (parse-version version nil)))
- (warn (compatfmt "~@<Invalid version ~S for component ~S~@[ of ~S~]~@:>")
- version name parent))
+ (setf (builtin-system-p component) (lisp-implementation-pathname-p sysfile)))
+ (setf version (normalize-version version :component name :parent parent :pathname sysfile)))
;; Don't use the accessor: kluge to avoid upgrade issue on CCL 1.8.
;; A better fix is required.
(setf (slot-value component 'version) version)
@@ -8299,6 +8496,7 @@ system names to pathnames of .asd files")
(component-options (remove-plist-key :class options))
(defsystem-dependencies (loop :for spec :in defsystem-depends-on :collect
(resolve-dependency-spec nil spec))))
+ (setf (gethash name *systems-being-defined*) system)
(apply 'load-systems defsystem-dependencies)
;; We change-class AFTER we loaded the defsystem-depends-on
;; since the class might be defined as part of those.
@@ -8324,7 +8522,7 @@ system names to pathnames of .asd files")
(:export
#:bundle-op #:bundle-op-build-args #:bundle-type #:bundle-system #:bundle-pathname-type
#:fasl-op #:load-fasl-op #:lib-op #:dll-op #:binary-op
- #:monolithic-op #:monolithic-bundle-op #:direct-dependency-files
+ #:monolithic-op #:monolithic-bundle-op #:bundlable-file-p #:direct-dependency-files
#:monolithic-binary-op #:monolithic-fasl-op #:monolithic-lib-op #:monolithic-dll-op
#:program-op
#:compiled-file #:precompiled-system #:prebuilt-system
@@ -8458,7 +8656,7 @@ system names to pathnames of .asd files")
(unless name-suffix-p
(setf (slot-value instance 'name-suffix)
(unless (typep instance 'program-op)
- (if (operation-monolithic-p instance) ".all-systems" #-ecl ".system"))))
+ (if (operation-monolithic-p instance) "--all-systems" #-ecl "--system")))) ; . no good for Logical Pathnames
(when (typep instance 'monolithic-bundle-op)
(destructuring-bind (&rest original-initargs
&key lisp-files prologue-code epilogue-code
@@ -8483,10 +8681,10 @@ system names to pathnames of .asd files")
(defun bundlable-file-p (pathname)
(let ((type (pathname-type pathname)))
(declare (ignorable type))
- (or #+ecl (or (equal type (compile-file-type :type :object))
- (equal type (compile-file-type :type :static-library)))
- #+mkcl (equal type (compile-file-type :fasl-p nil))
- #+(or allegro clisp clozure cmu lispworks sbcl scl xcl) (equal type (compile-file-type)))))
+ (or #+ecl (or (equalp type (compile-file-type :type :object))
+ (equalp type (compile-file-type :type :static-library)))
+ #+mkcl (equalp type (compile-file-type :fasl-p nil))
+ #+(or allegro clisp clozure cmu lispworks sbcl scl xcl) (equalp type (compile-file-type)))))
(defgeneric* (trivial-system-p) (component))
@@ -8654,7 +8852,7 @@ system names to pathnames of .asd files")
(perform (find-operation o 'load-op) c))
(defmethod perform ((o load-fasl-op) (c compiled-file))
(perform (find-operation o 'load-op) c))
- (defmethod perform (o (c compiled-file))
+ (defmethod perform ((o operation) (c compiled-file))
(declare (ignorable o c))
nil))
@@ -8713,8 +8911,8 @@ system names to pathnames of .asd files")
#-(or ecl mkcl)
(defmethod perform ((o fasl-op) (c system))
(let* ((input-files (input-files o c))
- (fasl-files (remove (compile-file-type) input-files :key #'pathname-type :test-not #'string=))
- (non-fasl-files (remove (compile-file-type) input-files :key #'pathname-type :test #'string=))
+ (fasl-files (remove (compile-file-type) input-files :key #'pathname-type :test-not #'equalp))
+ (non-fasl-files (remove (compile-file-type) input-files :key #'pathname-type :test #'equalp))
(output-files (output-files o c))
(output-file (first output-files)))
(unless input-files (format t "WTF no input-files for ~S on ~S !???" o c))
@@ -8734,6 +8932,9 @@ system names to pathnames of .asd files")
(declare (ignorable o))
(bundle-output-files (find-operation o 'fasl-op) s))
+ (defmethod perform ((o load-op) (s precompiled-system))
+ (perform-lisp-load-fasl o s))
+
(defmethod component-depends-on ((o load-fasl-op) (s precompiled-system))
(declare (ignorable o))
`((load-op ,s) ,@(call-next-method))))
@@ -9091,11 +9292,13 @@ Please use ASDF-DRIVER:RUN-PROGRAM instead."
#:monolithic-load-compiled-concatenated-source-op
#:operation-monolithic-p
#:required-components
+ #:component-loaded-p
#:component #:parent-component #:child-component #:system #:module
#:file-component #:source-file #:c-source-file #:java-source-file
#:cl-source-file #:cl-source-file.cl #:cl-source-file.lsp
#:static-file #:doc-file #:html-file
+ #:file-type
#:source-file-type
#:component-children ; component accessors
@@ -9176,7 +9379,7 @@ Please use ASDF-DRIVER:RUN-PROGRAM instead."
#:apply-output-translations
#:compile-file*
#:compile-file-pathname*
- #:*warnings-file-type*
+ #:*warnings-file-type* #:enable-deferred-warnings-check #:disable-deferred-warnings-check
#:enable-asdf-binary-locations-compatibility
#:*default-source-registries*
#:*source-registry-parameter*
@@ -9239,11 +9442,12 @@ Please use ASDF-DRIVER:RUN-PROGRAM instead."
(setf #+ecl ext:*module-provider-functions* #+mkcl mk-ext::*module-provider-functions*
(loop :for f :in #+ecl ext:*module-provider-functions*
#+mkcl mk-ext::*module-provider-functions*
- :unless (eq f 'module-provide-asdf)
- :collect #'(lambda (name)
- (let ((l (multiple-value-list (funcall f name))))
- (and (first l) (register-pre-built-system (coerce-name name)))
- (values-list l)))))))
+ :collect
+ (if (eq f 'module-provide-asdf) f
+ #'(lambda (name)
+ (let ((l (multiple-value-list (funcall f name))))
+ (and (first l) (register-pre-built-system (coerce-name name)))
+ (values-list l))))))))
;;;; Done!
@@ -9262,6 +9466,3 @@ Please use ASDF-DRIVER:RUN-PROGRAM instead."
(asdf-message ";; ASDF, version ~a~%" (asdf-version)))
-;;; Local Variables:
-;;; mode: lisp
-;;; End:
-----------------------------------------------------------------------
Summary of changes:
src/contrib/asdf/asdf.lisp | 829 +++++++++++++++++++++++++++-----------------
1 files changed, 515 insertions(+), 314 deletions(-)
hooks/post-receive
--
CMU Common Lisp
1
0