)]}'
{
  "commit": "36f94b68d60774d2a5870a6881a92de02ed76eb1",
  "tree": "0ad7c9b4b646f6139a32425e5086a802b873783e",
  "parents": [
    "c67034e4b4c722579ee15fddb8e4af8f04252b08"
  ],
  "author": {
    "name": "Jordan Bayles",
    "email": "bayles.jordan@gmail.com",
    "time": "Thu Apr 09 11:01:46 2026 -0700"
  },
  "committer": {
    "name": "GitHub",
    "email": "noreply@github.com",
    "time": "Thu Apr 09 11:01:46 2026 -0700"
  },
  "message": "chore: remove leftover CMake checks for std::string_view (#1676)\n\n* ci: suppress Node 20 deprecation and missing python-version warnings\n\n- Injects `FORCE_JAVASCRIPT_ACTIONS_TO_NODE24\u003dtrue` in all workflows to\n  opt-in to Node.js 24 and suppress the deprecation warnings from\n  multiple GitHub Actions.\n- Specifies `python-version: \u00273.x\u0027` for `actions/setup-python@v5` in\n  `meson.yml` to fix the missing input warning.\n\n* Fix C++11 ABI breakage when compiled with C++17 (#1668)\n\nWhen JSONCPP_HAS_STRING_VIEW was defined, the library dropped the\n`const char*` and `const String\u0026` overloads for `operator[]`, `get`,\n`removeMember`, and `isMember`, breaking ABI compatibility for projects\nconsuming the library with C++11.\n\nThis change unconditionally declares and defines the legacy overloads\nso they are always exported, restoring compatibility.\n\n* ci: add ABI compatibility matrix workflow\n\nThis adds a new GitHub Actions workflow to verify ABI compatibility across C++ standard boundaries. It explicitly tests the scenario where JsonCpp is built with one standard (e.g., C++11) and consumed by an application built with a newer one (e.g., C++23), and vice versa.\n\nTo facilitate testing the specific `std::string_view` boundary that is conditionally compiled, a new `stringView` demo application has been added to the `example/` directory and is consumed directly by the CI matrix to ensure standard library symbols link correctly across standard versions, build types (shared/static), and operating systems.\n\n* fix: inline std::string_view methods to prevent ABI breaks\n\nThis commit completely eliminates the ABI breakage that occurs across C++ standard boundaries when using `std::string_view`.\n\nPreviously, when the library was built with C++17+, CMake would leak `JSONCPP_HAS_STRING_VIEW\u003d1` as a PUBLIC definition. A C++11 consumer would receive this definition, attempt to parse the header, and fail with compiler errors because `std::string_view` is not available in their environment.\n\nConversely, if the library was built in C++11 (without `string_view` symbols), a C++17 consumer would naturally define `JSONCPP_HAS_STRING_VIEW` based on `__cplusplus` inside `value.h`. The consumer would then call the declared `string_view` methods, resulting in linker errors because the methods weren\u0027t compiled into the library.\n\nBy moving all `std::string_view` overloads directly into `value.h` as `inline` methods that delegate to the fundamental `const char*, const char*` methods:\n1. The consumer\u0027s compiler dictates whether the overloads are visible (via `__cplusplus \u003e\u003d 201703L`).\n2. The consumer compiles the inline wrappers locally, removing any reliance on the library\u0027s exported symbols for `std::string_view`.\n3. CMake no longer needs to pollute the consumer\u0027s environment with PUBLIC compile definitions.\n\n* run clang format\n\n* finish clang format\n\n* chore: remove leftover CMake checks for std::string_view\n\nFixes #1669\n\nThis removes the final vestige of the JSONCPP_HAS_STRING_VIEW build system logic.\n\nAs of the previous commit (inlining std::string_view methods into value.h to fix ABI breaks), the library no longer relies on the build system (CMake or Meson) to check for and define JSONCPP_HAS_STRING_VIEW.\n\nThe header value.h automatically activates std::string_view overloads purely by checking the consumer`s __cplusplus \u003e\u003d 201703L. Since none of the actual std::string_view symbols are compiled into the .so / .a library anymore, Meson (and CMake) builds are identical regardless of whether string_view is supported by the compiler building the library.\n\n* format spacing better",
  "tree_diff": [
    {
      "type": "modify",
      "old_id": "a0695e9eba8322d3b3cdda0de5e77de6978659ed",
      "old_mode": 33188,
      "old_path": "src/lib_json/CMakeLists.txt",
      "new_id": "7197ba793558d6d08b64f84b54e441dd40ed642a",
      "new_mode": 33188,
      "new_path": "src/lib_json/CMakeLists.txt"
    },
    {
      "type": "modify",
      "old_id": "a8eb72d6b75f90665fac3248ec2724a4fa50c888",
      "old_mode": 33188,
      "old_path": "src/lib_json/json_value.cpp",
      "new_id": "a812ea4d3cb85924a61d82c934981bb6f227d56e",
      "new_mode": 33188,
      "new_path": "src/lib_json/json_value.cpp"
    }
  ]
}
