summaryrefslogtreecommitdiffstats
AgeCommit message (Collapse)Author
2023-08-27Improve handling of non-integer numeric indices (fix #2815)jq-1.7rc2Nicolas Williams
2023-08-27Make jq_get_lib_dirs return an empty array if JQ_LIBRARY_PATH is not setEmanuele Torre
For the jq_state used by the jq utility, the JQ_LIBRARY_PATH attribute will always be set, but, in general, it is possible that it might not be. If it is not set, jq_get_lib_dirs() will return jv_invalid(). That is not good, because some code in linker.c expects it to always returns an array. This patch makes jq_get_lib_dirs() return an empty array if JQ_LIBRARY_PATH is not set to prevent problems. This issue made OSS fuzz trigger failed assertions every time it tried to compile a script that uses "include". Fixes https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=61796
2023-08-26Fix memory leak in find_lib for some invalid inputsEmanuele Torre
2023-08-25Check nomem_handler->handler before calling itNicolas Williams
2023-08-23Include more updates to NEWS.md and AUTHORS for 1.7itchyny
2023-08-21Add src/config_opts.inc to .gitignoreitchyny
2023-08-19Add --config option printing ./configure options usedNicolas Williams
2023-08-17Fix overflow on numeric comparison (#2849)itchyny
Although #2839 fixed the overflow of exponent subtraction, there still is possibility of overflow in the `D2U` macro. This patch fixes the overflow in the `D2U` macro, and also truncates the maximum digits to `DEC_MAX_DIGITS`.
2023-08-16Add a regression test for negative indices and fix a pick/1 testitchyny
2023-08-16Revert "Allow .[-1] in path expressions"itchyny
This reverts commit 086a156ec389de167edc72e8bd1752984b117349. This commit leads to negative indexing wraps twice.
2023-08-13Cast function pointers without prototype before calling them (#2842)Emanuele Torre
clang complained that this is deprecated in all versions of standard C, and unsupported in C2x.
2023-08-13Fix crash on numeric comparison again (ref #2825)itchyny
The decNumber library subtracts the exponents of two numbers, we make sure to limit the number of digits not to make it overflows. Since the maximum adjusted exponent is `emax` and the minimum is `emin - digits + 1`, we follow `emax - (emin - digits + 1) <= INT32_MAX`.
2023-08-13Rename jv_type_private.h to jv_private.h, move jvp_number_is_nan thereitchyny
2023-08-12Update documentation to reflect new `defs` field on `modulemeta`Alex Wilson
2023-08-12Expose the names of a module's defined function via `modulemeta`Alex Wilson
This reuses the existing `block_list_funcs` capability and adds an extra field on the `modulemeta` output, called `defs`, containing that list of functions.
2023-08-12Build windows 64bit binary using UCRT64 (#2832)Mattias Wadman
* Build windows 64bit binary using UCRT64 Is the default and recommended msystem setting. Will produce binaries that are compatible with windows 10 and later. Also run tests for 32bit build. Related to #2831 * Use jq -b in tests/shtest * Add Windows strptime * Make Windows-optional tests not run on Windows again --------- Co-authored-by: Nicolas Williams <nico@cryptonector.com>
2023-08-10Make sure to init key and dbl_key also on win32Mattias Wadman
Hopefully fixes page fault for mingw build Related to #2831
2023-08-10Make sure to init dtoa_ctx_key also on win32 (#2834)Mattias Wadman
Fixes page fault for mingw build Related to #2831
2023-08-09docs: fix delpaths descriptionNaïm Favier
2023-08-05Change the default color of null to Bright Blackitchyny
2023-08-04Let error(null) throw nullEmanuele Torre
This patch removes the weird behaviour of jv_invalid_with_msg(jv_null()) that returns jv_invalid() (i.e. empty), instead of a boxed jv_null(). The previous behaviour of null|error was obviously unintentional, and allowing is jv_invalid_with_msg() to return values on which you can't call jv_invalid_get_msg() is only error prone.
2023-08-04Constant fold all kinds of constantsEmanuele Torre
This patch exports all the binary operator builtins functions from builtin.c and uses them for constant folding in the parser, allowing constant folding to work will all kinds and combinations of constants. Now string*number, $ARGS+$ARGS, string/string, etc will also be constant folded and the implementation of constant folded operators and runtime operators will be the same. And thanks to the new ERRORK bytecode operation, errors are constant folded too! (e.g. 1 / 0 [] * {} etc)
2023-08-04Add ERRORK opcode to trigger constant errorsEmanuele Torre
2023-08-03Clarify the `//` operator (fix typo)Nicolas Williams
2023-08-04Simplify String rule in parser (#2805)Emanuele Torre
Use a StringStart component that is either FORMAT QQSTRING_START or QQSTRING_START instead of having two similar rules for String. This is simpler and avoids having to use an untyped mid-rule action component to copy FORMAT at the top of the stack before QQString, and having to use jv_free($<literal>3) instead of jv_free($1) just to make bison not complain about the "unused" mid-rule component.
2023-08-03Add a bit more text about generatorsNicolas Williams
2023-08-03Clarify the `//` operator (close #2189)Nicolas Williams
2023-08-03Fix crash on numeric comparison (ref #2804) (#2818)itchyny
2023-08-03Improve README to be more structural and more readable (#2814)Owen Ou
2023-08-02Enable stack protection (CI release executables)Nicolas Williams
2023-08-02Fix a test case added in #2790itchyny
2023-08-02Fix rounding small (but not too small) numbers to zero on calculationitchyny
Co-authored-by: Leonid S. Usov <leonid.s.usov@gmail.com>
2023-08-01Require a main program (fix #2785)Nicolas Williams
2023-08-02NEWS.md - sub and gsub (#2809)pkoppstein
2023-08-01Fix typo in CI env vars for Linux build (#2810)Owen Ou
For some reason, the env vars are set correctly without refering the variable in `matrix` case-sensitvely: ``` 2023-08-01T05:05:58.4626090Z env: 2023-08-01T05:05:58.4626367Z AR: arm-linux-gnueabihf-ar 2023-08-01T05:05:58.4626690Z CHOST: arm-linux-gnueabihf 2023-08-01T05:05:58.4626961Z CC: arm-linux-gnueabihf-gcc 2023-08-01T05:05:58.4627332Z CPP: arm-linux-gnueabihf-cpp 2023-08-01T05:05:58.4627662Z CXX: arm-linux-gnueabihf-g++ ``` For clarify, we update them to match the definitions. Besides, `CXX` is not needed and removed.
2023-07-31Update download page with new release keyNicolas Williams
2023-07-31Don't unnecessarily ignore missing-field-initializers warningsEmanuele Torre
2023-07-31Re-generate src/parser.[ch]Nicolas Williams
2023-08-01Simple and efficient implementation of walk/1 (#2795)pkoppstein
2023-07-31Fix constant folding of division and reminder with zero divisoritchyny
Previously constant folding of zero division (e.x. 1/0) produces a compile error. This was incorrectly implemented by checking if the division result is infinite, so produces wrong results compared to the query where no constant folding is processed (e.x. 1e308/0.1). This patch delays the operation when the divisor is zero. This makes the results more consistent, but changes the exit code on zero division from 3 to 5. Also 0/0 now produces the zero division error, not NaN. This patch also fixes the modulo operation. Previously constant folding logic does not take care of the % operator, but now it folds if the both dividend and divisor are safe numbers to cast to the integer type, and the divisor is not zero. This patch also fixes some code that relies on undefined cast behaviors in C. The modulo operation produces NaN if either the dividend or divisor is NaN.
2023-07-31Declare cfunction.fptr as jv (*)() to avoid having to cast everywhereEmanuele Torre
You only need to specify the return type in a function pointer declaration in C. If you use () in the declaration, the function pointer can be called with any arguments, and the type of the arguments is decided for each function call based on the types of the arguments used for the call. (To declare a function pointer for a function with no arguments, you use `(void)'.) Since all the cfunction structs have a fptr that points to a functions that return jv, not void, we can we can just declare cfunction.fptr as jv (*)() and avoid having those annoying and technically not C-standard compliant casts everywhere.
2023-07-31Massage --help text to use max 72 characters widthMattias Wadman
2023-07-31Add new release public keyNicolas Williams
2023-07-31Update signatures of 1.7rc1github-actions[bot]
2023-07-31Redesign website (#2628)itchyny
* Bump up Bootstrap to v5.3.1, Bootstrap Icon to v1.10.5. * Use autoComplete.js to drop dependency on jQuery and typeahead.js. * Support dark mode. * New svg logo and icon with responsive color mode support. * Normalize section ids to lower kebab-case for easiness of linking. * Use relative paths for links for local development (--root /output). * Various markup cleanups and accessibility improvements.
2023-07-30Update `bug_report.md` with Discord linkjq-1.7rc1Owen Ou
2023-07-30Redirect questions to DiscordOwen Ou
We now have an official Discord server and most maintainers are hanging out there. It would be a good idea to redirect questions to Discord.
2023-07-30Use -Wno-cast-function-type to quiet many warningsNicolas Williams
2023-07-30Add JQ_FALLTHROUGH and use it to quiet warningsNicolas Williams
2023-07-29Fix typo in manual: "-seq" => "--seq"Emanuele Torre