Sunday, June 30, 2013

Post-ECLM 2013: abcl-1.2.1 released

"So long and thanks for all the Jamon"

27 June 2013

*  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)

Wednesday, June 5, 2013

The Bear changes its Lair

For better management of the reliability of Armed Bear Common Lisp hosting infrastructure, we have renamed the essential services into the domain. This transition has been proceeding since the beginning of April in a manner that was hopefully mostly invisible to the User.  

The binaries and source of the first release candidate of ABCL 1.2 are now available.  Very few additional issues will probably be resolved without additional patches, 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, documentation nearly always has this property.

Sunday, March 31, 2013

Pitfalls of shared structure, or: fixing XPATH compilation

In recent blog posts, Hans Hübner mentions how ABCL starts to be usable 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.)

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.

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.

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.

To cut a long story short: XPATH compilation fixed, compiler changed to functional style and libraries depending on XPATH (like CXML-STP) also fixed.

On to the next cl-test-grid failure...

Friday, March 22, 2013

M$FT Excel format from Common Lisp.

In light of Hans Hübner's recent spike into the "no more Java the language" railhead. I'll certainly share recipes for using the monkeys' libraries to manipulate various historical Microsoft Excel formats.  The dirty secret of computing on the modern enterprise trapped in the black iron prison of non-free document formats is that current versions of Office don't always handle previous versions very well.  Since Apache POI has been around for the better part of a decade, it provides a fairly reasonably DWIM fallbacks for reading such formats.  Somehow, once whatever you are working with is touchable with ANSI Common Lisp, all seems to be so much better…

Two examples that come to mind in swigging the Apache POI libraries over to a syntax that the Bear can paw through:
  1. Alan Ruttenberg used JSS to work with Apache POI as read-ms-docs which was released  as part of the lsw Semantic Web toolkit wrapping RDF(S) and OWL inference implementations in Java
  2. Mark Evenson extended Alan's work as part of reading to/from SQL to be able to roundtrip the data within Excel spreadsheets to Oracle databases.  The database reflected the pure data of the Excel document, using the assorted Microsoft "macros" to sanitize input. 


Thursday, February 14, 2013

ABCL 1.1.1

We are pleased to announce abcl-1.1.1, a maintenance release which addressed the following issues:

*  (A)MOP

All reported errors with the MOP implementation have been addressed.

*  SETF autoloader

An autoloader for SETF expansion functions has been implemented, eliminating the errors associated with not being able to use (SETF SYMBOL) without first invoking SYMBOL as a function.

* ANSI Tests

All outstanding regressions in the ANSI test suite with respect to abcl-1.0.1 have been fixed.


The ability to resolve Maven components in ASDF system definitions has been restored.