2.0.0
  - Output for toJSON(x, pretty = p) where p is a number has changed: now uses
    the same r-based indent system as for pretty = TRUE. To get the old format,
    run json output through prettify().
  - Both toJSON() and prettify() support now can use tabs instead of spaces by
    setting a negative number as indent/pretty argument.
  - Fix an ubsan warning in prettify/minify in libyajl
  - Reformatted code with air

1.9.1
  - Fix a unit test in R 4.5 due to the new 'penguins_raw' dataset

1.9.0
  - Remove legacy modp_stdint.h which breaks in C23 on Windows (R-4.5)

1.8.9
  - Fix memory leak in base64 decoder
  - Update maintainer email address

1.8.8
  - Apply libyajl patches for CVE-2022-24795, CVE-2022-24795, CVE-2023-33460
  - Fix printf warnings for cran

1.8.7
  - toJSON(digits = NA) once again prints 15 digits max
  - Fix getRversion type (requested by CRAN)

1.8.6
  - Add method [.json such that subsetting keeps json class

1.8.5
  - Max digits in toJSON() raised from 15 to 17 (see #412)
  - Remove online example from flaky httpbin server

1.8.4
  - Replace sprintf with snprintf for CRAN

1.8.3
 - Fix strict-prototypes warning

1.8.2
 - Also fix breaking change in base_r for as.character.Date

1.8.1
 - Use base::url instead of curl::curl for downloading URLs in fromJSON
 - Fix for breaking change 82904 in base-R  (changed default as.character.POSIX behavior)

1.8.0
 - Remove all calls to setOldClass() for R >= 4.0 (#378)

1.7.3
 - Fix memory bug in toJSON(pretty=TRUE) for 0-length vectors (#366)
 - Ported rbind_pages() to use vctrs::vec_rbind (#352)
 - Fix error serializing S4 class extending SEXPTYPE for certain types (#364)
 - Fix citibike example in API vignette

1.7.2
 - Special case 'blob' vctrs to prevent boxing of base64 output strings
 - Fix a unit test for new stricter all.equal() for environments in base-R

1.7.1
 - Always rename the 'sf_column' column to 'geometry' in toJSON(sf = 'geojson') because
   that is what the spec says.
 - Add asJSON method for ITime.
 - Fix toJSON() for encoding strings in multibyte locale on Windows
 - serializeJSON() now supports S4 "pseudo-null" (i.e. empty slots)

1.7.0
 - Add support for 'sf' classes in toJSON() conform GeoJSON spec.
 - Fix a unit test due to a change in rgdal

1.6.1
 - Fix bug in C_collapse_array_pretty_inner declarationdetected by CRAN LTO
 - Better handing of NA in timestamps with POSIXt = 'mongo'
 - The 'raw' parameter in toJSON gains options 'int' and 'js'

1.6
 - Add parse_json() wrapper that does not guess if a string is actually a file/url
 - Fix a few rchk warnings (mostly false positives)
 - Add asJSON method for hms
 - Do not require is.vector() for unbox to support values with attributes e.g. factor or tzone
 - write_json now suppresses recoding of strings on windows, fixes #226
 - Hide internal libyajl symbols from shlib
 - Remove C calls R connection API which are no longer allowed on CRAN. This may
   lead to about 5% performance decrease for parsing from connections.
 - Remove deprecated rbind.pages function

1.5
 - Workaround for #180. fromJSON() first checks for literal json, then filename
 - Rename rbind.pages to rbind_pages to fix warning in R-devel (requested by CRAN)

1.4
 - Properly escape control characters \x01 through \x1f in toJSON()
 - Support parsing JSON prefixed with a rfc7464 ASCII Record Separator (0x1E)
 - (un)serializeJSON and do not set 'attributes' and 'value' for NULL anymore
 - serializeJSON() sets class="json" on output value, consistent with toJSON()
 - Rewrite (un)serializeJSON() for S4 classes and added some unit tests
 - Fix for simplyfing datelists, needed for mongolite

1.3
 - The solidus '/' is now escaped when preceded by '<' for safe html embedding (#163)
 - Code for reading from connections is ported to C.
 - Code for escaping strings has been rewritten
 - toJSON gains internal argument no_dots for needed by mongolite
 - Better support for parsing extjson date strings

1.2
 - Add 'read_json' and 'write_json' convenience wrappers
 - Update modp_numtoa from upstream (fixes a rounding issue in #148)
 - Ensure asJSON.POSIXt does not use sci notation for negative values (#155, John Greeley)
 - Tweak num_to_char to properly print large negative numbers
 - Performance optimization for simplyfing data frames

1.1
 - stream_in now passes ... arguments to fromJSON as documented
 - Force ANSI_STDIO on Windows to fix -pedantic compiler warning
 - Close connection even if opening fails. Fixes #145
 - validate() now includes an 'offset' attribute indicating at which byte the error occured
 - Refresh some example tokes for vignettes

1.0
 - Fix always_decimal for non-whole numbres which get rounded to whole numbers
 - Rename and export base64 encoder/decoder
 - Fix compiler warning on Windows: don't redefine isnan() and isinf()
 - Changed targed in Makevars to libstatyajl.a to prevent conflict with system libyajl
 - Bump to 1.0 because this package is basically done

0.9.22
 - Fix for side effects of 'always_decimal' on Date and POSIXt integer encoding
 - Fixed a small memory leak in the push parser (fromJSON.connection)
 - Cleaned up Makevars
 - Replace base64 encoder/decoder to be in-memory
 - Special case toJSON(NULL, null = "null") now returns "null"

0.9.21
 - Add 'always_decimal' argument in toJSON for real number notation in whole number doubles.

0.9.20
 - Performance optimization for toJSON on matrices and arrays
 - Tweak for unboxed POSIXt = "mongo" queries

0.9.19
 - Remove the View() workaround because it causes issues in RStudio and
   because the bug in utils::View has been fixed in R-patched.

0.9.18
 - Removed support for the archived int64 package. Use bit64 instead.
 - The stream_in function now skips over blank lines
 - Remove workaround for View() in rstudio
 - fromJSON now sets an 'Accept' request header for URLs.

0.9.17
 - Fix for 1 dimensional array objects
 - Fix for unnamed data frame
 - Fix for duplicate _row fields
 - The 'unbox' function now accepts classed scalars such as dates
 - Ignore BOM with warning in push parser

0.9.16
 - Performance optimizations in asJSON.data.frame by avoiding apply()
 - Prettifying is now done by default in R (thanks to Yihui Xie)
 - Add json_verbatim option to insert verbatim json
 - Improve verbose output of streaming functions

0.9.15
 - Replaced RCurl dependency with the new curl package.
 - Added push parser for more efficient parsing from connection interfaces (e.g. files or urls).
 - The toMongo function has been removed. Use stream_out instead.
 - The `View` function will not be exposed in recent versions of rstudio that supported nested data natively.
 - Add hidden bigint_as_char argument in fromJSON
 - Fixed a memory leak in fromJSON.
 - I() forces boxing of a scalar when 'auto_unbox = TRUE' for RJSONIO compatibility.
 - toJSON now supports 'keep_vec_names=TRUE' will mimic RJSONIO legacy behavior.
 - toJSON now supports 'time_format' argument to customize formatting of POSIXt strings.

0.9.14
 - Change license to MIT (for GPL2 compatibility).
 - Add support for digits = I(n) to use significant precision.
 - When 'pretty' in toJSON is numeric, it specifies the number of spaces to indent.
 - Bug fix in validate() related to ScalarLogical
 - Add support for dataframe = "values"
 - Byte-order-marks are now ignored as suggested by rfc7159
 - Add support for integer64 class (bit64 package)

0.9.13
 - Ported some number formatting to C
 - Fix when http server gives no content-type header
 - Prevent auto unboxing within a matrix
 - Assume UTF8 but fall back on native encoding for files and urls in fromJSON
 - Fix for 32 bit windows XP.

0.9.12
 - New JSON parser based on yajl. Some changes:
    * smaller and faster than libjson
    * better error messages
    * automatic validation
    * native \uXXXX unicode parsing
    * integer parsing
    * uses spaces intead of tabs for prettify
 - Other functions ported to C: collapse_object, null_to_na, is_recordlist, is_scalarlist
 - Expose 'flatten' function
 - Row names are encoded as "_row" instead of "$row"
 - Start with streaming functions
 - Some internal changes to support BSON/MongoDB

0.9.11
 - Added toJSON null argument
 - Fix bug in prettify object name escaping
 - Use C code for escaping and collapsing vectors
 - Several performance enhancements in fromJSON/simplify code
 - The auto_unbox argument is ignored for dataframes when dataframe="column"

0.9.10
 - Add support for escaped (hexadecimal) unicode characters in fromJSON(unicode = TRUE)
 - Exporting a wrapper for View() that flattens nested data frames
 - Add print method for scalar (unbox)

0.9.9
 - Fix bug where 'flatten' argument wasn't passed down
 - Make asJSON automatically unname any named lists within a data frame
 - fromJSON(url) now sets Accept header
 - Increase default to digits=4 in toJSON

0.9.8
 - Remove whitespace from default output of toJSON
 - Split vignette in 3 documents
 - Add support for simplifyMatrix within a data frame
 - Add class "json" output of toJSON, simplify, minify
 - Add print method for json
 - Cleaned up unit tests
 - Workaround for SSL handshake issues in https downloads
 - Raise warnings for SSL or Content-Type abnormalities

0.9.7
 - formally expose 'force' argument in toJSON
 - formally expose 'flatten' argument in fromJSON
 - fix bug in simplifyDataframe
 - fix in rlibjson code that converted empty array to AsIs object
 - auto coerse mongo type dates in fromJSON

0.9.6
 - toJSON gains argument auto_unbox
 - Minor fixes

0.9.5
 - Never raise error in toJSON when force=true
 - Fix typo in line 2 of JSONDefs/GNU_C.h (GUN -> GNU)
 - Run unit tests during R CMD check
 - Update vignette

0.9.4
 - Added minify function
 - Added unbox function
 - Fixed bug where toJSON 'force' argument wasn't passed down
 - Removed -DJSON_VALIDATE -DJSON_STREAM=1 from Makevars.in (already in JSONoptions.h)

0.9.3
 - Changes by Prof Ripley for Solaris/CRAN

0.9.2
 - Update libjson to 7.6.1 (fixes bug in the validator)
 - Generalized toJSON method 'matrix' to 'array' to work for higher dimensions.
 - Add option to encode matrix either row-major or column-major.
 - Set default SSL version to 3 for fromJSON("https://...")

0.9.1
 - Major performance improvements for toJSON.data.frame

0.9.0
 - Initial release
