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
