| 1 | This file contains release notes for version 0.9 of Wood.
|
|---|
| 2 |
|
|---|
| 3 | New features since 0.8
|
|---|
| 4 | ----------------------
|
|---|
| 5 | There is the start of a transaction system. It doesn't do much
|
|---|
| 6 | yet, but the API exists, so you can start writing it into your
|
|---|
| 7 | code. See documentation for WITH-TRANSACTION in "wood.doc".
|
|---|
| 8 |
|
|---|
| 9 | p-make-load-function is deprecated. New code should use
|
|---|
| 10 | p-make-load-function-using-pheap. See "wood.doc".
|
|---|
| 11 |
|
|---|
| 12 | The btree code now uses binary search in each node. This makes it
|
|---|
| 13 | almost 3 times as fast. It is also more (disk) space efficient.
|
|---|
| 14 |
|
|---|
| 15 | Wood allow you to specify that some slots of a CLOS instance are
|
|---|
| 16 | to remain disk-resident until accessed. See the documentation for
|
|---|
| 17 | wood-disk-resident-slot-names & define-disk-resident-slots in "wood.doc".
|
|---|
| 18 |
|
|---|
| 19 | create-pheap & open-pheap now take :mac-file-creator and :external-format
|
|---|
| 20 | keywords that work like the same keyword args to open except that
|
|---|
| 21 | if an existing file's mac-file-type is not the same as the specified
|
|---|
| 22 | external-format, an error is signalled.
|
|---|
| 23 |
|
|---|
| 24 | New functions: p-loaded? & p-stored?. See "wood.doc".
|
|---|
| 25 |
|
|---|
| 26 | gc-pheap-file now takes an optional modify-input-file arg, default NIL.
|
|---|
| 27 | It used to write forwarding pointers into the pheap file and
|
|---|
| 28 | restore the old values on exit. It now does this only if
|
|---|
| 29 | modify-input-file is true. The default is to use a hash table to store
|
|---|
| 30 | the forwarding pointers. This makes it use more memory, but it doesn't
|
|---|
| 31 | modify the file and is noticeably faster.
|
|---|
| 32 |
|
|---|
| 33 | Wood works in the alpha version of MCL 3.0.
|
|---|
| 34 | MCL 3.0a4 requires a compiler patch in order to compile
|
|---|
| 35 | the file "recovery.lisp". Send mail to me (bill@cambridge.apple.com)
|
|---|
| 36 | if you need the patch. Later alphas will incorporate the patch.
|
|---|
| 37 |
|
|---|
| 38 | Mod Histories
|
|---|
| 39 | -------------
|
|---|
| 40 |
|
|---|
| 41 | block-io-mcl.lisp
|
|---|
| 42 | ;; 03/13/95 bill byte-array-p and ensure-byte-array move here from "disk-cache-accessors.lisp"
|
|---|
| 43 | ;; byte-array-p updated to work in MCL 3.0.
|
|---|
| 44 | ;; Former lap uses of $v_subtype changed to calls of ensure-byte-array
|
|---|
| 45 | ;; 10/25/94 Moon without-interrupts -> with-databases-locked
|
|---|
| 46 | ;; 09/21/94 bill without-interrupts around part of %fread-bytes and %fwrite-bytes
|
|---|
| 47 | ;; 01/31/94 bill %fread-bytes & %fwrite-bytes support offsets > 64K and
|
|---|
| 48 | ;; will read/write more than just the first 512 bytes.
|
|---|
| 49 |
|
|---|
| 50 | btrees.lisp
|
|---|
| 51 | ;;; 02/06/95 bill Moon's idea to add binary search to %btree-search-node without
|
|---|
| 52 | ;;; changing the disk representation. That and doing the comparisons
|
|---|
| 53 | ;;; inline got speed improvement of a factor of 2.7 over the old linear
|
|---|
| 54 | ;;; search code.
|
|---|
| 55 | ;;; 12/16/94 bill Complete rewrite of the low-level insertion code.
|
|---|
| 56 | ;;; This fixes a bug found by Paul.Meurer@mi.uib.no and
|
|---|
| 57 | ;;; will make much easier the addition of binary search for nodes.
|
|---|
| 58 | ;;; 10/28/94 Moon Change without-interrupts to with-databases-locked.
|
|---|
| 59 | ;;; 10/25/94 bill (setf (p-btree-store ...) x) now returns x instead of its pptr.
|
|---|
| 60 | ;;; 09/21/94 bill without-interrupts as necessary for interlocking
|
|---|
| 61 |
|
|---|
| 62 | disk-cache-accessors.lisp
|
|---|
| 63 | ;; 03/13/95 bill byte-array-p & ensure-byte-array-p move to "block-io-mcl.lisp"
|
|---|
| 64 | ;; 10/28/94 Moon Change without-interrupts to with-databases-locked.
|
|---|
| 65 | ;; 10/03/94 bill (setf wood::read-8-bits) no longer fails when writing
|
|---|
| 66 | ;; less than 4 bytes from the end of the buffer.
|
|---|
| 67 | ;; 09/21/94 bill without-interrupts as necessary for interlocking
|
|---|
| 68 |
|
|---|
| 69 | disk-cache.lisp
|
|---|
| 70 | ;; 11/17/95 bill poor man's transactions.
|
|---|
| 71 | ;; open-disk-cache takes an :initial-transaction-p keyword.
|
|---|
| 72 | ;; If nil (NOT the default), errors on any disk writes that
|
|---|
| 73 | ;; happen outside of a start-disk-cache-transaction/commit-disk-cache-transaction
|
|---|
| 74 | ;; pair.
|
|---|
| 75 | ;; 11/03/94 ows open-disk-cache takes a mac-file-creator keyword,
|
|---|
| 76 | ;; which it passes on to open.
|
|---|
| 77 | ;; 10/28/94 Moon Change without-interrupts to with-databases-locked.
|
|---|
| 78 | ;; Remove interlocking from get-disk-page; callers must.
|
|---|
| 79 | ;; Add comment "Must be called inside with-databases-locked"
|
|---|
| 80 | ;; to with-locked-page.
|
|---|
| 81 | ;; 09/21/94 bill without-interrupts as necessary for interlocking
|
|---|
| 82 | ;; 07/26/94 bill get-disk-page allocates a new page if all the pages
|
|---|
| 83 | ;; are locked. Hence, it can't fail unless out of memory.
|
|---|
| 84 |
|
|---|
| 85 | wood:wood;load-wood.lisp
|
|---|
| 86 | ;; 01/17/95 bill export p-store-pptr, pptr-pointer, pptr-pheap,
|
|---|
| 87 | ;; with-transaction, start-transaction, commit-transaction,
|
|---|
| 88 | ;; abort-transaction
|
|---|
| 89 | ;; 11/02/94 ows export pptr, pheap-pathname
|
|---|
| 90 | ;; 10/25/94 bill export pptr-p, p-loaded?, p-stored?,
|
|---|
| 91 | ;; wood-disk-resident-slot-names, define-disk-resident-slots
|
|---|
| 92 | ;; 03/14/94 bill Don't push anything onto *module-search-path*
|
|---|
| 93 |
|
|---|
| 94 | persistent-clos.lisp
|
|---|
| 95 | ;; 11/02/94 bill (method %p-store-object (t standard-object t)) no longer
|
|---|
| 96 | ;; handles p-make-load-function-using-pheap. It has moved
|
|---|
| 97 | ;; into %p-store-internal now.
|
|---|
| 98 | ;; 10/28/94 Moon Change without-interrupts to with-databases-locked
|
|---|
| 99 | ;; 10/25/94 bill p-load-instance calls wood-disk-resident-slot-names,
|
|---|
| 100 | ;; a new GF that users can specialize.
|
|---|
| 101 | ;; define-disk-resident-slot-names macro to aid generation
|
|---|
| 102 | ;; of wood-disk-resident-slot-names methods and accessor
|
|---|
| 103 | ;; methods that will swap disk resident slots in when
|
|---|
| 104 | ;; necessary.
|
|---|
| 105 | ;; 09/21/94 bill without-interrupts as necessary for interlocking
|
|---|
| 106 |
|
|---|
| 107 | persistent-heap.lisp
|
|---|
| 108 | ;; 02/10/95 bill Binding of *loading-pheap* moves from p-load to pointer-load.
|
|---|
| 109 | ;; 01/17/95 bill poor man's transactions.
|
|---|
| 110 | ;; open-pheap takes an :initial-transaction-p keyword.
|
|---|
| 111 | ;; If nil (NOT the default), errors on any disk writes that
|
|---|
| 112 | ;; happen outside of a start-transaction/commit-transaction pair.
|
|---|
| 113 | ;; 12/09/94 bill Changes from fix-redefine-class-patch for Alpha 1
|
|---|
| 114 | ;; %p-store-internal gets new descend value :store-slots-again
|
|---|
| 115 | ;; 11/16/94 bill flush-all-open-pheaps ignores errors and ensures that they
|
|---|
| 116 | ;; won't happen again.
|
|---|
| 117 | ;; 11/04/94 ows open-pheap & create-pheap take a mac-file-creator keyword, which
|
|---|
| 118 | ;; they pass on to open-disk-cache.
|
|---|
| 119 | ;; Add :mac-file-creator to *open-pheap-keywords*.
|
|---|
| 120 | ;; 11/02/94 bill Handling of p-make-load-function-using-pheap moves into
|
|---|
| 121 | ;; %p-store-internal and out of (method %p-store-object (t structure-object t)).
|
|---|
| 122 | ;; %p-store-object-body-with-load-function commented out.
|
|---|
| 123 | ;; Remove %p-store-hash-table and its call.
|
|---|
| 124 | ;; Optimize handling of NIL in %p-store-internal
|
|---|
| 125 | ;; 10/28/94 Moon Change without-interrupts to with-databases-locked
|
|---|
| 126 | ;; Remove interlocking from pheap-write-hook since it is only called
|
|---|
| 127 | ;; from inside of get-disk-page, which is already interlocked
|
|---|
| 128 | ;; 10/25/94 bill p-loaded?, p-maphash type checks its hash table arg.
|
|---|
| 129 | ;; initialize-vector-storage had an error in its first error call.
|
|---|
| 130 | ;; %p-store-uvector calls %p-store-hash-table for hash tables.
|
|---|
| 131 | ;; %p-store-hash-table saves hash tables without dumping
|
|---|
| 132 | ;; a copy of #'equal, #'equalp, or internal hash table functions.
|
|---|
| 133 | ;; p-load-load-function handles circularity correctly.
|
|---|
| 134 | ;; New macro: %p-store-object-body-with-load-function and
|
|---|
| 135 | ;; its helper function do-%p-store-object-body-with-load-function
|
|---|
| 136 | ;; 10/13/94 bill New variable: *preserve-lfun-info*. Pass it as second arg to split-lfun.
|
|---|
| 137 | ;; 10/12/94 bill typo in error message in initialize-vector-storage.
|
|---|
| 138 | ;; Thanx to Chris DiGiano for finding this.
|
|---|
| 139 | ;; 10/11/94 bill open-pheap works again if the file does not exist and
|
|---|
| 140 | ;; the :if-exists keyword is present.
|
|---|
| 141 | ;; 09/26/94 bill GZ's simplification t do-%p-store-object-body
|
|---|
| 142 | ;; 09/21/94 bill without-interrupts as necessary for interlocking
|
|---|
| 143 | ;; 09/19/94 bill New function: p-stored?
|
|---|
| 144 | ;; New macro: careful-maybe-cached-address. Use it in %p-store-object-body
|
|---|
| 145 | ;; to handle the case of a make-load-function-using-pheap returning
|
|---|
| 146 | ;; the same disk object for two different memory objects.
|
|---|
| 147 | ;; 07/18/94 bill (via derek)
|
|---|
| 148 | ;; Calls p-make-load-function-using-pheap instead of p-make-load-function.
|
|---|
| 149 | ;; p-make-load-function-using-pheap takes the pheap as an arg, so that it
|
|---|
| 150 | ;; can dispatch off its type. open-pheap takes a new :pheap-class keyword
|
|---|
| 151 | ;; to support this. The reason for this change is to allow different
|
|---|
| 152 | ;; persistent heap types to have different strategies for storing objects to disk.
|
|---|
| 153 | ;; 06/21/94 bill flush-all-open-pheaps removes a pheap from *open-pheaps* if
|
|---|
| 154 | ;; its stream is no longer open.
|
|---|
| 155 | ;; 03/10/93 bill create-pheap & open-pheap now take an :external-format keyword
|
|---|
| 156 | ;; (submitted by Oliver Steele)
|
|---|
| 157 |
|
|---|
| 158 | wood:wood;split-lfun.lisp
|
|---|
| 159 | ;; 10/13/94 gz optional preserve-lfun-info-p arg to split-lfun
|
|---|
| 160 | ;; 10/11/94 bill split-lfun no longer attempts to skip immediate map when
|
|---|
| 161 | ;; there is none. Thanx to Chris DiGiano for finding this one.
|
|---|
| 162 |
|
|---|
| 163 | wood-gc.lisp
|
|---|
| 164 | ;; 11/02/94 ows gc-pheap-file-internal takes keyword argument modify-input-file;
|
|---|
| 165 | ;; when true, calls make-forwarding-table instead of open-dc-log.
|
|---|
| 166 | ;; gc-pheap-file-internal copies the mac-file-creator from the input
|
|---|
| 167 | ;; file to the output file.
|
|---|
| 168 | ;; gc-pheap-file takes optional argument modify-input-file
|
|---|
| 169 | ;; gc-pheap-file only swaps files when the size is smaller.
|
|---|
| 170 | ;; new fns make-forwarding-table, forwarding-table-p
|
|---|
| 171 | ;; gc-write-forwarding-pointer, address-forwarded-p check whether
|
|---|
| 172 | ;; the log is a forwarding table.
|
|---|
| 173 | ;; new fns address-forwarded-p, read-forwarded-pointer replace
|
|---|
| 174 | ;; inlined versions of this code in callers.
|
|---|
| 175 | ;; gc-copy-pkg-symbols, gc-copy-ptr, gc-copy-cons-internal
|
|---|
| 176 | ;; call address-forwarded-p, read-forwarded-pointer.
|
|---|
| 177 | ;; 09/26/94 bill gc-copy-bytes uses addr+ instead of incf.
|
|---|
| 178 | ;; Thanx to Christopher T. Wisdo for finding this.
|
|---|
| 179 |
|
|---|
| 180 | wood:wood;wood.lisp
|
|---|
| 181 | ;; 03/09/94 bill wood::load-wood -> (find-symbol "LOAD-WOOD" :wood)
|
|---|
| 182 |
|
|---|
| 183 | wood:wood;woodequ.lisp
|
|---|
| 184 | ;; 01/18/95 bill $btree.max-key-size
|
|---|