--------------------------------------------------------------------------------

Released Json-Type v0.12.9

Thu Jul 22 13:13:12 EEST 2021

Work touching the front-end program and the back-end library Json-Litex:

* found and fixed related minor bugs #48 and #49 (see the BUGS file);
* closed an (unessential) issue repoted by GCC's UBSAN in one of the
  test programs (affecting no components of Json-Type).

Current version numbers:

- json:           0.9.6;
- json.so:        0.12.6;
- filter library: 0.1.0;
- json-litex.so:  0.1.7.

--------------------------------------------------------------------------------

Released Json-Type v0.12.8

Sun Jul  4 19:34:17 EEST 2021

Work done in the front-end program and in the back-end libraries:

* refactored code that make GCC 10.2.1 produce undesired warnings.

Current version numbers:

- json:           0.9.5;
- json.so:        0.12.6;
- filter library: 0.1.0;
- json-litex.so:  0.1.6.

--------------------------------------------------------------------------------

Released Json-Type v0.12.7

Thu Jul  1 13:44:46 EEST 2021

Work done in the front-end program and related to 'json.so's
testing suite:

* made the output produced by the action options `-J|--json2'
  of the main program for `null' literals be consistent with
  that produced for other kinds of literals;
* fixed a minor bug in one of the test programs (that had no
  influence on the correctness of 'json.so's testing suite).

Current version numbers:

- json:           0.9.4;
- json.so:        0.12.5;
- filter library: 0.1.0;
- json-litex.so:  0.1.5.

--------------------------------------------------------------------------------

Released Json-Type v0.12.6

Sat Jun  5 11:14:52 EEST 2021

Improved the documentation and done some work in the front-end program:

* new command line options `--[no-]sort-keys' added to 'json';
* documented the command line options `-J|--json2' (see the README
  file, subsection 4.g, Extract (tabular) data from JSON input);
* updated the web links in the README file.

Current version numbers:

- json:           0.9.3;
- json.so:        0.12.5;
- filter library: 0.1.0;
- json-litex.so:  0.1.5.

--------------------------------------------------------------------------------

Released Json-Type v0.12.5

Mon May 17 11:18:10 EEST 2021

Work done in the back-end libraries:

* found and fixed bugs #45, #46 and #47 (see the BUGS file);
* refactored some existing test cases;
* added a few new test cases. 

Current version numbers:

- json:           0.9.2;
- json.so:        0.12.5;
- filter library: 0.1.0;
- json-litex.so:  0.1.5.

--------------------------------------------------------------------------------

Released Json-Type v0.12.4

Mon Dec 28 13:05:33 EET 2020

Work done mostly in the back-end libraries:

* found and fixed bugs #43 and #44 (see the BUGS file);
* updated the type and litex definitions of Github's API;
* simplified 'json.so's JSON number parser implementation;
* simplified 'json.so's "dict" expression parser implementation;
* simplified 'json-litex.so's litex expression parser implementation;
* refactored and fixed some code in the back-end libraries.

Current version numbers:

- json:           0.9.2;
- json.so:        0.12.4;
- filter library: 0.1.0;
- json-litex.so:  0.1.4.

--------------------------------------------------------------------------------

Released Json-Type v0.12.3

Mon Jun 17 14:55:57 EEST 2019

Work done in the back-end libraries:

* added the builtin functions 'float', 'double' and 'ldouble' to Json-Litex;
* some code refactoring.

Current version numbers:

- json:           0.9.1;
- json.so:        0.12.3;
- filter library: 0.1.0;
- json-litex.so:  0.1.3.

--------------------------------------------------------------------------------

Released Json-Type v0.12.2

Sat Mar  9 11:38:04 EET 2019

Work done mainly in Json-Litex back-end library:

* factored out common litex expression code within compiled path libraries;
  eliminating such duplicated code makes the number of relocation entries
  of these shared libraries be reduced -- in cases, quite significantly.

Current version numbers:

- json:           0.9.1  (previous: 0.9.0);
- json.so:        0.12.2 (previous: 0.12.1);
- filter library: 0.1.0  (unchanged);
- json-litex.so:  0.1.2  (previous: 0.1.1).

--------------------------------------------------------------------------------

Released Json-Type v0.12.1

Thu Feb 14 12:32:55 EET 2019

Work done in the back-end libraries:

* found and fixed bug #42 (see BUGS file);
* reworked the implementation of stack-aggregated JSON AST objects;
* fixed issue in 'json-litex.so' library w.r.t. calling filter object
  destructor only if corresponding constructor got previously called;
* defined 'json-litex.so's versioning rule in 'doc/liter-expr.txt';
* fixed text in 'doc/clang-build.txt' mentioning Json-Litex;
* fixed imcompletely updated 'doc/clang-build.patch'.

Current version numbers:

- json:           0.9.0  (unchanged);
- json.so:        0.12.1 (previous: 0.12.0);
- filter library: 0.1.0  (unchanged);
- json-litex.so:  0.1.1  (previous: 0.1.0).

--------------------------------------------------------------------------------

