The GAP 4 package 'json'
========================

This package defines a mapping between the JSON markup language and GAP.
The built-in datatypes of GAP provide an easy mapping to and from JSON.
This package uses the following mapping between GAP and JSON.

* JSON lists are mapped to GAP lists
* JSON dictionaries are mapped to GAP records
* JSON strings are mapped to GAP strings
* Integers are mapped to GAP integers, non-integer numbers are mapped to Floats
* true, false and null are mapped to true, false and fail respectively

Note that this library will not map any other GAP types, such as groups,
permutations, to or from JSON. If you wish to map between more complex
types, look at the openmath package, or IO_Pickle in the IO package.


Updates
=======

v2.5.0
======

- Speed up GapToJsonString by serialising common GAP objects directly in the
  kernel.

- Fix a buffer over-read when escaping a string whose last character is a
  truncated multi-byte UTF-8 sequence, such as [ CHAR_INT(200) ]. Reading past
  the end of the string now yields 0 rather than whatever happened to follow
  it, so the sequence falls back to Latin-1 like any other malformed one
  instead of raising an error or reading out of bounds.

- Avoid format-string vulnerabilities when reporting invalid JSON.

- Remove the unnecessary run-time dependency on GAPDoc.

- Require GAP 4.15 or later.

v2.4.0
======

Allow outputting 'fail', it maps to null (null was already read in as fail)

v2.2.3
======

Internal cleanups for new GAP versions

v2.2.2
======

Use up-to-date methods of loading packages in GAP

v2.2.1
======

Internal cleanups for new GAP versions

v2.2.0
======

Speed up outputting JSON, add new tests

v2.1.1
======

Code cleanups

v2.1.0
======

Change: Keys in dictionaries are now always outputted in lexicographical order


v2.0.1
======

Fix bug in JsonStringToGap, which could lead to entering the break loop.

v2.0.0
======

The Json package now ensures it only outputs valid UTF8. GAP strings which
contain valid UTF8 are outputted unmodified, invalid UTF8 is treated as Latin-1,
and transformed into valid UTF8.


1.2.0 : Fix compiling in recent versions of XCode on Mac OS X
1.1.0 : Fix bug in handling badly formatted integers
1.0.1 : Fix bug in nested structures
1.0.0 : First release
