Version 3.7.1 released 2015-05-18

* Fix compilation with MSVC
  https://github.com/simplejson/simplejson/pull/119

Version 3.7.0 released 2015-05-18

* simplejson no longer trusts custom str/repr methods for int, long, float
  subclasses. These instances are now formatted as if they were exact
  instances of those types.
  https://github.com/simplejson/simplejson/issues/118

Version 3.6.5 released 2014-10-24

* Importing bug fix for reference leak when an error occurs during
  dict encoding
  https://github.com/simplejson/simplejson/issues/109

Version 3.6.4 released 2014-09-29

* Important bug fix for dump when only sort_keys is set
  https://github.com/simplejson/simplejson/issues/106

Version 3.6.3 released 2014-08-18

* Documentation updates
  https://github.com/simplejson/simplejson/issues/103

Version 3.6.2 released 2014-08-09

* Documentation updates
  http://bugs.python.org/issue21514

Version 3.6.1 released 2014-08-09

* Documentation updates
  https://github.com/simplejson/simplejson/issues/102

Version 3.6.0 released 2014-07-21

* Automatically strip any UTF-8 BOM from input to more closely
  follow the latest specs
  https://github.com/simplejson/simplejson/pull/101

Version 3.5.3 released 2014-06-24

* Fix lower bound checking in scan_once / raw_decode API
  https://github.com/simplejson/simplejson/issues/98

Version 3.5.2 released 2014-05-22

* Fix Windows build with VS2008
  https://github.com/simplejson/simplejson/pull/97

Version 3.5.1 released 2014-05-21

* Consistently reject int_as_string_bitcount settings that are not
  positive integers

Version 3.5.0 released 2014-05-20

* Added int_as_string_bitcount encoder option
  https://github.com/simplejson/pull/96
* Fixed potential crash when encoder created with incorrect options

Version 3.4.1 released 2014-04-30

* Fixed tests to run on Python 3.4

Version 3.4.0 released 2014-04-02

* Native setuptools support re-introduced
  https://github.com/simplejson/simplejson/pull/92

Version 3.3.3 released 2014-02-14

* Improve test suite's Python 3.4 compatibility
  https://github.com/simplejson/simplejson/issues/87

Version 3.3.2 released 2014-01-06

* Docstring fix for decoded string types
  https://github.com/simplejson/simplejson/pull/82

Version 3.3.1 released 2013-10-05

* JSONDecodeError exceptions can now be pickled
  https://github.com/simplejson/simplejson/pull/78

Version 3.3.0 released 2013-05-07

* Unpaired surrogates once again pass through the decoder, to match older
  behavior and the RFC-4627 spec.
  https://github.com/simplejson/simplejson/issues/62

Version 3.2.0 released 2013-05-01

* New ignore_nan kwarg in encoder that serializes out
  of range floats (Infinity, -Infinity, NaN) as null for ECMA-262
  compliance.
  https://github.com/simplejson/simplejson/pull/63
* New for_json kwarg in encoder to make it possible to for
  subclasses of dict and list to be specialized.
  https://github.com/simplejson/simplejson/pull/69

Version 3.1.3 released 2013-04-06

* Updated documentation to discourage subclassing whenever possible.
   default, object_hook, and object_pairs_hook provide almost all of
   the functionality of subclassing.

Version 3.1.2 released 2013-03-20

* Updated documentation to reflect separators behavior when indent is
  not None
  https://github.com/simplejson/simplejson/issues/59
* Test suite should be compatible with debug builds of Python 2.x and 3.x
  https://github.com/simplejson/simplejson/pull/65

Version 3.1.1 released 2013-02-21

* setup.py now has another workaround for Windows machines without
  MSVC installed
  http://bugs.python.org/issue7511

Version 3.1.0 released 2013-02-21

* Updated JSON conformance test suite
  http://bugs.python.org/issue16559
* simplejson.tool tests and bugfix for Python 3.x
  http://bugs.python.org/issue16549
* Improve error messages for certain kinds of truncated input
  http://bugs.python.org/issue16009
* Moved JSONDecodeError to json.scanner (still available for import
  from json.decoder)
* Changed scanner to use JSONDecodeError directly rather than
  StopIteration to improve error messages

Version 3.0.9 released 2013-02-21

* Fix an off-by-one error in the colno property of JSONDecodeError
  (when lineno == 1)
  http://bugs.python.org/issue17225

Version 3.0.8 released 2013-02-19

