Skip to content

Releases: JonGretar/DBFex

v0.5.0

Choose a tag to compare

@JonGretar JonGretar released this 03 Sep 11:52

Added

  • Preserve Visual FoxPro backlink paths alongside table, code-page, and field-flag metadata.
  • Preserve Visual FoxPro type-0 Picture and type-2 General/OLE FPT payloads as opaque binaries without applying text decoding.
  • Decode producer-verified Visual FoxPro 9 Varbinary, binary Character/Memo, Blob, and Double fields, including variable lengths, nulls, and multi-block binary payloads.
  • Complete FoxPro 2.x for DOS/Windows support with fixture-backed decimal General pointers and opaque FPT type-2 OLE payloads.

v0.4.0

Choose a tag to compare

@JonGretar JonGretar released this 01 Sep 09:54

Added

  • Added partial Visual FoxPro 0x31 support for autoincrement metadata, exact Decimal currency values, and record null bitmaps.
  • Added partial Visual FoxPro 0x32 support for variable-width text and binary fields, including per-record stored-length metadata.

v0.3.0

Choose a tag to compare

@JonGretar JonGretar released this 31 Aug 09:55

Added

  • Added partial FoxPro 2.x 0xF5 support for fixed-width legacy fields and textual FPT memo blocks, including big-endian FPT headers, block metadata, bounds validation, and companion discovery.
  • Added partial Visual FoxPro 0x30 support for fixed-width tables, Windows-1251 text, little-endian integer and timestamp values, binary FPT pointers, field flags, and optional FPT companions.

Changed

  • Replaced the generic internal layout helper with cohesive field-descriptor layout ownership ahead of Visual FoxPro support.

v0.2.1

Choose a tag to compare

@JonGretar JonGretar released this 23 Aug 13:56

Added

  • Added an architecture guide covering module responsibilities, opening, resource ownership, schema compilation, record decoding, memo handling, and extension invariants.

Changed

  • Extracted the complete database-opening operation into the internal DBF.Opening module while preserving the public API and validation order.
  • Consolidated shared descriptor-layout helpers and moved the DBF format notes under docs/.

Fixed

  • Reject zero-width field descriptors during schema compilation so malformed or unsupported fields cannot bypass compiled decoder validation.

v0.2.0

Choose a tag to compare

@JonGretar JonGretar released this 22 Aug 20:31

Added

  • DBF.with_open/2,3 for callback-scoped reads with automatic resource cleanup.
  • An opt-in numeric: :exact policy that returns integers for scale-zero numeric fields and Decimal values for positive scales while preserving floats by default.
  • Explicit encoding and encoding_errors options with built-in Windows-1251/1252 decoding and strict, replacement, or raw-byte handling.
  • Documented evidence-based support levels for the available DBF variants.
  • Verified fixture-backed FoxBase and dBASE III support, including complete zipcode CSV comparison and representative DBT record oracles.

Changed

  • Field decoder selection is now compiled from profile capabilities with schema metadata, keeping textual and binary representations distinct before value decoding.
  • The minimum supported Elixir version is now 1.15.
  • The OTP application and Hex package names were corrected to dbf_ex.

Fixed

  • Opening now validates options before file access and returns contextual errors for malformed or truncated structures and missing required memos.
  • Table and memo resources are acquired transactionally, cleaned up after failed opens, and closed idempotently.
  • Corrected public type specifications for database errors, memo handles, and memo-file opening results.
  • Duplicate decoded field names now fail schema parsing instead of silently overwriting record values.
  • Legacy blank values now have documented per-type results; date, logical, float, and numeric parsing no longer uses exceptions for ordinary invalid input, and numeric suffix junk is no longer accepted as a partial value.
  • Field names, character values, and textual DBT memos now use one language-driver-aware text policy while binary and structural bytes remain untouched.
  • Legacy profiles no longer accidentally decode unsupported Visual FoxPro integer, currency, variable-width, or binary field kinds.
  • FoxBase exact numerics now preserve decimal values when its compact descriptors omit scale metadata.
  • Record access now consistently rejects invalid indexes and returns contextual errors for short reads, malformed values, and unknown record markers; enumeration stops after emitting a record error.
  • dBASE III DBT memos now support multi-block values and reject malformed pointers, inconsistent headers, out-of-range blocks, and missing terminators.
  • dBASE IV DBT memos now honor declared block sizes and total lengths, support multi-block values, recognize field terminators, and reject invalid signatures, pointers, and truncated blocks.
  • Required memo companions now reject empty, truncated, and detectably mismatched DBT files during opening, including explicitly supplied paths.

v0.1.0

Choose a tag to compare

@JonGretar JonGretar released this 27 Mar 08:54

First release with just the basics