source: public_html/faq.shtml @ 14220

Last change on this file since 14220 was 14220, checked in by Mark Evenson, 8 years ago

FAQ: Correct grammar and add link to AMOP status.

  • Property svn:eol-style set to LF
  • Property svn:keywords set to Id
File size: 12.3 KB
[11937]1<?xml version="1.0"?>
2<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3    "">
4<html xmlns="" xml:lang="en" lang="en">
[11949]6  <title>FAQ: ABCL - Common Lisp on the JVM</title>
[11937]7  <link rel="stylesheet" type="text/css" href="style.css" />
[13543]8  <link rel="stylesheet" type="text/css" href="faq-style.css" />
[11937]9  <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1" />
13 <div class="header">
[11949]14   <h1>FAQ: ABCL - Common Lisp on the JVM</h1>
[11937]15 </div>
17<!--#include virtual="left-menu" -->
19<div style="margin-left:auto;margin-right:auto;width:20cm">
21<ol id="toc">
[14219]22  <li class="topic"><a href="#general">General Questions about ABCL</a>
23    <ol>
24      <li class="question"><a href="#what">What is ABCL?</a></li>
25      <li class="question"><a href="#license">What license is used for ABCL?</a></li>
26      <li class="question"><a href="#bug-reporting">How/Where should I report bugs?</a></li>
27      <li class="question"><a href="#speed">Is ABCL faster or slower than implementation XYZ?</a></li>
28      <li class="question"><a href="#qa">What is the quality of the implementation? How can you tell?</a></li>
29      <li class="question"><a href="#repository">Where is ABCL's source code repository?</a></li>
30      <li class="question"><a href="#documentation">Where is ABCL's documentation?</a></li>
31    </ol>
32  </li> 
[14219]34  <li class="topic"><a href="#building">Questions about Building ABCL</a>
35    <ol>
36      <li class="question"><a href="#avoiding-recompilation">The Ant build process seems to recompile from scratch each time.  How do I avoid this?</a></li>
37    </ol>
[13483]38  </li> 
[14219]40  <li class="topic"><a href="#running">Questions about Running ABCL</a>
[13542]41  <ol>
[14219]42    <li class="question">
[13759]43      <a href="#maxpermgen-errors">Java is running out of memory
44      with an error reporting something about
45      "java.lang.OutOfMemoryError: PermGen space".  What can I
46      do?</a>
47    </li>
[14219]48    <li class="question">
49      <a href="#dotabclrc">What's the name of the startup configuration file?</a>
[13759]50    </li>
[13542]51  </ol>
52  </li> 
55<div class="h2" title="general" id="general">
[14219]56<h2 class="topic">General</h2>
[11949]58<div class="h3" title="what" id="what">
[14219]59<h3 class="question">What is ABCL?</h3>
60<p>ABCL stands for Armed Bear Common Lisp.  ABCL is an implementation
61of Common Lisp hosted on the <a href="">Java Virtual Machine</a>.  With the release of <a
63Armed Bear Common Lisp is a conforming implementation of the
64<a href="">ANSI Common Lisp specification</a>.  The required statement of conformance
65is included in the <a href="#user-manual">User Manual</a>.</p>
[14220]68The development version of ABCL, <a href="#repository">abcl-1.1.0-dev (aka "ABCL trunk")</a>, contains a complete
[14219]69implementation of the <a
[14220]70href="">AMOP</a> that is being
71extensively tested for release with <a href="">abcl-1.1.0</a>.
[11947]76<div class="h3" title="license" id="license">
[14219]77<h3 class="question">What license is used for ABCL?</h3>
[14219]79<p>ABCL is distributed under the <a href="">GNU General Public License</a> with <a
81exception</a>. This is the same license as used for JAVA SE and GNU Classpath.</p>
[11947]83<p>Basically this means you can use ABCL from your application without the
84need to make your own application open source.</p>
87In general, such usage means that whenever you keep ABCL as a separate
88jar file, you won't have licensing problems. The combining in the
89Classpath exception means that you can
92<li>Extend ABCL java classes in your program</li>
93<li>Use ABCL java classes in your program</li>
94<li>Invoke ABCL lisp functions in your program</li>
[11964]97without having to worry about the licensing. You do have to
98distribute the source code of ABCL (including modifications)
99if you distribute ABCL, but otherwise the license of ABCL is not viral.
[11947]103<div class="h3" title="bug-reporting" id="bug-reporting">
[14219]104<h3 class="question">How/Where should I report bugs?</h3>
107The current state of issues can be found in the <a
108href="">ABCL issue
[13542]109tracker</a>.  Individuals with an <a
110href="">OpenID</a> such as a Google
111ID may enter information directly in the bug tracker after
112authenticating by your provider. </p>
[13542]116Alternatively, to report a bug, please mail a description of the
117problem, the version of ABCL you are using, and if possible a set of
118steps to reproduce the problem to the <a
120mailing list</a>.  We try to respond within a day at most to messages.
121A convenient way to browse the mailing list archives can be found by
122<a href="">the gmane
123loom interface to the NNTP group gmane.lisp.armedbear.devel</a>.
[13759]127Developers can also usually be found on the
128<a href="">#abcl irc channel</a>.
[11949]131<div class="h3" title="speed" id="speed">
[14219]132<h3 class="question">Is ABCL faster or slower than implementation XYZ?</h3>
134<p>General comparisons are hard to make, the relative speeds depend
135on a lot of factors. For example timing outcomes of specific bits
136of Java may have different timings depending on the settings of
137the HotSpot JIT compiler (if the tests are run on Sun).</p>
139<p>Some statements can be made in general though. Due to the fact that
140ABCL has been implemented in Java, it inherits some of the aspects of
141Java itself as well as the fact that it can't directly manipulate
142CPU content. Implementations such as SBCL and Closure CL can do that and
143take that to their advantage: for example in SBCL a boxed fixnum is a
144direct register value, while in ABCL it's encapsulated in an object.</p>
146<p>On the other hand, ABCL - like SBCL - supports unboxed fixnums. ABCL's
147fixnums support the full 32 bit range of integer values, while SBCL due
148to its boxing strategy can only use 29 bit integers (on 32bit platforms).</p>
150<p>Given ABCL's age - a young project by Lisp standards - there is also
151plenty of room for improvement in the area of execution speed and optimization.
152The project welcomes initiatives to improve performance.</p>
[11949]156<div class="h3" title="qa" id="qa">
[14219]157<h3 class="question">What is the quality of the implementation? How can you tell?</h3>
[13544]159<p>The project recognizes there are several dimensions to quality:</p>
161<li> The level of compliance to the standard </li>
[13544]162<li> The level of 'usability': whether (or not) the application is able
[11949]163  to run existing Lisp code</li>
167The plan is to ensure that ABCL runs with the software provided by
168<a href="">Quicklisp</a>.  For many packages available from Quicklisp,
169this is already the case.
172<p>The first item is being measured by running the ANSI test suite compliance
173  tests. The second item is measured by compiling and running the test suite
174  in the <a href="">Maxima application</a>.
175  Additionally, compilation of <a href="">AP5</a> is used to
176  improve this measure too.</p>
[13759]178<p>ABCL 1.0.1 fails roughly 20 out of 21702 tests in the ANSI test
[13483]179suite in interpreted and compiled modes, a constant number over the
[13542]180past releases.</p>
[11949]182<p>As a measure of 'improvement achieved', the development team refers
183  to the number of failing tests in the Maxima test suite too.
[13002]184  ABCL 0.23.0 is able to run the test suite without failures, coming from
185  'only' ca 75 failing tests at the time of 0.15.0, and even 1400 failures
186  around October 2008.</p>
[12034]189<div class="h3" title="repository" id="repository">
[14219]190<h3 class="question">Where is ABCL's source code repository?</h3>
[14219]192<p>The source code may be viewed with a web browser by visiting  <a
[14219]196<p>If you want to build the source, ABCL trunk,
197can be checked out via <a
198href="">Subversion (aka "svn")</a> from
199the URI
200<a href="svn://">svn://</a>.</p>
[14219]203This ABCL source repository is also exported read-only via HTTP at
[13483]204<a href=""></a>
[13002]208<div class="h3" title="documentation" id="documentation">
[14219]209<h3 class="question">Where is ABCL's documentation?</h3>
[13002]211<p>Documentation on ABCL can be found in several places, depending on the
212  kind of documentation you're looking for.</p>
[14219]215  <li id="user-manual">Users of the system are invited to start with the <a href="">Armed Bear Common Lisp User Manual</a></li>
[13073]216  <li>Our <a href="">wiki</a></li>
[13002]217  <li>The <a href="">source
218    code (JavaDoc and general comments)</a></li>
219  <li>Specific <a
[13483]226<div class="h2" title="Building" id="building">
[14219]227<h2 class="topic">Building</h2>
229<div class="h3" title="Avoiding recompilation" id="avoiding-recompilation">
[14219]230<h3 class="question">The Ant build process seems to recompile from scratch each time.  How do I avoid this?</h3>
233If the JVM system property <code></code> is set,
234the Ant build process will attempt to build ABCL incrementally
235by not removing any intermediate results.  The easiest way to enable
236this property is to copy the '' file to
237'', then uncomment the line referencing the setting of
238the <code></code> property.
244<div class="h2" title="Running" id="running">
[14219]245<h2 class="topic">Running</h2>
247<div class="h3" title="Out of Memory errors" id="maxpermgen-errors">
[14219]248<h3 class="question">Java is running out of memory with an error reporting something
[13544]249about "java.lang.OutOfMemoryError: PermGen space".  What can I
253  You need to increase the memory which the Java allocates for
[13544]254  permanent generation ("PermGen)" objects by using the appropriate
[13542]255  switch on command line which invokes the JVM hosting ABCL.  When the
256  implementation compiles or loads Lisp code, it creates a separate
257  JVM class for each top-level form.  With large workloads, this can
258  overrun the part of memory which Java reserves for storing the class
259  definition which results in the error you are seeing.
[13544]263  The exact manner of configuring this option unfortunately varies by
264  Java implementation.  For the Oracle HotSpot 64bit JVM, something
265  like <code>"-d64 -Xmx4g -XX:MaxPermSize=1g
266  -XX:+CMSClassUnloadingEnabled"</code> will not only increase the
[13542]267  PermGen space, but will ensure you always invoke the 64bit JVM,
[13544]268  increase the maximum memory space available to the Java to 4GiB, and
269  allow the garbage collection of class definitions which are deemed
[13542]270  to be unused.
274  If you are compiling ABCL from source, a handy way to have the build
275  process incorporate such runtime flags in the JVM invocation would
[13544]276  be to copy the <code>''</code> file to
277  <code>''</code>, and then ensure that the
278  <code>'java.options'</code> variable is set to the desired options.
[14219]281<div class="h3" title="What is the name of the startup run control script?" id="dotabclrc">
282<h3 class="question">Is there a file that customizes the startup of the ABCL process?</h3>
285  The file <code>~/.abclrc</code> is loaded by the implementation if the <code>--noinit</code> flag is not specified.
[11937]294<div style="float:left;width:100%">
295 <hr />
296 <p>Back to <a href=""></a>.</p>
298 <div class="check">
299   <a href="">Valid XHTML 1.0 Strict</a>
300 </div>
301<div style="float:right;font-size:10px;font-family:monospace">$Id: faq.shtml 14220 2012-10-28 08:58:12Z mevenson $</div>
Note: See TracBrowser for help on using the repository browser.