* Fix a Python 2.x compiler warning for narrow unicode builds
  https://github.com/simplejson/simplejson/issues/56

Version 3.0.7 released 2013-01-11

* NOTE: this release only changes the license.
* simplejson is now dual-licensed software, MIT or AFL v2.1. It is
  also made explicit that this code is also licensed to the PSF under
  a Contributor Agreement.

Version 3.0.6 released 2013-01-11

* Fix for major Python 2.x ensure_ascii=False encoding regression
  introduced in simplejson 3.0.0. If you use this setting, please
  upgrade immediately.
  https://github.com/simplejson/simplejson/issues/50

Version 3.0.5 released 2013-01-03

* NOTE: this release only changes the tests, it is
  not essential to upgrade
* Tests now run with deprecation warnings printed
* Fixed Python 3 syntax error in simplejson.tool
  https://github.com/simplejson/simplejson/issues/49
* Fixed Python 3.3 deprecation warnings in test suite
  https://github.com/simplejson/simplejson/issues/48

Version 3.0.4 released 2013-01-02

* MSVC compatibility for Python 3.3
  https://github.com/simplejson/simplejson/pull/47

Version 3.0.3 released 2013-01-01

* Fixes for bugs introduced in 3.0.2
* Fixes for Python 2.5 compatibility
* MSVC compatibility for Python 2.x
  https://github.com/simplejson/simplejson/pull/46

Version 3.0.2 released 2013-01-01

* THIS VERSION HAS BEEN REMOVED
* Missed a changeset to _speedups.c in the 3.0.1 branch cut

Version 3.0.1 released 2013-01-01

* THIS VERSION HAS BEEN REMOVED
* Add accumulator optimization to encoder, equivalent to the usage of
  `_Py_Accu` in the Python 3.3 json library. Only relevant if encoding
  very large JSON documents.

Version 3.0.0 released 2012-12-30

* Python 3.3 is now supported, thanks to Vinay Sajip
  https://github.com/simplejson/simplejson/issues/8
* `sort_keys`/`item_sort_key` now sort on the stringified verison of the
  key, rather than the original object. This ensures that the sort
  only compares string types and makes the behavior consistent between
  Python 2.x and Python 3.x.
* Like other number types, Decimal instances used as keys are now
  coerced to strings when use_decimal is True.

Version 2.6.2 released 2012-09-21

* JSONEncoderForHTML was not exported in the simplejson module
  https://github.com/simplejson/simplejson/issues/41

Version 2.6.1 released 2012-07-27

* raw_decode() now skips whitespace before the object
  https://github.com/simplejson/simplejson/pull/38

Version 2.6.0 released 2012-06-26

* Error messages changed to match proposal for Python 3.3.1
  http://bugs.python.org/issue5067

Version 2.5.2 released 2012-05-10

* Fix for regression introduced in 2.5.1
  https://github.com/simplejson/simplejson/issues/35

Version 2.5.1 released 2012-05-10

* Support for use_decimal=True in environments that use Python
  sub-interpreters such as uWSGI
  https://github.com/simplejson/simplejson/issues/34

Version 2.5.0 released 2012-03-29

* New item_sort_key option for encoder to allow fine grained control of sorted
  output

Version 2.4.0 released 2012-03-06

* New bigint_as_string option for encoder to trade JavaScript number precision
  issues for type issues.
  https://github.com/simplejson/simplejson/issues/31

Version 2.3.3 released 2012-02-27

* Allow unknown numerical types for indent parameter
  https://github.com/simplejson/simplejson/pull/29

Version 2.3.2 released 2011-12-30

* Fix crashing regression in speedups introduced in 2.3.1

Version 2.3.1 released 2011-12-29

* namedtuple_as_object now checks _asdict to ensure that it
  is callable.
  https://github.com/simplejson/simplejson/issues/26

Version 2.3.0 released 2011-12-05

* Any objects with _asdict() methods are now considered for
  namedtuple_as_object.
  https://github.com/simplejson/simplejson/pull/22

Version 2.2.1 released 2011-09-06

* Fix MANIFEST.in issue when building a sdist from a sdist.
  https://github.com/simplejson/simplejson/issues/16

Version 2.2.0 released 2011-09-04

* Remove setuptools requirement, reverted to pure distutils
* use_decimal default for encoding (dump, dumps, JSONEncoder) is now True
* tuple encoding as JSON objects can be turned off with new
  tuple_as_array=False option.
  https://github.com/simplejson/simplejson/pull/6
