Replace YAJL with yyjson for JSON parsing and generation#170
Replace YAJL with yyjson for JSON parsing and generation#170giuseppe wants to merge 5 commits intocontainers:mainfrom
Conversation
Switch from the unmaintained YAJL library to yyjson for all JSON operations. Update the build system (configure.ac, Makefile.am) to use yyjson, and update the libocispec submodule to the version with yyjson support. gitmodules is pointing to my git repo for now. Needs: containers/libocispec#170 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Switch from the unmaintained YAJL library to yyjson for all JSON operations. Update the build system (configure.ac, Makefile.am) to use yyjson, and update the libocispec submodule to the version with yyjson support. gitmodules is pointing to my git repo for now. Needs: containers/libocispec#170 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Switch from the unmaintained YAJL library to yyjson for all JSON operations. Update the build system (configure.ac, Makefile.am) to use yyjson, and update the libocispec submodule to the version with yyjson support. gitmodules is pointing to my git repo for now. Needs: containers/libocispec#170 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Switch from the unmaintained YAJL library to yyjson for all JSON operations. Update the build system (configure.ac, Makefile.am) to use yyjson, and update the libocispec submodule to the version with yyjson support. gitmodules is pointing to my git repo for now. Needs: containers/libocispec#170 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Switch from the unmaintained YAJL library to yyjson for all JSON operations. Update the build system (configure.ac, Makefile.am) to use yyjson, and update the libocispec submodule to the version with yyjson support. gitmodules is pointing to my git repo for now. Needs: containers/libocispec#170 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Switch from the unmaintained YAJL library to yyjson for all JSON operations. Update the build system (configure.ac, Makefile.am) to use yyjson, and update the libocispec submodule to the version with yyjson support. gitmodules is pointing to my git repo for now. Needs: containers/libocispec#170 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Switch from the unmaintained YAJL library to yyjson for all JSON operations. Update the build system (configure.ac, Makefile.am) to use yyjson, and update the libocispec submodule to the version with yyjson support. gitmodules is pointing to my git repo for now. Needs: containers/libocispec#170 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Switch from the unmaintained YAJL library to yyjson for all JSON operations. Update the build system (configure.ac, Makefile.am) to use yyjson, and update the libocispec submodule to the version with yyjson support. gitmodules is pointing to my git repo for now. Needs: containers/libocispec#170 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Switch from the unmaintained YAJL library to yyjson for all JSON operations. Update the build system (configure.ac, Makefile.am) to use yyjson, and update the libocispec submodule to the version with yyjson support. gitmodules is pointing to my git repo for now. Needs: containers/libocispec#170 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
|
@giuseppe will we keep yyjson statically linked? |
|
we need to support both ways, statically and dynamically linked |
Switch from the unmaintained YAJL library to yyjson for all JSON operations. Update the build system (configure.ac, Makefile.am) to use yyjson, and update the libocispec submodule to the version with yyjson support. gitmodules is pointing to my git repo for now. Needs: containers/libocispec#170 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Switch from the unmaintained YAJL library to yyjson for all JSON operations. Update the build system (configure.ac, Makefile.am) to use yyjson, and update the libocispec submodule to the version with yyjson support. gitmodules is pointing to my git repo for now. Needs: containers/libocispec#170 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Switch from the unmaintained YAJL library to yyjson for all JSON operations. Update the build system (configure.ac, Makefile.am) to use yyjson, and update the libocispec submodule to the version with yyjson support. gitmodules is pointing to my git repo for now. Needs: containers/libocispec#170 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Switch from the unmaintained YAJL library to yyjson for all JSON operations. Update the build system (configure.ac, Makefile.am) to use yyjson, and update the libocispec submodule to the version with yyjson support. gitmodules is pointing to my git repo for now. Needs: containers/libocispec#170 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Switch from the unmaintained YAJL library to yyjson for all JSON operations. Update the build system (configure.ac, Makefile.am) to use yyjson, and update the libocispec submodule to the version with yyjson support. gitmodules is pointing to my git repo for now. Needs: containers/libocispec#170 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
|
@jnovy what do you think of this change? |
|
@jnovy @kolyshkin are you OK to move forward with this? It is a quite significant change, that needs to happen in crun too, but we will finally get rid of the unmaintained libyajl dependency |
|
@giuseppe it's a similar trap like yajl we are about to introduce merging this. |
|
When I compared them, |
|
I see - LGTM then if we vendor this in on RHEL and use OS variant in Fedora and other distros containing yyjson. |
|
thanks for the review! I'll merge once we are also fine with containers/crun#2068 |
|
@giuseppe just digged into json-c more and it actually does have uint64 support since version 0.14 (2020). The json_type enum you linked doesn't show it because json-c uses json_type_int as the public type with an internal subtype discriminator. The public API includes json_object_new_uint64(), json_object_get_uint64(), etc. RHEL 9 ships json-c 0.14 and RHEL 10 ships 0.18, both with full uint64 support. |
Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Remove the honggfuzz HF_ITER code path that caused undefined reference errors when building with -DFUZZER. Wrap main() in #ifndef FUZZER so LibFuzzer can provide its own entry point. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Test parsing and round-trip generation of int64 and uint64 fields with boundary values: INT64_MAX, INT64_MIN, UINT64_MAX, values exceeding 32-bit range, negative values, and zero. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Expand the fuzzer from a single-mode runtime config parser to 7 modes covering all OCI spec parsers with round-trip testing (parse, generate, re-parse). Add honggfuzz-based CI fuzzing with Docker, matching the pattern used by crun. Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
Migrate the entire JSON backend from YAJL to yyjson. This is a big-bang replacement with no side-by-side support. Closes: containers#138 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> Signed-off-by: Giuseppe Scrivano <gscrivan@redhat.com>
|
thanks, I'll play with it and we can compare once I get something working |
No description provided.