Nicolas Williams
c73ad74be0
Add @wtlangford to the AUTHORS list
2014-07-30 13:02:34 -05:00
Nicolas Williams
e1b20b48f0
Add first, nth, last ( fix #510 )
2014-07-28 13:18:58 -05:00
Nicolas Williams
2e2538ccb8
Fold constants ( fix #504 )
2014-07-27 17:48:49 -05:00
Nicolas Williams
ae27178352
Fix #499 , #500
2014-07-27 17:41:40 -05:00
Nicolas Williams
10f5a3448d
Do fix remaining bison warning ( fix #433 )
2014-07-22 22:51:11 -05:00
Nicolas Williams
50b85c2911
Rename jq_memmem() to _jq_memmem()
2014-07-22 22:51:11 -05:00
Nicolas Williams
01fc8168e9
Add -i option to edit files in place ( fix #105 )
2014-07-20 00:11:23 -05:00
Nicolas Williams
3362fb3406
Add -n to short usage msg; fix --arg msg
2014-07-20 00:04:24 -05:00
Nicolas Williams
8c3d503d54
Fix bison empty rule warnings ( #433 , partial fix)
2014-07-14 16:41:48 -05:00
Nicolas Williams
2bb9fc5dda
Fix #484 , try/catch syntax has conflicts
2014-07-14 16:41:48 -05:00
Nico Williams
ea3e947b50
Merge pull request #483 from else/master
...
jq 1.4 is in Debian
2014-07-14 09:16:01 -05:00
Nico Williams
918ada06dc
Merge pull request #482 from mbruggmann/manual-fixes
...
Fix manual example for `endswith`.
2014-07-13 19:01:57 -05:00
Nicolas Williams
cb2737a433
Add regression test for #479
2014-07-13 19:00:37 -05:00
Nicolas Williams
c38e5b1b2c
Lib defs don't bind to each other; fix #479 again
2014-07-13 18:36:27 -05:00
Nicolas Williams
cadf8c3cb0
Revert "Library defs don't bind to each other; fix #479 "
...
This reverts commit 6b6e3f4262 . It was
the wrong fix.
2014-07-13 02:04:27 -05:00
Nicolas Williams
6b6e3f4262
Library defs don't bind to each other; fix #479
2014-07-12 18:38:55 -05:00
Nicolas Williams
6e88d419ba
Fix #478 assertion failure
2014-07-10 19:23:02 -05:00
Nico Williams
ab4bf05300
Merge pull request #475 from qqshfox/patch-1
...
Fix examples for `del` in manual
2014-07-09 10:09:28 -05:00
Nicolas Williams
666aeda82c
Better document path()'s power; also |=
2014-07-09 01:05:06 -05:00
Nicolas Williams
5be80b81eb
Add foreach EXP as $var (INIT; UPDATE) form
2014-07-09 00:43:06 -05:00
Nicolas Williams
10477fc2d4
Make while() handle break
2014-07-09 00:39:25 -05:00
Nicolas Williams
d8672e1b2a
Make C-coded built-ins take jq_state * argument
2014-07-07 23:37:42 -05:00
Nicolas Williams
a68958e5dc
error(x) should not tostring its arg; fix #466
2014-07-07 22:26:53 -05:00
Nicolas Williams
824f7df404
limit should use break
2014-07-07 22:26:07 -05:00
Nicolas Williams
4bcff40828
Make any/2 and all/2 efficient using foreach
2014-07-07 22:25:34 -05:00
Nicolas Williams
80a9937e48
exec_stack.h was not using jv_mem_realloc()
2014-07-07 19:33:19 -05:00
Nicolas Williams
b963ebaf1d
jv_invalid() shouldn't allocate
...
jv_invalid() should behave like jv_invalid_with_msg(jv_null()), and
neither should allocate memory, because neither ought to need to.
2014-07-07 19:33:18 -05:00
Nicolas Williams
eb45372414
jv_show() should be able to display invalid values
2014-07-07 19:33:18 -05:00
Nicolas Williams
539dccae90
Add break builtin for foreach
2014-07-07 19:33:17 -05:00
Nicolas Williams
6458910ba3
Explain foreach's powers a bit more
2014-07-07 17:22:53 -05:00
Nicolas Williams
ef9b591215
Document path(path_expression) builtin
2014-07-07 17:13:51 -05:00
Nicolas Williams
f845808813
Add missing backtick in manual
2014-07-07 17:13:48 -05:00
Nicolas Williams
25719b5596
$var["foo"]=1 can't work as expected; doc fix #236
2014-07-07 16:56:14 -05:00
Nicolas Williams
8780bc0b8e
Better check for lib has only functions ( fix #138 )
2014-07-07 16:03:32 -05:00
Nicolas Williams
821cd31e67
Add any/N and all/N x N in (1, 2) ( fix #455 )
...
Contributed by @pkoppstein.
2014-07-06 20:08:06 -05:00
Nicolas Williams
5a863bf010
Add foreach and limit
2014-07-06 19:40:05 -05:00
Nicolas Williams
7d3a44a1e2
Add general ? operator
2014-07-06 01:29:43 -05:00
Nicolas Williams
7fce34292e
Add try EXP catch EXP
2014-07-06 01:29:42 -05:00
Nicolas Williams
9113282c27
Document error/1
2014-07-06 00:27:05 -05:00
Nicolas Williams
78a8419428
Add while(cond; update) ( fix #314 )
2014-07-02 22:05:33 -05:00
Nicolas Williams
ff9a61ead2
Add range(init;upto;by) ( fix #317 )
2014-07-02 22:05:33 -05:00
Nicolas Williams
3a647d3e47
Multi-arity needs better errors ( fix #438 )
2014-07-02 02:18:10 -05:00
Nicolas Williams
1f17ef3623
Descrive generators, range() with by to manual
2014-07-01 23:32:44 -05:00
Nicolas Williams
a6030ab374
Fix typo in manual
2014-07-01 23:32:40 -05:00
Nicolas Williams
ba1acbe961
Teach disassembler about TAIL_CALL_JQ
2014-07-01 22:49:25 -05:00
Nicolas Williams
9deee38dc8
Fix off-by-one in TCO
...
Now we have the ability to define a generator in jq:
def for(cond; update):
def _for:
if cond then ., (update | _for) else . end;
_for;
for(. < 10; . + 1) # generates numbers between `.` and 10
Running this by hand with --debug-dump-disasm (with a fix for that
coming up next) we can see that the call to _for is optimized:
_for:0:
0000 DUP
0001 CALL_JQ cond:0^1
0005 JUMP_F 0022
0007 POP
0008 FORK 0012
0010 JUMP 0020
0012 CALL_JQ update:1^1
0016 TAIL_CALL_JQ _for:0^1
0020 JUMP 0023
0022 POP
0023 RET
And timing this with 1000, 10000, 100000 iterations shows that
indeed we must be applying TCO; otherwise, without TCO, this gets
very slow very quickly.
2014-07-01 22:40:40 -05:00
Nicolas Williams
436941d48b
TCO to the max!
...
Close #446 .
Currently tested by disassembling and tracing various recursive jq
programs by hand under valgrind. An improved test framework that
can test for errors and specific bytecode patterns is in
development.
2014-06-30 23:41:20 -05:00
Nicolas Williams
1204e328df
Add much commentary about CALL_JQ and call frames
2014-06-30 19:40:56 -05:00
Nicolas Williams
3e1baf5916
Get "Try Online" button working ( fix #440 )
2014-06-24 00:39:00 -05:00
Nicolas Williams
beb0d081bb
Improve TCO
...
Instead of checking for self-recursion check that the thing we're
calling is a function and not a closure, therefore the new frame will
have the same env as the current frame.
2014-06-23 19:59:00 -05:00
Nicolas Williams
4b7c701fdd
Tail call optimization ( close #437 )
2014-06-22 00:24:02 -05:00
Nicolas Williams
233e32208c
Fix option stacking bug
2014-06-21 18:01:00 -05:00
Nicolas Williams
63e31c2a35
Remove stray fprintf() from last commit
2014-06-20 23:29:53 -05:00
Nicolas Williams
f9349becab
Allow stacking of short options ( fix #346 )
2014-06-20 23:26:54 -05:00
Nicolas Williams
ff5cf0abc7
Remove extra free of testmode
...
I added a jv_free() too many while rebasing @wtlangford's contribution.
It could only be triggered by calling `_match_impl` directly.
2014-06-18 21:11:06 -05:00
Nicolas Williams
5d9d1b1020
Partial revamp of scripts/crosscompile
...
Fix #430 .
2014-06-18 16:29:37 -05:00
Nicolas Williams
8725d9fa3e
Minor style cleanup in main.c
2014-06-17 19:04:55 -05:00
Nicolas Williams
9ae2d66d21
Remove remnants of --online-input option
2014-06-17 19:02:23 -05:00
Nicolas Williams
0c762925b2
Add -j / --join-output option, similar to -r
...
Fix #215 .
2014-06-17 18:59:35 -05:00
Nicolas Williams
cf7895876b
Rebuild jq.1.prebuilt
2014-06-17 18:17:50 -05:00
Nicolas Williams
f902d5fae6
Remove trailing whitespace from manual.yml
2014-06-17 18:17:50 -05:00
Nicolas Williams
98e3ebc378
Use new style in manual for defs with args
2014-06-17 18:17:50 -05:00
Nicolas Williams
7ee3b724d1
Fix #419 , improve Cannot index message (sortof)
...
jv_get() doesn't know if it's being called in the context of a jq
program or not, so it can't produce a very useful error message when the
types of the to-be-indexed value and the key don't agree. For now,
including the key (when it is a short string) in the error message is as
significant an improvement as is easy to make.
2014-06-17 17:00:23 -05:00
Nicolas Williams
e151a300d0
Fix #266 ; make help message more useful
2014-06-17 16:47:12 -05:00
Nicolas Williams
f58f771660
Fix #280 : from_entries of [] is null, should be {}
2014-06-16 22:40:44 -05:00
Nicolas Williams
ea63d5d3c2
No args default w/ tty stdout, not tty stdin #220
2014-06-16 22:34:50 -05:00
Nicolas Williams
ea0ffe24f8
Don't declare environ on WIN32
2014-06-16 22:34:37 -05:00
Nicolas Williams
f741074267
Remove download 1.3 button; reposition try online
2014-06-16 17:01:09 -05:00
Nicolas Williams
de5952d67e
Add ChangeLog and NEWS files
2014-06-16 15:29:48 -05:00
Nicolas Williams
a03f4802ef
Add missing contributors to AUTHORS
2014-06-16 15:29:31 -05:00
Nicolas Williams
778ba9f7ab
Update AUTHORS
2014-06-16 13:25:50 -05:00
Nicolas Williams
676e0ce38e
Fix Win64 jq.exe link on main page
2014-06-16 11:13:55 -05:00
Nicolas Williams
088a42fc53
Allow multiple functions with different arities
2014-06-16 00:05:30 -05:00
Nicolas Williams
63dbac28ad
Fix typo; rename jq.1-prebuit to jq.1.prebuilt
2014-06-13 19:04:06 -05:00
Nicolas Williams
e9a1de47b4
Add env builtin
2014-06-13 17:51:41 -05:00
Nicolas Williams
d14fca0cc6
Document the lambda nature of function args #391
2014-06-13 17:22:43 -05:00
Nicolas Williams
bb83813f51
Automatically update jq.1.prebuilt
2014-06-13 17:22:17 -05:00
Nicolas Williams
8225d4e0c5
Add jqplay link to the site
2014-06-13 17:21:56 -05:00
Nicolas Williams
73bd347fcf
Add links to Solaris 11+ executables
2014-06-12 19:26:05 -05:00
Nicolas Williams
c9dbe090c5
Include links to 1.3 executables in gh-pages
2014-06-12 17:30:30 -05:00
Nicolas Williams
61cc0d4fb1
Make a better jq.1 when Ruby deps missing
2014-06-12 17:30:09 -05:00
Nico Williams
15c4a7f95f
Merge pull request #400 from kdeme/master
...
Heuristic IEEE754 endianness autoconf detection
Use AC_C_BIGENDIAN, though it's not really the correct approach. Autoconf ought to have provided a test specifically for IEEE754 endianness, since it can differ from integer/pointer endianness!
2014-06-12 15:55:41 -05:00
Nicolas Williams
e73951f3d1
Add lib.h to dist file list
2014-06-09 18:58:46 -05:00
Nicolas Williams
fdf843c08b
Make the note about shell quoting appear on site
2014-06-09 17:43:17 -05:00
Nicolas Williams
cf145ec65e
Add note about cmd.exe quoting
2014-06-09 10:22:55 -05:00
Nicolas Williams
4889844d0c
Building docs fails on powerpc ( #349 )
...
Thanks @shym!!
2014-06-09 09:39:02 -05:00
Nicolas Williams
dc7857c585
Update site news
2014-06-08 20:45:06 -05:00
Nicolas Williams
d65dbf89c9
Also fix configure.ac to use git describe --tags
2014-06-08 19:36:06 -05:00
Nicolas Williams
ed2b3e26fb
Fix scripts/version: use git describe --tags ...
...
After tagging as 1.4 scripts/version was still producing jq-1.3-....
2014-06-08 19:31:21 -05:00
Nicolas Williams
46436bd870
Add test of indices with short input
2014-06-08 02:27:27 -05:00
Nicolas Williams
1dbe9317bc
Add indices(s), improve index(s), rindex(s)
...
Now these deal with arrays as input and `s` being an array or a scalar.
2014-06-08 02:01:44 -05:00
Nicolas Williams
ef4f3a54fe
Improve index and rindex examples
2014-06-08 02:01:21 -05:00
Nicolas Williams
9af03c2562
Remove reference to getpath from docs
2014-06-08 01:35:03 -05:00
Nicolas Williams
c10e5f4e73
Document index and rindex ( #389 )
2014-06-08 00:00:17 -05:00
Nicolas Williams
6856ab8a69
String * number should be commutative
2014-06-07 21:43:30 -05:00
Nicolas Williams
8212750fe9
Add cross-compilation notes to README
...
A detailed set of instruction as to how to setup a cross-compilation
environment for OS X and Win32/64 would be nice.
2014-06-04 18:36:30 -05:00
Nicolas Williams
35b6b949e3
Add -j option to scripts/crosscompile
2014-06-04 18:36:30 -05:00
Nicolas Williams
d1ea3ab89d
Add flags argument to jv_parser_new()
...
For extensibility. We might add streaming parser options, even binary
JSON encoding options.
2014-06-04 18:35:30 -05:00
Nicolas Williams
ae625d0de7
Revert "Add -I / --online-input for huge top-level arrays"
...
This reverts commit 77936a594d .
There are too many odd bugs in this mode, and it turns out to be a bad
idea anyways. Instead, in the future a better option will be to pursue
alternative parsers, such as:
- streaming parser that outputs only when a new leaf value is added or
an array/object is opened/closed; options here include whether to
include a path in each output;
- parsers for binary JSON encodings (there's a variety of them).
Then one might run jq with a streaming parser and use `reduce` to
coalesce inputs from some depth down (instead of from one level down as
the reverted commit had intended).
Besides, a fully streaming parser is desirable in some cases, therefore
we should have such a thing as an option.
I've explored modifying the current parser to support a streaming
option, but it only makes the code very difficult to follow, which is
one reason that alternate parsers makes sense. At any rate, this is all
for the future. For now there's no streaming of individual texts, just
text sequences.
2014-06-04 18:15:58 -05:00
Nicolas Williams
5fb82d1018
Fix tests failures on Windows
...
And Solaris 8 and 9 too, no doubt. The problem was that non-standard
vsnprintf()s that return -1 when the buffer is too small were not
properly supported.
2014-06-02 00:56:01 -05:00