emacs.d/clones/lisp/www.cliki.net/poiu.html
2022-10-07 15:47:14 +02:00

90 lines
No EOL
6.2 KiB
HTML

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<title>CLiki: poiu</title>
<link rel="alternate" type="application/atom+xml" title="ATOM feed of edits to current article"
href="https://www.cliki.net/site/feed/article.atom?title=poiu">
<link rel="stylesheet" href="static/css/style.css">
<link rel="stylesheet" href="static/css/colorize.css">
</head>
<body>
<span class="hidden">CLiki - poiu</span>
<div id="content"><div id="content-area"><div id="article-title">poiu</div><div id="article">poiu is an <a href="asdf.html" class="category">asdf</a> extension that <a href="build.html" class="category">build</a>s in parallel.<p>To use it, just start your build scripts with
<pre>(require :asdf) (asdf:load-system :asdf) (asdf:load-system :poiu)</pre>
i.e. add the latter clause, for you should already have the former clauses
(and possibly some asdf configuration between the require and the first load-system).
Make sure that you're using a recent ASDF 3 together with a recent POIU.
POIU will modify the asdf::*default-plan-class* so subsequent calls to asdf:load-system
will implicitly use it.<p>You can find POIU on the <a href="QITAB.html" class="internal">QITAB</a> homepage:
<a href="http://common-lisp.net/project/qitab">http://common-lisp.net/project/qitab</a><p>POIU will notably compile each Lisp file in its own forked process,
in parallel with other operations (compilation or loading).
However, it will load FASLs serially as they become available.
In deterministic mode (the default), it will load files in a deterministic order
based on the state at the start of the build (usually, from clean).
If calling operate with :deterministic-p nil, it will load files opportunistically
in an order that depends on which compilation finishes first,
sacrificing determinism to a further parallel speed up.<p>POIU will only make a difference with respect to ASDF if the dependencies
are not serial (i.e. no difference for systems using :serial t everywhere).
You can however use Andreas Fuchs's <a href="ASDF-DEPENDENCY-GROVEL.html" class="internal">ASDF-DEPENDENCY-GROVEL</a> to autodetect
minimal dependencies from an ASDF system (or a set of multiple such).<p>POIU may speed up compilation by utilizing all CPUs of an SMP machine.
POIU may also reduce the memory pressure on the main (loading) process.
POIU will enforce separation between compile- and load- time environments,
helping you detect when :LOAD-TOPLEVEL is missing in EVAL-WHEN's
(as needed for incremental compilation even with vanilla ASDF).
POIU will also catch *some* missing dependencies as exist between the
files that it will happen to compile in parallel (but won't catch other
dependencies that may otherwise be missing from your system).<p>When a compilation fails in a parallel process, POIU will retry compiling
in the main (loading) process so you get the usual ASDF error behavior,
with a chance to debug the issue and restart the operation.<p>POIU was currently only made to work with <a href="SBCL.html" class="internal">SBCL</a>, <a href="CCL.html" class="internal">CCL</a>, <a href="CLISP.html" class="internal">CLISP</a> and <a href="Allegro.html" class="internal">Allegro</a>.
Porting to another Unix Lisp implementation that supports ASDF should not be difficult.<p>Warning to CCL users: you need to save a CCL image that doesn't start threads
at startup in order to use POIU (or anything that uses fork). Watch QITAB
for some package that does just that, single-threaded-ccl.<p>To use POIU, just load poiu.lisp after asdf.lisp is loaded, then use it with
(asdf:load-system :your-system)
as usual. The asdf::*default-plan-class* will have been modified to use POIU.
Once again, you may want to first use asdf-dependency-grovel to minimize
the dependencies in your system.<p>POIU was initially written for SBCL by Andreas Fuchs in 2006
as part of an experiment funded by ITA Software, Inc.
It was later modified by François-René Rideau,
who wrote the ports to CCL, CLISP, Allegro,
maintained POIU as ASDF became ASDF 2 and further evolved,
and completely rewrote it for ASDF 3.
The original copyright of ASDF (below) applies to POIU.</div></div>
<div id="footer" class="buttonbar"><ul><li><a href="poiu.html">Current version</a></li>
<li><a href="https://www.cliki.net/site/history?article=poiu">History</a></li>
<li><a href="https://www.cliki.net/site/backlinks?article=poiu">Backlinks</a></li><li><a href="https://www.cliki.net/site/edit-article?title=poiu&amp;from-revision=3712660233">Edit</a></li><li><a href="https://www.cliki.net/site/edit-article?create=t">Create</a></li></ul></div>
</div>
<div id="header-buttons" class="buttonbar">
<ul>
<li><a href="https://www.cliki.net/">Home</a></li>
<li><a href="https://www.cliki.net/site/recent-changes">Recent Changes</a></li>
<li><a href="CLiki.html">About</a></li>
<li><a href="Text&#32;Formatting.html">Text Formatting</a></li>
<li><a href="https://www.cliki.net/site/tools">Tools</a></li>
</ul>
<div id="search">
<form action="https://www.cliki.net/site/search">
<label for="search_query" class="hidden">Search CLiki</label>
<input type="text" name="query" id="search_query" value="" />
<input type="submit" value="search" />
</form>
</div>
</div>
<div id="pageheader">
<div id="header">
<span id="logo">CLiki</span>
<span id="slogan">the common lisp wiki</span>
<div id="login"><form method="post" action="https://www.cliki.net/site/login">
<label for="login_name" class="hidden">Account name</label>
<input type="text" name="name" id="login_name" class="login_input" />
<label for= "login_password" class="hidden">Password</label>
<input type="password" name="password" id="login_password" class="login_input" />
<input type="submit" name="login" value="login" id="login_submit" /><br />
<div id="register"><a href="https://www.cliki.net/site/register">register</a></div>
<input type="submit" name="reset-pw" value="reset password" id="reset_pw" />
</form>
</div>
</div>
</div>
</body></html>