tag:blogger.com,1999:blog-42354399718371264162024-02-20T05:26:03.638-08:00ABCLDevelopment of the Armed Bear Common Lisp implementationehuelsmannhttp://www.blogger.com/profile/18367657358957126293noreply@blogger.comBlogger91125tag:blogger.com,1999:blog-4235439971837126416.post-85277706178234528272023-06-21T03:39:00.002-07:002023-06-21T03:39:22.826-07:00A Midsummer's Eve with ABCL 1.9.2 <div><div><span style="font-family: courier; font-size: medium;">On the threshold of the Northern Hemisphere's Midsummer's Eve, we unveil the second revision of the Tenth Edition of the Armed Bear Common Lisp implementation, viz. abcl-1.9.2.</span></div><div><span style="font-family: courier; font-size: medium;"><br /></span></div><div><span style="font-family: courier; font-size: medium;">Most notably, we are pleased to present the fruits of Alejandro Zamora Fonseca's labors on an interpreted implementation of CL:STEP with the first release of the ABCL-STEPPER contrib. See <<a href="https://abcl.org/svn/tags/1.9.2/contrib/abcl-stepper/README.markdown">https://abcl.org/svn/tags/1.9.2/contrib/abcl-stepper/README.markdown</a>> for more details. This implementation was the subject of his demonstration <<a href="https://zenodo.org/record/7815887">https://zenodo.org/record/7815887</a>> as this year's European Lisp Symposium.</span></div><div><span style="font-family: courier; font-size: medium;"><br /></span></div><div><span style="font-family: courier; font-size: medium;">The POSIX-SYSCALLS contrib now provides the ability to set environment variables under UNIX systems <<a href="https://abcl.org/trac/changeset/15700">https://abcl.org/trac/changeset/15700</a>>, as well as providing an example of how best to add abstract additional functionality to the core implementation.</span></div><div><span style="font-family: courier; font-size: medium;"><br /></span></div><div><span style="font-family: courier; font-size: medium;">This release also features a substantially re-worked Gray Stream implementation which fixes enough our implementation to be a first class citizen of SLIME's usage. With the next release of SLIME, one will have to use abcl-1.9.2 in order to use the slime-repl. See <<a href="https://github.com/slime/slime/pull/765">https://github.com/slime/slime/pull/765</a>> for more details.</span></div><div><span style="font-family: courier; font-size: medium;"><br /></span></div><div><span style="font-family: courier; font-size: medium;">The ASDF-JAR contrib has been restored to a usable functionality, which includes re-packaging of ASDF systems from within jar files as well as better abstraction for finding non-source artifacts. Please refer to <<a href="https://gitlab.common-lisp.net/abcl/abcl/-/blob/master/contrib/asdf-jar/README.markdown">https://gitlab.common-lisp.net/abcl/abcl/-/blob/master/contrib/asdf-jar/README.markdown</a>> for a refresher on what facilities ASDF-JAR provides for the aspiring ASDF packager.</span></div><div><span style="font-family: courier; font-size: medium;"><br /></span></div><div><span style="font-family: courier; font-size: medium;">A complete list of changes may be viewed at <<a href="https://abcl.org/svn/tags/1.9.2/CHANGES">https://abcl.org/svn/tags/1.9.2/CHANGES</a>>.</span></div><div><span style="font-family: courier; font-size: medium;"><br /></span></div><div><span style="font-family: courier; font-size: medium;">The release itself is available at <<a href="https://abcl.org/releases/1.9.2/">https://abcl.org/releases/1.9.2/</a>>.</span></div><div><span style="font-family: courier; font-size: medium;"><br /></span></div><div><span style="font-family: courier; font-size: medium;">Thanks to everyone who continue to support the Bear. Enjoy yer evening…</span></div></div><div><br /></div>urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-27900875316339751882023-02-23T04:26:00.002-08:002023-02-23T04:26:24.940-08:00ABCL 1.9.1 "never use a dot oh"<p></p><p style="text-align: left;"></p><ul style="text-align: left;"></ul><p>If one has been hesitating about using the latest ABCL because one "never uses a dot oh release", we have now sloughed off abcl-1.9.1 for your appraisal from the depths of a Bear's long winter nap. Now one can use the somewhat less buggy version of the Tenth Edition of Armed Bear Common Lisp, available, as usual, at <<a href="https://abcl.org/releases/1.9.1/">https://abcl.org/releases/1.9.1/</a>> or (shortly) via Maven <<a href="https://search.maven.org/artifact/org.abcl/abcl/1.9.1/jar">https://search.maven.org/artifact/org.abcl/abcl/1.9.1/jar</a>>.</p><ul style="text-align: left;"></ul>Please note that when running on openjdk17 and later runtimes, there is quite a bit of necessary fiddling with command line arguments to"open" various modules to the Bear's introspective gaze. For example, see <https://abcl.org/svn/tags/1.9.1/ci/create-abcl-properties.bash> for the switches necessary to use CFFI to successfully run the CL+SSL test suite.<div><br /><p></p><p style="text-align: left;">As a reward for your patience, we mention the following humble improvements:</p><ul style="text-align: left;"></ul><h3 style="text-align: left;">CFFI compatibility</h3><ul style="text-align: left;"></ul>We improved the compiler to use wide indices for stack frame locals for the ALOAD, ASTORE, ILOAD, ISTORE, LLOAD, and LSTORE opcodes, which among other goodness, allows CFFI-TESTS to compile again. In addition, we have updated the jar artifact used by CFFI to jna-5.12.1 which includes support for native linkage on the Apple Silicon and other exotic architectures.<br /><ul style="text-align: left;"></ul><h3 style="text-align: left;">(Alan Ruttenberg) Ability to discriminate generic function execution on sub-types of MOP:SPECIALIZER</h3><ul style="text-align: left;"></ul>Following SBCL, CCL, and ECL, the Bear now accepts subtypes of MOP:SPECIALIZER as a generic function discriminator.<br /><ul style="text-align: left;"></ul><ul style="text-align: left;"></ul><ul style="text-align: left;"></ul><h3 style="text-align: left;">Overhauled relationship to later openjdk threading models</h3><ul style="text-align: left;"></ul>Going back to the future of the original green thread models, recent openjdk releases have started offering lightweight threading implementations. For the Bear, the ability to spawn virtual threads is indicated by the presence of :VIRTUAL-THREADS in CL:*FEATURES*. Setting the special THREADS:*THREADING-MODEL* to :VIRTUAL results in THREADS:MAKE-THREADS spawning virtual threads. On some openjdks one may have to pass a command-line switch the JVM to enable virtual threading.<br /><ul style="text-align: left;"></ul><h3 style="text-align: left;">(Uthar) Implement array types for JAVA:JNEW-RUNTIME-CLASS</h3><ul style="text-align: left;"></ul>Support for creating synthetic Java classes at runtime via JAVA:JNEW-RUNTIME-CLASS has been improved by introducing machinery for dealing with array types.<br /><ul style="text-align: left;"></ul><h3 style="text-align: left;">(Alejandrozf) Compiler uses of signals to fallback to interpreted form</h3><ul style="text-align: left;"></ul>We fall back to use an interpreted form for compilation results larger than 65535 bytes, which fixes the loading of the FirCAS computer algebra system.<br /><ul style="text-align: left;"></ul><h3 style="text-align: left;">(Alejandrozf) Further fixes to COMPILE-FILE-PATHNAME</h3><ul style="text-align: left;"></ul>We have restored the ability to compile Maxima by hopefully untanglingthe last kinks in the reworking of our COMPILE-FILE-PATHNAME logic.<br /><ul style="text-align: left;"></ul><h3 style="text-align: left;">(Tarn W. Burton) Avoid NIL in simple LOOP from CL:FORMAT directives</h3><ul style="text-align: left;"></ul>Simplify simple CL:LOOP requires only compound forms, in the place where returning NIL is neither permitted nor desired.<br /><ul style="text-align: left;"></ul><br /><ul style="text-align: left;"></ul><br /><ul style="text-align: left;"></ul><h3 style="text-align: left;">Broad testing and tweaks across Java Long Term Support (LTS) binaries</h3><ul style="text-align: left;"></ul>We have extensively tested against recent openjdk8, openjdk11,openjdk17, and openjdk19 binaries. Unfortunately, for openjdk17+ runtimes one needs to pass additional runtime command line switches to the hosting JVM which "open" Java modules to reflective actions.<br /><ul style="text-align: left;"></ul><br /><ul style="text-align: left;"></ul><br /><ul style="text-align: left;"></ul><h2 style="text-align: left;">Fuller details</h2><ul style="text-align: left;"></ul>More details can be found in <<a href="https://abcl.org/svn/tags/1.9.1/CHANGES">https://abcl.org/svn/tags/1.9.1/CHANGES</a>>.<br /><ul style="text-align: left;"></ul><ul style="text-align: left;"></ul>Enjoy, and please CONS responsibly…</div>urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-65208405678872143902020-10-30T04:34:00.000-07:002020-10-30T04:34:44.242-07:00 ABCL 1.8.0<p><span style="font-family: courier;">Under the gathering storms of the Fall 2020, we are pleased to </span><a href="https://abcl.org/releases/1.8.0" style="font-family: courier;">release ABCL 1.8.0</a><span style="font-family: courier;"> as the Ninth major revision of the </span><span style="font-family: courier;">implementation.</span></p><p><span style="font-family: courier;">This Ninth Edition of the implementation now supports building and </span><span style="font-family: courier;">running on the recently released openjdk15 platform. This release </span><span style="font-family: courier;">is intended as the last major release to support the openjdk6 </span><span style="font-family: courier;">openjdk7, and openjdk8 platforms, for with abcl-2.0.0 we intend to </span><span style="font-family: courier;">move the minimum platform to openjdk11 or better in order to </span><span style="font-family: courier;"><a href="https://github.com/armedbear/abcl/issues/92">efficiently implement atomic memory compare and swap </a></span><span style="font-family: courier;"><a href="https://github.com/armedbear/abcl/issues/92">operations</a>.</span></p><p><span style="font-family: courier;">With this release, the implementation of the EXT:JAR-PATHNAME and </span><span style="font-family: courier;">EXT:URL-PATHNAME subtypes of cl:PATHNAME has been overhauled to the </span><span style="font-family: courier;">point that arbitrary references to ZIP archives within archives </span><span style="font-family: courier;">now work for read-only stream operations (CL:PROBE-FILE </span><span style="font-family: courier;">CL:TRUENAME, CL:OPEN, CL:LOAD, CL:FILE-WRITE-DATE, CL:DIRECTORY, </span><span style="font-family: courier;">and CL:MERGE-PATHNAMES). The previous versions of the </span><span style="font-family: courier;">implementation relied on the ability for java.net.URL to open </span><span style="font-family: courier;">streams of an archive within an archive, behavior that was </span><span style="font-family: courier;">silently dropped after Java 5, and consequently hasn't worked on </span><span style="font-family: courier;">common platforms supported by the Bear in a long time. The </span><span style="font-family: courier;">overhaul of the implementation restores the feasibility of </span><span style="font-family: courier;">accessing fasls from within jar files. Interested parties <a href="https://abcl.org/svn/trunk/abcl/contrib/asdf-jar/README.markdown">may </a></span><span style="font-family: courier;"><a href="https://abcl.org/svn/trunk/abcl/contrib/asdf-jar/README.markdown">examine the ASDF-JAR contrib</a> for a recipe for packaging and </span><span style="font-family: courier;">accessing such artifacts. Please consult the </span><a href="https://abcl.org/releases/1.8.0/abcl-1.8.0.pdf" style="font-family: courier;">"Beyond ANSI:</a> <span style="font-family: courier;"><a href="https://abcl.org/releases/1.8.0/abcl-1.8.0.pdf">Pathnames" Section 4.2 of the User Manual</a> for further </span><span style="font-family: courier;">details for how namestrings and components of PATHNAME objects </span><span style="font-family: courier;">have been revised.</span></p><p><span style="font-family: courier;">A more comprehensive list of <a href="https://abcl.org/svn/tags/1.8.0/CHANGES">CHANGES</a> is available with the source.<br /><br /><br /></span></p><p><span style="font-family: courier;"><br /></span></p><p><span style="font-family: courier;"><br /></span></p><p><span style="font-family: courier;"> </span></p><div><br /></div>urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-18501904967675895972020-07-18T08:56:00.000-07:002020-07-18T08:56:29.848-07:00ABCL 1.7.1<div><font face="courier">With gentle prodding, the Bear <a href="https://abcl.org/releases/1.7.1/">has released ABCL 1.7.1</a>, a decidedly </font><span style="font-family: courier;">minor release correcting a few bugs resulting from the overhaul of </span><span style="font-family: courier;">arrays specialized on unsigned byte types.</span></div><div><font face="courier"><br /></font></div><div><font face="courier">The brief list of <a href="https://abcl.org/svn/tags/1.7.1/CHANGES">CHANGES is a available for your perusal</a>.</font></div>urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-3360508645568406032020-06-17T01:09:00.007-07:002020-06-17T01:13:17.939-07:00A Future History of Arming Bears<div><font face="courier">As part of the <a href="https://www.reddit.com/r/lisp/comments/ga7kfk/online_lisp_meeting_series/">ongoing Online Lisp Meeting series</a>, a recording of a talk about ABCL with the following precis is <a href="https://www.reddit.com/r/lisp/comments/h9h4mh/reflections_on_the_future_history_of_arming_bears/">now available online</a>:</font></div><div><font face="courier"><br /></font></div><blockquote style="border: none; margin: 0px 0px 0px 40px; padding: 0px; text-align: left;"><div><font face="courier">With the recent releases of Armed Bear Common Lisp over the past six months, the future of extending the implementation has come into sharper focus. The majority of this work has occurred within the head of one individual with little chance for public review and reflection. We believe that our externalized exposition of the reasoning behind these efforts will be of interest to those interested in the future history of Common Lisp implementations.</font></div><div><font face="courier"><br /></font></div><div><font face="courier">In the past few months, we released abcl-1.6.0 in which we extended the set of underlying Java Virtual Machines (JVM) that the implementation runs on to include openjdk11 and openjdk14 while maintaining compatibilty with openjdk6. With the internal overhaul or arrays specialized on unsigned bytes in abcl-1.7.0, we made it possible to share such byte vectors with memory allocated outside of the hosting JVM via system interfaces such as malloc(). </font></div><div><font face="courier"><br /></font></div><div><font face="courier">We first present a brief prehistory on the Armed Bear Common Lisp Implementation. Then, we first present the goals and challenges in affecting these changes within the ABCL codebase by showing examples from recent experience. Then, we use this initial exposition to serve as a springboard to discuss outstanding needed changes in the ABCL 1 branch, and to outline some of the features intended to be present in ABCL 2, due to be released in the Fall of 2020.</font></div></blockquote><div><font face="courier"><br /></font></div><div><font face="courier">A revised version of the <a href="https://slack.net/~evenson/abcl/history/abcl-future-history.html">notes for the presentation</a> is available for deeper, asynchronous reflection. </font></div><div><br /></div>urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-19687000386232816282020-06-04T03:28:00.001-07:002020-06-04T04:37:56.553-07:00The Bear Arms for Sharing Byte Vectors with 1.7.0<span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">We are pleased to announce the immediate availability of the <a href="https://abcl.org/releases/1.7.0/">ABCL</a></span><a href="https://abcl.org/releases/1.7.0/"><br style="caret-color: rgb(0, 0, 0); font-family: Monaco; font-size: 13px; text-size-adjust: auto;" /></a><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;"><a href="https://abcl.org/releases/1.7.0/">1.7.0 release</a>.</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">After consuming a steady diet of <a href="https://www.doc.ic.ac.uk/csg-old/java/jdk6docs/api/java/nio/ByteBuffer.html">java.nio.ByteBuffer</a> objects over the</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">past month, the Bear has managed to incorporate the use of these</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">abstractions for arrays specialized on the commonly used unsigned-byte</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">types (or (unsigned-byte 8) (unsigned-byte 16) (unsigned-byte 32)).</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">This replacement of the use arrays of primitive bytes is denoted by</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">the presence of the :NIO keyword in CL:*FEATURES*.</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">With this :NIO overhaul, we have extended our implementation of ANSI</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">Common Lisp <a href="https://github.com/armedbear/abcl/commit/6c4b7f3c11b2c8151f4599c9bddf5c0991bc6154">CL:MAKE-ARRAY</a> with two additional keywords,</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">viz. :NIO-BUFFER and :NIO-DIRECT.</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">Now, the :NIO-BUFFER keyword argument to CL:MAKE-ARRAY allows one to construct a vector </span><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">directly utilizing the contents of an already allocated</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">java.nio.ByteBuffer object. When combined with the ability of JNA to</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">allocate memory on the heap via a malloc() system call, we implemented</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">shareable byte vectors in <a href="https://github.com/cffi/cffi/commit/47136ad9a97c2df98dbcd13a068e14489ced5b03">CFFI-SYS:MAKE-SHAREABLE-BYTE-VECTOR</a>.</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;"> (let* ((length 16)</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;"> (byte-buffer (java:jstatic "allocate"</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;"> "java.nio.ByteBuffer" length)))</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;"> (make-array length :element-type ’(unsigned-byte 8)</span><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;"> </span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;"> :nio-buffer byte-buffer))</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">When the :NIO-DIRECT keyword argument is called with a non-NIL value,</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">the implementation creates a byte vector with a "directly allocated"</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">java.nio.ByteBuffer object. Such direct buffers typically have</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">somewhat higher allocation and deallocation costs than non-direct</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">buffers. The contents of direct buffers may reside outside of the</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">normal garbage-collected heap, and so their impact upon the memory</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">footprint of an application might not be obvious. It is therefore</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">recommended that direct buffers be allocated primarily for large,</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">long-lived buffers that are subject to the underlying system’s native</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">I/O operations. In general it is best to allocate direct buffers only</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">when they yield a measurable gain in program performance. In the near</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">future, we intend to explore the performance gains available CL:LOAD</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">by accessing direct buffers memory mapped to our on-disk fasl</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">representation. Our fasls, as zipped archives, currently require a</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">new seek() from the beginning for each component they</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">contain. With a memory mapped direct buffer we should be able to</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">simply read from the appropriate byte offset for each component.</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">A complete overview of the accumulated fixes and changes since the</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><span style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;">previous release may be viewed in the file describing our <a href="https://abcl.org/svn/tags/1.7.0/CHANGES">CHANGES</a>.</span><br style="caret-color: rgb(0, 0, 0); font-family: monaco; font-size: 13px; text-size-adjust: auto;" /><br /><br />urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-36771513991407880202020-04-28T00:38:00.000-07:002020-04-28T00:38:38.061-07:00ABCL 1.6.1 Springs Forth<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "courier new" , "courier" , monospace;">As augured, the Bear is pleased to join fellow open ANSI Common Lisp implementations <a href="https://github.com/Clozure/ccl/releases/tag/v1.12" target="_blank">CCL</a>, <a href="https://common-lisp.net/project/ecl/posts/ECL-20424-release.html" target="_blank">ECL</a>, and <a href="http://sbcl.org/news.html#2.0.4" target="_blank">SBCL</a> in publishing a new release around the online advent of the thirteenth European Lisp Symposium, <a href="https://european-lisp-symposium.org/2020/index.html" target="_blank">ELS2020</a>.<br /><br />The <a href="https://abcl.org/releases/1.6.1/" target="_blank">ABCL 1.6.1 binaries and signatures</a> are now available with their associated <a href="https://abcl.org/svn/tags/1.6.1/CHANGES" target="_blank">CHANGES</a>.<br /><br />Thanks to everyone involved in continuing to further the progress of our implementation.<br /></span></div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-73980394157434223172020-04-24T01:16:00.001-07:002020-04-24T01:16:21.794-07:00ABCL-1.6.1 at ELSCONF <div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: Courier New, Courier, monospace;">Rejoice! for the Bear has emerged from its Lair to slough off <a href="https://github.com/armedbear/abcl/pull/172">abcl.1.6.1</a> <urn:abcl rc0=""> Please see <a href="https://github.com/easye/abcl/blob/abcl/1.6.1/CHANGES">CHANGES</a> for a summary of improvements over the previous release.<br /><br />Please get any outstanding patches in before April 27, 2020 as we will be releasing abcl-1.6.1 live "at" <a href="https://twitter.com/elsconf">#ELSCONF</a>. <br /><br />Currently, the release candidate rc-0 has been committed to various cloud builds; we will be rendezvousing with the cryptographic signatures to do the actual public release on Monday. <a href="https://github.com/easye/abcl/blob/abcl/1.6.1/ci/release.lisp">ABCL-BUILD doesn't have reproducible builds</a>, but we're actively working on fixing that…<br /><br />stay tuned <a href="https://european-lisp-symposium.org/2020/index.html">until Monday</a> Bear fans,</urn:abcl></span></div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-59819087249273760102019-11-28T06:07:00.001-08:002019-11-28T06:10:58.238-08:00Stuffing an @Armedbear<div dir="ltr" style="text-align: left;" trbidi="on">
Notes on stuffing the Bear into a single jar with <a href="https://github.com/armedbear/abcl/blob/6738a8731fbd43f51bf82af1d5321ddc4365b710/doc/packaging-abcl.org">ABCL-AIO</a> after T-day for Black Friday. <br />
<br />
Happy Thanksgiving!<br />
<br /></div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-27141736199705788052019-11-22T06:31:00.002-08:002019-11-22T06:32:36.424-08:00Unleashing the Bear past Java 11<div dir="ltr" style="text-align: left;" trbidi="on">
Against the falling canvas of 2019, the Bear has freely thrust <a href="https://abcl.org/releases/1.6.0">ABCL</a><br />
<a href="https://abcl.org/releases/1.6.0">1.6.0</a> onto the <a href="https://github.com/armedbear/abcl" target="_blank">world stage</a>.<br />
<br />
This release fully supports building and running on Java 6, 7, 8, and<br />
11 via the <a href="https://adoptopenjdk.net/">openjdk runtimes</a>. By <a href="https://gitlab.common-lisp.net/abcl/abcl/tree/master/contrib/abcl-build">building from our</a><br />
<a href="https://gitlab.common-lisp.net/abcl/abcl/tree/master/contrib/abcl-build">source</a>, it is <a href="https://mailman.common-lisp.net/pipermail/armedbear-devel/2019-November/004008.html">rumored that the User may utilize additional</a><br />
<a href="https://mailman.common-lisp.net/pipermail/armedbear-devel/2019-November/004008.html">hosting platforms such as Java 13</a>.<br />
<br />
Support for Microsoft Windows platforms has not been thoroughly tested<br />
at this point but we intend to add it our <a href="https://travis-ci.org/armedbear/abcl/builds">automated cloud based build</a><br />
in the process of releasing a <a href="https://abcl.org/trac/milestone/1.6.1">stabilizing ABCL 1.6.1</a> build due by the<br />
end of this year.<br />
<br />
Thanks to all past, present, and future contributors to the Bear;<br />
here's to <a href="https://github.com/armedbear/abcl/blob/master/contrib/jss/invoke.lisp">hackin' our way out of the prison of the Java</a><br />
<a href="https://github.com/armedbear/abcl/blob/master/contrib/jss/invoke.lisp">language</a> for over a decade.<br />
<br />
<br /></div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-22854495084273297382019-11-14T06:29:00.000-08:002019-11-14T06:37:55.030-08:00Turning the Bear past Java 11<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: inherit;">As the leaves fall in the Northern hemisphere, thoughts of the Bear<br />turn to a rumored permanent slumber, and a complete absence of the<br />possibility of new updates. The Bear <a href="https://abcl.org/trac/" target="_blank">reviews</a> all <a href="https://gitlab.common-lisp.net/abcl/abcl/" target="_blank">submitted</a> <br /><a href="https://github.com/armedbear/abcl/" target="_blank">patches</a>, so if you don't like the current implementation,<br />please get out and push. Or pull? Or fast forward? The Bear is<br />seemingly always confused with Git…<br /><br />As previously rumored, <a href="https://github.com/armedbear/abcl/commit/a628e961a1dc33e1f225191a19494701d7770e55" target="_blank">patches for getting the Armed Bear</a></span><br />
<span style="font-family: inherit;">Common Lisp implementation running on Java 11 have landed in<br />the <a href="https://abcl.org/trac/changeset/15133" target="_blank">trunk</a>.<br /><br />Unless anyone objects strongly, we will release <a href="https://abcl.org/trac/milestone/1.6.0">ABCL 1.6.0</a> as soon </span><br />
<span style="font-family: inherit;">as possible with the intention to support the openjdk{6,7,8,11} runtimes.<br /><br />After stabilizing the 1.6 branch with the inevitable necessary and<br />unknown updates, we can turn our attention to the <a href="https://abcl.org/trac/milestone/2.0.0">ABCL 2.0 branch</a> which <br />will introduce support for additional runtimes but drop support for emitting </span><br />
<span style="font-family: inherit;">openjdk6 or openjdk7 compatible byte-code.<br /><br />Stay tuned, Bear fans…</span></div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com2tag:blogger.com,1999:blog-4235439971837126416.post-82405934655924151182017-06-11T02:41:00.000-07:002020-04-25T00:00:43.177-07:00ABCL 1.5.0<div dir="ltr" style="text-align: left;" trbidi="on">
We are pleased to announce that we have released the Sixth Edition of the Armed Bear Common Lisp implementation as ABCL 1.5.0.<br />
<br />
Due to the lack of a publicly available Java 5 implementation, with this release we drop support for that platform, and henceforth support running on Java 6, Java 7, and Java 8. <br />
<br />
In addition to consolidating eight months of bug fixes, the following notable features are now also present in the implementation.<br />
<br />
The compiler now records more complete debugging information on the SYS:SOURCE symbol property. <br />
<br />
<a href="http://abcl.org/trac/browser/tags/1.5.0/contrib/abcl-introspect">ABCL-INTROSPECT </a>offers improved inspection of backtraces to the point that local variables may be inspected in Lisp debug frames. <a href="https://github.com/slime/slime/commit/6f06402595df0ec6b305fc5a13e18f48e8989c64" target="_blank">Patches to SLIME </a>to use this feature are in the process of being merged into the upstream repository. The <a href="http://abcl.org/trac/browser/tags/1.5.0/contrib/abcl-introspect/objectweb.asd">OBJECTWEB</a> system allows the user to disassemble JVM bytecode via dependencies managed by Maven.<br />
<br />
JSS <a href="http://abcl.org/trac/browser/tags/1.5.0/contrib/jss/transform-to-field.lisp">now contains a syntax for accessing Java static and member fields</a>.<br />
<br />
For declaring dependencies on Java artifacts <a href="http://abcl.org/trac/browser/tags/1.5.0/contrib/abcl-asdf">ABCL-ASDF,</a> we have added an experimental syntax to address JRE/JDK artifacts via the <a href="http://abcl.org/trac/browser/tags/1.5.0/contrib/abcl-asdf/asdf-jar.lisp#L106">ASDF:JDK-JAR</a> class, as well as the ability to more finely control Maven dependencies with the <a href="http://abcl.org/trac/browser/tags/1.5.0/contrib/abcl-asdf/mvn-module.lisp">ASDF:MVN-MODULE</a> class.<br />
<br />
A complete list of <a href="http://abcl.org/svn/tags/1.5.0/CHANGES">changes may be viewed in the source repository</a>. <br />
<br />
Binaries for this release may either be downloaded directly from <a href="http://abcl.org/releases/1.5.0">http://abcl.org/releases/1.5.0</a>, <a href="https://search.maven.org/#search%7Cga%7C1%7Cg%3A%22org.abcl">retrieved from the distributed Maven POM graph</a>, or run from Docker via <br />
<blockquote class="tr_bq">
<span style="font-family: "courier new" , "courier" , monospace;"> docker run -it easye/abcl:1.5.0</span></blockquote>
Many thanks to all who have contributed to nurturing the Bear's execution of conforming ANSI Common Lisp on the Java Virtual Machine.</div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-89743932434349516412017-06-07T04:11:00.001-07:002017-06-07T04:12:43.515-07:00ABCL 1.5.0-rc-0 draft of upcoming User Manual<div dir="ltr" style="text-align: left;" trbidi="on">
An unsigned ABCL 1.5.0-rc-0 release now available to test the distributions mechanisms for the upcoming ABCL-1.5.0 release.<br />
<br />
<a href="http://abcl.org/trac/milestone/1.5.0">http://abcl.org/trac/milestone/1.5.0</a><br />
<br />
<a href="http://abcl.org/releases/1.5.0/">http://abcl.org/releases/1.5.0/</a><br />
<div>
<br /></div>
Draft of upcoming User Manual to which corrections are solicited.<br />
<br />
<a href="http://abcl.org/releases/1.5.0/abcl-1.5.0-rc-0.pdf">http://abcl.org/releases/1.5.0/abcl-1.5.0-rc-0.pdf</a><br />
<br />
<br /></div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-15515781053236064222016-12-27T10:32:00.002-08:002017-03-28T04:39:24.008-07:00An Armed Bear in Hock with the Dock<div dir="ltr" style="text-align: left;" trbidi="on">
This season finds us remembering Wilde's remark about fashion being so unbearable that it must be utterly destroyed every six months. In that spirit, we submit to current fashion in documenting how ABCL repl may be obtained locally viz:<br />
<br />
docker run -it easye/abcl<br />
<br />
Happy holidays!<br />
<br />
<br />
One may need to explicitly update the base openjdk8 container that easye/abcl is based on via:<br />
<br />
docker pull easye/openjdk8<br />
docker run easye/abcl /usr/local/bin/abcl<br />
<br />
[Docker Engine]: <a href="https://www.docker.com/products/docker-engine">https://www.docker.com/products/docker-engine</a><br />
<br />
If you want a specific packaging to add your own Java/Lisp artifacts, you may easily rebuild the Docker image that the container starts with from cloning<a href="https://gitlab.common-lisp.net/abcl/abcl"> the ABCL source </a>and then issuing:<br />
<br />
docker pull easye/openjdk8<br />
docker build -t easye/abcl .<br />
<br />
See <a href="http://abcl.org/svn/trunk/abcl/Dockerfile">http://abcl.org/svn/trunk/abcl/Dockerfile</a> <a href="http://abcl.org/svn/trunk/abcl/Dockerfile"><file:dockerfile></file:dockerfile></a> for<http: abcl.org="" abcl="" ockerfile="" svn="" trunk=""> build instructions.</http:><br />
<div>
<br /></div>
</div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com1tag:blogger.com,1999:blog-4235439971837126416.post-33709653193086752492016-10-08T09:57:00.003-07:002016-10-08T10:04:42.280-07:00ABCL 1.4.0<div dir="ltr" style="text-align: left;" trbidi="on">
With a decided chill noticeable in the Northern Hemisphere, the Bear has finally sloughed off a long-needed release of ABCL. <br />
<br />
With <a href="http://abcl.org/releases/1.4.0">abcl-1.4.0</a>, CFFI now works reliably allowing cross-platform linkage to native libraries to be initiated dynamically at runtime. Examples of using CL-CUDA to follow as their authors have time to publish.<br />
<br />
Considerable work and testing led by Elias Pipping with contributions from Olof-Joachim Frahm has led to a reasonable basis for UIOP/RUN-PROGRAM compatibility.<br />
<br />
We have taken the time to learn enough of Maven to publish binary artifacts for both <a href="http://search.maven.org/#artifactdetails%7Corg.abcl%7Cabcl%7C1.4.0%7Cjar">abcl.jar</a> and <a href="http://search.maven.org/#artifactdetails%7Corg.abcl%7Cabcl-contrib%7C1.4.0%7Cjar">abcl-contrib.jar</a> that allow developers everywhere to more easily incorporate the Bear into their local Java build tool chains.<br />
<br />
And we have tentatively surrendered to the current fashion by establishing GIT bridges to the ABCL source at https://gitlab.common-lisp.net/abcl/abcl and https://github.com/easye/abcl <https: abcl="" gitlab.common-lisp.net=""><https: abcl="" easye="" github.com="">to more easily facilitate contributions from the community.</https:></https:><br />
<http: abcl.org="" changeset="" p=""><br /></http:>
Version 1.4.0<br />
=============<br />
<a href="https://www.blogger.com/%3Chttp://abcl.org/svn/tags/1.4.0/%3E">http://abcl.org/svn/tags/1.4.0/</a><br />
<a href="http://abcl.org/trac/changeset/14892">http://abcl.org/trac/changeset/14892</a><br />
<a href="https://gitlab.common-lisp.net/abcl/abcl/commit/6737f6f0d71d89aff9003a9bcf2983b4f768b4d3">https://gitlab.common-lisp.net/abcl/abcl/commit/6737f6f0d71d89aff9003a9bcf2983b4f768b4d3</a><br />
<a href="https://github.com/easye/abcl/commit/6737f6f0d71d89aff9003a9bcf2983b4f768b4d3">https://github.com/easye/abcl/commit/6737f6f0d71d89aff9003a9bcf2983b4f768b4d3</a><br />
<br />
08-OCT-2016<br />
<br />
Enhancements<br />
============<br />
<br />
* Consolidated RUN-PROGRAM fixes (ferada, pipping)<br />
<br />
* Upstream consolidated patchset (ferada)<br />
<br />
** [r14857] Support `FILE-POSITION` on string streams.<br />
** [r14859] Add multiple disassembler selector.<br />
** [r14860] Add EXTERNAL-ONLY option to APROPOS.<br />
** [r14861] Fix nested classes from JARs not visible with JSS.<br />
<br />
* [r14840-2] (Scott L. Burson) Introduced "time of time" semantics for<br />
{encode,decode}-universal time.<br />
<br />
* EXTENSIONS:MAKE-TEMP-FILE now takes keyword arguments to specify<br />
values of the prefix and suffix strings to the underlying JVM<br />
implementation of java.io.File.createTempFile().<br />
<br />
* [r14849] EXT:OS-{UNIX,WINDOWS}-P now provide a pre-ASDF runtime check on hosting platform<br />
<br />
Fixes<br />
-----<br />
<br />
* [r14863] RandomCharacterFile et. al.<br />
<br />
* [r14839] (JSS) Ensure the interpolation of Java symbol names as strings (alan ruttenberg)<br />
<br />
* [r14889] Fix ANSI-TEST SXHASH.8 (dmiles)<br />
<br />
Updates<br />
------<br />
<br />
* asdf-3.1.7.26<br />
<br />
* jna-4.2.2<br />
<br />
Removed<br />
-------<br />
<br />
* [r14885] ASDF-INSTALL was removed<br />
<div>
<br /></div>
<http: abcl.org="" changeset="" p=""><br /></http:></div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-38427950237725507362015-09-18T13:39:00.001-07:002015-09-20T10:15:27.286-07:00abcl-1.3.3 released<div dir="ltr" style="text-align: left;" trbidi="on">
In anticipation of the coming season, we have released abcl-1.3.3<br />
<br />
<span style="font-size: x-small;"><span style="font-family: "Courier New",Courier,monospace;">Version 1.3.3<br />=============<br />http://abcl.org/svn/tags/1.3.3/<br />18-SEP-2015<br /><br />Enhancements<br />------------<br /><br />* [r14802,r14813] Add character name for non-breaking space<br /><br /> Use a human readable name for character 160, #\No-break_space,<br /> following sbcl, ccl and clisp. This permits the Quicklisp system<br /> spinneret to load. The #\No-break_space name is a valid<br /> CHAR-NAME/NAME-CHAR pair, but is emitted directly as a glyph wrt. the<br /> current output encoding under the CL:FORMAT "~:c" directive as<br /> these implementations do by default.<br /><br /> Thanks to Javier Olaechea.<br /><br />Fixes<br />-----<br /><br />* [r14808] CL:FILE-WRITE-DATE fixed for logical pathnames<br /><br />* ANSI-TEST<br /><br />** Update references to new git repository https://gitlab.common-lisp.net/ansi-test/ansi-test<br /> <git ansi-test.git="" ansi-test="" gitlab.common-lisp.net="" https:=""><br /><br />** ABCL now runs the git master consolidated ANSI-TEST suite which<br /> features subdirectories and distinquished value for<br /> *DEFAULT-PATHNAME-DEFAULTS*.<br /><br />** ABCL.TEST.ANSI:CLEAN-TESTS now acts recursively via appropiate<br /> Pathname wildcards to match new directory structure.<br /><br />* ASDF<br /><br /> Fix COMPILE-SYSTEM to offer full ANSI environment for ASDF and<br /> ABCL-CONTRIB. <br /><br />* ABCL-ASDF<br /><br />** Use of Maven has been robustified.<br /><br />*** [r14803] Fix usage with all known versions through maven-3.3.3<br /><br /> Addresses <http: abcl.org="" ticket="" trac="">http://abcl.org/trac/ticket/390<br /><br />*** [r14806] Fix usage with specifying local Maven repository<br /><br />** More complete attempt at re-initialization via<br /><br /> (ABCL-ASDF:INIT :force t)</http:></git></span></span></div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com2tag:blogger.com,1999:blog-4235439971837126416.post-19337838675179762012015-04-28T00:00:00.001-07:002015-04-28T00:00:30.417-07:00abcl-1.3.2 released<div dir="ltr" style="text-align: left;" trbidi="on">
While basking in the lovely London weather and thoroughly enjoying last week's <a href="http://www.european-lisp-symposium.org/">8th European Lisp Symposium</a>, the Bear managed to slough off a much needed spring cleaning maintenance release in the form of <a href="http://abcl.org/releases/1.3.2/"> abcl-1.3.2.</a> <br />
<br />
The full description of changes can be found in <<a href="http://abcl.org/svn/tags/1.3.2/CHANGES">http://abcl.org/svn/tags/1.3.2/CHANGES</a>>.</div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-80601178191261493152014-10-03T11:44:00.001-07:002014-10-03T11:45:09.121-07:00Short tip :: Booting quicklisp via SLIME<div dir="ltr" style="text-align: left;" trbidi="on">
For the truly lazy, the following forms will quickly load Quicklisp:<br />
<br />
(require :abcl-contrib) (asdf:load-system :quicklisp-abcl)<br />
<br />
<br /></div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-91569694935564447592014-04-29T14:23:00.001-07:002014-04-30T02:53:26.774-07:00An abcl-1.3.1 Spring Cleaning<div dir="ltr" style="text-align: left;" trbidi="on">
<div style="text-align: left;">
<pre><span style="font-family: Georgia,"Times New Roman",serif;"><span style="font-size: small;">The Bear came out of his cave on 30-APR-2014 for a spring cleaning. He grumbled
something about wanting to look good for Paris next week, and then went back inside
to sleep it off.</span></span></pre>
<pre><span style="font-family: Georgia,"Times New Roman",serif;"><span style="font-size: small;">[binaries]: <a href="http://abcl.org/releases/1.3.1/">http://abcl.org/releases/1.3.1/</a> [source]: </span></span><a href="http://abcl.org/svn/tags/1.3.1/"><span style="font-family: Georgia,"Times New Roman",serif;"><span style="font-size: small;">http://abcl.org/svn/tags/1.3.1/</span></span></a></pre>
</div>
<ul style="text-align: left;">
<li><span style="font-family: Georgia,"Times New Roman",serif;"><span style="font-size: small;">The underlying Java Function Interface (JFI) now converts CL:T and CL:NIL to JAVA:+TRUE+ and JAVA:+FALSE+. Users who wish to reference a JAVA:+NULL+ should do so explicitly. <br /> <a href="http://abcl.org/trac/changeset/14694">http://abcl.org/trac/changeset/14694</a></span></span></li>
</ul>
<ul style="text-align: left;">
<li><span style="font-family: Georgia,"Times New Roman",serif;"><span style="font-size: small;">Make JCALL work in more places. Thanks to Olof-Joachim Frahm. <br /><a href="http://abcl.org/trac/changeset/14683">http://abcl.org/trac/changeset/14683</a></span></span></li>
</ul>
<ul style="text-align: left;">
<li><span style="font-family: Georgia,"Times New Roman",serif;"><span style="font-size: small;">Interpolate CL:SLEEP and THREADS:OBJECT-WAIT for timeouts below the Planck timer ("1ns") to a nanosecond. <br /><a href="http://abcl.org/trac/changeset/14679">http://abcl.org/trac/changeset/14679</a></span></span></li>
</ul>
<ul style="text-align: left;">
<li><span style="font-family: Georgia,"Times New Roman",serif;"><span style="font-size: small;">Update to ASDF 3.1.0.103, fixing loading of Ironclad and other Quicklisp systems. <a href="http://abcl.org/trac/changeset/14661">http://abcl.org/trac/changeset/14661</a></span></span></li>
</ul>
<ul style="text-align: left;">
<li><span style="font-family: Georgia,"Times New Roman",serif;"><span style="font-size: small;">Fix Uniform Naming Convention (aka "UNC" or "network") paths under Windows. <a href="http://abcl.org/trac/changeset/14659">http://abcl.org/trac/changeset/14659 </a><br /><br />DIRECTORY now works again on UNC paths.</span></span><br /> UNC paths may be either specified with either back slash (#\\) orforward slash (#\/) doubled as the first character in a <span style="font-size: small;">PATHNAME </span>namestring.<br /><br /> For the patterns in<br /> //[server]/[share]/[directories-and-files] <br />[server] is stored as HOST.<br /><span style="font-size: small;">[share] </span>is stored as DEVICE.<br />[directories-and-files] gets parsed as per the normal rules under<span style="font-size: small;"> </span>Windows.<br /><br />Mixing namestrings with both backslash and slash characters can<span style="font-size: small;"> </span>lead to unpredictable results. It is recommended not to use backslash characters in namestrings if it can be avoided. The pathname printed representation is always normalized to using forward slash delimiters.<br /> </li>
<li>Find contrib based on system jar name. <br /><a href="http://abcl.org/trac/changeset/14657">http://abcl.org/trac/changeset/14657</a></li>
</ul>
<span style="font-size: small;">Thanks to everyone who uses ABCL! </span></div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-68449598533639814612014-03-16T02:22:00.003-07:002014-03-16T02:22:16.906-07:00abcl-1.3.0 released<div dir="ltr" style="text-align: left;" trbidi="on">
abcl-1.3.0 is a feature release.<br />
<br />
http://abcl.org/releases/1.3.0 <br />
<br />
<pre>15-MAR-2014
## Features
* Make LispStackFrame.UNAVAILABLE_ARG a singleton object,
and lazily create the little used portions of the Lisp stack.
Aggressively cache and control the use of memory by the underlying
Lisp stack frame representation by introducing the private
LispThread.StackFrame and LispThread.StackSegments classes.
Contributed by Dmitry Nadezhin.
LispStackFrame object are allocated on every
LispThread.execute(...) . However, they are seldom [accessed]
([... verify via] inspect[tion of the] stack trace). This patch
delays allocation of LispStackFrame? objects until they are
requested. Raw information about stack frames is stored in
stack. Stack is an Object[] array (more precisely a list of [...]4
[Mib] Object[] arrays).
ME: We are going to need a way to try to less agressively grab 4Mib
chunks in low memory situations.
Memory profiling of ABCL shows that the classes with largest
allocation count are org.armedbear.lisp.LispStackFrame and
org.armedbear.lisp.LispStackFrame.UnavailableArgument.
Contributed by Dmitry Nadezhin.
[r14572]: http://abcl.org/trac/changeset/14572
[r14579]: http://abcl.org/trac/changeset/14579
* ASDF 3.0.1.94 shipped with the implementation
* per function call stack and memory exception handler in CL:COMPILE
Inline calls to jrun-exception-protected (used by handler-bind to
catch out of memory conditions). This commit saves generation
roughly 50 cls files.
[r14552]: http://abcl.org/trac/changeset/14552
* SYS:SHA256 audited
The functionality if the SYS:SHA256 algorithim has been audited for
use on inputs of single for files with recently shipping ORCL Java 7
implementations (through jdk-1.7.0_51).
[r14582]: http://abcl.org/trac/changeset/14582
* Connect to NetBeans controlled JDWP via SLIME
The Netbeans IDE configuration now includes a way to connect to
the running-under-jdb ABCL via SLIME. One needs a version of
SLIME able to be loaded from its 'swank.asd' definition.
* Install 'abcl.jar' and 'abcl-contrib.jar' locally as Maven artifacts
The Ant `abcl.mvn.install` target now installs build artifacts
into the local Maven repository (Olof-Joachim Frahm)
[r14579]: http://abcl.org/trac/changeset/14606
## Compatibility
* CL:DIRECTORY
The implementation specific :RESOLVE-SYMLINKS argument to the ANSI
DIRECTORY function has been changed to nil. This implements
behavior closer to SBCL and guarantees that a DIRECTORY operation
will not signal a file error.
[r14619]: http://abcl.org/trac/changeset/14619
[ticket-340]: http://abcl.org/trac/ticket/340
## Fixes
* Fix CL:SLEEP for intervals less than a millisecond.
For intervals less than or equal to a nanosecond, including an
interval of zero, the current thread merely yields execution to
other threads.
[r14632]: http://abcl.org/trac/changeset/14632
## Tested
### "Java_HotSpot(TM)_64-Bit_Server_VM-Oracle_Corporation-1.7.0_51-b13" "x86_64-Mac_OS_X-10.9.1"
### "Java_HotSpot(TM)_64-Bit_Server_VM-Oracle_Corporation-1.8.0-b129" "x86_64-Mac_OS_X-10.9.2"
## Contrib
#### abcl-asdf
* Now working with both Maven 3.0.x and 3.1.x. Thanks to Anton for
the help!
[ticket-328]: http://abcl.org/trac/ticket/328
* cache Maven dependency resolution to avoid repeated lookups.
Instead of calling ABCL-ASDF:RESOLVE in both the ASDF COMPILE-OP
and LOAD-OP, we now cache the result of invocation in COMPILE-OP
and add this value in the LOAD-OP phase. Contributed by Cyrus
Harmon.
[r14631]: http://abcl.org/trac/changeset/14631
#### jna
Now references jna-4.0.0. Some incompatibility with CFFI ([in
progress with fixing upstream][cffi-easye]).
[cffi-easye]: http://github.com/easye/cffi/
</pre>
</div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-56288564548626939432013-06-30T22:51:00.000-07:002013-06-30T22:51:05.149-07:00Post-ECLM 2013: abcl-1.2.1 released <div dir="ltr" style="text-align: left;" trbidi="on">
<pre>"So long and thanks for all the Jamon"</pre>
<pre> </pre>
<pre><http abcl.org="" abcl="" svn="" tags="">
27 June 2013
http://abcl.org/releases/1.2.1
* Tested: orcl-jdk-1.7.0_25 orcl-jdk-1.6.0_43
** ansi tests rc-2 failing 11-13 of 21708 total.
Some regressions since 1.1.1
* Stablility fixes; additional Quicklisp compatibility
** Fix (make-instance 'standard-generic-function)
</http></pre>
</div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com0tag:blogger.com,1999:blog-4235439971837126416.post-9531366488149982312013-06-07T04:15:00.002-07:002013-06-07T04:15:51.210-07:00ABCL 1.2.0 ships with ASDF 3.0.1<div dir="ltr" style="text-align: left;" trbidi="on">
So long Faré! Thanks for ASDF3…<br />
<br />
<br /></div>
ehuelsmannhttp://www.blogger.com/profile/18367657358957126293noreply@blogger.com2tag:blogger.com,1999:blog-4235439971837126416.post-82169139367567273842013-06-07T04:14:00.000-07:002014-03-28T06:28:49.600-07:00ABCL User Manual<div dir="ltr" style="text-align: left;" trbidi="on">
Current Draft of the fine Manual in PDF for the convenience of the User.<br />
<br />
1.3.0: <a href="http://abcl.org/releases/1.3.0/abcl-20140315a.pdf">http://abcl.org/releases/1.3.0/abcl-20140315a.pdf </a><br />
<br />
1.2.1: <a href="http://abcl-dynamic-install.googlecode.com/files/abcl-20130607a.pdf" target="_blank">http://abcl-dynamic-install.googlecode.com/files/abcl-20130607a.pdf</a></div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com2tag:blogger.com,1999:blog-4235439971837126416.post-26497848466145665802013-06-05T01:41:00.001-07:002013-06-07T04:07:41.095-07:00The Bear changes its Lair<div dir="ltr" style="text-align: left;" trbidi="on">
<span style="font-family: "Courier New",Courier,monospace;">For better management of the reliability of Armed Bear Common Lisp hosting infrastructure, we have renamed the essential services into the <a href="http://abcl.org/">abcl.org</a> domain. This transition has been proceeding since the beginning of April in a manner that was hopefully mostly invisible to the User. </span><br />
<span style="font-family: "Courier New",Courier,monospace;"><br /></span>
<span style="font-family: "Courier New",Courier,monospace;">The <a href="http://abcl.org/releases/1.2.0/rc-0">binaries</a> and <a href="http://abcl.org/svn/branches/1.2.x">source</a> of the first release candidate of ABCL 1.2 are now available. Very few <a href="http://lisp.not.org/trac/armedbear/query?group=status&milestone=1.2.0">additional issues will probably be resolved without additional patches</a>, but if you see something obvious to change that doesn't disturb the stability of our testing infrastructure please get us the patches in the next few days. Interestingly enough, <a href="https://code.google.com/p/abcl-dynamic-install/downloads/detail?name=abcl-20130607a.pdf" target="_blank">documentation</a> nearly always has this property.</span><br />
<span style="font-family: "Courier New",Courier,monospace;"><br /></span>
</div>
urn:recursive.not.orghttp://www.blogger.com/profile/10170782890678026473noreply@blogger.com2tag:blogger.com,1999:blog-4235439971837126416.post-59511055412857436752013-03-31T06:21:00.000-07:002013-03-31T14:47:07.402-07:00Pitfalls of shared structure, or: fixing XPATH compilationIn recent blog posts, <a href="http://netzhansa.blogspot.nl/2013/03/dealing-with-excel-files-from-common.html">Hans Hübner mentions how ABCL starts to be usable</a> by the average Common Lisp programmer. Yet he also ran into the longer standing issue that the XPATH library doesn't want to be compiled by ABCL 1.1.1. (This is where his remark how the CXML-STP library doesn't work comes from.)<br />
<br />
Last weekend I finally found out what the underlying problem was that XPATH triggered: shared structure in forms being compiled. Even though it's quite easy to generate code with shared structure, apparently few projects use it in a way which triggered ABCL into incorrect behaviour.<br />
<br />
Case in point was a compiler macro expansion containing a literal list. After expansion, the literal became part of the code being compiled and the compiler modified the literal in place, resulting in problems on all subsequent expansions.<br />
<br />
The cause of the issue dates all the way back to even before I started working on ABCL. Back then the compiler used to modify the CARs and CDRs of the forms it was compiling. Much of this behaviour was already replaced before last week as my intuition told me this is undesirable, with the replacement being nice side-effect-free functional code. Even though the reason for this behaviour isn't documented, I'll assume it was to reduce consing and thereby reduce pressure on the JVM's garbage collector. In today's world with new garbage collectors and much improved JIT compilers in the JVM, this issue isn't an issue anymore.<br />
<br />
To cut a long story short: XPATH compilation fixed, compiler changed to functional style and libraries depending on XPATH (like CXML-STP) also fixed.<br />
<br />
On to the next cl-test-grid failure...ehuelsmannhttp://www.blogger.com/profile/18367657358957126293noreply@blogger.com2