3 :licence "Public Domain / 0-clause MIT"
4 :description "Alexandria is a collection of portable public domain utilities."
6 "Alexandria is a project and a library.
8 As a project Alexandria's goal is to reduce duplication of effort and improve
9 portability of Common Lisp code according to its own idiosyncratic and rather
10 conservative aesthetic. What this actually means is open to debate, but each
11 project member has a veto on all project activities, so a degree of
12 conservativism is inevitable.
14 As a library Alexandria is one of the means by which the project strives for
17 Alexandria is a collection of portable public domain utilities that meet
18 the following constraints:
20 * Utilities, not extensions: Alexandria will not contain conceptual
21 extensions to Common Lisp, instead limiting itself to tools and utilities
22 that fit well within the framework of standard ANSI Common Lisp.
23 Test-frameworks, system definitions, logging facilities, serialization
24 layers, etc. are all outside the scope of Alexandria as a library, though
25 well within the scope of Alexandria as a project.
27 * Conservative: Alexandria limits itself to what project members consider
28 conservative utilities. Alexandria does not and will not include anaphoric
29 constructs, loop-like binding macros, etc.
31 * Portable: Alexandria limits itself to portable parts of Common Lisp. Even
32 apparently conservative and useful functions remain outside the scope of
33 Alexandria if they cannot be implemented portably. Portability is here
34 defined as portable within a conforming implementation: implementation bugs
35 are not considered portability issues.
37 * Team player: Alexandria will not (initially, at least) subsume or provide
38 functionality for which good-quality special-purpose packages exist, like
39 split-sequence. Instead, third party packages such as that may be
42 ((:static-file "LICENCE")
43 (:static-file "tests.lisp")
45 (:file "definitions" :depends-on ("package"))
46 (:file "binding" :depends-on ("package"))
47 (:file "strings" :depends-on ("package"))
48 (:file "conditions" :depends-on ("package"))
49 (:file "hash-tables" :depends-on ("package"))
50 (:file "io" :depends-on ("package" "macros" "lists" "types"))
51 (:file "macros" :depends-on ("package" "strings" "symbols"))
52 (:file "control-flow" :depends-on ("package" "definitions" "macros"))
53 (:file "symbols" :depends-on ("package"))
54 (:file "functions" :depends-on ("package" "symbols" "macros"))
55 (:file "lists" :depends-on ("package" "functions"))
56 (:file "types" :depends-on ("package" "symbols" "lists"))
57 (:file "arrays" :depends-on ("package" "types"))
58 (:file "sequences" :depends-on ("package" "lists" "types"))
59 (:file "numbers" :depends-on ("package" "sequences"))
60 (:file "features" :depends-on ("package" "control-flow"))))
62 (defmethod operation-done-p ((o test-op) (c (eql (find-system :alexandria))))
65 (defmethod perform ((o test-op) (c (eql (find-system :alexandria))))
66 (operate 'load-op :alexandria-tests)
67 (operate 'test-op :alexandria-tests))