3.0.8 - no code changes, same as 3.0.7, except the stub file prints version and changelog information previously on the website 3.0.7 - client/server expression cursor fix 3.0.6 - the patch for 3.0.5 was really 3.0.4, on some platforms; fix this by bumping the version number and releasing a new patch on all platforms. 3.0.5 - delete-instance and unique indicies 3.0.4 - Prevent multiple opens of the same db 3.0.3 - fix client/server access of compressed index 3.0.2 - improve speed when modifying an index 3.0.1 - fix node compression bug in btrees 3.0.0 - Add compressed indexes to reduce disk footprint for read only databases. - Add regular expression to expression cursors. - More fixes for SMP safety, this time to the underlying btrees. 2.2.3 - Fix create-index-cursor if preread was specified and if the index file to read had been temporarily closed to reduce the number of files open. 2.2.2 - Improvements for SMP safety. 2.2.1 - The maximum message size was increased from 20,000,000 bytes to 40,000,000. 2.2.0 - A preread argument was added to create-index-cursor to greatly speed up an scan of a index that will touch most pages in the btree. - A max-fds argument was added to start-server so you can ensure that AllegroCache doesn't run out of file descriptors if you have many indexes and/or maps. - Note that the client/server protocol has advanced to '5' meaning that client code will need to talk to a server using this latest code. However old clients will be continue to work with this new server. 2.1.23 - Now you can now quickly scan an index an find all of the unique values. The documention for create-index-cursor shows an example of how this can be done. 2.1.22 - Rollback will now undo the changes made to instances due to a changed class, so that the instance is reverted to the previous state and marked as from a previous version of the class. Then when the instance is next referenced the update process will be done again. - The database format is unchanged. 2.1.21 - Change the logmaster structure and logic to take into account the presence of the :read-only flag for open-file-database. Now, logmaster opens log files with :direction :input in read-only databases. - create-expression-cursor has been documented to return nil if there are no values to return. However there was a problem where an error was signalled inside the server instead. This problem has been corrected. - Improve the performance of client/server operations by retrieving the approprite instance vector in one round trip rather than two. - If the database is opened read-only then ensure that the index btrees are also opened read-only as well. Previously we would avoid writing to the indexes in read-only mode but we did open the files in read/write mode. 2.1.17 - Prevent a "No applicable methods" error inside get-new-class-cursor when creating by checking whether the dash-class-backend-class for that given class exists. This would happen when creating class cursors for classes that had only uncommitted instances. - Previously, AllegroCache signaled a non-simple error when connection to the AllegroCache server broke down during a request. Now, AllegroCache will signal a network-communication-error condition. - AllegroCache now correctly loads and preserves :type information on slots of persistent classes. If the type is no longer a type specifier (e.g. loading a database in another image that doesn't have this type defined), AllegroCache will reset the slot type to T. - AllegroCache no longer discards :documentation on persistent classes and their direct slots. - The print-object method used to write "not modified" for maps that had new values added or old ones removed. Use the map-modified slot to check for modifiedness of ac-maps now. - Previously, (rollback) would only roll back changes to instance of ac-map itself, not any user-defined subclass. This change ensures that any subclasses of ac-map get treated like ac-map itself does, like a user would expect. - Allow specifying an :address argument to start-server which specifies the listening address to bind to. It can be either an internet address as a string, or a pathname object (to specify a unix domain socket). - Allow open-network-database to connect to a unix domain socket, as well: specify a pathanme object as the hostname, and nil as the port. - When opening a DB read-only, don't set up a write-buffer structure: Otherwise, when closing the DB, AC will attempt to flush the buffer, which used to lead to an error message. 2.1.13 - Fix problem with :use :memory when there are no class definitions loaded in memory yet. 2.1.12 - Handle OIDs larger than 29 bits. 2.1.11 - You can specify the maxinum number of file descriptors used to access index btrees. - Fix a bug in doclass* where all subclasses were not scanned. 2.1.10 - A database can be opened in read-only mode. - Btrees can be opened in read-only mode. 2.1.9 - A call to return now works inside a doclass*. - In the btree module the replace hook again is enabled. - Distributions are now being built for 64-bit ACL on Mac OS X Leopard. 2.1.8 - Now one can retrieve index values directly from the index with next-index-cursor and previous-index-cursor. - For client/server users: you must update both the client and server in order to use this new feature. 2.1.7 - Fix bug in adding indexed objects across an authenticated connection. 2.1.6 - Fix bulk load bug where building the a fixnum index would cause Lisp to signal a segementation violation. 2.1.5 - permit ac-set to be subclassed - More support for running without *allegrocache* being bound. 2.1.4 - slot reading and writing can be done without binding *allegrocache* - Add the function database-of that returns the database connection associated with a persistent object. 2.1.3 - bulk loading now works in client/server mode. To use this new feature you must update both the client and server. - expression cursors - speed up the non-indexed case and fix a bug in freeing an index. - fix a bug in deleting a modified map. 2.1.2 - Improve the speed of expression cursor indexes. - reduce the consing on index lookups - fix a bug index access. - recover-from-log is now able to skip past bad entries at the end. 2.1.1 - Speed up fixnum index bulk loading for version 9 databases. This slows down bulk loading for fixnum bulk indexes of version 8 databases so be sure to upgrade old databases to version 9. - Speed up recover-from-log for large databases with many indexes. - Greatly reduce consing when doing index lookups - Fix bug when redefining a class to eliminate an indexed slot 2.1.0 - Add expression cursors which can iterate over a set of instances that satisfy a predicate over multiple slots of an instance. - Fix a bug in the storing of non-fixnum indexes in bulk loading mode. - Database version is now 9, but this AllegroCache version will operate on either version 8 or version 9 databases. See the section "upgrading databases" in the AllegroCache reference manual. 2.0.1 - Have client and server exchange information on the wire protocols they support and signal an error if they are incompatible. It's best to run the same version of AllegroCache in the client and server but when that's not convenient this test will catch situations when the client of one version should not communicate with the server of another version. - Add class cursor functions: create-class-cursor, next-class-cursor, and free-class-cursor - Should an error occur when writing the transaction log that write will be retried up to 10 times. 2.0.0 - Add a bulk loading mode to allow objects to be added to the database quickly. - The client-connections function always returns the current connection first (that is the connection used in the evaluation of the call to client-connections). - Fix bug in maps when transactions couldn't commit and were forced to rollback. - doclass will signal an error if the given class-name doesn't name a class.