# Rparadox 0.2.2

## Bug fixes

* Fixed rchk warnings: "Suspicious call (two or more unprotected arguments) to Rf_setAttrib" in pxlib_get_data_c() (interface.c:341, 347)

# Rparadox 0.2.1

## Bug fixes and improvements

* Fixed rchk warnings:
  - Suspicious call (two or more unprotected arguments) to Rf_setAttrib at pxlib_get_data_c Rparadox/src/interface.c:317
  - Suspicious call (two or more unprotected arguments) to Rf_setAttrib at pxlib_get_data_c Rparadox/src/interface.c:326
* Optimized performance using local static variables for constant caching
  - Reduction in allocVector() calls for repeated file reads
  - Caches class vectors: c("pxdoc_t", "externalptr"), c("hms", "difftime"), c("POSIXct", "POSIXt")
  - Caches name vectors for metadata structure
* Added download statistics badges to README (total, weekly, daily)


# Rparadox 0.2.0

## New features

* **Encryption Support**: Added the `password` argument to `read_paradox()`. Users can now read password-protected Paradox files (.db) and associated BLOB/Memo files (.MB).
* **Enhanced Metadata**: `pxlib_metadata()` now returns human-readable field types (e.g., "Alpha", "Date", "Memo") instead of raw integer codes.
* **Encoding info**: Metadata now explicitly reports the detected encoding.

## Bug fixes and improvements (Core C library)

* **Major x64 compatibility update**: Integrated patches for the underlying `pxlib` engine to ensure stability on 64-bit systems.
    * Replaced `long int` with `int32_t` in data reading functions to ensure correct data width on 64-bit systems (Windows/Linux).
    * Fixed pointer arithmetic logic in `src/px_head.c` to prevent undefined behavior and header corruption.
    * Updated `writeproc` signature to `ssize_t` for POSIX compliance.


# Rparadox 0.1.5

## CRAN check Note fix

* remove incorrect CRAN link in Readme.


# Rparadox 0.1.4

## Cosmetic fixes

* Add misplaced picture link at Readme.Rmd.
* Add pxlib URL to DESCRIPTION file.
* Fix NEWS format.

# Rparadox 0.1.3

## New features

* Added a high-level `read_paradox()` function for a simple, one-step workflow to read Paradox files. This is now the recommended function for most users.
* Added a `pxlib_metadata()` function to retrieve database metadata (number of records, field details, encoding) without reading the entire dataset.

## Bug fixes and improvements

* The architecture for handling character encodings has been completely refactored.
  The C-level code now returns raw character data, and all conversion to UTF-8 is handled reliably in R via the `stringi` package(ICU) instead of Riconv.
  This fixes test failures on CRAN and improves robustness for files on various operating systems.
* Added `stringi` to package imports.
* Added extensive tests for the new `read_paradox()` and `pxlib_metadata()` functions.
* Documentation and examples have been updated to reflect the new functions and recommended workflow.

# Rparadox 0.1.2

## Bug fixes and improvements

* Fixed CRAN check issues on Debian: package no longer attempts to open
  Paradox files in write mode (`rb+` → `rb`).
  This ensures full compliance with CRAN Policy (no writes outside of
  temporary directories).
* Fixed heap-buffer-overflow in `PX_get_data_alpha` (discovered with
  AddressSanitizer). Now the function safely respects field length and
  prevents out-of-bounds reads for fixed-length strings without `\0`.
* Improved handling of invalid/null Paradox dates with an upper bound
  filter for extreme values.
* Added proper `.gitignore` entries for `cran-comments.md` and
  `CRAN-SUBMISSION`.
* Updated README with CRAN badges and installation instructions.
* Expanded test coverage: re-enabled datasets with German, English and
  Russian encodings, including CP866.

# Rparadox 0.1.1

## Bug fixes and improvements

* Fixed CRAN feedback:
  - Removed unnecessary `\dontrun{}` in examples.  
    Added fast, self-contained examples using demo files  
    (`biolife.db`, `of_cp866.db` in `inst/extdata`).  
  - Ensured no commented-out example code remains.
  - All examples now run in < 5s and without commented-out code.

* Fixed vignette build issue on CRAN check servers:
  - Explicitly added `rmarkdown` in `VignetteBuilder`  
    to avoid failures when running with `--no-suggests`.  

* Memory management improvements:
  - Fixed memory leaks in src/interface.c when reading BLOB fields.
  - Examples and vignette now run cleanly under Valgrind.

* Verified that all examples run in < 5 sec and vignettes build  
  successfully across test environments.


# Rparadox 0.1.0

* Initial CRAN submission.
