100 Commits
Author SHA1 Message Date
andrew 2a52162d7f Add stack chk symbols to aarch64 imports 2026-06-14 20:47:28 -04:00
andrew e8f51eff53 Guard --nobranchprotection behind a version check
Older versions of hardening-check (as shipped by some Ubuntu releases)
don't support --nobranchprotection and error out. Probe --help at
configure time and only add the flag when it's available; old versions
that lack the flag also don't check for branch protection, so omitting
it is safe.
2026-06-14 20:34:29 -04:00
andrew 9ea798dba4 Fix aarch64 multi-byte UTF-8 parsing and add symbol imports file
On aarch64, char is unsigned by default, so *buf < 0x20 never held for
bytes >= 0x80, causing strDfa.scan to be skipped for multi-byte UTF-8
sequences in batch mode. Cast to int8_t to get the same signed comparison
used by the SIMD path.

Also add aarch64-symbol-imports.txt with the GLIBC 2.17 versioned symbols
imported by the library on that platform.
2026-06-14 19:42:41 -04:00
andrew 12c976a62c Fix make build by depending on target name instead of TARGET_OBJECTS in custom command
The Makefile generator does not create a rule for individual object files
when $<TARGET_OBJECTS:...> is used in DEPENDS of add_custom_command. Depending
on the target name instead establishes a proper target-level dependency.
2026-06-14 19:28:47 -04:00
andrew b079b293f7 Include <cstdlib> for malloc and free in lib.cpp 2026-06-14 19:22:32 -04:00
andrew d48fe618ac Add CI 2026-06-14 19:18:31 -04:00
andrew 470564a5df Improve coverage 2026-06-14 18:03:30 -04:00
andrew b9142bf36a Avoid some unnecessary string destruction in bench 2026-06-14 17:53:29 -04:00
andrew 97f1d3d352 Skip string and go directly to string2 from object3 2026-06-14 17:16:45 -04:00
andrew d8c9491eb3 Add fuzz test that finds previously missed coverage 2026-06-14 16:50:36 -04:00
andrew b4144298bb Update doctest.h to 2.5.2 2026-06-14 16:35:53 -04:00
andrew b894ae7a80 Fix arch-specific hardening_check ignore flags
hardening-check tests both CET (x86-only) and branch protection
(arm64-only). Pass the ignore flag for whichever doesn't apply to the
build arch so the test passes on all supported architectures.
2026-06-14 16:31:08 -04:00
andrew eb9925ffec Only pass -pie when linking executables
Passing -pie globally made the driver link Scrt1.o into shared
libraries, which fails with an undefined reference to main.
2026-06-14 16:20:48 -04:00
andrew 995ddf329f Fixes for gcc 15 2025-11-06 12:49:38 -05:00
andrew 5fc823b392 This didn't belong here and isn't really necessary 2025-08-25 16:50:43 -04:00
andrew 490b49e55d Remove redundancy 2025-08-25 16:49:21 -04:00
andrew 6fc263074e Simplify flowchart 2025-08-25 16:46:46 -04:00
andrew befb464619 More README tinkers 2025-08-25 16:39:01 -04:00
andrew f2bb72b3dc More clarifications in README 2025-08-25 16:19:34 -04:00
andrew 81814fa590 Simplify flow chart 2025-08-25 16:00:58 -04:00
andrew 611bccfb9b Update README 2025-08-25 15:57:07 -04:00
andrew e8d2855b36 Add maintainer notice 2025-08-25 15:43:37 -04:00
andrew 1f540a436a Tailor readme to prospective users 2025-08-25 15:34:29 -04:00
andrew c303478ad7 Avoid Utf8Dfa scan if there's no non-ascii 2025-08-15 19:45:00 -04:00
andrew 0b24636c4f Update corpus 2025-08-04 14:42:50 -04:00
andrew bcb5a20f27 Distinguish on_string_data and on_key_data 2025-08-04 14:15:49 -04:00
andrew 39fe9be4dc Clarify header comments 2025-08-04 12:44:00 -04:00
andrew 7801dbe6d7 Add missing files 2025-08-04 12:43:45 -04:00
andrew 0ed07e454a Merge remote-tracking branch 'origin/flags' 2025-08-04 12:36:20 -04:00
andrew 18a66009e1 Clarify memory usage comment in readme 2025-08-04 12:35:48 -04:00
andrew 6e244d1318 Add packaging and symbol visibility tests
Only tested on x86 linux so far
2025-08-04 12:35:26 -04:00
andrew 9e4f90f218 Add WeaselJsonRaw flag 2025-06-25 18:44:37 -04:00
andrew 3e72181bee Add flags argument to WeaselJsonParser_create 2025-06-25 16:44:31 -04:00
andrew 01d81981f7 Fix arm build 2025-06-25 11:55:19 -04:00
andrew 89211753e2 Add to corpus 2025-06-24 15:58:58 -04:00
andrew 2e803b5a76 Fix bogus assert. 0x10ffff is a valid code point 2025-06-24 15:48:16 -04:00
andrew a8aab0187e Add some comments 2025-06-24 15:10:01 -04:00
andrew 63a1be497b Remove unused table
It was making it into the shared object somehow
2025-06-24 15:09:21 -04:00
andrew 7470c69845 Ignore error in some places where push can't fail 2025-06-24 14:57:27 -04:00
andrew c2f5d6983a Store stackEnd instead of stackSize 2025-06-24 14:57:11 -04:00
andrew 575b6e5c62 Direct call to next continuation in some cases 2025-06-24 14:46:20 -04:00
andrew 67e63dc611 Multiply stackSize by sizeof stack element 2025-06-24 13:33:39 -04:00
andrew 9319076b44 Remove Parser3::complete 2025-06-24 13:15:39 -04:00
andrew d1de15a0ca Don't flush strings from keepGoing 2025-06-24 13:02:54 -04:00
andrew dfce1ae412 Buf fix: Check for empty before resuming n_string2 2025-06-24 12:43:01 -04:00
andrew 5e3fa62a06 Remove acceptsEmptyString table 2025-06-24 12:19:31 -04:00
andrew 330101a937 Handle unescaping directly in n_string2 if space permits 2025-06-24 10:43:40 -04:00
andrew 9803364adb Use table for hex values 2025-06-23 21:52:17 -04:00
andrew 2299904557 Compare dfa and simdjson::validate_utf8 2025-06-23 14:29:49 -04:00
andrew 578e507b96 Remove .clang-format 2025-06-23 14:29:40 -04:00
andrew d536f7ba69 Add debugging printf commented out 2025-06-23 14:18:15 -04:00
andrew 851d07bc43 Use != instead of > 0 2025-06-23 14:15:25 -04:00
andrew 451c07747e Move dfa's to tables.h 2025-06-23 14:15:05 -04:00
andrew 5df9d958ab Unroll whitespace-skipping loop 2025-06-23 14:00:29 -04:00
andrew 47a418b689 Separate "normal" and "unicode" escapes 2025-06-23 13:18:05 -04:00
andrew fe60881476 Add literals bench 2025-06-23 13:10:41 -04:00
andrew 4a9dfe0b45 Nest escape handling under N_STRING2 2025-06-23 13:06:12 -04:00
andrew 7ae2ef5443 Stop inlining strings and numbers into n_value
Too complex
2025-06-23 13:00:10 -04:00
andrew 2cd2975ad4 Remove dead code 2025-06-23 12:36:49 -04:00
andrew f4c4ed4c36 Compare specific inputs with simdjson dom 2025-06-23 12:24:28 -04:00
andrew 03156d2036 Benchmarks that push the implementation in a specific way 2025-06-23 12:19:28 -04:00
andrew 56fc45ab52 Remove dead code 2025-06-23 11:53:39 -04:00
andrew e477ff095a clangd and clang-format pre commit agree now
Sheesh
2025-06-23 10:53:11 -04:00
andrew fc1b3ac147 Fix string scan bug 2025-06-22 23:02:38 -04:00
andrew 95250d1668 Improve fuzz testing to find string scan bug 2025-06-22 23:00:34 -04:00
andrew 5a74124cae Fix bug 2025-06-22 19:47:59 -04:00
andrew 337d93bcea simd scan with dfa as fallback 2025-06-21 21:59:21 -04:00
andrew fa0cc1a970 Scan string directly in n_value 2025-06-21 21:17:12 -04:00
andrew 229a68bfdd Switch to dfa for strings 2025-06-21 17:12:48 -04:00
andrew 6c48c40d67 Rename tables 2025-06-21 16:05:02 -04:00
andrew 1df18b3c57 Add comments to dfa's 2025-06-21 16:01:35 -04:00
andrew 7806f6420f Add to corpus 2025-06-21 15:56:42 -04:00
andrew 5613303d52 Add automata to recognize utf8 in strings 2025-06-21 15:56:15 -04:00
andrew d1523acf94 Improve scan codegen 2025-06-20 15:11:29 -04:00
andrew 2be21c5453 Avoid pushing N_NUMBER on the stack if possible 2025-06-20 14:33:37 -04:00
andrew 4f24a44cb2 Improve scan 2025-06-20 10:02:37 -04:00
andrew 976f64b7d3 Try out dfa for numbers 2025-06-19 16:13:46 -04:00
andrew e1ba8e9fa8 Fix non-x86 build 2025-06-05 17:42:34 -04:00
andrew 0c2af46a79 Start bench at a stride of 128 2025-06-05 15:45:44 -04:00
andrew 35c3e14586 Remove -mavx 2025-06-05 15:38:24 -04:00
andrew d60777002f Function multiversioning for n_string2 2025-06-05 15:36:12 -04:00
andrew f7871915e9 Update simd.h 2025-06-05 15:34:10 -04:00
andrew b050361823 Sort Parser3 members by size and add consts 2025-06-05 10:48:34 -04:00
andrew 2017784c97 Try to keep buf and bufEnd in registers 2025-06-05 10:43:38 -04:00
andrew 57bdc79ee7 Run tests from source dir to find test.json 2025-06-05 10:37:03 -04:00
andrew d6d5e210e4 Update simd.h 2025-06-04 16:49:26 -04:00
andrew b28251c8b1 Add to corpus 2025-06-04 14:19:53 -04:00
andrew 3e2f830d0b Use new simd library for scanning string literals 2025-06-04 13:49:19 -04:00
andrew b5f41768a7 Scan for non-decimal in n_digits2 2025-06-02 12:47:34 -04:00
andrew 67634bb977 Remove unused constant 2025-05-30 17:10:42 -04:00
andrew b0dd034be8 Try loading dylib's too 2025-05-27 11:51:55 -04:00
andrew 7a3eb61868 Annotate all useTmp paths as unlikely 2025-05-27 10:37:09 -04:00
andrew 0027c9ff79 data -> userdata 2025-05-27 10:33:46 -04:00
andrew f6cd807da3 Remove on_{begin,end}_{string,number}
And add `done` arg to data callback
2025-05-25 21:01:37 -04:00
andrew f92b33eec3 Fix gcc, add -fno-jump-tables back
It's even faster for some reason
2025-05-25 16:59:43 -04:00
andrew 30129277e7 Fix some warnings 2025-05-25 16:29:22 -04:00
andrew 5971ad2ef0 Fix segfault issue
I think we need to keep a reference to the ctypes voidp object that we
pass as userdata alive
2025-05-24 18:20:36 -04:00
andrew f2fdcfdf24 Add linker.map 2025-05-24 18:20:36 -04:00
andrew d687a2671a Add valgrind headers 2025-05-24 18:20:36 -04:00
andrew aa2494c478 Add seemingly working python bindings 2025-05-24 18:20:36 -04:00