~ubuntu-branches/ubuntu/wily/cl-asdf/wily

« back to all changes in this revision

Viewing changes to uiop/README

  • Committer: Package Import Robot
  • Author(s): Francois-Rene Rideau
  • Date: 2013-10-22 22:30:12 UTC
  • mfrom: (1.1.31)
  • Revision ID: package-import@ubuntu.com-20131022223012-h791r9tas7r6la9m
Tags: 2:3.0.3-1
New release:
* Run-program much improved, with a slight backward incompatibility.
  See the new documentation about it.
* Portability enhanced, with more robust Windows support,
  plus patches for CCL, CLISP, LispWorks, XCL.
* UIOP improved, with a README, more docstrings, a few new functions
  (println, writeln, stripln, ensure-gethash, vomit-output-stream),
  and bugfixes (to ensure-function, with-temporary-file, split-string).
* Debian installations that don't export XDG_DATA_DIRS will benefit
  from the fix to split-string, as the bug was basically disabling
  the default source-registry entry for /usr/share/common-lisp/source//
  Closes: #723977
* Minor tweaks to the defsystem, mostly to print more information
  in some situations, less in other situations, but also to better
  handle systems with secondary names like foo/bar, a fix for user
  functions in output-translation, and to :version (:read-file-...)
* Documentation somewhat updated.

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
UIOP the Utilities for Implementation- and OS- Portability
 
2
==========================================================
 
3
 
 
4
UIOP is the portability layer of ASDF.
 
5
It provides utilities that abstract over discrepancies between implementations,
 
6
between operating systems, and between what the standard provides and
 
7
what programmers actually need, to write portable Common Lisp programs.
 
8
 
 
9
It is organized by topic in many files, each of which defines its own package
 
10
according to its topic: e.g pathname.lisp will define package UIOP/PATHNAME
 
11
and contain utilities related to the handling of pathname objects.
 
12
All exported symbols are reexported in a convenience package UIOP.
 
13
 
 
14
The files that constitute UIOP are, in loading order:
 
15
 
 
16
* package: to deal with packages and their symbols, most notably including
 
17
  DEFINE-PACKAGE, a variant of defpackage capable of hot-upgrade.
 
18
 
 
19
* common-lisp: to let you paper over various sub-standard implementations.
 
20
  Big offenders are Corman, GCL, Genera, MCL, all of them unmaintained.
 
21
  Supported without serious issues are:
 
22
  ABCL, Allegro, CCL, CMUCL, CLISP, ECL, LispWorks, MKCL, SBCL, XCL.
 
23
 
 
24
* utility: to provide macros and functions that do not involve I/O, handling
 
25
  control-flow, (p)lists, characters, strings, functions, classes, conditions,
 
26
  "stamps" (real number or boolean for +/- infinity), versions, etc.
 
27
  It also sports uiop-debug, a useful tool to help you debug programs.
 
28
 
 
29
* os: to extract information from your environment, including
 
30
  an API identifier, unix vs windows, getenv, hostname, getcwd and chdir, etc.
 
31
 
 
32
* pathname: to survive the gruesome non-portability trap that are CL pathnames
 
33
  (and their lovecraftian "logical" variant), offering a vast array of functions
 
34
  and a sensible, usable abstraction to specify relative pathnames.
 
35
 
 
36
* filesystem: to provide portable access to the filesystem, inspecting it,
 
37
  only using truename when desired, using native OS namestrings,
 
38
  atomic file renaming, creating or deleting directories, etc.
 
39
 
 
40
* stream: to portably deal with character encodings (external formats),
 
41
  element types, safe READing and WRITEing, opening files or temporary files,
 
42
  providing FORMAT-like designators for streams, flushing output buffers,
 
43
  consuming or copying streams, concatenating files, copying files, etc.
 
44
 
 
45
* image: to portably deal with images, dumping them, restoring from them,
 
46
  registering hooks to run at suitable events in the image lifetime,
 
47
  printing backtraces, handling fatal conditions, using or avoiding debug modes,
 
48
  accessing command line arguments or quitting the process.
 
49
 
 
50
* run-program: to portably spawn external processes and capture their output.
 
51
  Can also capture error-output, inject input, or let it all be interactive.
 
52
 
 
53
* lisp-build: to portably compile common-lisp code, handle compilation results,
 
54
  muffle uninteresting conditions, save and restore deferred warnings,
 
55
  run hooks around compilation (to e.g. control optimizations or syntax),
 
56
  identify the pathname of the current file, combine FASLs, etc.
 
57
 
 
58
* configuration: to write portable configuration files, using best practices
 
59
  to define and validate syntax, search standard paths,
 
60
  let users specify pathnames or pathname patterns, etc.
 
61
 
 
62
* backward-driver: to provide backward-compatibility with earlier incarnations
 
63
  of this library (i.e. ASDF internals that have leaked, or ASDF-UTILS)
 
64
 
 
65
* driver: to reexport all the above utilities in a single package UIOP.
 
66
 
 
67
 
 
68
Documentation
 
69
-------------
 
70
 
 
71
Each file starts with a package definition form that lists the exported symbols.
 
72
 
 
73
All the exported functions, macros and variables ought to have proper docstrings.
 
74
If not, then it's a legitimate bug that we invite you to report.
 
75
 
 
76
Maybe some automated tool will extract all that information and
 
77
make a webpage from it, at which point it would be nice to insert a link here.
 
78
Unhappily, at the time of this writing, quickdocs only extracts information
 
79
from the first package::
 
80
 
 
81
        http://quickdocs.org/uiop/api
 
82
 
 
83
 
 
84
Using UIOP
 
85
----------
 
86
 
 
87
UIOP is part of ASDF 3, and any modern Common Lisp implementation
 
88
will have all of UIOP available when you (require "asdf").
 
89
NB: (require :asdf) also works on all implementations but CLISP.
 
90
 
 
91
If you need some functionality only available in a recent version of UIOP,
 
92
but cannot or will not upgrade ASDF, UIOP is also distributed separately;
 
93
see e.g. in Quicklisp. You may then have to load it like any other library::
 
94
        (asdf:load-system :uiop)
 
95
 
 
96
If you want to use UIOP while preserving compatibility with ASDF 2,
 
97
we recommend that in your ASDF system definition you may use the like of::
 
98
        :depends-on (#-asdf3 :uiop)
 
99
 
 
100
 
 
101
Some history
 
102
------------
 
103
 
 
104
UIOP, formerly known as ASDF-DRIVER (the package and system nicknames live on),
 
105
evolved from ASDF 2's internal utilities and portability layer.
 
106
It has since fully superseded functionality from the following libraries:
 
107
ASDF-UTILS (UIOP carries on the ASDF 2 utilities that this exported),
 
108
CL-FAD (UIOP's pathname and filesystem functions are much more portable),
 
109
CL-LAUNCH (UIOP took its image and command-line argument handling from it),
 
110
EXTERNAL-PROGRAM, TRIVIAL-SHELL and XCVB-DRIVER (UIOP's run-program is better),
 
111
SLIME's swank-loader (UIOP has better compilation and API identification),
 
112
TRIVIAL-BACKTRACE (UIOP/IMAGE has all of it and more), etc.
 
113
 
 
114
UIOP also captures a large subset of the functionality from TRIVIAL-FEATURES,
 
115
and a small subset of the functionality from ALEXANDRIA.
 
116