Skip to content

Releases: Pico-Developer/pjson

pjson 1.0.0

Choose a tag to compare

@jdpraveen jdpraveen released this 31 Aug 18:49
843930f

pjson 1.0.0

pjson 1.0.0 is the first stable release of Praveen's JSON: a dependency-free
C++11 JSON library focused on a small, explicit API and robust handling of
untrusted input.

Highlights

  • Strict RFC 8259 DOM and incremental SAX parsing from strings, byte spans,
    and streams, with structured offset, line, and column diagnostics.
  • Compact and pretty serialization with direct stream output, ASCII escaping,
    key-order control, and bounded output.
  • RFC 6901 JSON Pointer, atomic RFC 6902 JSON Patch, and atomic RFC 7396 Merge
    Patch support.
  • A documented JSON Schema draft-07 subset with local references, object and
    composition vocabularies, known string formats, collected errors, and
    validation budgets.
  • Allocator-aware DOM ownership, non-vivifying lookup, strict typed access,
    borrowed string views, and iterative deep-tree operations.
  • Relocatable CMake and pkg-config packages, plus Conan 2 and vcpkg recipes.
  • Cross-platform CI for GCC, Clang, Apple Clang, and MSVC, with sanitizers,
    CodeQL, conformance corpora, fuzzing, package-consumer tests, and benchmarks.

Important changes from 0.0.x

This release intentionally does not preserve the experimental 0.0.x API.

  • Parsing is always RFC 8259-strict and rejects duplicate keys by default.
  • JSON integers and non-integers use int64_t and double.
  • CreateFromString() was replaced by allocator-aware parse() APIs returning
    pjson::unique_ptr.
  • Legacy coercive getters, mutable raw-container access, standalone
    JSON/Base64 helpers, and int/float convenience overloads were removed.
  • Public type tags jsonNumberFloat and jsonMap became
    jsonNumberDouble and jsonObject.

See the migration guides for
nlohmann/json
and
RapidJSON,
or start with the
tutorial series.

Reliability and security

  • Parser, serializer, Patch, Merge Patch, and schema-validation resource limits
    bound depth, memory amplification, output size, reference traversal, regular
    expression work, and diagnostic growth.
  • Strict UTF-8 validation, safe duplicate-key defaults, regex safety checks,
    atomic mutation behavior, and iterative local-reference resolution protect
    untrusted-input paths.
  • The release candidate passes the complete registered test suite, Linux
    ASan/UBSan/LSan, CodeQL, bounded libFuzzer corpus replay, JSONTestSuite, the
    supported JSON Schema draft-07 corpus, and relocatable package consumers.

Installation

find_package(pjson 1.0 CONFIG REQUIRED)
target_link_libraries(your_target PRIVATE pjson::pjson)

The library can also be consumed directly from pjsonlib/include/pjson.h and
pjsonlib/src/pjson.cpp. See the
building and installation guide
for CMake, pkg-config, Conan, vcpkg, and source-integration instructions.

Full changelog

See CHANGELOG.md
for the complete added, changed, fixed, security, and removed lists.

release-0.0.3

Choose a tag to compare

@ahzi22 ahzi22 released this 31 May 00:25
60fc527

Fixed CMake Lib prefix

release-0.0.2

Choose a tag to compare

@ahzi22 ahzi22 released this 31 May 00:09
93151eb

Minor release:

What's Changed

  • Added ability to test for keys before extracting them, Added Generic Encoder/Decoder and Base64 Encoder/Decoder. by @ahzi22 in #1

New Contributors

  • @ahzi22 made their first contribution in #1

Full Changelog: release-0.0.1...release-0.0.2

First tag version

Choose a tag to compare

@ahzi22 ahzi22 released this 30 May 23:22

Creating the very first tag for the initial version.