Another small release with the following changes:
- Removal of many DCG rules that now can be implemented by using the
more generic
abnf
module. - Added
error_location/[2,3]
for communicating parsing errors to the user.
- Added
order_by2/2
as an alternative to the built-inorder_by/2
predicate. The difference that thisorder_by2/2
is able to handle the empty list of ordering commands (useful in situations where the ordered commands are generated algorithmically).
- Added
shared_vars/3
as a convenience predicate forshared_vars/2
that calculates the shared variables between exactly two terms.
This is a very small release with only the following changes:
- Added convenience predicate compound_arguments/2.
- Added convenience predicate compound_arity/2.
- Added boolean/1
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 patterns.
- Changed the specification of CLI flags: from a nested dict to a list of dicts.
- Full rewriting, using module
nb_ext
. - Renamed
create_counter/1
tocounter_create/1
. - Renamed
increment_counter/1
tocounter_increment/1
. - Added
counter_increment/2
.
- Fixed non-first root elements in
append_directories/3
. - Added
change_file_name_extensions/[3,4]
. - Added
file_is_fresh/2
.
- Fixed the generic
Accept
header. - Added support for the reasons for HTTP status codes 306 and 307.
- Added
http_last_modified/2
and reimplementedhttp_metadata_last_modified/2
.
- Added
remove_initial_members/3
. - Added
remove_trailing_members/3
.
- 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.
- Added
nb_increment/3
. - Added
nb_plus/4
.
- Added
shared_vars/2
.
- Added
uri_comp_get/3
. - Added
uri_data_directory/2
. - Changed
uri_data_file/2
→uri_data_file/3
. - Added
uri_file_is_fresh/2
.
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
over time.
Here follows the full list of changes:
- Renamed
call_bool/2
tocall_boolean/2
. This is more consistent with the name of the Prolog typeboolean
.
- 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
todcg_pp_boolean//1
. This is more consistent with the name of the Prolog typeboolean
, 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 predicatedict_get/3
.
- Renamed
call_print_bool/1
tocall_print_boolean/1
and renamedprint_bool/1
toprint_boolean/1
. These are more consistent with the name of the Prolog typeboolean
.
- Removed
http_server_init/1
. It is better to use the SWI-Prolog standard library predicates for initialization an HTTP server instead.
-
Added
max_string_length/2
for calculating the length of the longest given string. -
Added
message_lines/3
andwords_lines/[3,4]
for generating width-delimited displays of text.
This release introduces many improvements to the media_type
library,
together with several smaller improvements and some bug fixes (see
below).
= Fixed the use of an outdated standard library predicate in predicate
jgf_reply/2
.
-
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 (e.g.,
gml
is used for Geography Markup Language and for Graph Markup Language). -
Removal of the following less used predicates:
extension_label/2
,media_type_comps/4
. -
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:
media_type_family/2
.
- Fixed the use of an outdated predicate from the
dict
module in predicatepagination_options/5
.
- Added support for
inf
as the maxmimum length that is used instring_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:
maybe(T)
.
- New module, based on a generalization of the old
proof
module. This module current includes the following predicates:depth/2
andshortest/2
.
This release fixes one bug in module http_client2
and changes the
behavior of the CLI argument handling predicates (module conf
). It
also introduces several small additions in other modules (see below).
- Changed the predicates for handling CLI arguments
(
cli_arguments/[1-3]
).
- Added
gtrace_failure/1
.
- Added
dict_change_keys/3
.
- Fixed retrieving the metadata from HTTP requests.
- Added
change_keys/3
. - Added
group_values_by_key/2
.
- Support encoding
iso-8859-1
(an alias ofiso_latin_1
).
- Define a term
options
for dictionaries with tag 'options' and used it everywhere options are used.