This fixes the ANSI non-compliance passed down from early
CMUCL (1991-10-31). The bug was that FDEFINITION did not return the
same value as SYMBOL-FUNCTION for symbols (lp#799533). The fix is an
incompatible change but only affects encapsulated (e.g. TRACEd and
SP-PROFILE:PROFILEd) non-generic functions.
However, encapsulations belong to the definition (the name) and not to
the function associated with the name, so (SETF (FDEFINITION NAME) FN)
strips encapsulations from FN and keeps the encapsulations of NAME.
- SB-EXT:UNENCAPSULATED-FUNCTION was added.
- Encapsulated functions are printed as
#<FUNCTION FOO ENCAPSULATED>
or, if they have no proper name, as
#<FUNCTION FOO ENCAPSULATED {B1782332}>
This is the same as for unencapsulated functions except for the
additional " ENCAPSULATED".
- Unused slots were removed from SB-PROFILE:PROFILE-INFO.
- Since generic function identity is stable in face of encapsulation,
CLOS is largely unaffected by this change.
This allows removal of the coupling between dispatch functions of
SLOT-MAKUNBOUND-USING-CLASS and SLOT-BOUNDP-USING-CLASS.
Condition slots can be unbound; make the boundp and makunbound logic
explicit, and integrate it into the CLOS mechanisms.
Structure non-raw slots can also (rarely) be unbound, when a
by-order-of-arguments constructor is defined with the initialization
coming from an &AUX variable with no default. Integrate this
knowledge into the CLOS mechanisms, avoiding handling boundness of
slots in the code fragments that CLOS uses (while preserving existing
behaviour of the accessor functions defined by DEFSTRUCT.)
Add tests of various expected behaviours of SLOT-BOUNDP and friends.
These tests are not complete, given the number of different ways CLOS
can walk and optimize code and that instances of structures,
conditions and classes can be constructed, but they hopefully exercise
some previously-untested pathways.
As reported by Shinmera on #lisp, in CHANGE-CLASS, slots with
:INSTANCE allocation were being read correctly in the presence of
applicable non-standard SLOT-VALUE-USING-CLASS methods, but were being
written with a direct access to the slot vector even if the new class
had (SETF SLOT-VALUE-USING-CLASS) methods applicable.
The fix is to short-circuit the slot-value-using-class methods, rather
than execute them. The reason is not directly related to
CHANGE-CLASS, but rather the protocol for updating obsolete instances:
in order to fulfil that case, we must read and write an object's slots
at a lower-level than going through SLOT-VALUE-USING-CLASS, because
SLOT-VALUE-USING-CLASS will cause another obsolete instance trap. The
protocol is specified to support only :INSTANCE and :CLASS slots, so
if we impose a rule that the same methods must be applicable to the
old and new slots of the same name, our direct reads and writes will
have the same effect on the slot vectors as full protocol reads and
writes, preserving the illusion that an object is mutated in-place to
the new or updated class.
makeinfo complains if (some?) @ref node targets have colons in them.
Adjust docstrings.lisp to produce @anchor nodes without colons, and
rewrite explicit references accordingly.
The info reader cannot parse the generated index for cross-references
if anchors have newlines in them. Be more conservative about printing
anchor names, and also shorten the anchor name for methods by not
including the whole lambda list.
The @lw macro which we were using to try to break class precedence
lists appropriately broke, again. Remove it completely and use
@raggedright instead.
Include a version identifier in the @copying text for info format, as
otherwise the version number doesn't appear anywhere in the output.
Use a smaller font size, for fewer horrible linebreaks (since there
are fewer linebreaks in total)
Add a couple of index entries for deprecation conditions.
Change unbound slot marker to the unbound marker object, among the benefits
being that a slot intended to contain a symbol could accidentally have stored
SB-PCL::..UNBOUND-MARKER.. but should not store the unbound marker; and
comparison is 4 bytes shorter on x86-64, 3 bytes shorter on x86,
and on all others avoids a code header constant.
This change is nearly invisible, even to code using SB-PCL:+SLOT-UNBOUND+
as recommended in doc/manual/behond-ansi.texinfo. There are a few observable
differences which should not matter to production code:
1. (CAS (SLOT-VALUE obj 'slot) sb-pcl:+slot-unbound+ 'newval)
might return the unbound marker instead of a "genuine" object
in the language. This is fine - the only correct use of the CAS result
is to compare again the expected old value.
2. evaluating SB-PCL:+SLOT-UNBOUND+ at the REPL prints
"EVAL returned an unbound marker."
The test was inherited from CMUCL, and it's not clear why
that particular test for the unbound marker is sensible.
Arguably a valid fix would be silently allow '* become unbound,
and thus print "#<unbound marker {51}>" which would happen in any other
situation wherein an unbound symbol's value was inadvertently obtained.
Does not introduce any breaking reader or printer changes.
Adds an SB-UNICODE package that holds accessors for the internal
database and many Unicode standard algorithms.
Some Unicode-related tests will not pass on this commit because
the #\UNICODE1_[NAME] syntax is not recognized.
Squashed commit of the following:
commit 6d8f72f21c29d25986325cd4bcd19b7c195f196b
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed Jul 30 11:42:41 2014 -0500
Fixes compliance issues related to the BIDI class of unallocated codepoints
commit 601aee5ed52779f37e9d9e4c3f091062da73f0e5
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue Jul 29 16:55:28 2014 -0500
Adds test to ensure CL casing is one-to-one
commit 5232c20071254b61d32a82314a39f00c194f46e4
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue Jul 29 16:42:01 2014 -0500
Fixes typo that breaks the build
commit 56d5757689c1c36e82a7d5c0b0443015240e129d
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue Jul 29 16:36:22 2014 -0500
Adds age support
- Exports SB-UNICODE:AGE
- Modifies misc database
commit 42afd5ace1a8aaba75f3e47f4a4a004f0e34c9e9
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue Jul 29 13:07:48 2014 -0500
Adds block information
- Adds ORDERED-RANGES-POSITION
- Adds SB-UNICODE:CHAR-BLOCK
commit 1844ae409086d0fa61a324340c99158bc2137087
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue Jul 29 12:07:53 2014 -0500
Replaces membership tests with binary searches in target-unicode
commit e208231dc9716760670d30fccedc8e37dcec5083
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue Jul 29 10:50:01 2014 -0500
Adds unicode-1-name support
- Exports SB-UNICODE:UNICODE-1-NAME
- Allows specification of characters by Unicode 1 name with UNICODE1_ prefix
commit b881c531e10cd90fedd99f4e43c11807da578c6d
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Mon Jul 28 17:08:08 2014 -0500
Adds BIDI mirroring glyph support to further cl-unicode compatibility.
commit c56683490d2005cb29f945ba53e7eea296aa4e06
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Mon Jul 28 15:19:06 2014 -0500
Adds general PropList.txt support for cl-unicode and HEX-DIGIT-P.
- Exports PROPLIST-P
- Exports HEX-DIGIT-P
- Adds tests for the Proplist slurping.
- (proplist-p c :whitespace) -> :white-space,
and :other-default-ignorable -> :other-default-ignorable-code-point
commit 01ddeaeb7db2426b684c80337ad5b52f2f38d155
Merge: 39e51a8 39d0843
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Mon Jul 28 09:33:48 2014 -0500
Merge branch 'master' into unicode-algorithms
commit 39e51a8dac81472849a04db76c2ec786ba4a7ed9
Merge: e528868 80e9a6e
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed Jul 23 10:13:28 2014 -0500
Merge branch 'master' into unicode-algorithms
commit e5288682849ed64d29d29d48f4b946ad925d0637
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed Jul 23 10:12:00 2014 -0500
Gives U+1F5CF the name Unicode_Page
commit 4d45ce46c949a5e947e5d499d8d34eee490ea38c
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue Jul 22 15:42:38 2014 -0500
Clarifies documentation
commit 15750e5e0c9f58680eed7aca39f063bbd8004ae8
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue Jul 22 15:39:50 2014 -0500
Deals with the issues caused by U+1F5CF (PAGE)
We mignt not be exactly Unicode-conformant anymore.
commit 59f1000139a852dc8949c51aa6078929c36653dd
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue Jul 22 13:13:47 2014 -0500
Converts SBCL's Unicode database to use Unicode 7.0 data files
- Adds new scripts to target-unicode.lisp
- Adjusts parsing code in ucd.lisp to accound for newly-inserted spaces
- Updates data files
- There is a bug with name conversion. U+1F5CF (PAGE), a new character,
tries to have the same name as U+0C, which ANSI Cl says has to have the name
"Page".
Issue currently unresolved, causes tests to fail.
commit a9876e9a5fd9a2646de80d823b1d6e2939582ee1
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue Jul 22 10:49:27 2014 -0500
Updated defininion of case-ignorable for Unicode 7.0
commit 898da4d3cad5c0428af01d135304f2dfb74bfef4
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Mon Jul 21 15:35:24 2014 -0500
Adds MATH-P to SB-UNICODE
commit 326a2b4d5182d1fc3b367d9dbb4c4a1b7dd5c226
Merge: 6019f05 d12f538
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue Jul 15 13:57:29 2014 -0500
Merge branch 'master' into unicode-algorithms
commit 6019f05e8f36460acfb595b65659122f7c10e2c3
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Fri Jul 11 11:16:08 2014 -0500
Add Unicode casing tests
commit 041681637bbb9b611e933716c8a7cff0bce29161
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Fri Jul 11 11:15:42 2014 -0500
Fix the reader so that normalization tests pass
commit 5ae54f45fe338bc9f4e0048600a48cffbff84bdc
Merge: f38a831 fe1e638
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Fri Jul 11 09:36:30 2014 -0500
Merge branch 'master' into unicode-algorithms
Conflicts:
src/code/reader.lisp
src/code/target-char.lisp
commit f38a831a1b809cef8696cc0955410988e63264e5
Merge: 5623de6 8170663
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue Jul 1 07:25:02 2014 -0500
Merge branch 'master' into unicode-algorithms
Conflicts:
src/code/target-char.lisp
commit 5623de6a737c33e3548bbff095a4aa01bc0d44e1
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Thu Jun 5 13:25:15 2014 -0500
Minor formatting fix
commit d9eabf4ee6c1b373e665c4857326dc86a26e4a53
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed Jun 4 18:20:00 2014 -0500
Improves locale detection
commit 1b606fa2eab91b474faa2b13b6cf0dbf7b0f8839
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed Jun 4 17:30:13 2014 -0500
Adds locale detection to casing functions.
commit 440109752fe1ff6f04a9e587ab3a47b13e29ed1d
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed Jun 4 14:11:58 2014 -0500
Optimizes the normalizer a bit.
commit c36994d3c740e0f66f2f77b3fd0ffed0682f57f3
Merge: d624870 637119d
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed Jun 4 13:55:02 2014 -0500
Merge branch 'normalizing-reader' into unicode-algorithms
commit d624870aaf4e235ebbd999a14ffa6664807e8401
Merge: 1fe33e8 615be91
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed Jun 4 13:54:51 2014 -0500
Merge branch 'master' into unicode-algorithms
commit 637119d9a242ff5136c0ddc00b6f40bc61fa0ece
Merge: a5acc38 615be91
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed Jun 4 13:54:20 2014 -0500
Merge branch 'master' into normalizing-reader
Conflicts:
src/code/reader.lisp
commit a5acc38c0657ecfea821128805262e0e033c3367
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed Jun 4 12:40:15 2014 -0500
Adds READTABLE-NORMALIZATION to control whether the readtable normalizes strings.
commit 77ace120bb10b1826873920ee1707e9af4c6b2a6
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed Jun 4 11:49:18 2014 -0500
Makes the reader normalize unescaped symbols to NFKC before interning them.
Makes the printer print symbols that aren't NFKC in escapes.
commit 1fe33e8569536494176d977a0b5e86a10424b83e
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue Jun 3 10:12:56 2014 -0500
Optimizes normalization, fixes property tests
commit e78d05d138a08bc171af2e42f9ae8975b92efe25
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue Jun 3 08:58:40 2014 -0500
Adds Default_Ignorable detection
commit a9813ad037c037828323dc52835314327e9a7a1a
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Mon Jun 2 17:23:20 2014 -0500
Fixed broken documentation
commit cf261b0f5ed600d1b362694e86b76df11c68bea1
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Mon Jun 2 16:11:33 2014 -0500
Adds functions that detect confusable strings.
LIST-ALL-CONFUSABLES is implemented, but it's O($DEITYhelpus) for any
input with more than a few letters. Suggestions welcome.
commit bbf03ed4fc4da725729e4c64c3ff39d77948adfd
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Mon Jun 2 14:57:13 2014 -0500
Adds a union-find data stracture to hold the IDNA confusable sets.
commit d62e7aa621f20b7d0868adbcabc59d45e9964a90
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Fri May 30 14:41:03 2014 -0500
Rename DECIMAL-DIGIT for consitsency with the other digit functions.
commit 0a22348a7750a2a0b2c3781ead9c71588109cf44
Merge: a68b331 a42a2c6
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Fri May 30 12:14:31 2014 -0500
Merge branch 'master' into unicode-algorithms
commit a68b33153328bb3ccace22e838e2a7f9a60ed59f
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Fri May 30 10:38:23 2014 -0500
Adds proper language-independent casing support, fixes Greek final sigma.
commit cd4ff239c0de12f56fb181175d31e5918536a89e
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Thu May 29 16:18:58 2014 -0500
Use code-chars to work around broken build introduced in last commit.
commit 7d600068bdc6a7eb9750a8c010b9f0681528b708
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Thu May 29 16:12:02 2014 -0500
Adds handling for the Greek final sigma in word-final position.
commit 68a21aea9cd72b200f438a6aa8b13a64648b1c47
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Thu May 29 13:23:11 2014 -0500
Adds the greedy linebreaker.
commit 16befd034dcdc0af125be52e255e3fef17bfd7c3
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Thu May 29 11:17:58 2014 -0500
Adds the line break analyzer.
- Several tests removed from the testcases beacuse they conflict with
the rules in the standard. See any line in LineBreakTest.txt with a
comment starting in ### for details.
commit cb03fc5601093e09ce4a5db1a9002314a773bd13
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed May 28 13:53:16 2014 -0500
Adds the line break class property
commit 76312eaa777ee1141346b87178280f78e019263e
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed May 28 09:26:55 2014 -0500
Adds script property support.
commit 64400ab64d24fc04e9aa758f3d9ef74cddbe7e41
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue May 27 15:59:01 2014 -0500
Bugfix for the bugfix
commit 617c97a9ba372e64668a2ce9eba79de5e10e0cdf
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue May 27 15:26:17 2014 -0500
FIxes some collation bugs.
commit 2affc41e371f2820a07fe05fb480961b92e2365f
Merge: 9cebdb5 36efb16
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue May 27 13:39:51 2014 -0500
Merge branch 'plus-in-character-reader' into unicode-algorithms
commit 36efb163607e64386cd5bc65d1e22bad64d81ddc
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue May 27 13:37:49 2014 -0500
Makes codepoint parsing in #\ more general.
Unicode characters can be specified by codepoint with these forms
- #\U[codepoint]
- #\u[codepoint]
- #\U+[codepoint]
- #\u+[codepoint]
Codepoints are no longer restricted to being either 4 or 8 digits
long.
commit 9cebdb5351241c72afbe7c0589a12ffaea0ea082
Merge: 9389e10 8127fc9
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue May 27 13:33:04 2014 -0500
Merge branch 'master' into unicode-algorithms
commit 9389e10a410c5994a7c0926b2cd9eacdca60bac1
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue May 27 12:02:08 2014 -0500
Updated some docstrings
commit b452ef358cab9cac3aa6c812f4dd4cc763db54e3
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue May 27 11:39:45 2014 -0500
Adds functions that collate Unicode strings according to UTS #10.
commit 71697d577937ceb405547807067df13200cd1e00
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Fri May 23 17:11:51 2014 -0500
Adds code to read the dumped collation database.
Collation algorithm not yet implemented.
commit d7c5f8e6530682158e3002de9f2e089152bdbc4c
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Fri May 23 12:36:49 2014 -0500
Add code to output the collation database to ucd.lisp
The database is a UB32 with length tags stuffed into the high bits of the first codepoint in each entry.
Collation keys are packed into a 32-byte entry
commit 164a56a98dc71bd4db29f0d724e2023971bc9194
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Thu May 22 21:37:12 2014 -0500
Efficiency improvements as suggested by the IRC
commit 7d58fddb9c6d951409113a6e3cffde775f239882
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Thu May 22 14:47:15 2014 -0500
Add documntation for SB-UNICODE.
Now no one can complain about me not writing any.
Also removes some trailing whitespace in tests.
commit daedb709b990d63216bd983e5dcc4b3018fb05b0
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Thu May 22 14:02:58 2014 -0500
Adds tests to make sure that the break types are encoded correctly.
- Also fixes some bugs exposed by those tests
commit bdda9bcf194b7db5121a6033b7b8c0815763d871
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Thu May 22 10:48:39 2014 -0500
Adds the EAST-ASIAN-WIDTH function
commit 354d777d720ce000caa489b67cc8b2a5c754d844
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed May 21 17:45:54 2014 -0500
Adds Unicode sentence breaking at SB-UNICODE:SENTENCES
I'm not proud of these functions, but they work.
Tests were added to unicode-breaking.impure.lisp
commit 99f09b6492cbe74729c2455d4812660f9495e97f
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed May 21 12:16:42 2014 -0500
Adds SB-UNICODE:TITLECASE
Also slightly optimizes some of the lookups in word and grapheme breaking.
commit 83f77154aada690f5170685d373fd79fe729df03
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue May 20 19:57:13 2014 -0500
Adds word breaking, defining SB-UNICODE:WORDS
- Tests for word-breaking are included and pass
commit 227a8075e15ddd2e348dfcf078d93916cfd6cce7
Merge: 531ada6 54ea3bf
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue May 20 14:15:26 2014 -0500
Merge branch 'master' into unicode-algorithms
commit 531ada6d2208072fea9ebc7e26c46a051b292d64
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue May 20 14:14:06 2014 -0500
Adds functions for accessing several of the properties from PropList.txt
- Also changes GENERAL-CATEGORY and BIDI-CLASS to return keywords, not strings
commit 1933bfd9d9309b5aad0d6ac081023b2a74047fb3
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Mon May 19 18:46:05 2014 -0500
Adds tests for grapheme breaking and makes them pass
commit 8694b8f7e8fc83d8267042ee1ccd123c9e00abdb
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Mon May 19 17:46:39 2014 -0500
Implements grapheme breaking from UAX #29
commit 86cb8e5b23faec8c2e8b912a9ceefa2de2720109
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Mon May 19 16:02:53 2014 -0500
Adds a HANGUL-SYLLABLE-TYPE function.
commit 72359cbdb05aa069cb15494bb1c1df2b134c2ce5
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Mon May 19 14:30:31 2014 -0500
Adds Unicode uppercasing, lowercasing, and casefolding.
commit af99aee4a2216f00a5abecaca2b89f2d6ead84ba
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Mon May 19 11:42:53 2014 -0500
FIxes various bugs in the database rewrite and adds documentation.
- The build no longer fails because of lack of argument coercion in equal-char-code
- Various adjustments made to normalization so those tests pass
- Several minor bugs in ucd.lisp resolved
- NormalizationTest.txt updated to Unicode 6.3 (no changes)
- The new database is documented
commit 15070304ff63d2cee3fc081789faf4f29b8c8151
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Sat May 17 18:45:30 2014 -0500
Fixed some issues with the character database.
Most properties now look up properly.
Build broken in PCL.
commit c4ac96922703a2ca0112807d0411ab9ba0fd2f94
Merge: e0309c6 ebcbcdd
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Sat May 17 17:57:12 2014 -0500
Merge branch 'master' into database-rewrite
commit e0309c69a15e7f464225539b9b9ed72c193adf06
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Fri May 16 13:31:04 2014 -0500
Updates the Unicoed package to use the new database.
BUild still broken, documentation still nonexistent.
commit 4fbc5af6e82840a53c2c82eff5d891cd1ec2a888
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Fri May 16 12:16:30 2014 -0500
target-char.lisp now compiles.
The documentation rewlite is on the way.
commit 59efbdf535eaaa80d4747ea24c912342ba0d15dd
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Thu May 15 17:01:01 2014 -0500
Adjusts the case pages to make the list shorter.
This trades a much shorter list lookup for a need to enlarge the hashtable.
commit 9ae0e2c1115b4e914f5176f104d5deb8b8410758
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Thu May 15 15:37:14 2014 -0500
Rewrites the Unicode database to be more robust, part 1
There is currently no nice explanatory ASCII art comment for database
access. That comes in a bit.
Features of the new database:
- Supports Unicode 6.3
- Incorporates full Unicode casing information
- Is somewhat more extensible
- Uses fewer magic numbers
- The database is split into multiple arrays, so one part can be
changed without adjusting the whole thing
commit 7c459b7493d87cafe5a331388f948a8d506e6aa8
Merge: 04e36dc 7a795d6
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed May 14 10:34:04 2014 -0500
Merge branch 'unicode6.3' into database-rewrite
commit 04e36dc499699e34c4cf0b0291770e190ec89985
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Wed May 14 10:01:08 2014 -0500
Removed workaround case in tests
commit 7436bc344caf282c160e5adfc74689111cca85d1
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue May 13 17:01:55 2014 -0500
Removes the mapping between BELL and #\Bel to fix Unicode
Unicode encodes U+1F514 (named BELL), which conflicts with the alias
"Bell" -> #\Bel defined in target-char.lisp. This causes
(name-char (char-name (code-char #x1F514))) => #\Bel not #\BELL
(U+1F514) as expected. This ambiguity had to be resolved by either
removing "BELL" -> #\Bel or "BELL" -> U+1F514. Discussion in IRC led
to the determination that removal of the #\Bel alias was the best
course of action.
This is a breaking change. If it affects you, please raise the issue
for further discussion.
commit 1953800b9b497c6d2d12c5550c02b453f4870406
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue May 13 09:04:20 2014 -0500
Remove trailing whitespace in two files
commit a8651a2e49823b026776c44e55a2ec3f952d1880
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Mon May 12 17:52:08 2014 -0500
Ombibus initial commit for the SB-UNICODE package
- Adds src/code/target-unicode.lisp to the build order
- Defines a new SB-UNICODE package and adds it to the list of packages
to generate docstrings for
- Moves SB-IMPL::NORMALIZE-STRING and its dependencies to the
SB-UNICODE package and exports it
- Defines public accessors for several of the properties in
UnicodeData.txt
- Adjusts the Unicode normalization tests to account for the new
location of NORMALIZE-STRING
- Adds tests for the newly-defined property accessors
commit 7a795d6818edc80f0cb27b9004255b5164df8b91
Author: Krzysztof Drewniak <krzysdrewniak@gmail.com>
Date: Tue May 13 10:02:32 2014 -0500
Unicode 6.3 support, but the build is broken somehow
the universal superclass is a special-case for validate-superclass.
That has knock-on implications on its metaclass (can't be
built-in-class) which means we have to document an exception to
another part of AMOP.
DEFSTRUCT slot names are a bit weird, but behave basically like
strings rather than like symbols. This makes their interaction with
the MOP a little problematic, but for now simply allow things to
pass through and generally work "as expected".
Report from Eric Marsden sbcl-devel 2013-11-05
Executing (sb-ext:assert-version->= 1 1 13) signals a continuable
error if the running SBCL is older than 1.1.13 (and an undefined
function error before that).
Based on a patch by Philip Munksgaard.
Closes lp#674372.
Example terminal session using Linedit:
* (defpackage :foo (:use :cl) (:local-nicknames (:sb :sb-ext)))
#<PACKAGE "FOO">
* (in-package :foo)
#<PACKAGE "FOO">
* (sb:posix-
sb:posix-environ sb:posix-getenv
* (sb:posix-getenv "USER")
"nikodemus"
API:
function PACKAGE-LOCAL-NICKNAMES package
function PACKAGE-LOCALLY-NICKNAMED-BY package
function ADD-PACKAGE-LOCAL-NICKNAME nick global &optional package
function REMOVE-PACKAGE-LOCAL-NICKNAME old-nick &optional package
DEFPACKAGE option: (:local-nicknames {(local-nick global-name)}*)
:PACKAGE-LOCAL-NICKNAMES in *FEATURES*
Design issues and considerations:
* "CL", "COMMON-LISP", and "KEYWORD" signal a continuable error
when used as local nicknames. I think this is good for sanity,
but not strictly required. Because of the way (find-package
:keyword) is idiomatically used to guarantee print/read
consistency across packages, I think it at least should be
protected.
* To preserve read/print consistency, we use package local nicknames
as prefixes when printing.
* The hook into FIND-PACKAGE is invisible, but built on top of
FIND-PACKAGE-USING-PACKAGE -- undocumented and unexported, but
waiting to be turned into something interesting by Christophe.
* Local nicknames are protected by package locks.
* If you want to bypass nicknames, you need to first get into
a known package without nicknames. There could be an explicit
way as well, but not sure if that's needed or a good idea.
Random crap mixed in:
Re-order DEFPACKAGE option docs in rough order of usefulness.
That is, in the texinfo files of the user manual, the internals manual,
and in sbcl.1. Fix spelling and grammar errors, put sufficiently many
dots in abbreviations and consistently write "SBCL" in all caps in
prose. Also, SIGABORT should be SIGABRT.
Document initial random state consistency, how to achieve or avoid
repeatability of random numbers, extensions with respect to seeding,
generation of random floats, and the currently used PRNG algorithm.
Move the docstring of SEED-RANDOM-STATE over from the "Miscellaneous
Extensions" section.
sb-c::(csubtypep (specifier-type 'fixnum) (specifier-type 'integer))
Isn't that lovely? The superbly fantasic thing is that this even works
*right* with package locks:
(in-package :cl-user)
sb-c::(defun some-internal-bit ...)
causes a package lock violation since the current package is back to CL-USER
by the type the code is executed.
* Fold documentation of (SETF GC-LOGFILE) into that of GC-LOGFILE.
* Document default value of GENERATION-NUMBER-OF-GCS-BEFORE-PROMOTION.
* Order the dictionary entries in the manual's GC section more logically.
I hope.
While using this to wait for other threads isn't good style,
sometimes it is _much_ easier to just state the thing you're
waiting for than build the synchronization to make it nice.
And sometimes the event lives in the external world, in which case
you really need to poll anyways:
(wait-for (probe-file pathname))
Using STANDARD-INSTANCE-ACCESS with this provided is much nicer --
no need to muck around with SLOT-BOUNDP-USING-CLASS and such.
Also add quick SIA tests and some dependant update abuse
to tests.
lp#718039
These improvements mainly centre around better indexing, including
some nifty trickery to get suitably collated and aligned index
entries (to cope with issues like *earmuffs* and sb-foo package
prefixes). This patch also incorporates work by Robert Goldman to
document the commands for enabling and disabling the debuggers.
The remainder of this log message is a squashed version of my git
branch's log messages:
improve text relating to my support availability
Remove a stray comma in instructions for signal-related bug reporting
Patch from Robert Goldman for enable/disable-debugger documentation
trick texinfo's collation engine into producing a better index
The issue is that the sort order and what is printed (both in the
index and as the title of a definition entry) are deeply tied together
in texinfo, and there's no obvious way short of rewriting lots of TeX
code to undo that. There is one get-out clause, though: texinfo
macros are replaced by their arguments. So define a number of macros
which hide from the collation engine things that we would rather not
play a part in the sorting (package names, "(setf", *earmuffs*)
In the process, note that @deffoo in texinfo automatically produces an
index entry, so get rid of the apparently redundant extra index
entries produced by docstrings.lisp
Mostly move to using the new indexing helper macros
Only mostly: there are a few remaining issues. The first is
declarations, which are treated as types; I think they might warrant
their own index; similarly, various commands (debugger, inspector)
aren't really functions. Hardest of all is the ffi chapter, which has
handwritten function documentation which is highly similar to but not
exactly the same as the docstrings for those operators; it would be
good to merge the documentation into the docstrings, include the
autogenerated texinfo snippets into the manual, and thereby gain
complete consistency.
add some index entries from the efficiency chapter
... because why not?
manually (!) change the entries for FFI-related functions and macros
Making the docstrings match the text match reality is an exercise for
the future.
make index in info form mostly work
info readers apparently parse the formatted index to work out where to
go. This is hilariously bad if the index entries contain colons, so
define macros conditional on output format to make sure that they
don't in info.
better, more useful indexes
Now that collation is sorted (!), getting the display of index entries
to be useful is important. This not-quite-general trick is to make
the package name as small as possible, have the colon always in the
same horizontal position, and arrange that the package name extends at
most three characters ("sb-") into the left margin. This is the most
tolerable I can find.
Continue not having package information at all in info format; in
other formats, place the package information after the symbol name.
This probably goes wrong in corner cases like
(setf sb-mop:symbol-value-using-class)
deal with remaining manually-documented functions
make documentation for declarations consistent
Arbitrarily decide that declarations belong in the function index
rather than the type index; use the package prefix texinfo macros to
get them properly indented.
One more manually-documented thing which needed a package macro decoration
Fix the nopkg{} macro to align index entries in TeX mode
Use it for debugger commands.
* Define +HIGHEST-NORMAL-GENERATION+ and +PSEUDO-STATIC-GENERATION+
in lisp, and let genesis tell C about them.
* Make various generations[gen].foo tweakable from lisp, give them
nice interface functions and document the same.
* Bits of manual prettification in related parts.
* Based on old SB-INT:DEFINE-HASH-TABLE-TEST, but:
** macro, not a function.
** only two arguments: name of the test function, and the hash function
(which can also be a lambda form.)
** :TEST accepts both 'NAME, and #'NAME as well.
** pick up redefinitions of the test and hash-function without
re-executing the D-H-T-T form.
** protected by package locks.
* MAKE-HASH-TABLE :HASH-FUNCTION supported as well. EQ-based hashing
not legal for user-provided hash functions, accidents prevented by
wrapping functions which may return a true secondary value in
a closure.
* Documentation -- other hash-table extensions as well.
* Documentation generation improvements:
** use the shortest package name available -- CL:FOO, not
COMMON-LISP:FOO.
** kludge around texi2pdf making &key and company bold
** add exceptions so that we don't format words ANSI and CLHS
as lowecase symbols.
* For users to extract the underlying vector from a multidimensional
array. Warn about implementation-detail nature of this.
* Add Miscellaneuous Extensions section to Beyond ANSI chapter in the
manual.