Revision history for JSON::LINQ

1.01  2026-05-03 JST (Japan Standard Time)

    LTSV interoperability.

    Features:
    - FromLTSV($file)         : read LTSV file (streaming, one line at a time)
                                ported from LTSV::LINQ 1.08
    - ToLTSV($file)           : write sequence as LTSV file (streaming)
                                ported from LTSV::LINQ 1.08
    - Method count: 63 -> 65
    - POD additions:
      * "LTSV Interoperability" subsection under METHODS
      * "JOIN: JSON (main) with LTSV (sub-table)" example
      * "JOIN: LTSV (main) with JSON (sub-table)" example
      * Updated DIAGNOSTICS to cover FromLTSV/ToLTSV file errors
      * Updated ARCHITECTURE / Memory Characteristics
    - Documentation:
      * 21-language cheat sheets updated with FromLTSV/ToLTSV and the
        two JOIN patterns
      * README updated
    - Examples:
      * eg/05_json_ltsv_join.pl   main JSON x sub-table LTSV
      * eg/06_ltsv_json_join.pl   main LTSV x sub-table JSON
    - Tests:
      * t/0007-ltsv-io.t          FromLTSV / ToLTSV round-trip
      * t/0008-json-ltsv-join.t   the two JOIN patterns

    Bug fixes:
    - INA_CPAN_Check::end_testing() no longer calls exit(); it sets
      $? instead and lets the END block unwind naturally.  This avoids
      the "Callback called exit. END failed--cleanup aborted." warning
      that older Perl harnesses (notably Windows + pmake test) reported
      as a spurious failure of the next test file.
    - t/9001-load.t END block no longer calls exit() either.
    - INA_CPAN_Check J1 (PREREQ_PM dep version vs module VERSION) now
      exempts core pragmas (strict, warnings, vars, base, ...).  Their
      pinned baseline versions can legitimately equal the module's own
      VERSION by coincidence (e.g. strict 1.01 vs JSON::LINQ 1.01),
      which is not a copy-paste bug.  Non-pragma deps remain checked
      so real copy-paste bugs are still detected.  This fixes the J1
      failure that surfaced after `pmake.bat dist` regenerated META.yml
      with the canonical `strict: 1.01` requirement.
    - New checks added to t/9030-distribution.t (Category L):
      * L1  No .t file's END {} block contains a literal `exit`
      * L2  No sub invoked from a .t file's END {} block contains `exit`
        (transitive scan into t/lib/*.pm)
      These prevent regressions of the same class.

    No external dependencies added.  Pure Perl, Perl 5.005_03+ compatible.

1.00  2026-04-20 JST (Japan Standard Time)

    Initial release.

    Features:
    - FromJSON($file)         : read JSON file (top-level array or object)
    - FromJSONL($file)        : read JSONL file (streaming, one line at a time)
    - FromJSONString($json)   : read JSON string (array or object)
    - ToJSON($file)           : write sequence as JSON array file
    - ToJSONL($file)          : write sequence as JSONL file
    - true / false            : JSON boolean singleton objects
    - Built-in JSON encoder/decoder (derived from mb::JSON 0.06)
      No CPAN JSON module required.
    - 60 LINQ methods from LTSV::LINQ 1.08:
      From, Range, Empty, Repeat,
      Where (with DSL), Select, SelectMany, Concat, Zip,
      Take, Skip, TakeWhile, SkipWhile,
      OrderBy, OrderByDescending, OrderByStr, OrderByStrDescending,
      OrderByNum, OrderByNumDescending, Reverse,
      ThenBy, ThenByDescending, ThenByStr, ThenByStrDescending,
      ThenByNum, ThenByNumDescending,
      GroupBy, Distinct, Union, Intersect, Except,
      Join, GroupJoin,
      All, Any, Contains, SequenceEqual,
      First, FirstOrDefault, Last, LastOrDefault,
      Single, SingleOrDefault, ElementAt, ElementAtOrDefault,
      Count, Sum, Min, Max, Average, AverageOrDefault, Aggregate,
      ToArray, ToList, ToDictionary, ToLookup, DefaultIfEmpty, ForEach
    - JSON::LINQ::Ordered subclass for ThenBy* chaining
    - Perl 5.005_03 compatibility (Universal Consensus 1998)
    - Pure Perl, no XS dependencies
    - 21-language cheat sheets (doc/json_linq_cheatsheet.*.txt)
    - 4 example scripts (eg/01_*.pl .. eg/04_*.pl)
    - Full test suite (t/0001*.t .. t/9080*.t)
