Nicolas Williams
8d2d5e37e5
Drop "any/" in module search; use 1.x-master
2014-08-20 20:48:48 -05:00
Nicolas Williams
287e2c96ed
BSD sed lacks -r; fix #551
2014-08-14 03:31:25 -05:00
Nicolas Williams
f8d9478517
Document module system
...
Fix #511 .
2014-08-14 03:26:28 -05:00
Nicolas Williams
1ba8c2cfa6
Add module directive, modulemeta builtin
...
Fix #425 .
2014-08-14 03:26:26 -05:00
Nicolas Williams
d654724fef
Add JV_OBJECT() macro
2014-08-14 03:21:38 -05:00
Nicolas Williams
3375089013
Add JV_ARRAY() macro
2014-08-14 03:21:38 -05:00
Nicolas Williams
9f13afa20f
Add jq_report_error() function; use it
...
Put a stop to fprintf(stderr, ...) where we shouldn't.
2014-08-14 03:21:35 -05:00
Nicolas Williams
908c10928b
Fix #549
2014-08-11 14:58:44 -05:00
Nicolas Williams
c321c3b86b
Constant fold objects
2014-08-09 20:47:03 -05:00
Nicolas Williams
f87521183f
Fold constant arrays
2014-08-09 20:27:08 -05:00
Nicolas Williams
8a561120c4
More constant folding: null, true, and false
...
A step towards doing constant folding for arrays and objects.
2014-08-09 19:15:50 -05:00
Nicolas Williams
20ca21cb0d
Out of bounds negative array indices should raise
2014-08-09 19:15:50 -05:00
Nicolas Williams
2d1a75f550
.foo[-1] = ... trips assertion (fix #490 )
2014-08-09 13:10:41 -05:00
Nicolas Williams
8cddb7c681
Allow any number of jq-coded function arguments
2014-08-09 12:42:39 -05:00
Nicolas Williams
4249bbf0d5
Make nwise private
2014-08-08 19:36:43 -05:00
Nicolas Williams
8a57c27e92
Make regexp builtins and range/3 use #524 too
2014-08-08 19:31:11 -05:00
Nicolas Williams
8706b6b16a
Use def f($a): ...; syntax for builtins
2014-08-08 19:23:46 -05:00
Nicolas Williams
32c08d48f3
Add def f($arg): syntax ( fix #524 )
2014-08-08 19:16:01 -05:00
Nicolas Williams
fc52e78ed4
Fix tests for #432
2014-08-08 18:17:58 -05:00
Nicolas Williams
eb12f0358e
Fix docs YAML (introduced in #432 )
2014-08-08 18:01:42 -05:00
Nicolas Williams
0d437e25de
Better error msg for bad shell quoting ( fix #538 )
2014-08-06 17:51:53 -05:00
Nicolas Williams
2159f9f5e0
Document TCO a bit more
2014-08-05 01:15:33 -05:00
Nicolas Williams
2518b3a34f
Fix docs (missing backquotes)
2014-08-05 01:15:33 -05:00
Nicolas Williams
a2f99d43c3
Some builtins are unnecessarily special ( fix #521 )
2014-08-01 00:20:30 -05:00
Nicolas Williams
a7878a8d1a
Correct @wtlangford's address
2014-07-30 13:19:46 -05:00
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