* namedtuple (or other tuple subclasses with _asdict methods) are now
  encoded as JSON objects rather than arrays by default. Can be disabled
  and treated as a tuple with the new namedtuple_as_object=False option.
  https://github.com/simplejson/simplejson/pull/6
* JSONDecodeError is now raised instead of ValueError when a document
  ends with an opening quote and the C speedups are in use.
  https://github.com/simplejson/simplejson/issues/15
* Updated documentation with information about JSONDecodeError
* Force unicode linebreak characters to be escaped (U+2028 and U+2029)
  http://timelessrepo.com/json-isnt-a-javascript-subset
* Moved documentation from a git submodule to
  http://simplejson.readthedocs.org/

Version 2.1.6 released 2011-05-08

* Prevent segfaults with deeply nested JSON documents
  https://github.com/simplejson/simplejson/issues/11
* Fix compatibility with Python 2.5
  https://github.com/simplejson/simplejson/issues/5

Version 2.1.5 released 2011-04-17

* Built sdist tarball with setuptools_git installed. Argh.

Version 2.1.4 released 2011-04-17

* Does not try to build the extension when using PyPy
* Trailing whitespace after commas no longer emitted when indent is used
* Migrated to github http://github.com/simplejson/simplejson

Version 2.1.3 released 2011-01-17

* Support the sort_keys option in C encoding speedups
  http://code.google.com/p/simplejson/issues/detail?id=86
* Allow use_decimal to work with dump()
  http://code.google.com/p/simplejson/issues/detail?id=87

Version 2.1.2 released 2010-11-01

* Correct wrong end when object_pairs_hook is used
  http://code.google.com/p/simplejson/issues/detail?id=85
* Correct output for indent=0
  http://bugs.python.org/issue10019
* Correctly raise TypeError when non-string keys are used with speedups
  http://code.google.com/p/simplejson/issues/detail?id=82
* Fix the endlineno, endcolno attributes of the JSONDecodeError exception.
  http://code.google.com/p/simplejson/issues/detail?id=81

Version 2.1.1 released 2010-03-31

* Change how setup.py imports ez_setup.py to try and workaround old versions
  of setuptools.
  http://code.google.com/p/simplejson/issues/detail?id=75
* Fix compilation on Windows platform (and other platforms with very
  picky compilers)
* Corrected simplejson.__version__ and other minor doc changes.
* Do not fail speedups tests if speedups could not be built.
  http://code.google.com/p/simplejson/issues/detail?id=73

Version 2.1.0 released 2010-03-10

* Decimal serialization officially supported for encoding with
  use_decimal=True. For encoding this encodes Decimal objects and
  for decoding it implies parse_float=Decimal
* Python 2.4 no longer supported (may still work, but no longer tested)
* Decoding performance and memory utilization enhancements
  http://bugs.python.org/issue7451
* JSONEncoderForHTML class for escaping &, <, >
  http://code.google.com/p/simplejson/issues/detail?id=66
* Memoization of object keys during encoding (when using speedups)
* Encoder changed to use PyIter_Next for list iteration to avoid
  potential threading issues
* Encoder changed to use iteritems rather than PyDict_Next in order to
  support dict subclasses that have a well defined ordering
  http://bugs.python.org/issue6105
* indent encoding parameter changed to be a string rather than an integer
  (integer use still supported for backwards compatibility)
  http://code.google.com/p/simplejson/issues/detail?id=56
* Test suite (python setup.py test) now automatically runs with and without
  speedups
  http://code.google.com/p/simplejson/issues/detail?id=55
* Fixed support for older versions of easy_install (e.g. stock Mac OS X config)
  http://code.google.com/p/simplejson/issues/detail?id=54
* Fixed str/unicode mismatches when using ensure_ascii=False
  http://code.google.com/p/simplejson/issues/detail?id=48
* Fixed error message when parsing an array with trailing comma with speedups
  http://code.google.com/p/simplejson/issues/detail?id=46
* Refactor decoder errors to raise JSONDecodeError instead of ValueError
  http://code.google.com/p/simplejson/issues/detail?id=45
* New ordered_pairs_hook feature in decoder which makes it possible to
  preserve key order. http://bugs.python.org/issue5381
* Fixed containerless unicode float decoding (same bug as 2.0.4, oops!)
  http://code.google.com/p/simplejson/issues/detail?id=43
* Share PosInf definition between encoder and decoder
* Minor reformatting to make it easier to backport simplejson changes
  to Python 2.7/3.1 json module

Version 2.0.9 released 2009-02-18

