source: trunk/@Release Notes 0.93 @ 3

Revision 3, 10.5 KB checked in by gz, 9 years ago (diff)

Recovered version 0.961 from Sheldon Ball <s.ball@…>

3;;      Change History (most recent first):
4;;  1 2/13/97  alice hartley
5;;  (do not edit before this line!!)
6This file contains release notes for version 0.93 of Wood.
8New features since 0.91
10This release gives you control over Wood's I/O bufferring, and includes
11some performance enhancements and bug fixes. I have tested it in
12MCL 2.0.1 and MCL 3.0. The distributed fasl files were compiled with
13MCL 3.0.
15You've always been able to control the page size, but Wood used to
16use MCL's default I/O block size to do its low-level disk I/O. In
17MCL 2.x that was 512 bytes. In 3.0 it's 2K bytes. In this release,
18the I/O block size is the same as the page size. If your data has
19good enough locality, I/O tends to be fastest with a page size of
20about 4K bytes. Locality greatly affects this, however, so the only
21way to tell which page size is best for your application is to try
22a bunch of different ones and time them. Remember, a Wood database
23file remembers its page size, so to try another page size you need
24to create a new file with the new page size. GC-PHEAP-FILE's
25new PAGE-SIZE argument allows you to change the page size when
26you garbage collect a wood database.
28You now have better control over the swapping buffers used by
29Wood's software virtual memory. You no longer need to specify the
30number of pages of swapping space. Instead, OPEN-PHEAP now has a
31SWAPPING-SPACE parameter that allows specification as bytes. Wood
32used to allocate swapping space for each file. If your application
33opens a number of Wood files, you may benefit from the new
34shared swapping space feature, available via the MAKE-SHARED-BUFFER-POOL
35function and the SHARED-BUFFER-POOL parameter to OPEN-PHEAP. It
36may speed up your application while using less total memory. Read
37the "wood.doc" sections on OPEN-PHEAP and MAKE-SHARED-BUFFER-POOL
38for details.
40Wood's low-level page table used to be a Common Lisp hash table.
41It is now a custom hash table that is much faster than the general
42purpose ones. Since all Wood data accesses go through the page
43table, this provides a noticeable speedup.
45P-ASSOC is just like Common Lisp's assoc, but it will operate on
46a disk-resident a-list.
48P-DO-BTREE is a macro that simplifies some uses of p-map-btree.
50P-MAP-BTREE-KEYSTRINGS allows you to map over just the keys in
51a btree. Faster than P-MAP-BTREE if you don't care about the values,
52since P-MAP-BTREE needs to intern a PPTR for each non-immediate value.
54Fix a fencepost in the new btree code that was uploaded with Wood
550.9. Basically, btrees were unuseable in databases larger than 16
56megabytes. Now they work.
58Instead of signalling a "Wrong FASL version." error, Wood now deletes
59the old fasl file and recompiles.
62Mod Histories
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.
76;; 05/25/95 bill more da -> da.l changes.
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.
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.
137;; 05/31/95 bill New file
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*
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.
176;; 06/30/95 bill  split-lfun now works in MCL 3.0.
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.
188;; 08/11/95 bill  Handle wrong fasl version errors
191;; 08/11/95 bill  New file. Patches MCL 2.x to support MCL 3.0's
192;;                :elements-per-buffer arg to OPEN.
Note: See TracBrowser for help on using the repository browser.