add changelog
[platform/upstream/gdbm.git] / NEWS
1 GNU dbm NEWS -- history of user-visible changes. 2013-12-25
2 Copyright (C) 1990-2013 Free Software Foundation, Inc.
3 See the end of file for copying conditions.
4
5 Please send gdbm bug reports to <bug-gdbm@gnu.org>.
6 \f
7 Version 1.11, 2013-12-25
8
9 * Improved dump format.
10
11 A new dump format is implemented, which encodes all data in base64 and
12 stores not only key/data pairs, but also the original database file
13 metadata, such as file name, mode and ownership.  Files in this format
14 can be sent without additional encapsulation over transmission
15 channels that normally allow only ASCII data.  Dumps in this format
16 allow for restoring an exact copy of the database, including file
17 ownership and privileges.
18
19 * New function: gdbm_count
20
21     int gdbm_count (GDBM_FILE *file, gdbm_count *count);
22
23 Counts records in `file' and stores the result in the memory location
24 pointed to by `count'.
25
26 * New utilities: gdbm_dump and gdbm_load.
27
28 Gdbm_dump creates a plain-text dump of the GDBM database.  This dump
29 can be used to create an exact copy of the database afterward.
30
31 The gdbm_load performs the reverse: given the dump file, it creates a
32 GDBM database.  Apart from native GDBM dump formats, it also understands
33 the format generated by Berkeley DB db_dump utility.  Thus, an easy
34 way to convert a Berkeley DB database to GDBM is:
35
36    db_dump input.db | gdbm_load output.db
37
38 * gdbmtool
39
40 The gdbmtool utility allows you to examine, modify or create GDBM
41 databases.  It provides an easy-to-use interactive shell and can
42 be used for scripting.  One of the unique features of gdbmtool is that
43 it allows to define datum structures for key and content parts, similarly
44 to the C "struct" declarations, and to input and display such
45 structured data.
46
47 \f
48 Version 1.10, 2011-11-13
49
50 * Internationalization
51
52 This version of GDBM is fully internationalized.  The following
53 localizations are available: Finnish, German, Japanese, Polish and Ukrainian.
54
55 * Support for close-on-exec flag in gdbm_open (see GDBM_CLOEXEC in the docs).
56
57 * Improve testgdbm command system
58
59 The testgdbm tool now supports multicharacter commands.
60
61 * Bugfixes
62
63 Bug numbers below refer to the tracker at <http://puszcza.gnu.org.ua/bugs/?N>
64
65 ** Bug #150.
66 Tolerate I/O operations returning less bytes than expected.  Retry I/O
67 if possible.
68
69 ** Bug #151
70 Gdbm_open now initializes with zeros the memory allocated for file
71 header.  Previous versions left uninitialized portions intact, so
72 they contained whatever happened to be in that memory region at the
73 moment of allocation.  This created undesired security implications.
74
75 ** Fix handling of NDBM databases in read-only mode.
76
77 \f
78 Version 1.9.1
79
80 * Bugfix
81
82 Improperly used preprocessor directive caused compilation failure
83 when using gcc 4.4.4 or newer.
84
85 \f
86 Version 1.9, 2011-08-12
87
88 * Use of mmap
89
90 To speed up I/O operations, mmap(2) is used when available.
91 It can be disabled at compile time using --disable-memory-mapped-io,
92 and at run time by giving GDBM_NOMMAP flag to gdbm_open.
93
94 * Changes in compatibility mode
95
96 The changes below fix several long-standing bugs in
97 ndbm compatibility code, which made it impossible to
98 use GDBM with Sendmail and Postfix.  Now that they are
99 fixed, GDBM can be used with these MTAs. 
100
101 ** Locking is disabled.
102
103 Neither ndbm nor dbm functions lock their files.
104
105 This bug was reported, in particular, in
106 https://bugzilla.redhat.com/show_bug.cgi?id=663932
107
108 ** Do not link pag to dir.
109
110 Instead of linking pag to dir as previous versions did, GDBM now
111 creates a separate dir file.  Consequently, dbm_pagfno and
112 dbm_dirfno return different file descriptors.
113
114 When opening an existing database as a writer, GDBM determines
115 if dir is linked to pag, and if so breaks the link and creates
116 a new dir file.  When such a database is opened in a read-only
117 mode, GDBM does not attempt to alter the link.
118
119 * gdbm_setopt
120
121 New options are implemented for use with gdbm_setopt function.
122 In particular, a set of options is provided for retrieving various
123 database parameters, such as the file name, memory mapping status,
124 etc.
125
126 * The testgdbm program is installed
127
128 Testgdbm is an interactive tool for manipulating GDBM database files.
129 It allows you to view or update existing databases, export
130 them to the portable flat file format and to create new database files.
131
132 * A testsuite is provided.
133
134 * Improved documentation.
135 \f
136 Version 1.8.3
137
138 * Various configure related changes and additional updates.
139 \f
140 Version 1.8.2
141
142 * Allow `NEWDB'-opened databases to actually, well, store records.
143 \f
144 Version 1.8.1
145
146 * Lots of bug fixes, including a data corruption bug.
147 * Updated to current autoconf and libtool.
148 * Moved the dbm/ndbm compatibility routines to libgdbm_compat.
149 \f
150 Version 1.8
151
152 * Added GDBM_CENTFREE functionality and option.
153 * Added GDBM_COALESCEBLKS functionality and option.
154 * Added GDBM_NOLOCK flag.
155 * Made ``fast'' mode the default, making GDBM_FAST obsolete, and adding
156   the GDBM_SYNC flag and GDBM_SYNCMODE option.
157 * Switched to building with libtool.
158 \f
159 Version 1.7.3
160
161 * Fixed a couple of last minute problems.
162
163 Namely, no autoconf.h in version.c, and no GDBM_FASTMODE in gdbm.h!
164
165 * Fixed some documentation bugs.
166 \f
167 Version 1.7.2
168
169 * Enhanced portability and compile/installation changes.
170 * Additional, "fast mode" related gdbm_setopt() option.
171 * Growth problems bug fix.
172 \f
173 Version 1.7.1
174
175 * Enhanced portabilty and compile/installation bug fixes.
176 * Switched over to using an auto config header.
177 * Slight documentation upgrade.
178 \f
179 Version 1.7
180
181 * A new dynamic, delayed initialization, bucket cache.
182 * New gdbm_setopt(), gdbm_exists(), and gdbm_strerror() routines.
183 * Slightly improved dbm/ndbm compatibility.
184 * Greatly improved portability to 64 or 16 bit machines.
185 * Various bug fixes.
186 \f
187 Version 1.6
188
189 * New documentation in both man and texinfo formats.
190 * Bug fixes.
191 * A New "writers" mode that does not fsync the database.
192 * Uses Autoconf now.
193 \f
194 Version 1.5
195
196 * Minor bug fixes.  See the ChangeLog.
197 * Added gdbmconst.h to allow users to change the size of the
198 * bucket cache in the systems.h file.
199 \f
200 Version 1.4
201
202 * Mainly bug fixes
203 * A define for "dbmclose()" was added to dbm.h for those few 
204   implementaions that need that call.
205 * For details, see the ChangeLog.
206 \f
207 Version 1.0
208
209 * Makefiles were combined into one and a few new things added to it.
210 * Several minor bugs were fixed including a cache bug.
211 * Two new calls (dbm_pagfno, dbm_dirfno) were added to the NDBM interface.
212 * A conversion program from dbm files to gdbm files was added.
213 * Reorganize was changed to allow complex file names. (dir/file form)
214 * testgdbm, testndbm, and testdbm were modified to return key and data
215   pairs where needed and to take an optional file name as an argument.
216   testgdbm had some command characters changed.
217 * The DBM and NDBM interfaces were separated.
218 * An include file for dbm users was added. (dbm.h)
219 * The include file for ndbm users was renamed ndbm.h. (It was gndbm.h.)
220 \f
221 Version 0.9
222
223 * The hash function changed.
224 * The file format changed.
225 * There was a complete rewrite of falloc.c.
226 * There were added compatiblity routines for ndbm.
227 * The file names for dbm compatibility routines were made to look like dbm.
228 * Test programs changed.
229 * Support for System V.
230 * Various other small changes.
231 * The need for recovery and associated code was removed.
232 \f
233 \f
234 ----------------------------------------------------------------------
235 Copyright information:
236
237 Copyright (C) 1990-2013 Free Software Foundation, Inc.
238
239    Permission is granted to anyone to make or distribute verbatim copies
240    of this document as received, in any medium, provided that the
241    copyright notice and this permission notice are preserved,
242    thus giving the recipient permission to redistribute in turn.
243
244    Permission is granted to distribute modified versions
245    of this document, or of portions of it,
246    under the above conditions, provided also that they
247    carry prominent notices stating who last changed them.
248 \f
249 Local variables:
250 mode: outline
251 paragraph-separate: "[  \f]*$"
252 eval: (add-hook 'write-file-hooks 'time-stamp)
253 time-stamp-start: "changes. "
254 time-stamp-format: "%:y-%02m-%02d"
255 time-stamp-end: "\n"
256 end: