Releases: ikelaiah/simplejson-fp
Releases · ikelaiah/simplejson-fp
SimpleJSON v1.1.0 - First release (includes v1.0.0 work) 🚀
Summary
Small feature release adding a System.JSON compatibility layer, a new ExtractValue helper, several new examples, documentation updates, and ownership/leak clarifications and fixes.
Included from unpublished v1.0.0
- Namespace rename to
SimpleJSON(breaking change fromTidyKit.JSON). - Interface-based design and core JSON parsing/serialization features (factories, writer, scanner, types).
- Standards and edge-case fixes: locale-safe number formatting, property-name escaping, Unicode handling, and RFC-8259 compliance improvements.
- A comprehensive test suite and many example programs (see
tests/andexamples/).
(Full details are available in CHANGELOG.md.)
✨ Highlights
- System.JSON compatibility layer and example suite to ease Delphi → Lazarus/FPC migration.
- New
ExtractValue(Obj: IJSONObject; const Name: string): IJSONValueconvenience helper. - Improved examples showing find/try-get/remove, path-based access, type-checking, direct JSON types, and cloning.
- Documentation updates and a test validating
ExtractValue.
➕ Added
examples/SystemJSONwith demos for System.JSON-compatible API and migration patterns.ExtractValuehelper to extract (take-and-remove) values from interface-based objects.- Multiple example demos demonstrating common migration/use patterns.
🔧 Changed
- Documentation updates in
docs/cheat-sheet.mdanddocs/SimpleJSON.mdto documentExtractValueand clarify remove/extract semantics for interface- vs object-based APIs.
🐛 Fixed
- Clarified ownership semantics for
TJSONObject.RemovePairinsrc/System.JSON.pas(caller must free returnedTJSONPair) and fixed demo code to free removed pairs to avoid leaks.
🧪 Tests
- Added
Test42_ExtractValueunit test validatingExtractValuebehavior (returns value and removes key; returns nil for missing keys).
🛠️ Upgrade / Migration Notes
This release includes work originally intended for an unpublished v1.0.0. No action is required unless you specifically need a historical v1.0.0 tag.
- If your code calls
TJSONObject.RemovePair, make sure to free the returnedTJSONPairto avoid memory leaks. - See
examples/SystemJSONanddocs/SimpleJSON.mdfor migration patterns and examples.
🔒 Maintainer note
If you need a historical v1.0.0 tag for archival reasons, create it from the appropriate commit:
git tag -a v1.0.0 <commit-ish> -m "v1.0.0 — internal snapshot (never published)"
git push origin v1.0.0🔗 References
- Full changes:
CHANGELOG.md - Docs:
docs/cheat-sheet.md,docs/SimpleJSON.md - Examples:
examples/SystemJSON