New in 1.1.9:

    * SAV reader: Improved support for Asian code pages #263
    * SAV reader: Improved support for Very Long String records #287
    * SAS reader: Improved support for RLE decompression #245 #253
    * SAS reader: Support 16MiB page sizes #286
    * SAS catalog reader: Fix bugs reading big-endian files #293
    * SAS catalog reader: Allow formats with no labels #290
    * SAS catalog reader: Check for long names in 64-bit files #291
    * Improved compatibility with -Wstrict-prototypes #295
    * Replace sprintf with snprintf #292

New in 1.1.8:

    * XPT reader/writer: Improved support for format strings #257 #258
    * DTA writer: Fix off-by-one error in v,o indexing for string refs #270
    * SAV/DTA writers: Improved checking of non-ASCII characters #256
    * SAS7BDAT reader: Fix use-after-free error #273
    * Build: Link to libm on GNU systems #255
    * SAS commands: Support more syntax
    * SPSS commands: Make file names optional

New in 1.1.7:

    * SAV writer: Permit missing ranges for integer variables #251
    * SAV writer: Fix format-truncation warning #247
    * DTA reader/writer: Improved support for string refs on older platforms
    * DTA reader: Fix incorrect ordering in StrL comparison functions #248
    * SAS7BDAT writer: Improved support for tagged missing values on big-endian platforms
    * SAS readers: Allow header sizes up to 16MiB #249
    * Visual Studio: Fix paths to make them consistent between x86 and x64 archs #242

New in 1.1.6:

    * Migrate to GitHub Actions
    * Regenerate parsers with Ragel 7 and update build script
    * SAS7BDAT reader: Improved large file support on Windows #226
    * SAV reader: Skip null bytes in UTF-8 data https://github.com/tidyverse/haven/issues/560
    * SAV reader: Fix hang (oss-fuzz/23485)
    * DTA reader: Disallow str0 type
    * DTA reader: Fix encoding error when garbage values are present beyond the end of a string
    * Command file readers: Fix integer overflow (oss-fuzz/15778)
    * `extract_metadata`: Implement duration support #223 (thanks to @basgys)
    * Support for SAS files created with SAS Visual Forecaster #232
    * Report format widths for date/time SAS formats #233
    * Document the meaning of a -1 return value from `readstat_get_row_count` #234
    * Fix SAS file creation / modification times on Windows #238 #240

New in 1.1.5:

    * Support for building with MSVC #214 (thanks to @zebrys and @jonathon-love)
    * CLI tools: Support non-ASCII file paths on Windows #200 #216 (thanks to @zebrys)
    * DTA reader: Ignore bad timestamps
    * DTA writer: Fix memory leak
    * DTA writer: Improved support for empty value labels #219
    * POR reader: Improved support for date/time formats #160
    * SAS7BDAT reader: Added support for reading the dataset label #180 #213 (thanks to @reikoch)
    * SAS7BDAT reader: Improved detection of compressed files
    * SAS7BDAT reader: Improved bounds checking OSS-Fuzz/28312
    * SAS7BDAT reader: Support for more character encodings
    * SAV reader: Tolerate illegal lowercase variable names #217
    * SAV reader: Better support for non-UTF-8 variable names
    * SAV reader: Fix format widths for very long strings https://github.com/Roche/pyreadstat/issues/77
    * SAV reader: Fix undefined behavior with negative row counts OSS-Fuzz/23423

New in 1.1.4:

    * SAS7BDAT reader: Add support for binary-compressed files #21
    * XPT v8 writer: Improve compatibility with SAS #207 (thanks to @reikoch)
    * XPT reader: Fix reading of long variable names #208 (thanks to @reikoch) 
    * SAS readers: Support for more character encodings
    * SAV reader: Clients sometimes received truncated UTF-8 strings
    * SPSS writers: Improve compatibility with PSPP with DATETIME fields #211
    * All formats: Improved support for setting / getting the `display_width` #210

New in 1.1.3:

    * Fix warnings when compiling with GCC 10 #202
    * SAS RLE compressor: Fixes for large files #201
    * SAV reader: Improved support for UTF-8 column names #206
    * SAV reader: Return a better error message if the magic number doesn't match
    * SAV reader: Support for dash-separated timestamps

New in 1.1.2:

    * DTA reader: support for Spanish-locale timestamps
    * SAS reader: support for "any" encoding tidyverse/haven#482
    * CLI tool: Allow uppercase filename extensions
    * Improved support for reading SPSS and SAS command files
    * Improved support for reading POR files with format widths >100
    * Improved support for reading SAV files containing space-padded timestamps #197
    * Improved support for writing SAV files with a large number of variables #199
    * Improved support for reading SAS7BDAT files created by Stat/Transfer #198
    * Fix several integer overflows and undefined values #192 #193 #194 #195 #196

New in 1.1.1:

    * Support row limits in the plain-text parsers
    * SAV reader: Allow spaces in timestamp strings
    * README: Fix Windows / pacman instructions #189
    * Fix </sortlist> errors opening files in Stata 15 (tidyverse/haven#461)

New in 1.1:

    * New function: readstat_set_row_offset (#185). Thanks to @mikmart
    * Fix segfault when localtime fails on Windows
    * Fix implicit float conversion warning (oss-fuzz/16372)
    * New error code: READSTAT_ERROR_BAD_TIMESTAMP_VALUE
    * Renamed error code: READSTAT_ERROR_BAD_TIMESTAMP => READSTAT_ERROR_BAD_TIMESTAMP_STRING

New in 1.0.2:

    * Compilation: Fix -Wstringop-truncation warnings on GCC 8.2 and later (#151)
    * SPSS command parser: Fix signed integer overflow (oss-fuzz/15049)
    * POR parser: Use doubles internally to prevent integer overflows with very large exponents (#182)

New in 1.0.1:

    * SAV writer: Validate variable names
    * Fix a buffer overflow reading SPSS commands (oss-fuzz/15050) 
    * New error code READSTAT_ERROR_NAME_IS_ZERO_LENGTH when a blank variable name is provided
    * New fuzzing dictionary files in fuzz/dict for parsing plain-text file formats
    * Move corpus files from corpus to fuzz/corpus