* Adds cyclic GC to the Encoder and Scanner speedups, which could've
  caused uncollectible cycles in some cases when using custom parser
  or encoder functions

Version 2.0.8 released 2009-02-15

* Documentation fixes
* Fixes encoding True and False as keys
* Fixes checking for True and False by identity for several parameters

Version 2.0.7 released 2009-01-04

* Documentation fixes
* C extension now always returns unicode strings when the input string is
  unicode, even for empty strings

Version 2.0.6 released 2008-12-19

* Windows build fixes

Version 2.0.5 released 2008-11-23

* Fixes a segfault in the C extension when using check_circular=False and
  encoding an invalid document

Version 2.0.4 released 2008-10-24

* Fixes a parsing error in the C extension when the JSON document is (only)
  a floating point number. It would consume one too few characters in that
  case, and claim the document invalid.

Version 2.0.3 released 2008-10-11

* Fixes reference leaks in the encoding speedups (sorry about that!)
* Fixes doctest suite for Python 2.6
* More optimizations for the decoder

Version 2.0.2 released 2008-10-06

* Fixes MSVC2003 build regression
* Fixes Python 2.4 compatibility in _speedups.c

Version 2.0.1 released 2008-09-29

* Fixes long encoding regression introduced in 2.0.0
* Fixes MinGW build regression introduced in 2.0.0

Version 2.0.0 released 2008-09-27

* optimized Python encoding path
* optimized Python decoding path
* optimized C encoding path
* optimized C decoding path
* switched to sphinx docs (nearly the same as the json module in python 2.6)

Version 1.9.3 released 2008-09-23

* Decoding is significantly faster (for our internal benchmarks)
* Pretty-printing tool changed from simplejson to simplejson.tool for better
  Python 2.6 comaptibility
* Misc. bug fixes

Version 1.9 released 2008-05-03

* Rewrote test suite with unittest and doctest (no more nosetest dependency)
* Better PEP 7 and PEP 8 source compliance
* Removed simplejson.jsonfilter demo module
* simplejson.jsonfilter is no longer included

Version 1.8.1 released 2008-03-24

* Optional C extension for accelerating the decoding of JSON strings
* Command line interface for pretty-printing JSON (via python -msimplejson)
* Decoding of integers and floats is now extensible (e.g. to use Decimal) via
  parse_int, parse_float options.
* Subversion and issue tracker moved to google code:
  http://code.google.com/p/simplejson/
* "/" is no longer escaped, so if you're embedding JSON directly in HTML
  you'll want to use .replace("/", "\\/") to prevent a close-tag attack.

Version 1.7 released 2007-03-18

* Improves encoding performance with an optional C extension to speed up
  str/unicode encoding (by 10-150x or so), which yields an overall speed
  boost of 2x+ (JSON is string-heavy).
* Support for encoding unicode code points outside the BMP to UTF-16
  surrogate code pairs (specified by the Strings section of RFC 4627).

Version 1.6 released 2007-03-03

* Improved str support for encoding. Previous versions of simplejson
  integrated strings directly into the output stream, this version ensures
  they're of a particular encoding (default is UTF-8) so that the output
  stream is valid.

Version 1.5 released 2007-01-18

* Better Python 2.5 compatibility
* Better Windows compatibility
* indent encoding parameter for pretty printing
* separators encoding parameter for generating optimally compact JSON

Version 1.3 released 2006-04-01

* The optional object_hook function is called upon decoding of any JSON
  object literal, and its return value is used instead of the dict that
  would normally be used. This can be used to efficiently implement
  features such as JSON-RPC class hinting, or other custom decodings of
  JSON. See the documentation for more information.

Version 1.1 released 2005-12-31

* Renamed from simple_json to simplejson to comply with PEP 8 module naming
  guidelines
* Full set of documentation
* More tests
* The encoder and decoder have been extended to understand NaN, Infinity, and
  -Infinity (but this can be turned off via allow_nan=False for strict JSON
  compliance)
* The decoder's scanner has been fixed so that it no longer accepts invalid
  JSON documents
* The decoder now reports line and column information as well as character
  numbers for easier debugging
* The encoder now has a circular reference checker, which can be optionally
  disabled with check_circular=False
* dump, dumps, load, loads now accept an optional cls kwarg to use an
  alternate JSONEncoder or JSONDecoder class for convenience.
* The read/write compatibility shim for json-py now have deprecation warnings

Version 1.0 released 2005-12-25

 * Initial release