Released Json-Type v0.12.0

Wed Feb  6 08:09:02 EET 2019

Lots of work done in back-end libraries and in the front-end program:

* found and fixed bug #41 (see BUGS file);
* added new command line options `--[no-]warning';
* renamed command line options `-F' to `-M', `-N' to `-n', and `-Q' to `-q';
* implemented C++11-like raw string literals, accompanied by new command line
  options `-w|--[no-]raw-strings' (see README file, subsection 4.f);
* implemented Unix-like filters extension mechanism -- named filtering dynamic
  libraries -- adding related command line options `-F|--filterlib-exec' and
  `-f|--[no-]filter-libs' (see all the details in 'doc/filter-libs.txt');
* implemented the filtering dynamic library Json-Litex, 'json-litex.so' (see
  the complete documentation in 'doc/liter-expr.txt');
* quite a lot of code refactoring (and some cleaning-up).

Note: as of this release Json-Type's back-end is comprised of two libraries.
Same as before, there is Json-Type's main library -- 'json.so'. New is this
optional component: the filtering dynamic library Json-Litex -- 'json-litex.so'.

Current version numbers:

- json:           0.9.0  (previous: 0.8.10);
- json.so:        0.12.0 (previous: 0.11.1);
- filter library: 0.1.0  (initial);
- json-litex.so:  0.1.0  (initial).

--------------------------------------------------------------------------------

Released Json-Type v0.11.2

Thu Apr 26 11:32:28 EEST 2018

Work done in the front-end program only:

* found and fixed bug #40 (see BUGS file);
* renamed the file COPYRIGHT to PROGRAM;
* fixed text of previous entry of this file.

--------------------------------------------------------------------------------

Released Json-Type v0.11.1

Mon Apr  9 14:02:42 EEST 2018

Work done in the front-end program and only very minimally in the library:

* improved speed of processing long command line options by using Trie-Gen's
  version 0.6 new feature of generating unique prefix trie lookup functions;
* updated the documenting text 'doc/gen-func.txt' to reflect Trie-Gen's first
  source code tarball release (no longer need to clone Trie-Gen's 'git' repo
  for to be able to use the program as meta-tool of Json-Type);
* fixed bogus I/O error handling within API function 'json_file_is_shared_obj'.

--------------------------------------------------------------------------------

Released Json-Type v0.11.0

Sun Feb 11 18:49:57 EET 2018

Work done both in the library and in the front-end program:

* found and fixed minor bug (#39) in the library (see BUGS file);
* removed obsoleted command line options `-q|--[no-]quote-control'; new options
  replace the deleted ones -- `-c|--[no-]escape-utf8' --, providing an extended
  and better functionality;
* added a few more useful command line options `-y|--[no-]empty-input' and
  `-p|--sigpipe-action=NAME';
* improved the information produced by command line option `--version';
* make 'json.so' a true shared library (build with `-shared') and runnable by
  itself (producing version numbers and build date time as before did);
* all compiled type libraries are by now runnable by themselves, printing out
  the version numbers of 'json.so' that generated them in the first place (see
  the newly added subsection 4.e of the README file);
* lots of refactoring of code both in the library and in the front-end program;
* extended the test suite with new test-cases for improved code coverage.

Note that the library version changed from '0.10.1' to '0.11.0'. This means that
all user's compiled type libraries must be rebuilt. (The newly added subsection
4.e of the README file puts in plain words this rule that was in place since the
inception of Json-Type).

--------------------------------------------------------------------------------

Released Json-Type v0.10.1

Tue Nov 14 17:18:21 EET 2017

Work done both in the library and in the front-end program:

