Another small release with the following changes:
- Removal of many DCG rules that now can be implemented by using the
error_location/[2,3] for communicating parsing errors to the
- Added order_by2/2 as an alternative to the built-in order_by/2
predicate. The difference that this order_by2/2 is able to handle
the empty list of ordering commands (useful in situations where the
ordered commands are generated algorithmically).
This is a very small release with only the following changes:
This release adds several new features to several different modules.
See the full log for more details.
- Added deterministic sequence patterns with separator. This combines
the features of the existing set of deterministic sequence patterns
and the existing set of sequence patters with separator.
- Fixed determinism for generative calls to the deterministic sequence
- Changed the specification of CLI flags: from a nested dict to a list
- Added must_be_media_type/2.
- Removed extension_label/2.
- Fixed bugs in registrations for SPARQL Query Results XML Format, GNU
Zip, Microsoft PowerPoint Presentation, TriG.
This release introduces support for creating simple command-line
interfaces. The SWI-Prolog standard library includes a module called
optparse, but is relatively complex and performs many exponential
checks. Also, the here included support library is intended to be
decomposed into reusable parts (e.g., calculating width-delimited text
is part of
string_ext). The command-line interface support is only
an initial version currently, but the intention is to extended this
Here follows the full list of changes:
- Renamed call_bool/2 to call_boolean/2. This is more consistent
with the name of the Prolog type
cli, cli\_arguments, cli\_help, cli\_version
- Added a new module that makes it easy to write CLI tools.
- Added dcg_char//1 for parsing/generating one single character.
- Renamed dcg_bool//1 to dcg_pp_boolean//1. This is more
consistent with the name of the Prolog type
boolean, and indicates
the pretty-print purpose better.
- Added dcg_boolean//1 for parsing/generating Boolean values.
- Added dcg_peek//1 which can be useful for simple debugging.
- Fixed instantiation
(-, +, ?) of predicate dict_get/3.
- Removed http_server_init/1. It is better to use the SWI-Prolog
standard library predicates for initialization an HTTP server
- Added max_string_length/2 for calculating the length of the
longest given string.
- Added message_lines/3 and
words_lines/[3,4] for generating
width-delimited displays of text.
This release introduces many improvements to the
together with several smaller improvements and some bug fixes (see
= Fixed the use of an outdated standard library predicate in predicate
- A big rewrite of how Media Types are stored.
- A new Prolog type called
media_type that is used to indicate Media
Type compound terms.
- Better support for Media Types with identical file name extensions
gml is used for Geography Markup Language and for Graph
- Removal of the following less used predicates: extension_label/2,
- Changed the API for retrieving Media Type parameters: parameters are
now represented as pairs of atoms.
- A new API for accessing 'families' of grouped Media Types:
- Fixed the use of an outdated predicate from the
dict module in
- Added support for
inf as the maxmimum length that is used in
string_ellipsis/3. This makes it easier to specify that no
ellipsis should be applied in some contexts.
- New predicates for generating simple, ASCII-based IDs:
ascii_id/[1,2]. These IDs are supported by many external
languages and tools (e.g., C names, DOT IDs).
- Added a Prolog type declarations for optional types:
- New module, based on a generalization of the old
This module current includes the following predicates: depth/2 and
This release fixes one bug in module
http_client2 and changes the
behavior of the CLI argument handling predicates (module
also introduces several small additions in other modules (see below).
- Changed the predicates for handling CLI arguments
- Fixed retrieving the metadata from HTTP requests.
- Support encoding
iso-8859-1 (an alias of
- Define a term
options for dictionaries with tag 'options' and used
it everywhere options are used.