satelliteprogrammer
40a62947d3
support JSON Merge Patch (RFC 7396) diff creation ( #4965 )
...
* support JSON Merge Patch (RFC 7396) diff creation
The JSON merge patch document format describes the set of modifications
to a resource's content, that more closely mimics the syntax of the
resource being modified.
However, and in contrast to JSON Patch (RFC 6902), a JSON Merge Patch
cannot express certain modifications, e.g., changing an array element
at a specific index, or setting a specific object value to null.
The null value in a JSON Merge Patch is used to remove the key from the
object.
The diff algorithm is not part of the RFC 7396, but it was tested
against all examples provided, plus additional cases on how null values
are handled.
Signed-off-by: Luís Murta <luis@murta.dev >
* improve algorithm efficiency
Signed-off-by: Luís Murta <luis@murta.dev >
* fix inconsistent nulls and empty arrays
Also add CHECKs for the patch, documentation and run `make amalgamate`.
Signed-off-by: Luís Murta <luis@murta.dev >
* documentation cleanups
Signed-off-by: Luís Murta <luis@murta.dev >
* add an iterative fallback to merge_diff
Bound the recursion depth like diff() and merge_patch(), and test values
nested past the bound.
Signed-off-by: Luís Murta <luis@murta.dev >
* address the remaining review comments
Signed-off-by: Luís Murta <luis@murta.dev >
* move multi-line raw strings out of CHECK macros
GCC 4.8/5, ICPC and NVHPC mis-tokenize multi-line raw string literals
inside macro arguments, breaking the build or the parsed JSON.
Signed-off-by: Luís Murta <luis@murta.dev >
---------
Signed-off-by: Luís Murta <luis@murta.dev >
2026-10-12 09:33:43 +02:00
..
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-09 16:56:14 +02:00
2026-10-04 12:00:31 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-05-22 08:01:46 +02:00
2025-05-22 08:01:46 +02:00
2026-10-08 16:21:59 +02:00
2026-10-08 16:21:59 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-08 16:11:16 +02:00
2026-09-15 20:46:37 +02:00
2026-09-15 20:46:37 +02:00
2026-10-08 16:11:16 +02:00
2026-09-15 20:46:37 +02:00
2026-09-15 20:46:37 +02:00
2026-10-08 16:11:16 +02:00
2026-09-15 20:46:37 +02:00
2026-09-15 20:46:37 +02:00
2026-10-08 16:11:16 +02:00
2026-10-02 11:32:15 +02:00
2026-09-15 20:46:37 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-09-16 08:07:00 +02:00
2025-01-19 10:42:21 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-09-16 08:07:00 +02:00
2025-01-19 10:42:21 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-04 12:13:49 +02:00
2026-10-04 12:13:49 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-07-02 15:59:36 +02:00
2026-07-02 15:59:36 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-09-27 16:56:21 +02:00
2026-09-27 16:56:21 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-06 22:33:29 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-05-13 07:59:16 +02:00
2026-05-13 07:59:16 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-05-13 07:59:16 +02:00
2026-05-13 07:59:16 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-05-13 07:59:16 +02:00
2026-05-13 07:59:16 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-12 09:33:43 +02:00
2026-10-12 09:33:43 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-01-01 20:00:39 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-01-18 22:59:09 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-01-18 22:59:09 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2026-05-16 10:04:22 +02:00
2026-05-16 10:04:22 +02:00
2026-05-16 10:04:22 +02:00
2026-05-16 10:04:22 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-04-11 10:41:14 +02:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2026-05-18 20:37:07 +02:00
2026-05-18 20:37:07 +02:00
2026-05-18 20:37:07 +02:00
2026-05-18 20:37:07 +02:00
2026-05-18 20:37:07 +02:00
2026-05-18 20:37:07 +02:00
2025-10-30 10:23:04 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-04-11 10:41:14 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-09-16 08:07:00 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-08 16:21:59 +02:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2026-08-20 12:32:50 +02:00
2026-08-04 08:45:02 +02:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-07-09 20:39:59 +02:00
2026-07-09 20:39:59 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-07-02 15:59:36 +02:00
2026-07-02 15:59:36 +02:00
2026-10-07 19:18:51 +02:00
2026-10-07 19:18:51 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2026-09-27 16:56:21 +02:00
2026-09-27 16:56:21 +02:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-05-22 08:01:46 +02:00
2025-05-22 08:01:46 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2026-10-02 11:32:15 +02:00
2026-10-02 11:32:15 +02:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-01-17 06:53:35 +01:00
2025-09-16 08:07:00 +02:00
2025-09-16 08:07:00 +02:00
2026-10-06 22:33:29 +02:00
2026-10-06 22:33:29 +02:00