coreWorkflow.md,门禁见 regressionGates.md。RyanJson_t = struct RyanJsonNode *。struct RyanJsonNode 公开只有 next 字段;其余元数据与值在 payload 区。RyanJsonInternalNewNode)分配大小 = 基础头 + 类型值区 + 可选 inline 区:
sizeof(node) + 1B flagsizeof(RyanJson_t)(children 指针)RyanJsonInlineStringSize优化含义:
RyanJsonInternalChangeString 负责模式切换和旧堆块释放。优化红线:
IsLast=0:next 指向兄弟。IsLast=1:next 指向父节点(不是兄弟)。影响:
RyanJsonGetNext 会屏蔽 IsLast 并返回 NULL。node->next 做回溯。next 一律当兄弟指针。RyanJsonDelete:下沉子树,叶子释放后通过线索回溯。RyanJsonDuplicate:同步遍历源树与目标树,依赖 IsLast 维护层级。优化建议:
jsonMalloc/jsonFree/jsonRealloc 为全局函数指针。RyanJsonInitHooks 先初始化。NULL,未初始化状态不可作为有效基线。RyanJsonXxx(头文件公开声明)。RyanJsonInternalApi + RyanJsonInternalXxx。RyanJsonStrictObjectKeyCheck 改变 parse/insert/replace 的重复 key 行为。RyanJsonInlineStringSize、RyanJsonMallocHeaderSize、RyanJsonMallocAlign 影响节点内存布局边界。优化动作前,先锁定这些宏值。
RyanJson.h / RyanJsonConfig.h)RyanJson*.c)example/ -> test/unityTest/ -> test/fuzzer/)若三者冲突,先修文档和测试,再收敛实现。
RyanJson/RyanJson.c:hooks 全局变量与 RyanJsonInitHooksRyanJson/RyanJsonUtils.c、RyanJson/RyanJsonParse.c、RyanJson/RyanJsonPrint.c:jsonMalloc/jsonFree 调用路径test/unityTest/common/testCommon.c、test/fuzzer/entry.c:测试入口 hooks 初始化