| 1 |
|
|---|
| 2 |
|
|---|
| 3 | ;; Change History (most recent first):
|
|---|
| 4 | ;; 1 2/13/97 alice hartley
|
|---|
| 5 | ;; (do not edit before this line!!)
|
|---|
| 6 | This file contains release notes for version 0.93 of Wood.
|
|---|
| 7 |
|
|---|
| 8 | New features since 0.91
|
|---|
| 9 | -----------------------
|
|---|
| 10 | This release gives you control over Wood's I/O bufferring, and includes
|
|---|
| 11 | some performance enhancements and bug fixes. I have tested it in
|
|---|
| 12 | MCL 2.0.1 and MCL 3.0. The distributed fasl files were compiled with
|
|---|
| 13 | MCL 3.0.
|
|---|
| 14 |
|
|---|
| 15 | You've always been able to control the page size, but Wood used to
|
|---|
| 16 | use MCL's default I/O block size to do its low-level disk I/O. In
|
|---|
| 17 | MCL 2.x that was 512 bytes. In 3.0 it's 2K bytes. In this release,
|
|---|
| 18 | the I/O block size is the same as the page size. If your data has
|
|---|
| 19 | good enough locality, I/O tends to be fastest with a page size of
|
|---|
| 20 | about 4K bytes. Locality greatly affects this, however, so the only
|
|---|
| 21 | way to tell which page size is best for your application is to try
|
|---|
| 22 | a bunch of different ones and time them. Remember, a Wood database
|
|---|
| 23 | file remembers its page size, so to try another page size you need
|
|---|
| 24 | to create a new file with the new page size. GC-PHEAP-FILE's
|
|---|
| 25 | new PAGE-SIZE argument allows you to change the page size when
|
|---|
| 26 | you garbage collect a wood database.
|
|---|
| 27 |
|
|---|
| 28 | You now have better control over the swapping buffers used by
|
|---|
| 29 | Wood's software virtual memory. You no longer need to specify the
|
|---|
| 30 | number of pages of swapping space. Instead, OPEN-PHEAP now has a
|
|---|
| 31 | SWAPPING-SPACE parameter that allows specification as bytes. Wood
|
|---|
| 32 | used to allocate swapping space for each file. If your application
|
|---|
| 33 | opens a number of Wood files, you may benefit from the new
|
|---|
| 34 | shared swapping space feature, available via the MAKE-SHARED-BUFFER-POOL
|
|---|
| 35 | function and the SHARED-BUFFER-POOL parameter to OPEN-PHEAP. It
|
|---|
| 36 | may speed up your application while using less total memory. Read
|
|---|
| 37 | the "wood.doc" sections on OPEN-PHEAP and MAKE-SHARED-BUFFER-POOL
|
|---|
| 38 | for details.
|
|---|
| 39 |
|
|---|
| 40 | Wood's low-level page table used to be a Common Lisp hash table.
|
|---|
| 41 | It is now a custom hash table that is much faster than the general
|
|---|
| 42 | purpose ones. Since all Wood data accesses go through the page
|
|---|
| 43 | table, this provides a noticeable speedup.
|
|---|
| 44 |
|
|---|
| 45 | P-ASSOC is just like Common Lisp's assoc, but it will operate on
|
|---|
| 46 | a disk-resident a-list.
|
|---|
| 47 |
|
|---|
| 48 | P-DO-BTREE is a macro that simplifies some uses of p-map-btree.
|
|---|
| 49 |
|
|---|
| 50 | P-MAP-BTREE-KEYSTRINGS allows you to map over just the keys in
|
|---|
| 51 | a btree. Faster than P-MAP-BTREE if you don't care about the values,
|
|---|
| 52 | since P-MAP-BTREE needs to intern a PPTR for each non-immediate value.
|
|---|
| 53 |
|
|---|
| 54 | Fix a fencepost in the new btree code that was uploaded with Wood
|
|---|
| 55 | 0.9. Basically, btrees were unuseable in databases larger than 16
|
|---|
| 56 | megabytes. Now they work.
|
|---|
| 57 |
|
|---|
| 58 | Instead of signalling a "Wrong FASL version." error, Wood now deletes
|
|---|
| 59 | the old fasl file and recompiles.
|
|---|
| 60 |
|
|---|
| 61 |
|
|---|
| 62 | Mod Histories
|
|---|
| 63 | -------------
|
|---|
| 64 |
|
|---|
| 65 | block-io-mcl.lisp
|
|---|
| 66 | ;; 07/21/95 bill inhibited-event-dispatch now processes *inhibited-foreground-switch*
|
|---|
| 67 | ;; 05/31/95 bill wood:with-database-locked now calls new inhibted-event-dispatch
|
|---|
| 68 | ;; function if event processing happenned while it was inhibited.
|
|---|
| 69 | ;; This makes interactive response time as good as it can be
|
|---|
| 70 | ;; given this locking mechanism.
|
|---|
| 71 | ;; 05/25/95 bill %fread-bytes & %fwrite-bytes use #_BlockMove instead
|
|---|
| 72 | ;; of a move.b loop; it's faster.
|
|---|
| 73 | ;; set-minimum-file-length never makes the file shorter.
|
|---|
| 74 |
|
|---|
| 75 | disk-cache-accessors.lisp
|
|---|
| 76 | ;; 05/25/95 bill more da -> da.l changes.
|
|---|
| 77 |
|
|---|
| 78 | disk-cache.lisp
|
|---|
| 79 | ;; 05/31/95 bill Shared swapping space:
|
|---|
| 80 | ;; Move the page-size, max-pages, pages & locked-pages slots from the
|
|---|
| 81 | ;; disk-cache structure to the new shared-buffer structure. disk-cache
|
|---|
| 82 | ;; gets a new shared-buffer slot to hold a shared-buffer instance.
|
|---|
| 83 | ;; cons-disk-page works with a NIL disk-cache arg.
|
|---|
| 84 | ;; print-disk-page works if disk-page-stream is NIL.
|
|---|
| 85 | ;; New shared-buffer-pool structure.
|
|---|
| 86 | ;; New get-shared-buffer function, gets or allocates a shared-buffer of
|
|---|
| 87 | ;; a particular page size from a shared-buffer-pool instance.
|
|---|
| 88 | ;; open-disk-cache takes new shared-buffer & shared-buffer-pool keyword
|
|---|
| 89 | ;; args. If shared-buffer-pool is specified, uses get-shared-buffer
|
|---|
| 90 | ;; to get a shared-buffer. Otherwise, if shared-buffer is specified, uses
|
|---|
| 91 | ;; it. Otherwise, conses up a new shared-buffer with the given page-size
|
|---|
| 92 | ;; & swapping-space.
|
|---|
| 93 | ;; close-disk-cache call remove-disk-cache-from-shared-buffer, a new function
|
|---|
| 94 | ;; that removes all references to a disk-cache from the disk-page's in a shared-buffer.
|
|---|
| 95 | ;; add-disk-pages adds the new pages to the disk-cache-shared-buffer.
|
|---|
| 96 | ;; read-disk-page takes a new disk-cache argument and uses it to initialize the
|
|---|
| 97 | ;; disk-page-disk-cache & disk-page-stream slots.
|
|---|
| 98 | ;; flush-disk-page works if disk-page-disk-cache is NIL.
|
|---|
| 99 | ;; get-disk-page, lock-page, unlock-page updated for using the disk-cache-shared-buffer.
|
|---|
| 100 | ;; extend-disk-cache no longer calls add-disk-pages. It lets get-disk-page do so.
|
|---|
| 101 | ;; 05/25/95 Moon New constant: $disk-page-flags_touched-bit, set when a page is
|
|---|
| 102 | ;; referenced.
|
|---|
| 103 | ;; New functions, disk-page-touched? & (setf disk-page-touched?), to access
|
|---|
| 104 | ;; the $disk-page-flags_touched-bit.
|
|---|
| 105 | ;; get-disk-page now uses a 1-bit clock algorithm instead of
|
|---|
| 106 | ;; least-recently-swapped to determine which page to swap out.
|
|---|
| 107 | ;; 05/25/95 bill *default-page-size* moves here from "persistent-heap.lisp".
|
|---|
| 108 | ;; New parameter, *default-swapping-space*, is the default number
|
|---|
| 109 | ;; of bytes to use for swapping space.
|
|---|
| 110 | ;; New parameter, *big-io-buffers*, true if cl:open takes an
|
|---|
| 111 | ;; :elements-per-buffer keyword arg.
|
|---|
| 112 | ;; open-disk-cache defaults its page-size arg to
|
|---|
| 113 | ;; *default-page-size* instead of 512. It errors if the page size
|
|---|
| 114 | ;; is not at least 512. Doesn't pass an :external-format keyword
|
|---|
| 115 | ;; arg to open unless one was passed in. If *big-io-buffers* is
|
|---|
| 116 | ;; true, passes the page-size as the :elements-per-buffer keyword
|
|---|
| 117 | ;; arg to open.
|
|---|
| 118 | ;; extend-disk-cache takes a new, optional, extend-file? arg. If
|
|---|
| 119 | ;; true, calls set-minimum-file-length to extend the length of the file.
|
|---|
| 120 |
|
|---|
| 121 | btrees.lisp
|
|---|
| 122 | ;;; 08/10/95 bill p-do-btree macro is to a btree what dolist is to a list.
|
|---|
| 123 | ;;; 07/02/95 bill Fix fencepost in computation of fill-count in %shift-node-left
|
|---|
| 124 | ;;; Thanks to Horace Enea for providing the test case to track down this bug.
|
|---|
| 125 | ;;; 05/25/95 bill New parameter: *max-btree-node-size*.
|
|---|
| 126 | ;;; dc-cons-btree-node calls dc-allocate-new-btree-node instead of
|
|---|
| 127 | ;;; %dc-allocate-new-memory.
|
|---|
| 128 | ;;; New function: dc-allocate-new-btree-node, calls %dc-allocate-new-memory
|
|---|
| 129 | ;;; as before if the page size is <= *max-btree-node-size*. Otherwise, carves
|
|---|
| 130 | ;;; up a disk page into *max-btree-node-size* nodes, returns one of them, and
|
|---|
| 131 | ;;; adds the rest to the btree node free list.
|
|---|
| 132 | ;;; 04/11/95 bill new function: p-map-btree-keystrings.
|
|---|
| 133 | ;;; dc-map-btree uses compare-strings-function instead of string<
|
|---|
| 134 | ;;; for comparing with the TO arg.
|
|---|
| 135 |
|
|---|
| 136 | disk-page-hash.lisp
|
|---|
| 137 | ;; 05/31/95 bill New file
|
|---|
| 138 |
|
|---|
| 139 | load-wood.lisp
|
|---|
| 140 | ;; 08/11/95 bill translate this file's pathname to a physical one when
|
|---|
| 141 | ;; defining the "wood" logical pathname to prevent
|
|---|
| 142 | ;; a recursive definition.
|
|---|
| 143 | ;; 08/11/95 bill compile-and-load deletes fasl files for other MCL versions.
|
|---|
| 144 | ;; 08/11/95 bill load-wood loads big-io-buffer-patch if necessary
|
|---|
| 145 | ;; 08/10/95 bill export p-assoc & p-do-btree
|
|---|
| 146 | ;; 05/31/95 bill export make-shared-buffer, make-shared-buffer-pool
|
|---|
| 147 | ;; 05/25/95 bill add disk-page-hash to *wood-files*
|
|---|
| 148 |
|
|---|
| 149 | persistent-heap.lisp
|
|---|
| 150 | ;; 08/10/95 bill p-assoc
|
|---|
| 151 | ;; 06/30/95 bill p-load-header passes a null depth directly to p-load-gvector.
|
|---|
| 152 | ;; Thanks to Sidney Markowitz.
|
|---|
| 153 | ;; 05/31/95 bill Shared swapping space:
|
|---|
| 154 | ;; Add :shared-buffer & :shared-buffer-pool to *open-pheap-keywords*
|
|---|
| 155 | ;; open-pheap takes new :shared-buffer & :shared-buffer-pool keywords
|
|---|
| 156 | ;; which it passes on to open-disk-cache.
|
|---|
| 157 | ;; 05/31/95 bill pheap class definition now specifies the size of the pheap->mem-hash &
|
|---|
| 158 | ;; mem->pheap-hash tables as *pheap<->mem-hash-table-size* = 500.
|
|---|
| 159 | ;; 05/25/95 bill *default-page-size* moved to disk-cache.lisp.
|
|---|
| 160 | ;; remove *default-max-pages*.
|
|---|
| 161 | ;; add :swapping-space to *open-pheap-keywords*
|
|---|
| 162 | ;; open-pheap takes a new :swapping-space keyword arg, the default is
|
|---|
| 163 | ;; *default-swapping-space*. The default value for max-pages is now computed from
|
|---|
| 164 | ;; the page-size and the swapping-space, and is forced to be at least 2.
|
|---|
| 165 | ;; dc-cons-segment calls %dc-allocate-new-memory with a nil value for its
|
|---|
| 166 | ;; initial-element arg. This prevents storage from being initialized twice,
|
|---|
| 167 | ;; once when the segment is allocated and again when an object is consed.
|
|---|
| 168 | ;; initialize-vector-storage calls extend-disk-cache with a true value for
|
|---|
| 169 | ;; its new extend-file? arg if the vector being consed is at least 16K bytes
|
|---|
| 170 | ;; long. This is an attempt to get contiguous disk space for large arrays.
|
|---|
| 171 | ;; 03/22/95 bill in %p-store-internal - in the first (conser) body subform of the %p-store-object-body
|
|---|
| 172 | ;; form, unconditionally set checked-load-function? to true. This prevents unnecessary
|
|---|
| 173 | ;; checking in the second (filler) body subform.
|
|---|
| 174 |
|
|---|
| 175 | split-lfun.lisp
|
|---|
| 176 | ;; 06/30/95 bill split-lfun now works in MCL 3.0.
|
|---|
| 177 |
|
|---|
| 178 | wood-gc.lisp
|
|---|
| 179 | ;; 05/25/95 bill gc-pheap-file-internal takes a new :page-size arg, which is used
|
|---|
| 180 | ;; as the page-size for the new, compacted, pheap. It returns true
|
|---|
| 181 | ;; if the new page size is different than the old one.
|
|---|
| 182 | ;; gc-pheap-file's args, except the first one, are now keywords instead
|
|---|
| 183 | ;; of optional. This is an incompatible change.
|
|---|
| 184 | ;; It takes a new :page-size arg which is passes on to gc-pheap-file-internal.
|
|---|
| 185 | ;; The new file replaces the old if either the page size changed or it is smaller.
|
|---|
| 186 |
|
|---|
| 187 | wood.lisp
|
|---|
| 188 | ;; 08/11/95 bill Handle wrong fasl version errors
|
|---|
| 189 |
|
|---|
| 190 | patches;big-io-buffer-patch.lisp
|
|---|
| 191 | ;; 08/11/95 bill New file. Patches MCL 2.x to support MCL 3.0's
|
|---|
| 192 | ;; :elements-per-buffer arg to OPEN.
|
|---|