Allegro CL 9.0

Persistency built in, not a database add-on

Allegro CL ® is the most powerful dynamic object-oriented development system available today, and is especially suited to enterprise-wide, complex application development. Complex applications with billions of objects are now made easy with Allegro CL 9.0. The complexity of today's software applications and the explosion of data size are pervasive in all fields ranging from Life Sciences to Manufacturing to Financial Analytics. Allegro CL 9.0 is the most effective system for developing and deploying applications to solve these complex problems in the real world. For more information, contact info@franz.com.

Franz's ACL 9.0 release is a major advance. It brings true SMP to one of the best programming environments available. All our existing multithreaded applications "just work" and run much faster than before on the same hardware.

Jason Cornez CTO, RavenPack International

Enhancements

See the Release Notes for a complete description of new features and enhancements.

For additional information on these, and many other new features and improvements, please read the release notes for this major new release of Allegro Common Lisp.


Overview

Connectivity Tools Database Tools Deployment Tools GUI Tools
IDE Prolog Tuning Tools Web Server

Powered by Common Lisp, Allegro CL's true dynamic object technology allows developers to generate leading edge, mission-critical applications that are robust, extensible, and easy to evolve and deploy.

  • AllegroCache
  • AllegroCache -- The enabling technology behind Allegro CL persistent objects is a high-performance, scalable, dynamic object-caching database. It allows programmers to work directly with objects as if they were in memory while in fact the object data is always stored on disk. It supports fully ACID-compliant transaction mode with both long and short transactions. It automatically maintains referential integrity of complex object networks. AllegroCache provides 64-bit real-time data caching on the application memory to achieve very high data access throughput over as large a data set as required. AllegroCache features include:

    • Persistent CLOS Objects in Allegro Common Lisp -- Class definitions are stored as first class objects in the database
    • Dynamic Schema Evolution -- Redefine classes on the fly, persistent objects are lazily updated when accessed
    • Standalone & Client Server -- Single user on local disk or multiple clients talking to single server over sockets
    • Bulk Loading -- Improved performance adding objects to the database
    • Transaction Logging -- Restore databases after power failure or disk crash
    • Expression Cursors -- Iterate over a set of instances that satisfy a predicate over multiple slots of an instance
    • Range Queries -- Retrieve objects with slots that match a range of values
    • Native lisp btrees -- Comparable in speed with BerkeleyDB, with more control
    • Transactional model -- All ACID features, commit/rollback, and optimistic concurrency
    • Supports databases with billions of objects (and Terabytes of Data)
    • Convenient macros to loop over classes, maps and sets
    • Indexed slots -- A mapping from slot-values to objects, retrieve objects and object ids (oid)
    • Maps -- Transactionally safe persistent hashtables
    • Sets -- Persistent large collections of objects
    • Supports most common datatypes -- Including unsigned-byte 8 arrays, maps and sets
    • Object ID's unique for the lifetime of the database -- User accessible
    • Dump the database into XML files
    • Restore database from the XML dump
    • User controlled caching -- For the size of the btrees and the total number of objects stored in the cache
  • Connectivity
  • Connectivity:
    • SAX/DOM XML Parsers: Validating XML parsers, successfully tested against all major test suites. Analyze and process enterprise XML data extremely fast
    • SOAP API: Enables Allegro CL applications to communicate with new and legacy applications over the internet via the SOAP protocol, and to access web services over the internet
    • WSDL Compiler: Automatically generates client SOAP templates from WSDL files and server WSDL files from Lisp expressions
    • Allegro Webactions: A Web Application Framework for building dynamic web pages that can be easily maintained and updated
    • AllegroServe: A dynamic, high-performance Lisp-based web server that also interoperates with other web/application servers
    • HTML Parser: Process and analyze web page data
    • SSL Socket Streams: Secure internet transactions
    • XML RPC (Remote Procedure Call): Allows Lisp applications to communicate via XML
    • Lisp RPC (Remote Procedure Call): Allows two Lisp applications to more easily communicate
    • IPv6 -- Internet Protocol version 6 socket support
  • Control Development
  • Control Development:
    • Allegro Prolog: A classic AI programming language in Allegro CL for Logic Programming, with an execution speed in excess of 1 Mlips and running essentially cons free
    • Pcache -- An update to Allegro Prolog, an implementation of Prolog within Allegro CL. It allows Allegro Prolog to be used as a query language for AllegroCache
    • Regular Expressions: A fast, Perl-compatible Regular Expression matcher
    • Allegro Runtime Analyzer: Profiles function calling patterns and analyzes their space and time utilization for code optimization, an important tool for tuning application performance
    • Very large array-total-size-limit (229 for 32-bit, 260 for 64-bit)
    • Operating System Interface: Built-in interface for direct interaction between Allegro CL and the OS, without the need to write foreign code
    • Shell Module: Provides access to the Unix/Linux/Mac commands at the application code level, enhancing performance, portability and consistency across platforms
    • asdf System Definition Facility (see www.cliki.net/asdf for info on asdf)
    • OpenGL Interface on platforms with available OpenGL libraries (see www.opengl.org for more information)
    • IDE and Common Graphics for greater usability and navigation
    • HTML Widget in Common Graphics -- Used by the IDE help facility for better integration
    • Large file support -- On 32-bit platforms this greatly increases the size of files that can be reliably handled. (Functions which may not have worked before but now do include file-position and file-length, and the OS Interface functions stat, os-truncate, and os-ftruncate). The new limit is 263 - 1 in size. This is about nine billion times larger that the old limit, which was 4 Gigabytes. (On 64-bit platforms, the maximum allowable size has always been 263 - 1)
    • Cryptography: SHA1, HMAC and RC4 support
    • Localization support for Unicode international character sets, local time, currency, etc.
    • Graphical profiling and debugging tools for multiple threads
    • Interact with GNU Emacs with the Franz Inc. Emacs-Lisp interface or SLIME
  • Source Level Debugger for Mac, Windows, and Linux
  • The Allegro CL Source Stepper

    Watch the recorded webinar here.

    The new Allegro CL Source Stepper is an offering unique to existing Lisp debuggers, and in fact probably unique to source-level debuggers provided by other languages. The new Allegro Source Stepper provides the following:

    • Debug/stepping info can be loaded on demand, without recompiling the function under debug.
    • Assembler instructions can be displayed and stepped.
    • Macros are rendered transparent, allowing macro forms as well as all levels of their expansions to fully participate in the debug process.
    • Language personalities can be defined and loaded, which customize the debugger behavior for domain specific languages implemented in Common Lisp.

    The source stepper displays source code while stepping through a form. When using it with the IDE, (not available on Sparc or AIX platforms) the source stepper is associated with the new Stepper Dialog. The Stepper Dialog allows carefully testing compiled code by interrupting execution at selected forms in the original source code and at macroexpansions of the code, allowing state to be examined at each stop point.

    The dialog displays the original lisp source code for a function or method that is being stepped through, highlighting the form at which the stepper is stopped. Button widgets allow proceding in various ways each time execution has been interrupted. The dialog also displays macroexpanded forms and the values of arguments and local variables, updated after each step. The IDE's code editor can be invoked at any time on the code being stepped through.

    The dialog is implemented on top of the base lisp's stepping facility, which also has a simpler textual interface that can be used in a lisp listener. See The Lisp DeBug (ldb) stepper and The source stepper, both in debugging.htm.

    Stepper Dialog Example (click on picture to enlarge)

    The Definition Pane

    The Definition Pane (at the top of the dialog) shows the source code for the function or method that's currently being stepped through. This is a copy of the real source code text, complete with comments and original line breaks. The form at which the stepper is currently stopped will be highlighted with a different background color. Red parentheses are drawn around any breakpointed forms. The breakpointable form under the mouse (if any) in the Definition Pane will have a blue border drawn around it.

    The form in the Definition Pane where the stepper is stopped is drawn with a background color that can have different meanings. An explanatory note will appear in the dialog the first three times each highlighting color is used. The default color is blue. When green, source-level debugging information is available for the function that the highlighted form will call. This is a "green light" that pressing the Step Into button will continue doing source-level stepping. When orange, you are stopped at a macro form. When gray, it means that no source code range is known for the current step point.

    The Form Pane

    The Form Pane (second from the top) shows just the form at which the stepper is currently stopped. This form would be executed by a subsequent Step Next. Sometimes this is a form in the original source code, and is the same as the highlighted form in the Definition Pane, and at other times it is all or part of a macroexpansion.

    The Stack Pane

    The Stack Pane (third from the top) lists the arguments and local variables of the function that is being stepped through, followed by the arguments to the function that called the function being stepped, and then by the arguments to to the next calling function.

    Assembly-Language Stepping in the Stepper Dialog

    If breakpoints are added to functions for which source-level debugging information is not available, the Stepper Dialog will still display some information and allow stepping to be done.

    Documentation

    Please refer to the Stepper Dialog documentation for the full details.

  • Interoperability
  • Interoperability:
  • Runtime
  • Runtime:
    • Change class definitions and methods on the fly, and automatically propagate changes to existing object instances
    • Built-in memory management and garbage collection
    • Application delivery as a DLL or stand alone image
    • Robust, flexible and efficient multiprocessing for Unix/Linux/Mac and Windows -- OS Threads for Windows: One Lisp thread and unlimited non-Lisp threads can run on different processors
    • Linux Version Compatibility: Allegro CL runs on all Linux distributions that use Glibc 2.11, and is well protected against future Glibc changes
    • Environments Access: Environments are now first-class data objects that are easily accessible and augmentable. Helps code compilation, code walking and domain-specific language development

Minimum Supported Operating System Versions

Allegro CL 9.0 is available on the following operating system versions. The Types are either non-SMP or SMP. SMP is not available on all platforms.

Platform Types available
32-bit Linux (x86) with glibc 2.11 non-SMP, SMP
64-bit Linux (x64) with glibc 2.11 non-SMP, SMP
32-bit Mac OS X 10.6 non-SMP
64-bit Mac OS X 10.6 non-SMP, SMP
32-bit Windows non-SMP, SMP
64-bit Windows non-SMP, SMP
32-bit FreeBSD (x86) non-SMP
64-bit Solaris/AMD non-SMP
32-bit Solaris/SPARC non-SMP
64-bit Solaris/SPARC non-SMP
Copyright © 2014 Franz Inc., All Rights Reserved | Privacy Statement
Delicious Google Buzz Twitter Google+