* found and fixed a bug (#38) in the library (see the latest entry in BUGS);
* removed the CONFIG_PTR_* parameters in 'config.h' relating to non-standard
  pointer operations; also removed the library code under the control of these
  configuration parameters;
* adjusted the source code for it to be consumed cleanly by GCC 7.2.0 (that is
  build Json-Type with `-Wall -Wextra' getting no warnings);
* built and ran the front-end program and the library with GCC's 7.2.0 ASAN and,
  respectively, UBSAN instrumentation enabled: these instrumented binaries pass
  the entire test suite of Json-Type;
* several minor code corrections and clean-ups in the library, in the front-end
  program and also in the test suite.

Added a new documentation file 'doc/clang-build.txt' which describes briefly
patching the source tree (with the attached patch file 'doc/clang-build.patch')
for to be able to obtain a clean build from Clang 3.4 or newer.

--------------------------------------------------------------------------------

Released Json-Type v0.10.0

Sun 15 Oct 2017 02:59:19 PM EEST

Work done both in the library and in the front-end program:

* implemented surrogate pair escape parsing and generating;
* improved a bit the help info text provided by the front-end program;
* minor code clean-up.

--------------------------------------------------------------------------------

Released Json-Type v0.9.2

Mon 19 Jun 2017 11:46:06 AM EEST

Work done in the library:

* found and fixed a minor bug (#37) in "dict" expressions parser (see the
  latest entry in BUGS);
* simplified a bit the tokenizer of "dict" expression parser (function
  'json_type_ruler_dict_expr_next_token').

--------------------------------------------------------------------------------

Released Json-Type v0.9.1

Fri 16 Jun 2017 10:37:45 AM EEST

Work done almost only in the library:

* fix wrong wording defining "dict" expression constraints in doc/type-spec.txt;
* fix minor issues in the library code (no impact to the outside world).

--------------------------------------------------------------------------------

Released Json-Type v0.9.0

Tue 06 Jun 2017 04:50:33 PM EEST

Work done in the library:

* implementation and tests for "dict" expressions (for details see
  doc/type-spec.txt and doc/type-samples.txt);
* a few minute corrections (no impact to the outside world).

--------------------------------------------------------------------------------

Released Json-Type v0.8.1

Mon 08 May 2017 12:23:35 PM EEST

Work done both in the library and in the front-end program:

* new library API class and front-end class for JSON-escaping of UTF-8 text;
* new command line options `-S|--escape-json' and `-r|--trim-spaces' in the
  front-end program exposing the newly added functionality;
* reviewed the UTF-8 processing in the library and trimmed off the code a bit
  (also added and fixed bug #36).

--------------------------------------------------------------------------------

Released Json-Type v0.8.0

Mon 10 Apr 2017 11:45:10 PM EEST

Work done for the most part in the library:

* implementation and tests for basic "dict" type objects ("dict"s are not
  yet supported as elements of "list" type objects);
* re-balancing of attribute tries prior to generating the type def code of
  a given type library.

--------------------------------------------------------------------------------

Released Json-Type v0.7.5

Mon 20 Feb 2017 12:06:15 PM EET

Fixed yet another bugs (#33 and #34) in lib/json.c:json_validate_utf8 in the library.

Also fixed a few minor typos in 'doc/type-spec.txt' and 'doc/gen-func.txt'.

--------------------------------------------------------------------------------

Released Json-Type v0.7.4

Sun 18 Sep 2016 08:55:02 PM EEST

Fixed an embarrassing bug in the library (lib/json.c:json_validate_utf8):

* Invalid UTF8 string "\xf4\xbf\xbf\xbf" wasn't rejected as erroneous;
* Related invalid UTF8 strings "\xf4\xbf" and "\xf4\xbf\xbf" correctly rejected
  but with improper error position.

Also included two more documentation files:

* 'doc/gen-func.txt': accounts for the usage of Trie-Gen
  (http://www.nongnu.org/trie-gen/) as a meta-tool;
* 'doc/trie-impl.txt': describes to a certain extent the trie data structure
  and its algorithms implemented in the header file 'lib/trie-impl.h'.

--------------------------------------------------------------------------------

Released Json-Type v0.7.3

Thu 30 Jun 2016 01:05:44 PM EEST

Work done only in the front end:

* Reworked the implementation of the class which is responsible for action
  option `-J|--json2'.

--------------------------------------------------------------------------------

Released Json-Type v0.7.2

Mon 27 Jun 2016 11:44:30 PM EEST

Work done only in the front end:

* src/json-base.c: fixed updating the error position flag
* src/json2.c: reworked the string stack implementation, adding proper pointer
  alignment adjustment

--------------------------------------------------------------------------------

Released Json-Type v0.7.1

Thu 16 Jun 2016 10:42:26 AM EEST

Work done only in the front end:

* fix a few typos in README
* found and fixed a bug (#29) in the front end: see the latest entry in BUGS

--------------------------------------------------------------------------------

Initial announcement of Json-Type (v0.7.0)

Sun 12 Jun 2016 05:27:27 PM EEST

This is the initial announcement of Json-Type project:

  http://www.nongnu.org/json-type/

Json-Type is a fully-compliant RFC 7159 and ECMA 404 push parser -- validating
UTF8 as per the Unicode Standard 8.0.0 -- and an on-the-fly type checker of
JSON text. It has a two-tiered structure: the core of its functionality is
enclosed in a dynamic library, while the front-end, the main program assembles
the variety of use-cases of the library into a convenient and comprehensive
command line interface.

Json-Type was first and foremost designed for employing its main service --
the type checking of JSON texts -- in shell scripts that call in Web services
programmatically. The program and the library are able to handle gracefully,
securely and very efficiently such scenarios as when Web services are sending
back huge amounts of JSON data.

The type checker of Json-Type is kind of unconventional: it does not build
any kind of a DOM tree nor an AST of its JSON input prior to proceed with
type validation. Alternatively, the type checker runs alongside the parser,
obeying the very logic of the push-parsing itself: while consuming given
chunks of input text one at a time, it stops as soon as it is detecting a
type error occurrence in the input given.

The author of this software is Stefan Vargyas <stvar@yahoo.com>.

================================================================================

Copyright (C) 2016, 2017, 2018, 2019, 2020, 2021  Stefan Vargyas

This file is part of Json-Type.

Json-Type is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

Json-Type is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with Json-Type.  If not, see <http://www.gnu.org/licenses/>.

