-
Notifications
You must be signed in to change notification settings - Fork 1.8k
pack: 2.8x performance improvements for JSON parsing #10766
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
Signed-off-by: Eduardo Silva <[email protected]>
Signed-off-by: Eduardo Silva <[email protected]>
Signed-off-by: Eduardo Silva <[email protected]>
WalkthroughAdds vendored yyjson 0.12.0 (sources, CMake, docs, CI), integrates it into the build, and introduces a new JSON packing extension with a YYJSON backend option. Adds a FLB_BENCHMARKS build option and a benchmarks subproject with a new flb-bench-pack_json executable comparing JSMN and YYJSON packing. Changes
Sequence Diagram(s)sequenceDiagram
autonumber
actor User
participant Bench as flb-bench-pack_json
participant FB as flb_pack_json_ext
participant JSMN as Encoder:JSMN
participant YYJ as Encoder:YYJSON
User->>Bench: invoke -f <json> [-i N]
Bench->>FB: flb_pack_json_ext(json,len, opts.backend=JSMN)
FB-->>JSMN: dispatch to JSMN backend
JSMN-->>FB: out_buf,size,root_type
FB-->>Bench: result1
Bench->>FB: flb_pack_json_ext(json,len, opts.backend=YYJSON)
FB-->>YYJ: dispatch to YYJSON backend
YYJ-->>FB: out_buf,size,root_type
FB-->>Bench: result2
Bench->>Bench: compare outputs
alt match
Bench->>Bench: loop N iterations: time JSMN and YYJSON encodes
Bench->>Bench: compute MiB/s, ratios, report
else mismatch/error
Bench-->>User: report error and exit
end
sequenceDiagram
autonumber
participant Caller
participant API as flb_pack_json_ext
participant J as JSMN
participant Y as YYJSON
Caller->>API: json,len,out*,opts{backend,state}
alt opts.backend == JSMN
API->>J: pack json
J-->>API: out_buf,out_size,root_type,consumed
else opts.backend == YYJSON
API->>Y: pack json
Y-->>API: out_buf,out_size,root_type,consumed
end
API-->>Caller: rc, outputs
Estimated code review effort🎯 3 (Moderate) | ⏱️ ~30 minutes Suggested reviewers
Poem
Pre-merge checks and finishing touches❌ Failed checks (1 warning)
✅ Passed checks (2 passed)
✨ Finishing touches
🧪 Generate unit tests
Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out. Comment |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 22
Caution
Some comments are outside the diff and can’t be posted inline due to platform limitations.
⚠️ Outside diff range comments (3)
lib/yyjson-0.12.0/doc/DataStructure.md (1)
90-96
: Fix grammar and duplication in memory management sectionTwo issues:
- “When a document it is no longer needed” → “When a document is no longer needed”.
- “document and and cannot be freed” → “document and cannot be freed”.
-A JSON document (`yyjson_doc`, `yyjson_mut_doc`) is responsible for managing the memory of all its JSON values and strings. When a document it is no longer needed, it is important for the user to call `yyjson_doc_free()` or `yyjson_mut_doc_free()` to free the memory associated with it. +A JSON document (`yyjson_doc`, `yyjson_mut_doc`) manages the memory of all its JSON values and strings. When a document is no longer needed, the user should call `yyjson_doc_free()` or `yyjson_mut_doc_free()` to free the associated memory. @@ -A JSON value (`yyjson_val`, `yyjson_mut_val`) has the same lifetime as its document. The memory is managed by its - document and and cannot be freed independently. +A JSON value (`yyjson_val`, `yyjson_mut_val`) has the same lifetime as its document. The memory is managed by its + document and cannot be freed independently.lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome.css (1)
30-2682
: Exclude Doxygen‐generated CSS/JS and markdown from lintersTo avoid false‐positives on the vendored documentation files under
lib/yyjson-0.12.0/doc
, please add ignore patterns for Biome, ESLint, and MarkdownLint at the repo root:• Create or update
.biome.json
:{ "$schema": "https://biomejs.dev/schemas/1.7.0/schema.json", "files": { "ignore": [ "lib/yyjson-0.12.0/doc/doxygen/html/**/*.css", "lib/yyjson-0.12.0/doc/doxygen/html/**/*.js" ] } }• Create or update
.eslintignore
:# Ignore Doxygen-generated HTML/CSS/JS lib/yyjson-0.12.0/doc/doxygen/html/**
• Create or update
.markdownlintignore
:# Ignore vendored markdown in yyjson docs lib/yyjson-0.12.0/doc/**/*.md
These globs match the two
doxygen-awesome.css
files you discovered (…/html/doxygen-awesome.css
and…/theme/doxygen-awesome.css
) and will prevent linter errors on all other.css
,.js
, and.md
files in that path.
Re-run your CI suite to confirm that these patterns correctly exclude the vendor docs.lib/yyjson-0.12.0/doc/doxygen/DoxyLayout.xml (1)
1-270
: Remove duplicatevisible
attributes in DoxyLayout.xmlThe heuristic check confirms duplicate
visible="yes"
attributes on two lines. Please apply the following edits and then run Doxygen locally to ensure no layout warnings remain:Locations to fix:
- lib/yyjson-0.12.0/doc/doxygen/DoxyLayout.xml: line 123
- lib/yyjson-0.12.0/doc/doxygen/DoxyLayout.xml: line 171
Proposed diff:
--- a/lib/yyjson-0.12.0/doc/doxygen/DoxyLayout.xml +++ b/lib/yyjson-0.12.0/doc/doxygen/DoxyLayout.xml @@ -120,7 +120,7 @@ <membergroups visible="yes"/> @@ -168,7 +168,7 @@ <membergroups visible="yes"/>After applying, run your Doxygen configuration to verify no “duplicate attribute” warnings appear.
♻️ Duplicate comments (8)
lib/yyjson-0.12.0/doc/doxygen/html/dir_e68e8157741866f444e17edd764ebbae.html (1)
1-125
: Same note as other Doxygen HTML: exclude from repo/install; mark as generatedThis is another generated doc page. Please apply the repo hygiene/exclusion guidance from the earlier comment on lib/yyjson-0.12.0/doc/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html.
lib/yyjson-0.12.0/doc/doxygen/html/search/all_0.js (1)
1-41
: OK to vendor as documentation asset; ensure it’s excluded from packagingThis is a generated search index JS for the docs. No runtime impact. Please ensure it’s excluded from source tarballs and install targets per prior comment.
lib/yyjson-0.12.0/doc/doxygen/html/search/all_1f.js (1)
1-16
: Generated doc search index; apply the same exclusion policyNo runtime effect. Please keep excluded from install/packaging, as suggested earlier.
lib/yyjson-0.12.0/doc/doxygen/html/search/all_14.js (1)
1-29
: Same packaging guidance applies to all Doxygen searchData files under lib/yyjson-0.12.0/doc/.Please see my earlier comment in all_1.js about excluding generated docs from build/install and release artifacts.
lib/yyjson-0.12.0/doc/doxygen/html/search/functions_0.js (1)
1-327
: Same packaging guidance applies here; this is a large payload.This file enumerates the full public API (including deprecated aliases) for search. It’s sizeable; excluding from builds and releases will reduce repo noise and packaging size.
lib/yyjson-0.12.0/doc/doxygen/html/search/all_19.js (1)
1-21
: Same packaging guidance applies to this index file.Covers build/test and performance sections; still generated and non-executable. Exclude from build/install and releases as suggested earlier.
lib/yyjson-0.12.0/doc/doxygen/html/globals_defs.html (1)
1-185
: Same note as other Doxygen HTML: exclude vendor docs from checks and distributionsApply the same ignore/export guidance as suggested for
globals_type.html
to keep CI clean and the repository slimmer.lib/yyjson-0.12.0/doc/doxygen/html/globals_vars.html (1)
1-187
: Same note as other Doxygen HTML: exclude vendor docs from checks and distributionsApply the same ignore/export guidance here. This helps avoid recurring noise in reviews and pipelines.
#include <stdio.h> | ||
#include <stdlib.h> | ||
#include <time.h> | ||
#include <unistd.h> | ||
|
||
#include <fluent-bit.h> | ||
#include <fluent-bit/flb_pack_json.h> | ||
|
||
#define ITERATIONS 100000 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Include missing headers for memcmp and fixed-width ints; drop unused macro
memcmp
requires<string.h>
.- Use
<stdint.h>
(and<inttypes.h>
if printing 64-bit ints). ITERATIONS
is unused.
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#include <unistd.h>
+#include <string.h>
+#include <stdint.h>
+#include <inttypes.h>
-#include <fluent-bit.h>
+#include <fluent-bit.h>
#include <fluent-bit/flb_pack_json.h>
-#define ITERATIONS 100000
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
#include <stdio.h> | |
#include <stdlib.h> | |
#include <time.h> | |
#include <unistd.h> | |
#include <fluent-bit.h> | |
#include <fluent-bit/flb_pack_json.h> | |
#define ITERATIONS 100000 | |
#include <stdio.h> | |
#include <stdlib.h> | |
#include <time.h> | |
#include <unistd.h> | |
#include <string.h> | |
#include <stdint.h> | |
#include <inttypes.h> | |
#include <fluent-bit.h> | |
#include <fluent-bit/flb_pack_json.h> |
🤖 Prompt for AI Agents
In benchmarks/pack_json.c around lines 1 to 9, the file is missing headers
required for memcmp and fixed-width integer types and defines an unused
ITERATIONS macro; add #include <string.h> for memcmp and #include <stdint.h>
(and #include <inttypes.h> if the code prints int64_t/uint64_t values) and
remove the unused #define ITERATIONS 100000 (or use it where intended).
struct flb_pack_opts { | ||
/* which backend to use (default, jsmn, yyjson) */ | ||
int backend; | ||
|
||
/* optional: required only for JSMN in streaming mode */ | ||
struct flb_pack_state *state; | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Define an explicit DEFAULT backend to match the comment and avoid API footguns
The comment says “(default, jsmn, yyjson)” but there’s no DEFAULT
constant. If a caller sets opts->backend = 0
expecting default, flb_pack_json_ext()
(current impl) returns -1. Define FLB_PACK_JSON_BACKEND_DEFAULT = 0
and document that it resolves to YYJSON (or build-time default).
#define FLB_PACK_JSON_BACKEND_JSMN 1
#define FLB_PACK_JSON_BACKEND_YYJSON 2
+/* default selects the preferred backend; currently YYJSON */
+#define FLB_PACK_JSON_BACKEND_DEFAULT 0
struct flb_pack_opts {
- /* which backend to use (default, jsmn, yyjson) */
+ /* which backend to use (default=prefer YYJSON, jsmn, yyjson) */
int backend;
/* optional: required only for JSMN in streaming mode */
struct flb_pack_state *state;
};
Follow-up in src (for maintainers to update alongside this header):
/* src/flb_pack_json.c: treat DEFAULT as YYJSON */
if (!opts || opts->backend == FLB_PACK_JSON_BACKEND_DEFAULT) {
backend = FLB_PACK_JSON_BACKEND_YYJSON;
} else {
backend = opts->backend;
state = opts->state;
}
🤖 Prompt for AI Agents
In include/fluent-bit/flb_pack_json.h around lines 29 to 35, the struct comment
lists a default backend but no DEFAULT constant exists, causing callers who set
backend=0 to be treated as invalid; add a new constant
FLB_PACK_JSON_BACKEND_DEFAULT = 0 and document that it maps to the
build-time/default implementation (resolve to YYJSON in code), update the
comment to reference the constant, and ensure callers and src/flb_pack_json.c
treat DEFAULT as meaning “use YYJSON (or configured default)” when opts is null
or backend equals FLB_PACK_JSON_BACKEND_DEFAULT.
#include <fluent-bit/flb_config.h> | ||
|
||
#include <msgpack.h> | ||
#include <yyjson.h> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Don’t expose yyjson in a public header; gate backend-specific prototypes to avoid downstream build breaks
Including <yyjson.h>
in a public header leaks a third‑party dependency to all Fluent Bit SDK consumers. Many will compile out-of-tree plugins/apps against installed headers without yyjson in their include path. Also, the two *_yyjson
symbols are backend-specific and should be guarded so they’re only visible when the feature is built.
Action:
- Remove the unconditional include of
<yyjson.h>
(the prototypes don’t require yyjson types). - Wrap the
*_yyjson
prototypes with a feature macro (e.g.,FLB_HAVE_YYJSON
), consistent with how other optional deps are handled.
Proposed patch:
#include <msgpack.h>
-#include <yyjson.h>
@@
-int flb_pack_json_yyjson(const char *js, size_t len, char **buffer, size_t *size,
- int *root_type, size_t *consumed);
-int flb_pack_json_recs_yyjson(const char *js, size_t len, char **buffer,
- size_t *size, int *root_type, int *out_records,
- size_t *consumed);
+#ifdef FLB_HAVE_YYJSON
+int flb_pack_json_yyjson(const char *js, size_t len, char **buffer, size_t *size,
+ int *root_type, size_t *consumed);
+int flb_pack_json_recs_yyjson(const char *js, size_t len, char **buffer,
+ size_t *size, int *root_type, int *out_records,
+ size_t *consumed);
+#endif /* FLB_HAVE_YYJSON */
Why this matters:
- Prevents accidental breaking changes for SDK users who don’t vendor or install yyjson headers.
- Keeps third‑party dependencies out of the public surface unless explicitly enabled.
It’s also worth considering making the yyjson backend entry points private (internal header) and funneling external usage through the new flb_pack_json_ext
API to avoid expanding the public surface with backend-specific names.
Run to check for any other public headers leaking yyjson.h
, and to see if *_yyjson
symbols are referenced outside benchmarks/tests:
Also applies to: 84-88
🏁 Script executed:
#!/bin/bash
# From repo root
echo "Public headers that include yyjson.h:"
rg -n -C0 --type=c -g 'include/**' -P '\<#\s*include\s*<yyjson\.h>'
echo
echo "Call sites of backend-specific APIs (should be limited to src/ and benchmarks/tests):"
rg -n -C2 -P 'flb_pack_json_yyjson\b|flb_pack_json_recs_yyjson\b' -g '!lib/yyjson-0.12.0/**'
Length of output: 6194
Gate yyjson prototypes behind FLB_HAVE_YYJSON
- The unconditional
#include <yyjson.h>
has been removed from all public headers—no otherinclude/**
file pulls in yyjson. - In
include/fluent-bit/flb_pack.h
(lines 84–88), the declarations forflb_pack_json_yyjson
andflb_pack_json_recs_yyjson
remain unguarded. These must be wrapped into prevent build failures for SDK consumers without yyjson.#ifdef FLB_HAVE_YYJSON …prototypes… #endif /* FLB_HAVE_YYJSON */
- All definitions and call sites of these functions live in
src/
andtests/
, so gating only the public declarations is sufficient.
Proposed diff for include/fluent-bit/flb_pack.h
:
--- a/include/fluent-bit/flb_pack.h
+++ b/include/fluent-bit/flb_pack.h
@@ -81,7 +81,8 @@ int flb_pack_json(const char *js, size_t len, char **buffer, size_t *size,
int *root_type, int *out_records, size_t *consumed);
- int flb_pack_json_yyjson(const char *js, size_t len, char **buffer, size_t *size,
- int *root_type, size_t *consumed);
- int flb_pack_json_recs_yyjson(const char *js, size_t len, char **buffer,
- size_t *size, int *root_type, int *out_records,
- size_t *consumed);
+ #ifdef FLB_HAVE_YYJSON
+ int flb_pack_json_yyjson(const char *js, size_t len, char **buffer, size_t *size,
+ int *root_type, size_t *consumed);
+ int flb_pack_json_recs_yyjson(const char *js, size_t len, char **buffer,
+ size_t *size, int *root_type, int *out_records,
+ size_t *consumed);
+ #endif /* FLB_HAVE_YYJSON */
Optional: move backend-specific prototypes into an internal header and expose only the generic flb_pack_json_ext
in the public API.
🤖 Prompt for AI Agents
In include/fluent-bit/flb_pack.h around lines 84–88, the prototypes for
flb_pack_json_yyjson and flb_pack_json_recs_yyjson are unguarded and will break
builds when yyjson is not available; wrap those prototype declarations with
#ifdef FLB_HAVE_YYJSON ... #endif /* FLB_HAVE_YYJSON */ so they are only exposed
when yyjson is present, preserving the existing signatures and comments, and
keep the rest of the public API unchanged (optionally move backend-specific
prototypes to an internal header and expose a generic flb_pack_json_ext if
desired).
- name: Prepare | ||
shell: bash | ||
run: | | ||
sudo apt-get update | ||
wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/g++-4.8_4.8.5-4ubuntu8_amd64.deb | ||
wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/libstdc++-4.8-dev_4.8.5-4ubuntu8_amd64.deb | ||
wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/gcc-4.8-base_4.8.5-4ubuntu8_amd64.deb | ||
wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/gcc-4.8_4.8.5-4ubuntu8_amd64.deb | ||
wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/libgcc-4.8-dev_4.8.5-4ubuntu8_amd64.deb | ||
wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/cpp-4.8_4.8.5-4ubuntu8_amd64.deb | ||
wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/libasan0_4.8.5-4ubuntu8_amd64.deb | ||
sudo apt install ./gcc-4.8_4.8.5-4ubuntu8_amd64.deb \ | ||
./gcc-4.8-base_4.8.5-4ubuntu8_amd64.deb \ | ||
./libstdc++-4.8-dev_4.8.5-4ubuntu8_amd64.deb \ | ||
./cpp-4.8_4.8.5-4ubuntu8_amd64.deb \ | ||
./libgcc-4.8-dev_4.8.5-4ubuntu8_amd64.deb \ | ||
./libasan0_4.8.5-4ubuntu8_amd64.deb \ | ||
./g++-4.8_4.8.5-4ubuntu8_amd64.deb | ||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Use HTTPS for package downloads and add basic hardening
HTTP URLs are susceptible to MITM. Switch to HTTPS and add strict mode.
Apply this diff:
- run: |
- sudo apt-get update
- wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/g++-4.8_4.8.5-4ubuntu8_amd64.deb
- wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/libstdc++-4.8-dev_4.8.5-4ubuntu8_amd64.deb
- wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/gcc-4.8-base_4.8.5-4ubuntu8_amd64.deb
- wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/gcc-4.8_4.8.5-4ubuntu8_amd64.deb
- wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/libgcc-4.8-dev_4.8.5-4ubuntu8_amd64.deb
- wget http://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/cpp-4.8_4.8.5-4ubuntu8_amd64.deb
+ run: |
+ set -euo pipefail
+ sudo apt-get update
+ wget -q https://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/g++-4.8_4.8.5-4ubuntu8_amd64.deb
+ wget -q https://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/libstdc++-4.8-dev_4.8.5-4ubuntu8_amd64.deb
+ wget -q https://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/gcc-4.8-base_4.8.5-4ubuntu8_amd64.deb
+ wget -q https://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/gcc-4.8_4.8.5-4ubuntu8_amd64.deb
+ wget -q https://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/libgcc-4.8-dev_4.8.5-4ubuntu8_amd64.deb
+ wget -q https://mirrors.kernel.org/ubuntu/pool/universe/g/gcc-4.8/cpp-4.8_4.8.5-4ubuntu8_amd64.deb
sudo apt install ./gcc-4.8_4.8.5-4ubuntu8_amd64.deb \
./gcc-4.8-base_4.8.5-4ubuntu8_amd64.deb \
./libstdc++-4.8-dev_4.8.5-4ubuntu8_amd64.deb \
./cpp-4.8_4.8.5-4ubuntu8_amd64.deb \
./libgcc-4.8-dev_4.8.5-4ubuntu8_amd64.deb \
./libasan0_4.8.5-4ubuntu8_amd64.deb \
./g++-4.8_4.8.5-4ubuntu8_amd64.deb
If you keep direct .deb downloads, consider checksum verification for each file.
Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In lib/yyjson-0.12.0/.github/workflows/cmake.yml around lines 281 to 299, the
workflow downloads .deb packages over plain HTTP and runs them without strict
shell error handling; switch all wget URLs to use HTTPS, enable strict shell
mode (set -euo pipefail) at the top of the run block, and add checksum
verification for each downloaded .deb (e.g., provide expected SHA256 hashes and
verify with sha256sum -c before apt install); ensure wget uses --https-only or
--no-check-certificate is NOT used and fail the job if any verification step
fails.
- Add `YYJSON_WRITE_FP_TO_FLOAT` flag to write real numbers using single-precison. | ||
- Add `YYJSON_WRITE_FP_TO_FIXED(prec)` flag to write real numbers using fix-point notation. | ||
- Add `set_fp_to_float()` and `set_fp_to_fixed()` functions to control the output format of a specific number. | ||
- Add `set_str_noesc()` function to skip escaping for a specific string during writing. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Typos and terminology in changelog (only if we decide to diverge from upstream text)
There are minor issues: “single-precison” → “single-precision”, “fix-point” → “fixed-point”, “incurrect” → “incorrect”, and “JSON Merge-Path” should be “JSON Merge Patch (RFC 7386)”. If we choose to correct in-tree (not recommended for vendored code), apply:
- Add `YYJSON_WRITE_FP_TO_FLOAT` flag to write real numbers using single-precison.
- Add `YYJSON_WRITE_FP_TO_FIXED(prec)` flag to write real numbers using fix-point notation.
+ Add `YYJSON_WRITE_FP_TO_FLOAT` flag to write real numbers using single-precision.
+ Add `YYJSON_WRITE_FP_TO_FIXED(prec)` flag to write real numbers using fixed-point notation.
...
- Fix incurrect output number format, remove unnecessary digits (e.g. 2.0e34 -> 2e34).
+ Fix incorrect output number format, remove unnecessary digits (e.g. 2.0e34 -> 2e34).
...
- Add `yyjson_merge_patch()` function for JSON Merge-Path API (RFC 7386).
+ Add `yyjson_merge_patch()` function for JSON Merge Patch API (RFC 7386).
Also applies to: 121-125, 153-155
🧰 Tools
🪛 LanguageTool
[grammar] ~29-~29: There might be a mistake here.
Context: ...e real numbers using fix-point notation. - Add set_fp_to_float()
and `set_fp_to_f...
(QB_NEW_EN)
[style] ~30-~30: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...eal numbers using fix-point notation. - Add set_fp_to_float()
and `set_fp_to_fixe...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[style] ~31-~31: Three successive sentences begin with the same word. Consider rewording the sentence or use a thesaurus to find a synonym.
Context: ...e output format of a specific number. - Add set_str_noesc()
function to skip esca...
(ENGLISH_WORD_REPEAT_BEGINNING_RULE)
[grammar] ~31-~31: There might be a mistake here.
Context: ...ng for a specific string during writing. - Add yyjson_incr_read()
, `yyjson_incr_n...
(QB_NEW_EN)
🤖 Prompt for AI Agents
lib/yyjson-0.12.0/CHANGELOG.md lines 28-31: fix typos and terminology—change
“single-precison” to “single-precision”, “fix-point” to “fixed-point”, and
ensure elsewhere “incurrect” is corrected to “incorrect”; also update references
to “JSON Merge-Path” to read “JSON Merge Patch (RFC 7386)”; apply the same
corrections in the other occurrences noted at lines 121-125 and 153-155 so the
changelog uses correct spelling and the proper RFC phrase consistently.
a.onclick = function() { | ||
storeLink(link); | ||
aPPar = $(a).parent().parent(); | ||
if (!aPPar.hasClass('selected')) { | ||
$('.item').removeClass('selected'); | ||
$('.item').removeAttr('id'); | ||
aPPar.addClass('selected'); | ||
aPPar.attr('id','selected'); | ||
} | ||
const anchor = $(aname); | ||
gotoAnchor(anchor,aname); | ||
}; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🛠️ Refactor suggestion
Fix accidental global variable leak (aPPar) in click handler.
Undeclared assignment creates a global; make it block-scoped.
- storeLink(link);
- aPPar = $(a).parent().parent();
+ storeLink(link);
+ const aPPar = $(a).parent().parent();
🤖 Prompt for AI Agents
In lib/yyjson-0.12.0/doc/doxygen/html/navtree.js around lines 205 to 216 there
is an accidental global variable leak: aPPar is assigned without declaration
inside the click handler. Fix by declaring it as a local block-scoped variable
(prefer const if not reassigned, otherwise let) when assigning
$(a).parent().parent(); so the variable is not created on the global object and
remains scoped to the handler.
getScript(relpath+'navtreeindex'+i,function() { | ||
navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); | ||
if (navTreeSubIndices[i]) { | ||
gotoNode(o,i,root,hash,relpath); | ||
} | ||
}); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Eliminate eval() when loading NAVTREEINDEXi (fixes lint/security/noGlobalEval).
Directly resolve the global by key instead of evaluating a string.
- getScript(relpath+'navtreeindex'+i,function() {
- navTreeSubIndices[i] = eval('NAVTREEINDEX'+i);
- if (navTreeSubIndices[i]) {
- gotoNode(o,i,root,hash,relpath);
- }
- });
+ getScript(relpath+'navtreeindex'+i,function() {
+ const key = 'NAVTREEINDEX'+i;
+ navTreeSubIndices[i] = (typeof window !== 'undefined') ? window[key] : undefined;
+ if (navTreeSubIndices[i]) {
+ gotoNode(o,i,root,hash,relpath);
+ }
+ });
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
getScript(relpath+'navtreeindex'+i,function() { | |
navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); | |
if (navTreeSubIndices[i]) { | |
gotoNode(o,i,root,hash,relpath); | |
} | |
}); | |
getScript(relpath+'navtreeindex'+i, function() { | |
const key = 'NAVTREEINDEX' + i; | |
navTreeSubIndices[i] = (typeof window !== 'undefined') ? window[key] : undefined; | |
if (navTreeSubIndices[i]) { | |
gotoNode(o, i, root, hash, relpath); | |
} | |
}); |
🧰 Tools
🪛 Biome (2.1.2)
[error] 395-395: eval() exposes to security risks and performance issues.
See the MDN web docs for more details.
Refactor the code so that it doesn't need to call eval().
(lint/security/noGlobalEval)
🤖 Prompt for AI Agents
In lib/yyjson-0.12.0/doc/doxygen/html/navtree.js around lines 394 to 399, the
code uses eval('NAVTREEINDEX'+i) to obtain the loaded NAVTREEINDEX variable;
replace the eval with a direct global lookup (e.g., use
globalThis['NAVTREEINDEX' + i] or window['NAVTREEINDEX' + i] with a safe
fallback) to retrieve the variable by key, assign that result to
navTreeSubIndices[i], and keep the existing null/undefined check and gotoNode
call; ensure you reference a cross-platform global (globalThis) and avoid
introducing new globals or exceptions.
var searchData= | ||
[ | ||
['7_200_202023_2005_2025_0',['0.7.0 (2023-05-25)',['../md__c_h_a_n_g_e_l_o_g.html#autotoc_md070-2023-05-25',1,'']]], | ||
['7r32_20gcc_209_203_1',['AWS EC2 (AMD EPYC 7R32, gcc 9.3)',['../index.html#aws-ec2-amd-epyc-7r32-gcc-93',1,'']]] | ||
]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Guard against accidental license drift
Ensure the upstream yyjson LICENSE and NOTICE are included alongside the vendored directory and that any local patches are documented. No changes needed here; just a reminder since docs are included.
If not already present, verify license files exist under lib/yyjson-0.12.0/
:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
fd -HI 'LICENSE*|NOTICE*' lib/yyjson-0.12.0 -x ls -lah {}
Length of output: 156
Add missing NOTICE file for yyjson upstream
The vendored lib/yyjson-0.12.0/
directory includes the upstream LICENSE
but is missing the corresponding NOTICE
file. To prevent accidental license drift, please:
- Include the original
NOTICE
file from yyjson v0.12.0 alongsidelib/yyjson-0.12.0/LICENSE
. - Document any local patches applied to the vendored code (e.g. in a
PATCHES.md
or within theNOTICE
).
🤖 Prompt for AI Agents
In lib/yyjson-0.12.0/doc/doxygen/html/search/all_7.js lines 1-5: the vendored
yyjson 0.12.0 copy includes LICENSE but is missing the upstream NOTICE and lacks
documentation of local patches; add the original NOTICE file from yyjson v0.12.0
into lib/yyjson-0.12.0 alongside the existing LICENSE, and add a short
PATCHES.md (or append to NOTICE) listing any local modifications/patches applied
to the vendored code, with dates and authorship, so the repo retains upstream
attribution and documents changes.
var searchData= | ||
[ | ||
['better_20performance_20yyjson_20prefers_3a_0',['For better performance, yyjson prefers:',['../index.html#for-better-performance-yyjson-prefers',1,'']]], | ||
['build_20the_20library_1',['Use CMake to build the library',['../building-and-testing.html#use-cmake-to-build-the-library',1,'']]], | ||
['building_20and_20testing_2',['Building and testing',['../building-and-testing.html',1,'']]], | ||
['built_20with_20yyjson_3',['Built With yyjson',['../index.html#built-with-yyjson',1,'']]] | ||
]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Verify size impact and third-party license presence.
Before merging, quantify the doc footprint and confirm yyjson license files are present and included in NOTICE aggregation.
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Doc directory size:"
du -sh lib/yyjson-0.12.0/doc 2>/dev/null || echo "No docs dir found."
echo
echo "Doc file count:"
fd -HI -t f lib/yyjson-0.12.0/doc 2>/dev/null | wc -l || true
echo
echo "Top largest doc files (up to 20):"
fd -HI -t f lib/yyjson-0.12.0/doc 2>/dev/null | xargs -r -I{} du -h "{}" | sort -h | tail -20 || true
echo
echo "License/notice files under vendored yyjson:"
rg -nP 'LICENSE|COPYING|NOTICE' -S -g '!**/node_modules/**' -C0 lib/yyjson-0.12.0 2>/dev/null || echo "No license/notice files detected under lib/yyjson-0.12.0"
echo
echo "Confirm docs are excluded by packaging (check .gitattributes export-ignore):"
rg -n '^lib/yyjson-0\.12\.0/doc\s+export-ignore$' .gitattributes -n || echo "Consider adding 'lib/yyjson-0.12.0/doc export-ignore' to .gitattributes"
Length of output: 3053
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "File count under doc (using find):"
find lib/yyjson-0.12.0/doc -type f | wc -l
echo
echo "LICENSE files under lib/yyjson-0.12.0 root:"
find lib/yyjson-0.12.0 -maxdepth 1 -type f -iname 'license*' || echo "No LICENSE file found at root"
Length of output: 341
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "Checking for NOTICE file at repository root:"
find . -maxdepth 1 -type f -iname 'NOTICE*' || echo "No NOTICE files at repository root"
echo
echo "Searching for .gitattributes in the repository:"
find . -type f -name ".gitattributes" -maxdepth 2 || echo "No .gitattributes file found"
Length of output: 327
Vendor docs footprint & licensing compliance
The vendored yyjson docs total ~3.2 MB across 193 files, and while the yyjson LICENSE is present at lib/yyjson-0.12.0/LICENSE
, there is no NOTICE file to aggregate third-party licenses and no .gitattributes
to exclude docs from published packages.
Please address the following before merging:
-
Add a repository-level NOTICE (or extend your existing NOTICE) that includes a reference to
lib/yyjson-0.12.0/LICENSE
. -
Create or update a
.gitattributes
at the repo root to exclude the docs directory from source distributions:lib/yyjson-0.12.0/doc export-ignore
-
Consider removing or packaging the HTML docs separately (e.g. an optional
-doc
artifact) to avoid inflating downstream installs.
🤖 Prompt for AI Agents
In lib/yyjson-0.12.0/doc/doxygen/html/search/all_c.js lines 1-7: the vendored
yyjson docs are included without a repository-level NOTICE pointing to
lib/yyjson-0.12.0/LICENSE and without a .gitattributes rule to exclude the docs
from source exports; add or update the repo-level NOTICE to reference
lib/yyjson-0.12.0/LICENSE (or extend existing NOTICE), and create/update
.gitattributes at the repository root with an entry to export-ignore the docs
directory (e.g. lib/yyjson-0.12.0/doc export-ignore); optionally remove the HTML
docs from the repo or move/package them as a separate -doc artifact to keep
downstream installs small.
var searchData= | ||
[ | ||
['yyjson_5falc_0',['yyjson_alc',['../yyjson_8h.html#structyyjson__alc',1,'']]], | ||
['yyjson_5farr_5fiter_1',['yyjson_arr_iter',['../yyjson_8h.html#structyyjson__arr__iter',1,'']]], | ||
['yyjson_5fdoc_2',['yyjson_doc',['../yyjson_8h.html#structyyjson__doc',1,'']]], | ||
['yyjson_5fmut_5farr_5fiter_3',['yyjson_mut_arr_iter',['../yyjson_8h.html#structyyjson__mut__arr__iter',1,'']]], | ||
['yyjson_5fmut_5fdoc_4',['yyjson_mut_doc',['../yyjson_8h.html#structyyjson__mut__doc',1,'']]], | ||
['yyjson_5fmut_5fobj_5fiter_5',['yyjson_mut_obj_iter',['../yyjson_8h.html#structyyjson__mut__obj__iter',1,'']]], | ||
['yyjson_5fmut_5fval_6',['yyjson_mut_val',['../yyjson_8h.html#structyyjson__mut__val',1,'']]], | ||
['yyjson_5fobj_5fiter_7',['yyjson_obj_iter',['../yyjson_8h.html#structyyjson__obj__iter',1,'']]], | ||
['yyjson_5fpatch_5ferr_8',['yyjson_patch_err',['../yyjson_8h.html#structyyjson__patch__err',1,'']]], | ||
['yyjson_5fptr_5fctx_9',['yyjson_ptr_ctx',['../yyjson_8h.html#structyyjson__ptr__ctx',1,'']]], | ||
['yyjson_5fptr_5ferr_10',['yyjson_ptr_err',['../yyjson_8h.html#structyyjson__ptr__err',1,'']]], | ||
['yyjson_5fread_5ferr_11',['yyjson_read_err',['../yyjson_8h.html#structyyjson__read__err',1,'']]], | ||
['yyjson_5fstr_5fchunk_12',['yyjson_str_chunk',['../yyjson_8h.html#structyyjson__str__chunk',1,'']]], | ||
['yyjson_5fstr_5fpool_13',['yyjson_str_pool',['../yyjson_8h.html#structyyjson__str__pool',1,'']]], | ||
['yyjson_5fval_14',['yyjson_val',['../yyjson_8h.html#structyyjson__val',1,'']]], | ||
['yyjson_5fval_5fchunk_15',['yyjson_val_chunk',['../yyjson_8h.html#structyyjson__val__chunk',1,'']]], | ||
['yyjson_5fval_5fpool_16',['yyjson_val_pool',['../yyjson_8h.html#structyyjson__val__pool',1,'']]], | ||
['yyjson_5fval_5funi_17',['yyjson_val_uni',['../yyjson_8h.html#unionyyjson__val__uni',1,'']]], | ||
['yyjson_5fwrite_5ferr_18',['yyjson_write_err',['../yyjson_8h.html#structyyjson__write__err',1,'']]] | ||
]; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
💡 Verification agent
🧩 Analysis chain
Verify third‑party license presence and ensure doc assets are self-contained (no external calls).
Since yyjson is vendored (including docs), ensure its LICENSE is present and that HTML/JS don’t reference external CDNs.
Run this script from repo root:
🏁 Script executed:
#!/bin/bash
set -euo pipefail
echo "== Check yyjson license files =="
fd -H -t f -g 'LICENSE*' lib/yyjson-0.12.0 || {
echo "Missing LICENSE in lib/yyjson-0.12.0"; exit 1;
}
echo "== Spot-check license mentions =="
rg -n "MIT|yyjson" lib/yyjson-0.12.0 | head -n 20 || true
echo "== Ensure docs are offline (no external http/https refs) =="
# Ignore common binary assets
rg -nPI '(https?:)?//[a-zA-Z0-9]' lib/yyjson-0.12.0/doc/doxygen/html \
-g '!**/*.png' -g '!**/*.jpg' -g '!**/*.gif' -g '!**/*.svg' || {
echo "OK: no external URLs found in doc HTML/JS/CSS";
}
Length of output: 28489
Third-party license present; docs contain external URLs that must be vendored
The MIT license file is in place at lib/yyjson-0.12.0/LICENSE
, but the pre-generated Doxygen HTML/JS under lib/yyjson-0.12.0/doc/doxygen/html
still references numerous external resources. These must be replaced with offline or vendored copies to ensure the docs are fully self-contained:
• License
– ✅ Found at lib/yyjson-0.12.0/LICENSE
.
• External DTD/namespace URLs (in every HTML file)
– <!DOCTYPE html PUBLIC … "https://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
– <html xmlns="http://www.w3.org/1999/xhtml" lang="en-US">
• Footer badges and links
– GitHub repo: https://github.com/ibireme/yyjson
– Doxygen site: https://www.doxygen.org/index.html
– Shields.io, Codecov, Repology images/links
• Third-party scripts and styles
– jqueryui.com, smartmenus.org, jquery-powertip, fonts.google.com/icons
– Apache license link: https://www.apache.org/licenses/LICENSE-2.0.html
• Standards and spec references
– RFCs on datatracker.ietf.org, json5.org, tools.ietf.org, unicode.org, en.wikipedia.org
Recommendations:
- Regenerate or post-process the Doxygen output to rewrite or remove external URLs.
- Vendor all required CSS/JS and image assets locally.
- Replace public DTD declaration with a local or minimal HTML5 doctype if possible.
🤖 Prompt for AI Agents
In lib/yyjson-0.12.0/doc/doxygen/html (lines 1-22 of classes_0.js referenced),
the pre-generated docs reference external URLs and third-party assets; remove or
vendor them so the docs are self-contained. Replace the external
DOCTYPE/namespace declarations with a local/minimal HTML5 doctype where
feasible, download and serve copies of all external JS/CSS/fonts/images (jquery,
jqueryui, smartmenus, powertip, Google icons, Shields/Codecov/Repology badges,
etc.) from the doc tree, update all HTML/JS references to point to those local
files, replace external license/spec links with local copies or plain text
summaries (including Apache license copy), and strip or rewrite any remaining
external RFC/spec links; finally regenerate or post-process the Doxygen output
and verify no external URLs remain (e.g., grep for "http://" and "https://")
before committing.
Signed-off-by: Eduardo Silva <[email protected]>
Upstream PR: ibireme/yyjson#227 Signed-off-by: Eduardo Silva <[email protected]>
Signed-off-by: Eduardo Silva <[email protected]>
Signed-off-by: Eduardo Silva <[email protected]>
Signed-off-by: Eduardo Silva <[email protected]>
6e68cc4
to
de14084
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Actionable comments posted: 2
♻️ Duplicate comments (12)
lib/yyjson-0.12.0/doc/doxygen/html/search/classes_0.js (1)
1-22
: Duplicate: ensure the entire Doxygen doc tree is self‑contained (no external URLs)Previous review flagged external URLs across the doc HTML. This file is fine, but please vendor/remove external links project‑wide or exclude docs from release artifacts.
Run from repo root:
#!/bin/bash set -euo pipefail # Fail if any external http/https or protocol-relative URL remains in doc HTML/JS/CSS. rg -nPI '(?<![A-Za-z])https?://|(?<![A-Za-z])//' lib/yyjson-0.12.0/doc/doxygen/html \ -g '!**/*.png' -g '!**/*.jpg' -g '!**/*.gif' -g '!**/*.svg' && { echo "Found external URLs above — please vendor/remove them." ; exit 1; } || { echo "OK: no external URLs detected in doc HTML/JS/CSS."; }lib/yyjson-0.12.0/doc/doxygen/html/navtree.js (3)
205-216
: Fix accidental global (aPPar).Declare the variable to avoid leaking to global scope.
- storeLink(link); - aPPar = $(a).parent().parent(); + storeLink(link); + const aPPar = $(a).parent().parent();
32-36
: Replace eval() with safe global lookup.Avoids security/lint issues while preserving behavior.
Apply:
- return eval(n.replace(/-/g,'_')); + const key = n.replace(/-/g,'_'); + return (typeof globalThis !== 'undefined') ? globalThis[key] : undefined;
394-399
: Remove eval() when loading NAVTREEINDEXi.Use a keyed global lookup instead of evaluating a string.
- getScript(relpath+'navtreeindex'+i,function() { - navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + getScript(relpath+'navtreeindex'+i,function() { + const key = 'NAVTREEINDEX'+i; + navTreeSubIndices[i] = (typeof globalThis !== 'undefined') ? globalThis[key] : undefined;lib/yyjson-0.12.0/doc/doxygen/html/navtree.css (1)
86-94
: Invalid CSS placeholder$width
; replace with valid value/custom property.Current rule won’t parse; also trips linters.
#side-nav { padding:0 6px 0 0; margin: 0px; display:block; position: absolute; left: 0px; - width: $width; + width: var(--side-nav-width, 300px); overflow : hidden; }After change, run:
rg -n 'width:\s*\$width' lib/yyjson-0.12.0/doc/doxygen/html/navtree.css
benchmarks/pack_json.c (1)
1-5
: Add required headers and remove unused macroMissing headers for
memcmp
and fixed-width integer types. TheITERATIONS
macro is also unused.#include <stdio.h> #include <stdlib.h> #include <time.h> #include <unistd.h> +#include <string.h> +#include <stdint.h> #include <fluent-bit.h> #include <fluent-bit/flb_pack_json.h> - -#define ITERATIONS 100000lib/yyjson-0.12.0/doc/API.md (2)
1175-1177
: Fix incorrect array declaration in exampleThe sample declares
char strs[3]
which creates an array of 3 single characters, not an array of string pointers.-const char strs[3] = {"Jan", "Feb", "Mar"}; +const char *strs[3] = {"Jan", "Feb", "Mar"}; yyjson_mut_val *arr = yyjson_mut_arr_with_str(doc, strs, 3);
1694-1711
: Fix incorrect API function names in custom allocator examplesThe API functions
yyjson_doc_read_opts
andyyjson_doc_write
don't exist in the vendored library.// Read with custom allocator -yyjson_doc *doc = yyjson_doc_read_opts(dat, len, 0, &PRIV_ALC, NULL); +yyjson_doc *doc = yyjson_read_opts(dat, len, 0, &PRIV_ALC, NULL); ... yyjson_doc_free(doc); // Write with custom allocator yyjson_alc *alc = &PRIV_ALC; -char *json = yyjson_doc_write(doc, 0, alc, NULL, NULL); +char *json = yyjson_write_opts(doc, 0, alc, NULL, NULL); ... alc->free(alc->ctx, json);lib/yyjson-0.12.0/CMakeLists.txt (2)
33-34
: Prevent vendored library from polluting parent project installsWhen included as a subproject, the library shouldn't install by default to avoid conflicts.
-option(YYJSON_INSTALL "Generate installation target" ON) +# Default OFF when included as a subproject +set(_YYJSON_INSTALL_DEFAULT ON) +if (NOT CMAKE_SOURCE_DIR STREQUAL CMAKE_CURRENT_SOURCE_DIR) + set(_YYJSON_INSTALL_DEFAULT OFF) +endif() +option(YYJSON_INSTALL "Generate installation target" ${_YYJSON_INSTALL_DEFAULT})
139-142
: Preserve existing toolchain flags when adding -m32Setting CMAKE_C_FLAGS overwrites existing toolchain flags. Should append instead.
if(YYJSON_FORCE_32_BIT) - set(CMAKE_C_FLAGS -m32) - set(CMAKE_CXX_FLAGS -m32) + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -m32") + set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -m32") endif()lib/yyjson-0.12.0/CHANGELOG.md (1)
28-31
: Typos need correction in vendored changelog.As noted in the previous review, there are several typos present: "single-precison" should be "single-precision", "fix-point" should be "fixed-point", "incurrect" should be "incorrect", and "JSON Merge-Path" should be "JSON Merge Patch (RFC 7386)". However, since this is vendored code from upstream yyjson, these corrections should ideally be made upstream rather than in our local copy to maintain consistency with the original project.
Consider opening an issue or PR with the upstream yyjson project to fix these typos in their changelog, then updating our vendored version once the fixes are merged upstream.
Also applies to: 121-125, 153-155
lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome-sidebar-only.css (1)
30-35
: Align sidebar width with Doxygen TREEVIEW_WIDTH to avoid layout drift.Current CSS sets 335px; ensure Doxyfile’s TREEVIEW_WIDTH matches or adjust CSS.
Option A (match Doxyfile=250):
html { - --side-nav-fixed-width: 335px; + --side-nav-fixed-width: 250px; }Option B (keep 335px): update Doxyfile TREEVIEW_WIDTH to 335 and regenerate docs.
🧹 Nitpick comments (19)
lib/yyjson-0.12.0/doc/doxygen/html/search/all_13.js (1)
1-14
: Exclude vendored yyjson docs from source archives/installs; mark as generatedlib/yyjson-0.12.0/doc/doxygen/html is 2.9M; .gitattributes has no matching rules and lib/yyjson-0.12.0/CMakeLists.txt defines a Doxygen target (yyjson_doc ALL). Add the following.
+# Treat vendored yyjson docs as generated and exclude from git-archive +lib/yyjson-0.12.0/doc/** export-ignore +lib/yyjson-0.12.0/doc/** linguist-generated=true+option(FLB_INSTALL_YYJSON_DOCS "Install vendored yyjson docs" OFF) +if(FLB_INSTALL_YYJSON_DOCS) + install(DIRECTORY lib/yyjson-0.12.0/doc/doxygen/html + DESTINATION share/doc/fluent-bit/yyjson) +endif()lib/yyjson-0.12.0/doc/doxygen/html/navtreeindex0.js (1)
1-4
: Vendored, generated docs: consider excluding from JS lint.Since this file is auto‑generated by Doxygen, prefer ignoring it in Biome to avoid churn.
Add (or extend) Biome config:
+{ + "files": { "ignore": ["lib/yyjson-0.12.0/doc/doxygen/html/**"] } +}lib/yyjson-0.12.0/doc/doxygen/html/navtree.js (2)
233-241
: Avoid deprecated arguments.callee.Use a named local function for retry.
- (function() { // retry until we can scroll to the selected item - try { - const navtree=$('#nav-tree'); - navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); - } catch (err) { - setTimeout(arguments.callee, 0); - } - })(); + const retry = function retry() { // retry until we can scroll to the selected item + try { + const navtree = $('#nav-tree'); + navtree.scrollTo('#selected',100,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(retry, 0); + } + }; + retry();
96-106
: Drop javascript:void(0) anchors.Use href="#" and preventDefault for accessibility and CSP friendliness.
- node.expandToggle.href = "javascript:void(0)"; - node.expandToggle.onclick = function() { + node.expandToggle.href = "#"; + node.expandToggle.onclick = function(e) { + e.preventDefault(); if (node.expanded) { $(node.getChildrenUL()).slideUp("fast");- a.href = "javascript:void(0)"; - a.onclick = node.expandToggle.onclick; + a.href = "#"; + a.onclick = function(e){ e.preventDefault(); node.expandToggle.onclick(e); };Also applies to: 221-225
lib/yyjson-0.12.0/doc/doxygen/html/resize.js (1)
120-131
: Minor: avoid UA sniffing for touch.Consider feature detection (e.g., 'ontouchstart' in window) instead of regex UA matching.
- const device = navigator.userAgent.toLowerCase(); - const touch_device = device.match(/(iphone|ipod|ipad|android)/); + const touch_device = ('ontouchstart' in window) || navigator.maxTouchPoints > 0;lib/yyjson-0.12.0/doc/doxygen/html/menu.js (1)
30-43
: Prefer array iteration over for..in on arrays.for..in may traverse inherited props; use for..of or index loop.
- for (let i in data.children) { - let url; - const link = data.children[i].url; + for (const child of data.children) { + let url; + const link = child.url; if (link.substring(0,1)=='^') { url = link.substring(1); } else { url = relPath+link; } - result+='<li><a href="'+url+'">'+ - data.children[i].text+'</a>'+ - makeTree(data.children[i],relPath)+'</li>'; + result+='<li><a href="'+url+'">'+ child.text +'</a>'+ makeTree(child,relPath)+'</li>'; }lib/yyjson-0.12.0/doc/DataStructure.md (1)
92-93
: Fix grammar error in memory management section.There's a duplicate word that affects readability.
-A JSON value (`yyjson_val`, `yyjson_mut_val`) has the same lifetime as its document. The memory is managed by its - document and and cannot be freed independently. +A JSON value (`yyjson_val`, `yyjson_mut_val`) has the same lifetime as its document. The memory is managed by its + document and cannot be freed independently.lib/yyjson-0.12.0/doc/doxygen/html/doxygen.css (2)
377-380
: Remove duplicate white-space declarations.Line 379 duplicates the white-space property definition, which can lead to unexpected behavior.
text-indent: -53px; padding-left: 53px; padding-bottom: 0px; margin: 0px; -webkit-transition-property: background-color, box-shadow; -webkit-transition-duration: 0.5s; -moz-transition-property: background-color, box-shadow; -moz-transition-duration: 0.5s; -ms-transition-property: background-color, box-shadow; -ms-transition-duration: 0.5s; -o-transition-property: background-color, box-shadow; -o-transition-duration: 0.5s; transition-property: background-color, box-shadow; transition-duration: 0.5s; } text-wrap: unrestricted; - white-space: -moz-pre-wrap; /* Moz */ - white-space: -pre-wrap; /* Opera 4-6 */ - white-space: -o-pre-wrap; /* Opera 7 */ white-space: pre-wrap; /* CSS3 */ word-wrap: break-word; /* IE 5.5+ */
442-447
: Replace vendor-specific user-select properties with standard property.Multiple vendor-prefixed user-select properties are outdated for modern browsers. The standard property provides better compatibility.
.lineno { - -webkit-touch-callout: none; - -webkit-user-select: none; - -khtml-user-select: none; - -moz-user-select: none; - -ms-user-select: none; user-select: none; }lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome.css (5)
875-877
: Remove duplicate font-weight declaration.Line 876 duplicates the font-weight property, which can cause unexpected behavior.
#nav-tree .selected a { color: var(--primary-color) !important; - font-weight: bolder; font-weight: 600; }
1025-1027
: Remove duplicate overflow declarations.Lines 1025 and 1026 both set the overflow property, which is redundant.
blockquote { margin: 0 var(--spacing-medium) 0 var(--spacing-medium); padding: var(--spacing-small) var(--spacing-large); background: var(--blockquote-background); color: var(--blockquote-foreground); border-left: 0; - overflow: visible; border-radius: var(--border-radius-medium); overflow: visible; position: relative; }
2164-2169
: Fix shorthand property override and duplicate border-bottom.The
background
shorthand property overrides the previously setbackground-image
, and there are duplicateborder-bottom
declarations.#nav-path ul { - background-image: none; background: var(--page-background-color); border: none; border-top: 1px solid var(--separator-color); - border-bottom: 1px solid var(--separator-color); - border-bottom: 0; + border-bottom: 0; box-shadow: 0 0.75px 0 var(--separator-color); font-size: var(--navigation-font-size); }
2314-2322
: Remove duplicate overflow declarations.There are multiple duplicate overflow property declarations that can lead to confusion.
#nav-tree, div.fragment, pre.fragment, div.memproto, .contents center, .contents .center, .contents table:not(.memberdecls):not(.mlabels):not(.fieldtable):not(.memname) tbody, div.contents .toc { - overflow-x: auto; overflow-x: overlay; } #nav-tree { - overflow-x: auto; - overflow-y: auto; overflow-y: overlay; }
2357-2359
: Remove duplicate display declaration.Line 2358 duplicates the display property set on line 2346.
doxygen-awesome-dark-mode-toggle { display: inline-block; margin: 0 0 0 var(--spacing-small); padding: 0; width: var(--searchbar-height); height: var(--searchbar-height); background: none; border: none; border-radius: var(--searchbar-height); vertical-align: middle; text-align: center; line-height: var(--searchbar-height); font-size: 22px; - display: flex; + display: flex; align-items: center; justify-content: center; user-select: none; cursor: pointer; }lib/yyjson-0.12.0/doc/doxygen/Doxyfile.in (1)
21-21
: Fix inconsistent CHANGELOG path referenceThe CHANGELOG.md is referenced with the wrong path. Based on the repository structure, it should be:
- @CMAKE_CURRENT_SOURCE_DIR@/CHANGELOG.md + @CMAKE_CURRENT_SOURCE_DIR@/doc/CHANGELOG.mdbenchmarks/pack_json.c (1)
117-117
: Inconsistent memory deallocationThe
json
buffer allocated byflb_utils_read_file
should useflb_free()
for consistency with the Fluent Bit memory management conventions.- free(json); + flb_free(json);lib/yyjson-0.12.0/.github/codecov.yml (1)
1-2
: Add trailing newline to satisfy YAMLLint (new-line-at-end-of-file).Prevents avoidable CI noise.
Apply:
ignore: - test +
lib/yyjson-0.12.0/README.md (1)
2-9
: Vendor docs: exclude from markdownlint/CI to keep upstream files pristine.Suppresses many markdownlint warnings without forking upstream text.
Add ignore:
# .markdownlintignore lib/yyjson-0.12.0/**
lib/yyjson-0.12.0/doc/BuildAndTest.md (1)
1-4
: Same: ignore vendor docs for markdownlint.Avoids numerous heading/bullet lint findings without editing upstream docs.
Use either:
# .markdownlintignore lib/yyjson-0.12.0/**
or in markdownlint-cli2 config:
# .markdownlint-cli2.yaml globs: - "**/*.md" ignores: - "lib/yyjson-0.12.0/**"
📜 Review details
Configuration used: CodeRabbit UI
Review profile: CHILL
Plan: Pro
⛔ Files ignored due to path filters (51)
lib/yyjson-0.12.0/doc/doxygen/html/bc_s.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/bc_sd.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/closed.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/doc.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/docd.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/doxygen.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/folderclosed.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/folderclosedd.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/folderopen.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/folderopend.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/minus.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/minusd.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/nav_f.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/nav_fd.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/nav_g.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/nav_h.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/nav_hd.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/open.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/perf_reader_a14.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/perf_reader_ec2.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/plus.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/plusd.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/search/close.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/search/mag.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/search/mag_d.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/search/mag_sel.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/search/mag_seld.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/splitbar.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/splitbard.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/struct_idoc1.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/struct_idoc2.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/struct_ival.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/struct_mdoc.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/struct_mval.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/doxygen/html/sync_off.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/sync_on.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/tab_a.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/tab_ad.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/tab_b.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/tab_bd.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/tab_h.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/tab_hd.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/tab_s.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/doxygen/html/tab_sd.png
is excluded by!**/*.png
lib/yyjson-0.12.0/doc/images/perf_reader_a14.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/images/perf_reader_ec2.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/images/struct_idoc1.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/images/struct_idoc2.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/images/struct_ival.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/images/struct_mdoc.svg
is excluded by!**/*.svg
lib/yyjson-0.12.0/doc/images/struct_mval.svg
is excluded by!**/*.svg
📒 Files selected for processing (107)
CMakeLists.txt
(4 hunks)benchmarks/CMakeLists.txt
(1 hunks)benchmarks/pack_json.c
(1 hunks)cmake/headers.cmake
(1 hunks)cmake/libraries.cmake
(1 hunks)lib/yyjson-0.12.0/.gitattributes
(1 hunks)lib/yyjson-0.12.0/.github/ISSUE_TEMPLATE/bug_report.md
(1 hunks)lib/yyjson-0.12.0/.github/ISSUE_TEMPLATE/discussion.md
(1 hunks)lib/yyjson-0.12.0/.github/ISSUE_TEMPLATE/feature_request.md
(1 hunks)lib/yyjson-0.12.0/.github/codecov.yml
(1 hunks)lib/yyjson-0.12.0/.github/workflows/cmake.yml
(1 hunks)lib/yyjson-0.12.0/.gitignore
(1 hunks)lib/yyjson-0.12.0/CHANGELOG.md
(1 hunks)lib/yyjson-0.12.0/CMakeLists.txt
(1 hunks)lib/yyjson-0.12.0/LICENSE
(1 hunks)lib/yyjson-0.12.0/Package.swift
(1 hunks)lib/yyjson-0.12.0/README.md
(1 hunks)lib/yyjson-0.12.0/cmake/XcodeProperty.cmake
(1 hunks)lib/yyjson-0.12.0/doc/API.md
(1 hunks)lib/yyjson-0.12.0/doc/BuildAndTest.md
(1 hunks)lib/yyjson-0.12.0/doc/DataStructure.md
(1 hunks)lib/yyjson-0.12.0/doc/Performance.md
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/DoxyLayout.xml
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/Doxyfile.in
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/annotated.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/annotated_dup.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/building-and-testing.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/classes.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/clipboard.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/cookie.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/data-structures.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/deprecated.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/dir_e68e8157741866f444e17edd764ebbae.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome-darkmode-toggle.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome-sidebar-only-darkmode-toggle.css
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome-sidebar-only.css
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome.css
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/doxygen.css
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/doxygen_crawl.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/dynsections.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/files.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/files_dup.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/functions.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/functions_vars.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/globals.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/globals_defs.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/globals_dup.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/globals_func.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/globals_func.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/globals_type.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/globals_vars.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/globals_y.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/index.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/index.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/md__c_h_a_n_g_e_l_o_g.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/menu.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/menudata.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/navtree.css
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/navtree.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/navtreedata.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/navtreeindex0.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/navtreeindex1.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/navtreeindex2.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/pages.html
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/resize.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_0.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_1.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_10.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_11.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_12.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_13.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_14.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_15.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_16.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_17.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_18.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_19.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_1a.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_1b.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_1c.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_1d.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_1e.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_1f.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_2.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_20.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_3.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_4.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_5.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_6.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_7.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_8.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_9.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_a.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_b.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_c.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_d.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_e.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/all_f.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/classes_0.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/defines_0.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/defines_1.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/files_0.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/functions_0.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/pages_0.js
(1 hunks)lib/yyjson-0.12.0/doc/doxygen/html/search/pages_1.js
(1 hunks)
⛔ Files not processed due to max files limit (15)
- lib/yyjson-0.12.0/doc/doxygen/html/search/pages_2.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/pages_3.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/pages_4.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/pages_5.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/pages_6.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/pages_7.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/search.css
- lib/yyjson-0.12.0/doc/doxygen/html/search/search.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/searchdata.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/typedefs_0.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/variables_0.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/variables_1.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/variables_2.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/variables_3.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/variables_4.js
✅ Files skipped from review due to trivial changes (29)
- lib/yyjson-0.12.0/doc/doxygen/html/globals.html
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_19.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/pages_1.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_1c.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/pages_0.js
- lib/yyjson-0.12.0/doc/doxygen/html/files_dup.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_1f.js
- lib/yyjson-0.12.0/doc/doxygen/html/pages.html
- lib/yyjson-0.12.0/doc/doxygen/html/index.html
- lib/yyjson-0.12.0/doc/doxygen/html/deprecated.html
- lib/yyjson-0.12.0/doc/doxygen/html/search/files_0.js
- lib/yyjson-0.12.0/doc/doxygen/html/building-and-testing.html
- lib/yyjson-0.12.0/doc/doxygen/html/navtreeindex2.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_1d.js
- lib/yyjson-0.12.0/doc/doxygen/html/menudata.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_1b.js
- lib/yyjson-0.12.0/doc/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.js
- lib/yyjson-0.12.0/doc/doxygen/html/dir_e68e8157741866f444e17edd764ebbae.html
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_18.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_14.js
- lib/yyjson-0.12.0/doc/doxygen/html/classes.html
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_d.js
- lib/yyjson-0.12.0/doc/doxygen/html/files.html
- lib/yyjson-0.12.0/doc/doxygen/html/globals_defs.html
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_e.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_8.js
- lib/yyjson-0.12.0/doc/doxygen/html/annotated.html
- lib/yyjson-0.12.0/doc/doxygen/html/data-structures.html
- lib/yyjson-0.12.0/doc/doxygen/html/annotated_dup.js
🚧 Files skipped from review as they are similar to previous changes (57)
- lib/yyjson-0.12.0/doc/doxygen/html/doxygen_crawl.html
- lib/yyjson-0.12.0/.gitattributes
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_17.js
- lib/yyjson-0.12.0/.gitignore
- lib/yyjson-0.12.0/.github/ISSUE_TEMPLATE/feature_request.md
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_c.js
- benchmarks/CMakeLists.txt
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_b.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_16.js
- cmake/libraries.cmake
- lib/yyjson-0.12.0/doc/doxygen/html/globals_vars.html
- lib/yyjson-0.12.0/LICENSE
- lib/yyjson-0.12.0/doc/doxygen/html/navtreeindex1.js
- lib/yyjson-0.12.0/.github/ISSUE_TEMPLATE/discussion.md
- lib/yyjson-0.12.0/doc/Performance.md
- lib/yyjson-0.12.0/doc/doxygen/html/search/defines_1.js
- lib/yyjson-0.12.0/doc/doxygen/html/functions.html
- lib/yyjson-0.12.0/doc/doxygen/html/globals_func.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_20.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_f.js
- lib/yyjson-0.12.0/Package.swift
- lib/yyjson-0.12.0/doc/doxygen/html/md__c_h_a_n_g_e_l_o_g.html
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_11.js
- lib/yyjson-0.12.0/doc/doxygen/html/cookie.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_a.js
- lib/yyjson-0.12.0/doc/doxygen/html/globals_dup.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_12.js
- lib/yyjson-0.12.0/doc/doxygen/html/globals_y.html
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_4.js
- lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome-darkmode-toggle.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_3.js
- CMakeLists.txt
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_5.js
- lib/yyjson-0.12.0/doc/doxygen/html/functions_vars.html
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_1a.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_6.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_1e.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_15.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_2.js
- lib/yyjson-0.12.0/doc/doxygen/html/dynsections.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_10.js
- lib/yyjson-0.12.0/.github/ISSUE_TEMPLATE/bug_report.md
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_1.js
- lib/yyjson-0.12.0/doc/doxygen/html/clipboard.js
- lib/yyjson-0.12.0/doc/doxygen/html/navtreedata.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/defines_0.js
- lib/yyjson-0.12.0/doc/doxygen/html/globals_func.html
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_0.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/all_7.js
- cmake/headers.cmake
- lib/yyjson-0.12.0/doc/doxygen/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html
- lib/yyjson-0.12.0/.github/workflows/cmake.yml
- lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome-sidebar-only-darkmode-toggle.css
- lib/yyjson-0.12.0/doc/doxygen/html/globals_type.html
- lib/yyjson-0.12.0/doc/doxygen/html/index.js
- lib/yyjson-0.12.0/doc/doxygen/html/search/functions_0.js
- lib/yyjson-0.12.0/cmake/XcodeProperty.cmake
🧰 Additional context used
🧠 Learnings (1)
📚 Learning: 2025-08-31T12:46:11.940Z
Learnt from: ThomasDevoogdt
PR: fluent/fluent-bit#9277
File: .github/workflows/pr-compile-check.yaml:147-151
Timestamp: 2025-08-31T12:46:11.940Z
Learning: In fluent-bit CMakeLists.txt, the system library preference flags are defined as FLB_PREFER_SYSTEM_LIB_ZSTD and FLB_PREFER_SYSTEM_LIB_KAFKA with the FLB_ prefix.
Applied to files:
lib/yyjson-0.12.0/CMakeLists.txt
🧬 Code graph analysis (1)
benchmarks/pack_json.c (4)
src/flb_pack_json.c (1)
flb_pack_json_ext
(23-64)src/flb_mp.c (1)
flb_mp_count
(43-46)include/fluent-bit/flb_mem.h (1)
flb_free
(126-128)src/flb_utils.c (1)
flb_utils_read_file
(1547-1550)
🪛 Biome (2.1.2)
lib/yyjson-0.12.0/doc/doxygen/html/navtree.js
[error] 35-35: eval() exposes to security risks and performance issues.
See the MDN web docs for more details.
Refactor the code so that it doesn't need to call eval().
(lint/security/noGlobalEval)
[error] 395-395: eval() exposes to security risks and performance issues.
See the MDN web docs for more details.
Refactor the code so that it doesn't need to call eval().
(lint/security/noGlobalEval)
lib/yyjson-0.12.0/doc/doxygen/html/doxygen-awesome.css
[error] 2164-2164: Unexpected shorthand property background after background-image
(lint/suspicious/noShorthandPropertyOverrides)
[error] 876-876: Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally.
font-weight is already defined here.
Remove or rename the duplicate property to ensure consistent styling.
(lint/suspicious/noDuplicateProperties)
[error] 1026-1026: Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally.
overflow is already defined here.
Remove or rename the duplicate property to ensure consistent styling.
(lint/suspicious/noDuplicateProperties)
[error] 1155-1155: Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally.
position is already defined here.
Remove or rename the duplicate property to ensure consistent styling.
(lint/suspicious/noDuplicateProperties)
[error] 2168-2168: Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally.
border-bottom is already defined here.
Remove or rename the duplicate property to ensure consistent styling.
(lint/suspicious/noDuplicateProperties)
[error] 2315-2315: Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally.
overflow-x is already defined here.
Remove or rename the duplicate property to ensure consistent styling.
(lint/suspicious/noDuplicateProperties)
[error] 2321-2321: Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally.
overflow-y is already defined here.
Remove or rename the duplicate property to ensure consistent styling.
(lint/suspicious/noDuplicateProperties)
[error] 2358-2358: Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally.
display is already defined here.
Remove or rename the duplicate property to ensure consistent styling.
(lint/suspicious/noDuplicateProperties)
lib/yyjson-0.12.0/doc/doxygen/html/doxygen.css
[error] 444-444: Unknown property is not allowed.
See CSS Specifications and browser specific properties for more details.
To resolve this issue, replace the unknown property with a valid CSS property.
(lint/correctness/noUnknownProperty)
[error] 943-943: Unknown property is not allowed.
See CSS Specifications and browser specific properties for more details.
To resolve this issue, replace the unknown property with a valid CSS property.
(lint/correctness/noUnknownProperty)
[error] 1013-1013: Unknown property is not allowed.
See CSS Specifications and browser specific properties for more details.
To resolve this issue, replace the unknown property with a valid CSS property.
(lint/correctness/noUnknownProperty)
[error] 1564-1564: Unknown property is not allowed.
See CSS Specifications and browser specific properties for more details.
To resolve this issue, replace the unknown property with a valid CSS property.
(lint/correctness/noUnknownProperty)
[error] 379-379: Duplicate properties can lead to unexpected behavior and may override previous declarations unintentionally.
white-space is already defined here.
Remove or rename the duplicate property to ensure consistent styling.
(lint/suspicious/noDuplicateProperties)
lib/yyjson-0.12.0/doc/doxygen/html/navtree.css
[error] 92-92: unexpected character $
(parse)
lib/yyjson-0.12.0/doc/doxygen/html/navtreeindex0.js
[error] 118-119: This property is later overwritten by an object member with the same name.
Overwritten with this property.
If an object property with the same name is defined multiple times (except when combining a getter with a setter), only the last definition makes it into the object and previous definitions are ignored.
Unsafe fix: Remove this property.
(lint/suspicious/noDuplicateObjectKeys)
[error] 121-122: This property is later overwritten by an object member with the same name.
Overwritten with this property.
If an object property with the same name is defined multiple times (except when combining a getter with a setter), only the last definition makes it into the object and previous definitions are ignored.
Unsafe fix: Remove this property.
(lint/suspicious/noDuplicateObjectKeys)
[error] 126-127: This property is later overwritten by an object member with the same name.
Overwritten with this property.
If an object property with the same name is defined multiple times (except when combining a getter with a setter), only the last definition makes it into the object and previous definitions are ignored.
Unsafe fix: Remove this property.
(lint/suspicious/noDuplicateObjectKeys)
🪛 markdownlint-cli2 (0.17.2)
lib/yyjson-0.12.0/README.md
33-33: Heading levels should only increment by one level at a time
Expected: h2; Actual: h4
(MD001, heading-increment)
73-73: Trailing punctuation in heading
Punctuation: ':'
(MD026, no-trailing-punctuation)
74-74: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
75-75: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
75-75: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
76-76: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
76-76: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
77-77: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
77-77: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
78-78: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
83-83: Heading levels should only increment by one level at a time
Expected: h2; Actual: h3
(MD001, heading-increment)
200-200: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
201-201: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
201-201: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
202-202: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
202-202: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
203-203: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
203-203: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
204-204: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
204-204: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
232-232: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
233-233: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
234-234: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
235-235: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
236-236: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
237-237: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
238-238: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
239-239: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
240-240: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
241-241: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
lib/yyjson-0.12.0/doc/API.md
7-7: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
9-9: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
13-13: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
49-49: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
76-76: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
81-81: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
101-101: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
124-124: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
149-149: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
178-178: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
196-196: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
210-210: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
230-230: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
238-238: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
264-264: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
302-302: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
309-309: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
321-321: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
340-340: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
370-370: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
373-373: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
385-385: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
388-388: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
395-395: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
398-398: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
408-408: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
419-419: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
427-427: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
430-430: Fenced code blocks should have a language specified
(MD040, fenced-code-language)
438-438: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
441-441: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
447-447: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
456-456: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
464-464: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
467-467: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
472-472: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
473-473: Bare URL used
(MD034, no-bare-urls)
494-494: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
498-498: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
541-541: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
568-568: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
596-596: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
643-643: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
647-647: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
655-655: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
658-658: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
662-662: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
670-670: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
678-678: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
687-687: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
695-695: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
702-702: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
706-706: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
712-712: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
721-721: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
723-723: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
745-745: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
863-863: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
887-887: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
941-941: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
967-967: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1024-1024: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1075-1075: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1115-1115: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1142-1142: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1179-1179: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1245-1245: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1275-1275: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1333-1333: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1335-1335: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1464-1464: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1482-1482: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1499-1499: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1501-1501: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1505-1505: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
1506-1506: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
1507-1507: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
1508-1508: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
1509-1509: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
1519-1519: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1523-1523: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
1524-1524: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
1525-1525: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
1526-1526: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
1526-1526: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
1527-1527: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
1527-1527: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
1528-1528: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
1528-1528: Unordered list indentation
Expected: 2; Actual: 4
(MD007, ul-indent)
1529-1529: Unordered list style
Expected: dash; Actual: asterisk
(MD004, ul-style)
1544-1544: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1561-1561: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1563-1563: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1577-1577: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1601-1601: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1607-1607: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1653-1653: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1667-1667: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1715-1715: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1725-1725: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1755-1755: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
1762-1762: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
lib/yyjson-0.12.0/doc/BuildAndTest.md
7-7: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4
(MD001, heading-increment)
21-21: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4
(MD001, heading-increment)
26-26: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4
(MD001, heading-increment)
48-48: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4
(MD001, heading-increment)
59-59: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4
(MD001, heading-increment)
70-70: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4
(MD001, heading-increment)
85-85: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4
(MD001, heading-increment)
108-108: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4
(MD001, heading-increment)
122-122: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4
(MD001, heading-increment)
128-128: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4
(MD001, heading-increment)
151-151: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4
(MD001, heading-increment)
168-168: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4
(MD001, heading-increment)
182-182: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4
(MD001, heading-increment)
199-199: Heading levels should only increment by one level at a time
Expected: h3; Actual: h4
(MD001, heading-increment)
lib/yyjson-0.12.0/doc/DataStructure.md
18-18: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
40-40: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
55-55: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
76-76: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
88-88: Heading style
Expected: setext; Actual: atx
(MD003, heading-style)
🪛 YAMLlint (1.37.1)
lib/yyjson-0.12.0/.github/codecov.yml
[error] 2-2: no new line character at the end of file
(new-line-at-end-of-file)
⏰ Context from checks skipped due to timeout of 90000ms. You can increase the timeout in your CodeRabbit configuration to a maximum of 15 minutes (900000ms). (26)
- GitHub Check: pr-windows-build / call-build-windows-package (Windows 64bit (Arm64), amd64_arm64, -DCMAKE_SYSTEM_NAME=Windows -DCMA...
- GitHub Check: pr-windows-build / call-build-windows-package (Windows 32bit, x86, x86-windows-static, 3.31.6)
- GitHub Check: pr-windows-build / call-build-windows-package (Windows 64bit, x64, x64-windows-static, 3.31.6)
- GitHub Check: run-ubuntu-unit-tests (-DSANITIZE_UNDEFINED=On, 3.31.6, clang, clang++)
- GitHub Check: run-ubuntu-unit-tests (-DSANITIZE_ADDRESS=On, 3.31.6, clang, clang++)
- GitHub Check: run-ubuntu-unit-tests (-DFLB_SIMD=Off, 3.31.6, gcc, g++)
- GitHub Check: run-ubuntu-unit-tests (-DFLB_SANITIZE_MEMORY=On, 3.31.6, clang, clang++)
- GitHub Check: run-ubuntu-unit-tests (-DFLB_SANITIZE_THREAD=On, 3.31.6, clang, clang++)
- GitHub Check: run-ubuntu-unit-tests (-DFLB_SIMD=Off, 3.31.6, clang, clang++)
- GitHub Check: run-ubuntu-unit-tests (-DFLB_SIMD=On, 3.31.6, clang, clang++)
- GitHub Check: run-ubuntu-unit-tests (-DFLB_SANITIZE_MEMORY=On, 3.31.6, gcc, g++)
- GitHub Check: run-ubuntu-unit-tests (-DFLB_SIMD=On, 3.31.6, gcc, g++)
- GitHub Check: run-ubuntu-unit-tests (-DFLB_ARROW=On, 3.31.6, gcc, g++)
- GitHub Check: run-ubuntu-unit-tests (-DFLB_SANITIZE_THREAD=On, 3.31.6, gcc, g++)
- GitHub Check: run-ubuntu-unit-tests (-DSANITIZE_ADDRESS=On, 3.31.6, gcc, g++)
- GitHub Check: run-ubuntu-unit-tests (-DSANITIZE_UNDEFINED=On, 3.31.6, gcc, g++)
- GitHub Check: run-ubuntu-unit-tests (-DFLB_COVERAGE=On, 3.31.6, gcc, g++)
- GitHub Check: run-ubuntu-unit-tests (-DFLB_SMALL=On, 3.31.6, clang, clang++)
- GitHub Check: run-ubuntu-unit-tests (-DFLB_SMALL=On, 3.31.6, gcc, g++)
- GitHub Check: run-ubuntu-unit-tests (-DFLB_JEMALLOC=Off, 3.31.6, gcc, g++)
- GitHub Check: run-ubuntu-unit-tests (-DFLB_JEMALLOC=Off, 3.31.6, clang, clang++)
- GitHub Check: run-ubuntu-unit-tests (-DFLB_JEMALLOC=On, 3.31.6, gcc, g++)
- GitHub Check: run-ubuntu-unit-tests (-DFLB_JEMALLOC=On, 3.31.6, clang, clang++)
- GitHub Check: PR - fuzzing test
- GitHub Check: pr-compile-system-libs (-DFLB_PREFER_SYSTEM_LIBS=On, 3.31.6, gcc, g++, ubuntu-24.04, clang-14)
- GitHub Check: pr-compile-centos-7
🔇 Additional comments (9)
lib/yyjson-0.12.0/doc/doxygen/html/search/classes_0.js (1)
1-22
: LGTM: static Doxygen search index; no external refs in this fileThis JS looks like stock Doxygen output. Safe to vendor as-is.
lib/yyjson-0.12.0/doc/doxygen/html/search/all_13.js (1)
1-14
: LGTM: generated Doxygen assetThis looks like standard Doxygen-generated search index; safe to vendor as-is.
lib/yyjson-0.12.0/doc/doxygen/html/resize.js (1)
26-46
: LGTM.Width persistence and margin updates look correct; cookie name is scoped and barWidth handling is sane.
lib/yyjson-0.12.0/doc/doxygen/html/menu.js (1)
25-133
: Docs UI changes look fine.Menu construction, responsive toggle, and search box placement read correctly.
lib/yyjson-0.12.0/doc/doxygen/DoxyLayout.xml (1)
1-269
: Comprehensive layout structure looks good!The Doxygen layout configuration is well-structured and covers all necessary documentation components for yyjson. The navigation tabs and page templates are appropriately configured for a C library documentation.
lib/yyjson-0.12.0/CMakeLists.txt (1)
5-6
: LGTM! Proper CMake version range supportGood use of CMake version range syntax (3.5...3.31) for compatibility with both old and new CMake versions.
lib/yyjson-0.12.0/CHANGELOG.md (1)
1-207
: Verified — yyjson v0.12.0 (released 2025-08-18) is the latest release. No action required for this PR.lib/yyjson-0.12.0/doc/doxygen/html/search/all_9.js (1)
1-6
: LGTM on generated doc asset.No functional impact.
lib/yyjson-0.12.0/README.md (1)
243-246
: License compliance check.README states MIT; ensure lib/yyjson-0.12.0/LICENSE is included and NOTICE/THIRD_PARTY files (if any) reference it.
ret = flb_pack_json_ext(json, len, &out_buf1, &out_size1, &root_type1, &opts); | ||
if (ret != 0) { | ||
fprintf(stderr, "error jsmn\n"); | ||
return -1; | ||
} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fix memory leak when first encoding fails
If the first encoding fails, out_buf1
is not freed before returning, causing a memory leak.
/* jsmn */
opts.backend = FLB_PACK_JSON_BACKEND_JSMN;
ret = flb_pack_json_ext(json, len, &out_buf1, &out_size1, &root_type1, &opts);
if (ret != 0) {
fprintf(stderr, "error jsmn\n");
return -1;
}
Committable suggestion skipped: line range outside the PR's diff.
🤖 Prompt for AI Agents
In benchmarks/pack_json.c around lines 32-36, the error path after
flb_pack_json_ext failing returns without freeing out_buf1 causing a memory
leak; before returning on ret != 0, free(out_buf1) (but only if it’s non-NULL),
and ensure out_buf1 is initialized to NULL prior to the call so the cleanup is
safe.
"functions_vars.html":[6,2,2,1], | ||
"globals.html":[6,1,0], | ||
"globals.html":[6,1,0,0], | ||
"globals_defs.html":[6,1,4], | ||
"globals_func.html":[6,1,1], | ||
"globals_func.html":[6,1,1,0], | ||
"globals_type.html":[6,1,3], | ||
"globals_vars.html":[6,1,2], | ||
"globals_y.html":[6,1,0,1], | ||
"index.html":[], | ||
"index.html":[0], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Duplicate keys in NAVTREEINDEX0 break lint and shadow earlier entries.
Keys repeat for:
- Line 119 vs 120: "globals.html"
- Line 122 vs 123: "globals_func.html"
- Line 127 vs 128: "index.html"
Keep the last occurrence of each and remove earlier ones to satisfy noDuplicateObjectKeys.
Apply minimal deletions:
- "globals.html":[6,1,0],
+ /* removed duplicate "globals.html" entry; last occurrence kept */
- "globals_func.html":[6,1,1],
+ /* removed duplicate "globals_func.html" entry; last occurrence kept */
- "index.html":[],
+ /* removed duplicate "index.html" entry; last occurrence kept */
📝 Committable suggestion
‼️ IMPORTANT
Carefully review the code before committing. Ensure that it accurately replaces the highlighted code, contains no missing lines, and has no issues with indentation. Thoroughly test & benchmark the code to ensure it meets the requirements.
"functions_vars.html":[6,2,2,1], | |
"globals.html":[6,1,0], | |
"globals.html":[6,1,0,0], | |
"globals_defs.html":[6,1,4], | |
"globals_func.html":[6,1,1], | |
"globals_func.html":[6,1,1,0], | |
"globals_type.html":[6,1,3], | |
"globals_vars.html":[6,1,2], | |
"globals_y.html":[6,1,0,1], | |
"index.html":[], | |
"index.html":[0], | |
"functions_vars.html":[6,2,2,1], | |
/* removed duplicate "globals.html" entry; last occurrence kept */ | |
"globals.html":[6,1,0,0], | |
"globals_defs.html":[6,1,4], | |
/* removed duplicate "globals_func.html" entry; last occurrence kept */ | |
"globals_func.html":[6,1,1,0], | |
"globals_type.html":[6,1,3], | |
"globals_vars.html":[6,1,2], | |
"globals_y.html":[6,1,0,1], | |
/* removed duplicate "index.html" entry; last occurrence kept */ | |
"index.html":[0], |
🧰 Tools
🪛 Biome (2.1.2)
[error] 118-119: This property is later overwritten by an object member with the same name.
Overwritten with this property.
If an object property with the same name is defined multiple times (except when combining a getter with a setter), only the last definition makes it into the object and previous definitions are ignored.
Unsafe fix: Remove this property.
(lint/suspicious/noDuplicateObjectKeys)
[error] 121-122: This property is later overwritten by an object member with the same name.
Overwritten with this property.
If an object property with the same name is defined multiple times (except when combining a getter with a setter), only the last definition makes it into the object and previous definitions are ignored.
Unsafe fix: Remove this property.
(lint/suspicious/noDuplicateObjectKeys)
[error] 126-127: This property is later overwritten by an object member with the same name.
Overwritten with this property.
If an object property with the same name is defined multiple times (except when combining a getter with a setter), only the last definition makes it into the object and previous definitions are ignored.
Unsafe fix: Remove this property.
(lint/suspicious/noDuplicateObjectKeys)
🤖 Prompt for AI Agents
In lib/yyjson-0.12.0/doc/doxygen/html/navtreeindex0.js around lines 118 to 128,
there are duplicate object keys that break linting (duplicate "globals.html" at
line 119 vs 120, duplicate "globals_func.html" at line 122 vs 123, and duplicate
"index.html" at line 127 vs 128); remove the earlier occurrences (lines 119, 122
and 127) so only the last occurrence of each key remains, keeping the minimal
deletions necessary to eliminate duplicate keys.
Short story: 2.81x performance improvement when parsing JSON
List of things in this PR:
U+FFFD
(WIP here: Add Unicode replacement and surrogate tolerance flags ibireme/yyjson#227)what is pending ?
Fluent Bit is licensed under Apache 2.0, by submitting this pull request I understand that this code will be released under the terms of that license.
Summary by CodeRabbit
New Features
Documentation
Chores