Update of /project/elephant/cvsroot/elephant In directory clnet:/tmp/cvs-serv27212
Modified Files: INSTALL TODO config.sexp elephant.asd Log Message: Symbol ID hack removed from BDB; Allegro/MacOS/x86 passes
--- /project/elephant/cvsroot/elephant/INSTALL 2006/11/11 18:41:10 1.19 +++ /project/elephant/cvsroot/elephant/INSTALL 2007/01/25 18:17:59 1.20 @@ -3,10 +3,10 @@ Requirements ------------
-Support Lisps: +Supported Lisps: CMUCL 19a Linux -SBCL 0.9.6/0.9.9 Linux / Mac OSX -Allegro CL 6.2/7.0/8.0 Linux / Mac OSX +SBCL 0.9.17/1.0+ Linux / Mac OSX +Allegro CL 7.0/8.0 Linux / Mac OSX OpenMCL 0.14.2 LispWorks (port in-progress)
@@ -14,14 +14,12 @@ ASDF - http://www.cliki.net/asdf UFFI 1.5.4+ - http://uffi.b9.com/
-Backends: -1) Sleepycat Berkeley DB 4.3 - http://www.sleepycat.com -2) CLSQL - http://clsql.b9.com/ - And an appropriate SQL installation. +A Backend Database: +1) Oracle Berkeley DB 4.4 or 4.5 - http://www.oracle.com/database/berkeley-db.html +2) CLSQL - http://clsql.b9.com/ with an appropriate SQL installation. Tested with SQlite3 and Postgresql so far
-A C compiler, probably gcc or Visual Studio. Presumably you -have this if you installed Sleepycat. +A C compiler, probably gcc or Visual Studio. Presumably you have this if you installed
------------------ Short Instructions @@ -35,10 +33,10 @@ Then: (open-store '(<backend> <spec>))
Where <backend> = { :bdb | :clsql } - <spec> = { '(:sqlite3 "db path") | '(:postgresql "db path") | "bdb directory" } + <spec> = { "fresh directory for BDB files" | '(:sqlite3 "db path") | '(:postgresql "db path")
-This should load all files, including compiling libraries, on -most systems. For Win32, see the instructions below. +This should load all files, including compiling libraries, on most +systems. For Win32, see the instructions below.
(We'll improve the build process for Win32 if there is demand)
@@ -46,18 +44,18 @@ Long Instructions -----------------
-For SBCL, CMUCL, Allegro 7.0+, MCL and CLISP: +For SBCL, CMUCL, Allegro 8.0+, MCL and CLISP:
0) Unpack Elephant. I put mine in the directory
-/usr/local/share/common-lisp/elephant-0.6/ +/usr/local/share/common-lisp/elephant-0.6.x/
1) Install ASDF.
Ensure that you have a recent version of ASDF installed as the load process now depends upon it.
-2) Install UFFI. +2) Install UFFI
3) Install a backend: Either Berkeley DB 4.4, PostGresql, or SQLite 3.
@@ -78,11 +76,11 @@ Under Un*x, you may actually already have this installed, though it may be compiled with funny options, so if things don't work you may want to try to start from scratch. FreeBSD has a port -for this, as I'm sure do other BSDs (including Darwin/Fink.) +for this, as I'm sure do other BSDs (including DarwinPorts/Fink.) Take note of where libdb.so and db.h are installed, usually:
- /usr/local/BerekleyDB.4.4/lib/libdb.so and - /usr/local/BerekleyDB.4.4/include/db.h, or + /usr/local/BerkeleyDB.4.4/lib/libdb.so and + /usr/local/BerkeleyDB.4.4/include/db.h, or
/usr/local/lib/db44/libdb.so and /usr/local/include/db44/db.h.) @@ -95,6 +93,7 @@ of the Berkeley DB distribution :berkeley-db-root, the library to load :berkeley-db-lib and the pthreads library if you're running linux :pthread-lib.
+ For Win32 (directions courtesy of Bill Clementson): --------------------------------------------------- Create an MSVC dll project and add src/db-bdb/libberkeley-db.c, @@ -176,6 +175,11 @@
This should take less than 5 minutes on decent hardware.
+The tests are not idempotent, so if you run the tests a second time, +they are likely to fail. To avoid this, for example if you are +debugging tests, just run the script delscript.sh (or do the +equivalent on Win32) in the elephant/tests directory. + Elephant allows migration between repositories. To test this:
(do-migration-tests *default-spec* <backend>) --- /project/elephant/cvsroot/elephant/TODO 2007/01/22 23:11:08 1.36 +++ /project/elephant/cvsroot/elephant/TODO 2007/01/25 18:17:59 1.37 @@ -8,20 +8,26 @@
Active tasks: - Speed up symbol storage and reference using symbol id's + - Fast symbols are property tag in DB (so code doesn't corrupt DB) - Full 64-bit support (arrays, native 64-bit fixnums, etc) - - char vs. uint8 in buffer-stream - - flexible handling of 64-bit fixnums + - Set parameter at startup based on *features* + - Mark fixnums appropriately: 32-bit lisps can decode 64-bit fixnums as bignums (two 32-bit entities) + - propogate assumptions to bignum byte specs + - are there other fixed assumptions? + - char vs. uint8 in buffer-stream to read-out (See Marco e-mail) - Ensure serialization is thread-safe and reasonably efficient - - Fast and slow critical sections by lisp -- Think about dynamic vs. object based store & transaction resolution? + - Provide support for fast and slow critical sections by lisps: buffer-streams, + circularity-arrays/hashes, shared controller side-effects... (see email) + - Resourced-byte-spec should be per-thread (or removed - ok to cons during bignum serialization) +- Think about dynamic vs. object-based store & transaction variables - Perform error checking when mixed - Current store specific *current-transaction* stack -- Make elephant threads appropriately bind dynamic variables? +- Allow elephant threads to appropriately bind dynamic variables? - Thread safety for all global vars - Thread safe API option for user-managed store-controller? - Thread safe API for transactions -- Update to require BDB 4.5? - Throw condition when store spec is invalid, etc +- Test with BDB 4.5?
BDB Features: ? Determine how to detect deadlock conditions as an optional run-safe mode? --- /project/elephant/cvsroot/elephant/config.sexp 2007/01/20 22:12:17 1.3 +++ /project/elephant/cvsroot/elephant/config.sexp 2007/01/25 18:17:59 1.4 @@ -2,8 +2,7 @@ (:berkeley-db-lib-dir . "/opt/local/lib/db44/") (:berkeley-db-lib . "/usr/local/BerkeleyDB.4.4/lib/libDB-4.4.dylib") (:pthread-lib . nil) - (:clsql-lib . nil) - (:fast-symbols . nil)) + (:clsql-lib . nil))
;; Typical pthread settings are: /lib/tls/libpthread.so.0 ;; nil means that the library in question is not loaded --- /project/elephant/cvsroot/elephant/elephant.asd 2007/01/21 21:20:03 1.23 +++ /project/elephant/cvsroot/elephant/elephant.asd 2007/01/25 18:17:59 1.24 @@ -107,8 +107,8 @@ (unless (and input-file output-file) (error "Must specify both input and output files")) (list - #-(or darwin macosx) "-shared" - #+(or darwin macosx) "-bundle" + #-(or darwin macosx darwin-host) "-shared" + #+(or darwin macosx darwin-host) "-bundle" "-Wall" "-fPIC" "-O3"