The uiop Reference Manual

Table of Contents

Next: , Previous: , Up: (dir)   [Contents][Index]

The uiop Reference Manual

This is the uiop Reference Manual, version, generated automatically by Declt version 2.4 "Will Decker" on Wed Jun 20 12:43:37 2018 GMT+0.

Next: , Previous: , Up: Top   [Contents][Index]

1 Introduction

UIOP, the Utilities for Implementation- and OS- Portability

UIOP is the portability layer of ASDF. It provides utilities that abstract over discrepancies between implementations, between operating systems, and between what the standard provides and what programmers actually need, to write portable Common Lisp programs.

It is organized by topic in many files, each of which defines its own package according to its topic: e.g pathname.lisp will define package UIOP/PATHNAME and contain utilities related to the handling of pathname objects. All exported symbols are reexported in a convenience package UIOP, except for those from UIOP/COMMON-LISP. We recommend package UIOP be used to access all the symbols.

The files that constitute UIOP are, in dependency loading order:


Each file starts with a package definition form that lists the exported symbols.

All the exported functions, macros and variables ought to have proper docstrings. If not, then it's a legitimate bug that we invite you to report.

Maybe some automated tool will extract all that information and make a webpage from it, at which point it would be nice to insert a link here.

One tool with which you can extract all the documentation is HEΛP. At this time, the interface is not great: it isn't obvious at all that you can indeed use a scrollbar on the right of the top left side panel to navigate the many packages; once you click on the package you're interested in, you can see its defined symbols:

Another automated documentation tool is quickdocs, but unhappily, at the time of this writing, it only extracts information from the first package (see bug #24):

Help wanted extracting working documentation from UIOP's docstrings.

Using UIOP

UIOP is part of ASDF 3, and any modern Common Lisp implementation will have all of UIOP available when you (require "asdf"). NB: (require :asdf) also works on all implementations but CLISP. Every implementation has sported ASDF 3 for years, and if yours only provides ASDF 2, we recommend you install ASDF 3 on top of it, using the facility in tools/install-asdf.lisp.

If you need some functionality only available in a recent version of UIOP, but cannot or will not upgrade ASDF, UIOP is also distributed separately; see e.g. in Quicklisp. You may then have to load it like any other library, by adding "uiop" or some versioned constraint (:version "uiop" "3.2.0") in your system's :depends-on declaration, or at the REPL using:

(asdf:load-system :uiop)

When refering to symbols in UIOP, we recommend you either have your package :use the package :uiop or :import-from it, or that you shall use uiop: as a prefix to the symbols. Please DO NOT refer to specific subpackages such as uiop/run-program from the outside of UIOP, because functions may occasionally be moved from one internal package to the other, without notification. They have in the past and will in the future.

When to use UIOP

UIOP is the ideal tool to use when:

UIOP is the wrong tool when:

In those latter cases, we recommend you use IOlib, or osicat, or some similar library that isn't as portable as UIOP, but provides fine-grained control over low-level system access. Also, please use extreme caution.

Some history

UIOP, formerly known as ASDF-DRIVER (the package and system nicknames are deprecated), evolved from ASDF 2's internal utilities and portability layer. It has since fully superseded functionality from the following libraries: ASDF-UTILS (UIOP carries on the ASDF 2 utilities that this exported), CL-FAD (UIOP completely replaces it with better design and implementation), CL-LAUNCH (UIOP took its image and command-line argument handling), EXTERNAL-PROGRAM, TRIVIAL-SHELL and XCVB-DRIVER (UIOP's run-program and now launch-program evolved from XCVB-DRIVER, from which UIOP also initially got its condition muffling), SLIME's swank-loader (UIOP has better compilation and ABI identification), TRIVIAL-BACKTRACE (UIOP/IMAGE has all of it and more), etc.

UIOP also captures a large subset of the functionality from TRIVIAL-FEATURES, and a small subset of the functionality from ALEXANDRIA or FARE-UTILS.

We recommend you use UIOP instead of any of the above, where applicable, since UIOP is more portable, more robust, more ubiquitous, better designed, better documented, etc. If you see any way in which UIOP isn't superior, please tell us: we're interested in improving it so it become so.

Next: , Previous: , Up: Top   [Contents][Index]

2 Systems

The main system appears first, followed by any subsystem dependency.

Previous: , Up: Systems   [Contents][Index]

2.1 uiop


Next: , Previous: , Up: Top   [Contents][Index]

3 Files

Files are sorted by type and then listed depth-first from the systems components trees.

Previous: , Up: Files   [Contents][Index]

3.1 Lisp

Previous: , Up: Top   [Contents][Index]

Appendix A Indexes

Next: , Previous: , Up: Indexes   [Contents][Index]

A.1 Concepts

Next: , Previous: , Up: Indexes   [Contents][Index]

A.2 Functions

Next: , Previous: , Up: Indexes   [Contents][Index]

A.3 Variables

Previous: , Up: Indexes   [Contents][Index]

A.4 Data types

Jump to:   S   U  
Index Entry  Section

System, uiop: The uiop system

uiop: The uiop system

Jump to:   S   U