File: README.markdown

package info (click to toggle)
acl2 7.2dfsg-3
  • links: PTS
  • area: main
  • in suites: stretch
  • size: 198,968 kB
  • ctags: 182,300
  • sloc: lisp: 2,415,261; ansic: 5,675; perl: 5,577; xml: 3,576; sh: 3,255; cpp: 2,835; makefile: 2,440; ruby: 2,402; python: 778; ml: 763; yacc: 709; csh: 355; php: 171; lex: 162; tcl: 44; java: 24; asm: 23; haskell: 17
file content (25 lines) | stat: -rw-r--r-- 1,343 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
`EXTERNAL-PROGRAM` enables running programs outside the Lisp process. It is an attempt to make the `RUN-PROGRAM` functionality in implementations like SBCL and CCL as portable as possible without sacrificing much in the way of power.

**Note**: This library is available via [Quicklisp](https://quicklisp.org/).

Here are some of the differences:

* splits `START` (async) and `RUN` (sync) into two separate functions, rather than using a single function with a `WAIT` parameter that changes the function's specification;
* offers a `REPLACE-ENVIRONMENT-P` parameter that indicates whether provided env vars should build on or replace the current environment.

Read [the API documention](https://github.com/sellout/external-program/wiki/API) for details. It’s a bit spartan, but should explain a lot.

Not all functionality is available on all platforms. `EXTERNAL-PROGRAM` provides warnings and errors when these limitations are encountered. But I'll try my best to work around them.

There is currently at least some support for:

* Allegro (blocking only)
* Armed Bear (blocking only)
* CLisp
* Clozure CL (née OpenMCL)
* CMUCL
* ECL
* LispWorks
* SBCL

In addition to some implementations only providing blocking calls, some don’t use `$PATH` – the ones that don’t won’t find bareword commands, you’ll need to use a pathname.