GNU Dico NEWS -- history of user-visible changes. 2024-12-31
See the end of file for copying conditions.

Please send Dico bug reports to <bug-dico@gnu.org.ua>

Version 2.12, 2024-12-31

* The gcide module

** idxgcide skips duplicated headwords

** Fixed some gcide entities, introduced missing ones

** Fixed Ancient Greek transliteration

** New option: "watch"

When supplied, the module will watch for modifications in the
dictionary corpus files and rebuild the index file when necessary.

** HTML output

HTML output is enabled by the "html" module option.  It is produced
only after "OPTION MIME" command command.

* Input conversions

The argument to DEFINE or MATCH command can optionally be modified
before being used in actual search.  This allows, for example, to
input search terms in transliteration instead of in the actual script.

Conversions are implemented by loadable modules and are associated
with individual databases.

This version is shipped with the new module "greek_kbd", which
implements Greek transliteration.

* Dicoweb

** Switch to Python 3.11+ with type hints
** Upgrade Django to version 4.2
** Improve desktop and mobile views using HTML5
** Implement a dark mode
** Use Poetry and pyproject.toml
** Integrate Pylint and Mypy for development
** Implement various fixes and improvements

* pcre module now requires libpcre2

Support for obsolescent libpcre has been withdrawn.

* Bugfixes

** GCIDE indexer

** Fix premature freeing of search argument in Python iterators

https://puszcza.gnu.org.ua/bugs/?595

Version 2.11, 2021-04-27

* Bugfixes in the gcide module

* Fix searches in the gcider utility

* Support for Python 2 has been withdrawn


Version 2.10, 2020-09-04

* Fix compilation with gcc 10

* Restore po files

Version 2.9, 2019-04-24

* New configuration variable DEFAULT_PIDFILE_NAME

Use it to alter the default pidfile location, e.g.:

   ./configure DEFAULT_PIDFILE_NAME=/var/dico/dicod.pid

* Fix compilation on 32-bit systems


Version 2.8, 2019-02-26

* Fix out-of-boundary memory access in metaphone2 encoder

* Fix eventual access to freed memory block

* Rewrite utf8_iterator to work with non zero terminated strings.

* Fix the build on OpenBSD


Version 2.7, 2018-09-25

* Support for virtual databases

Virtual database is a collection of regular databases defined
in the dicod configuration. Virtual databases can be used to group
databases by languages, or to select the format of the DEFINE
responses depending on whether OPTION MIME has been requested.

Example of defining a virtual database:

  database {
    name "English Translating Database";
    info "Translations from English to other languages";
    handler "virtual";
    database "en-sw";
    database "en-no";
    database "en-pl";
  }  

See the GNU dico manual, subsection 4.3.12.2 "Virtual Databases" for a
detailed discussion.

* Support for building with WordNet on Debian-based systems

Debian-based systems provide a package "wordnet-dev", which installs
a shared wordnet library. However, this library is named "libwordnet.so",
instead of the expected "libWN.so". Due to this change, previous
versions of dico were unable to locate the library and build the
wordnet database module. To fix this. the --with-libWN configure
option was introduced. Argument to this option is the base name of the
shared libWN library, without suffix. Optionally, the "lib" prefix
is allowed. For example, to configure on Debian:

  ./configure --with-libWN=wordnet

* Dicoweb: graceful handling of unsupported content types.

New setting ONERROR allows the administrator to configure actions to
take on certain types of errors. In particular,
ONERROR['UNSUPPORTED_CONTENT_TYPE'] defines what to do when a DEFINE 
request returns article in unsupported content type.

* The dictorg module improved

The code has been thorougly revisited to ensure correct handling of
databases in dictd database format. Testsuite is included.

* Default m4 quoting characters changed to [ ]


Version 2.6, 2018-08-27

* Support for Guile 2.2.0

* Support for Python 3


Version 2.5, 2018-01-28

* Support for four-column index files in dictorg databases


Version 2.4, 2016-11-21

* dico accepts UNIX socket name as argument to the open command

* Fix coredump in gcide module

* Update translations


Version 2.3, 2016-08-09

* IPv6 support

* Guile 2.x support

* New matching strategy: metaphone2

The metaphone2 strategy implements the Double Metaphone phonetic
encoding algorithm.

* Implement info and description for gcide dictionary

* Fixed bugs in idxgcide

* Added manpages


Version 2.2, 2012-03-04

* Configuration changes

** load-module

The load-module form allows for a statement use, e.g.:

  load-module word;

The above statement is equivalent to:  

  load-module word {
     command "word";
  }

Either string or list of strings is accepted as argument.  The latter
is useful for loading several modules with a single statement, e.g.:

  load-module (stratall,substr,word);
  
* New modules

** gcide

This module provides support for GNU Collaborative International
Dictionary of English.

** wordnet

This module provides support for WordNet, a lexical database for the
English language developed in the Princeton University and distributed
under a BSD style license.

** word

This module provides the following strategies:

word "Match separate words within headwords"
first "Match the first word within headwords"
last "Match the last word within headwords"

** nprefix

Provides the nprefix strategy.  It is similar to prefix but returns the
specified range of matches.  For example

   MATCH <dict> nprefix <skip>#<count>#<string>

returns at most <count> headwords whose prefix matches <string>,
skipping first <skip> unique matches.

** pcre

Provides matching strategy based on Perl regular expressions.

** pam

Implements PAM authentication.

* New utility: gcider 

"Gcider" is a window-based application for browsing the GNU
Collaborative International Dictionary of English (see
http://www.gnu.org/software/gcide).


Version 2.1, 2010-07-07

* Normalize exit codes.

The dicod server uses exit codes from sysexits.h.

* Replies to MATCH command.

The dictorg backend filters out duplicate entries from MATCH replies.
Only the first one from a sequence of such duplicates is retained.

* New configuration statements.

** prepend-load-path

Acts much the same as module-load-path, but adds directories at front
of the default Dico module directory.

* Strategies

** All

The `all' strategy has been re-implemented as a loadable module.  To
enable this strategy in daemon, load the `stratall' module:

load-module stratall {
	command "stratall";
}

** Substr

New strategy `substr' matches a substring anywhere in the headword.
To enable this strategy, load the `substr' module:

load-module substr {
	command "substr";
}

* LDAP

Dicod now supports LDAP as an underlying mechanism for storing
user databases.  The LDAP support is loaded as a module:

load-module ldap {
	command "ldap";
}

See the documentation, subsection 3.3.3.2 "LDAP Databases", for
a detailed description.

* Dicoweb

Improved handling of databases without a descriptive name (previous
version would throw exception for such cases).

The file settings.py renamed to settings-sample.py.

The file static/opensearch.xml has been moved to templates.  If
you are upgrading from an earlier version, you may safely remove it.

* Bugfixes:
** Fixed improper handling of conversion errors in levenshtein.c
(debian #582692)
** Removed the use of fixed-size buffer in dictorg.c (fixes debian
#582708)


Version 2.0, 2009-03-29

Initial version.


=========================================================================
Copyright information:

Copyright (C) 2008-2024 Sergey Poznyakoff

   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
paragraph-separate: "[	]*$"
eval: (add-hook 'write-file-hooks 'time-stamp)
time-stamp-start: "changes. "
time-stamp-format: "%:y-%02m-%02d"
time-stamp-end: "\n"
end:

