Skip to content

A portable Common Lisp library for running external programs from within Lisp.

License

Notifications You must be signed in to change notification settings

sellout/external-program

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

93 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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.

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 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.

About

A portable Common Lisp library for running external programs from within Lisp.

Resources

License

Code of conduct

Stars

Watchers

Forks

Packages

No packages published