NEWS for EDB, the Emacs Database

Copyright (C) 2004,2005 Thien-Thi Nguyen
See the end for copying conditions.


- 1.25 | 2005-01-24

  - Bugfix: Edited databases can be saved

	A severe bug was introduced in EDB 1.24 whereby edited databases
	could not be saved.  The command `db-save-database' would result
	in the error "Wrong type argument: arrayp, nil" on the first
	invocation.  A follow-on invocation was required to actually do
	the save.

  - Bugfix: Computed sort function handles (eq value1 value2)

	Previously, the somewhat-internal function `db-rs-sortfunc'
	would return a function that failed to implement "reversal"
	semantics in the cases where its args were `eq'.

  - Bugfix: Canoncalization of creation methods (db-convert.el)

	The function `db-canonicalize-creation-method' now returns a
	well-formed creation-method object.

  - Default value for `db-inform-interval' bumped to 100

  - In Database View and Summary modes, `t' runs `toggle-truncate-lines'

  - Encoding for the data file can now be specified

	You can specify the encoding of the data file by adding to the
	Local Variables section in the format file a line of the form:

	edb-data-coding: CODING

	There is one restriction: If CODING is not one that Emacs can
	automatically recognize (e.g., `utf-16le'), and the data file is
	in "internal layout", then both format and data file must be in
	the same encoding, and you need to do `C-x <RET> c CODING <RET>'
	immediately prior to `M-x db-find-file'.  `C-x <RET> c' normally
	runs the command `universal-coding-system-argument'.

	Unfortunately, this restriction is unlikely to be lifted due to
	limitations of the `db-find-file' design that cannot be removed
	for continuing EDB 1.x compatibility.  On the other hand, it is
	not difficult to arrange for Emacs to automatically recognize
	file encoding.  For more info, see file BUGS, bug #5.

  - More namespace cleaning

    - db-nosetf.el and db-oldnames.el

	Cleaning for EDB 1.x function / variable namespace continues.
	To provide backward (polluting) compatability for applications
	built on early EDB 1.x, the distribution includes db-nosetf.el
	and db-oldnames.el.  EDB and the examples do not use these
	files; they will be dropped in EDB 2.x.  They can be loaded
	"manually", like so:

	(require 'database)	;; Ideally this is sufficient,
	(require 'db-oldnames)	;; ... but sometimes reality
	(require 'db-nosetf)	;; ... is where we find ourselves.

	If you find yourself using a function or variable defined in
	db-oldnames.el, it's probably a good idea to replace it w/ the
	newer name so as to be able to avoid loading db-oldnames.el in
	the first place.  An alternative approach, recommended since
	db-oldnames.el is rather monolithic, is to grep out only the
	mappings you need into "my-edb-1-oldnames.el" and use that.

	FYI, the sk4 data file in subdir skram/ lists the interface
	elements disregarding db-oldnames.el and db-nosetf.el.  You can
	build it by doing "make sk4" in that directory.

    - new files: edb-t-GROUP.el

	Functions to support various "type groups" (for lack of a better
	term) have been moved to edb-t-GROUP.el, from db-time.el (which
	has been deleted) and db-types.el:

	GROUP                         FILE
	human names                   edb-t-human-names.el
	US/UK places                  edb-t-places-usuk.el
	EDB 1.x-compatible time/date  edb-t-timedate1.el (note the "1")

	These are all covered in db-oldnames.el, described immediately
	above, although it is probably better to load them yourself and
	use the new names if you need them.

	The naming convention is filename "edb-t-GROUP.el" and prefix
	(for function and variable names) "edb-t-GROUP:".

	This change fixes a name (and functionality) conflict between
	the defunct db-time.el function `parse-time-string' and that
	provided by some newer versions of Emacs.  The naming convention
	for type groups should sidestep future problems in this vein.

  - Makefile supports "make edb.dvi" again (disabled EDB 1.22 through 1.24)

  - GNU make required to build/install EDB

	Some of the makefiles are now renamed GNUmakefile, and thus
	require GNU make (perhaps installed as "gmake" or similar) to
	build and install EDB.  This is primarily to support "VPATH
	builds" w/o resorting to Automake.

  - Tested against GNU Emacs 21.2 and GNU Emacs from cvs (2005-01-10)


- 1.24 | 2004-10-13

  - Bugfix: Type registries now less wasteful
  - Function extended: define-displaytype-from-displayspec
  - Function extended: define-recordfieldtype-from-recordfieldspec

	Every invocation of `define-displaytype-from-displayspec' or
	`define-recordfieldtype-from-recordfieldspec' used to push a new
	name/object pair onto the respective vars `db-displaytypes' and
	`db-recordfieldtypes', disregarding the presence of a previously
	existing pair with the same name.  The result was that old
	definitions could never be found again even though they still
	took up memory.  These functions and the vars they modify have
	now been changed to ensure that for any name (in each var), only
	one associated definition is maintained.

	Additionally, these functions have been extended in two ways:

	(1) Each takes an optional &rest arg OVERRIDE, as an alternative
	method for specifying attributes of the type.  Using OVERRIDE is
	recommended for upward compatability and conciseness.

	(2) The second arg SOURCE can also be the (symbolic) name of a
	previously defined displayspec or recordfieldspec, respectively;
	or nil.  Together with (1), you can effect modification by
	specifying the same name for NAME (first arg) and SOURCE, or you
	can effect inheritence otherwise.  EDB does not remember a child
	type's parent; later changes to a parent type do not propagate
	to its currently-existing children.

  - Keybinding changes in Database View mode

	`F' now runs `dbf-set-summary-format'.
	`S'          `db-sort'.

  - Function extended: db-tagged-setup

	This func now takes additional arguments, ATTRS, which are
	alternating keywords and values specifying attributes of the
	"tagged database".  This method is an alternative to using
	`database-set-local' (which is to migrate internally within a
	release or two), and recommended for upward compatability and
	conciseness.

  - New distributed file: PLANS

	This is kind of like TODO but w/o the commitment, and more
	vague and verbose (PLANS:TODO::courtship:marriage ;-).

  - New distributed file: BUGS

  - ANONCVS instructions updated


- 1.23 | 2004-08-29

  - Bugfix: Functions no longer switched via `fset'

	EDB used to fset `save-some-buffers' to `db-save-some-buffers',
	storing the original version away to call later.  Even though
	this was documented, this kind of behavior is now considered a
	misfeature at best.  EDB no longer does this.  The command
	`db-save-some-buffers' is still available, but you have to
	invoke it as `M-x db-save-some-buffers', or bind a key to it.

	Likewise, `insert' was fset to `db-insert', an EDB-internal func.

	[Gratuitous Comment: This one blew my mind when I discovered it.
	Perhaps all the hand-wringing about speed in the source code
	comments would not have been necessary had such a fundamental
	function not been toyed with so capriciously in the first place.
	Che palle!]

  - Bugfix: local variable `enable-multibyte-characters' handled specially

	When writing the database to an external file format, one of
	the steps is to copy local variables from one buffer to another.
	Previously this did not call `set-buffer-multibyte', resulting in
	a "trying to set constant" error.

  - Command dropped: edb-update

	Changes in distribution and build practice have rendered this
	command obsolete.

  - Variable deprecated: db-default-field-type
  - Function takes optional third arg: database-set-fieldnames-to-list

	This pair of changes is explained in some detail in info node
	"(edb)The database structure".  Migration from the former to the
	latter is encouraged but not enforced (for EDB 1.x).

  - Command `dbf-set-summary-format' now allows editing of current value

  - Internal file format now uses `pp'

	This is still EDB "format 0.6" but now it is written using `pp'
	primarily for its escaping of newlines (i.e., written as "\n").
	Before, newlines in data fields were output verbatim.

	This should result in greater chance of identifying any data
	corruption occuring during transmission through varying
	eol-policy domains (email, through usloth machines, whatever).

  - Miscellaneous updates and bug fixes in `examples' subdir

  - New reflection/testing in `skram' subdir

	This is work-in-progress.  The idea is to use EDB to track
	changes to EDB.  Version control is one thing, design control is
	another...  Yes, EDB dares to venture into the dreaded land of
	Project Manglement!

	Actually, like all things to do w/ manglement, this demonstrates
	two aspects of EDB having to deal w/ trust: 1/ it is trustworthy
	enough to run scripts or participate in editing sessions where
	its current over-reaching of namespace is tolerable; and 2/ it
	requires manual verification, still, despite 1/.


- 1.22 | 2004-06-02

	This is a cleanup release (perhaps one of several) following
	maintainership transfer from Michael Ernst, the author of EDB,
	to Thien-Thi Nguyen, the slowly-searching student of EDB (and
	other works of codified thought).

	Cleanup means adding "./configure && make && make install"
	support (including commonly related things like "make dist",
	NEWS file, etc); minor upgrading of the elisp dialect and
	style; and bundling the examples.  A request for outstanding
	bugfixes posted to one of the newsgroups has gone unanswered
	to date, so this release includes no bugfixes.

	The programming interface has not changed.  Those elements
	mentioned in the info pages are guaranteed to NOT change for
	all 1.x versions of EDB.  If you have written an application
	based on EDB that uses undocumented elements, you can either
	contribute doc patches (which if accepted would result in
	those elements being guaranteed to NOT change), or prepare
	yourself for the necessity of rewriting that particular code
	if/when the undocumented elements change.


- 1.21 AND PRIOR

	Please refer to theory.lcs.mit.edu:/pub/emacs/edb/ for prior
	releases of EDB and related information.



Copyright information:

   Permission is granted to anyone to make or distribute verbatim copies
   of this document as received, in any medium, provided that the
   copyright notice and this permission notice are preserved,
   thus giving the recipient permission to redistribute in turn.

   Permission is granted to distribute modified versions
   of this document, or of portions of it,
   under the above conditions, provided also that they
   carry prominent notices stating who last changed them.



	Local Variables:
	mode: outline
	outline-regexp: "\\([ ][ ]\\)*- "
	fill-column: 72
	fill-prefix: "\t"
	End:
