|
| 1 | +# 0.0.8 |
| 2 | + |
| 3 | +## Changes |
| 4 | + |
| 5 | +- Add support for some common structured serialization formats: #284 #335 |
| 6 | + - XML, `toxml`, `fromxml` options for indent, jq mapping variants (object or array) and order preservation |
| 7 | + - HTML, `fromhtml` options for indent, jq mapping variants (object or array) and order preservation |
| 8 | + - TOML, `totoml`, `fromtoml` |
| 9 | + - YAML, `toyaml`, `fromyaml` |
| 10 | + - jq-flavored JSON (optional key quotes and trailing comma) `tojq`, `fromjq` options for indent #284 |
| 11 | + ```sh |
| 12 | + # query a YAML file |
| 13 | + $ fq '...' file.yml |
| 14 | + |
| 15 | + # convert YAML to JSON |
| 16 | + # note -r for raw string output, without a JSON string with JSON would outputted |
| 17 | + $ fq -r 'tojson({indent:2})' file.yml |
| 18 | + |
| 19 | + $ fq -nr '{hello: {world: "test"}} | toyaml, totoml, toxml, tojq({indent: 2})' |
| 20 | + hello: |
| 21 | + world: test |
| 22 | + |
| 23 | + [hello] |
| 24 | + world = "test" |
| 25 | + |
| 26 | + <hello> |
| 27 | + <world>test</world> |
| 28 | + </hello> |
| 29 | + { |
| 30 | + hello: { |
| 31 | + world: "test" |
| 32 | + } |
| 33 | + } |
| 34 | + $ echo '<doc><element a="b"></doc>' | fq -r '.doc.element."-a"' |
| 35 | + b |
| 36 | + $ echo '<doc><element a="b"></doc>' | fq -r '.doc.element."-a" = "<test>" | toxml({indent: 2})' |
| 37 | + <doc> |
| 38 | + <element a="<test>"></element> |
| 39 | + </doc> |
| 40 | + ``` |
| 41 | + - CSV, `tocsv`, `fromcsv` options for separator and comment character |
| 42 | + ```sh |
| 43 | + $ echo -e '1,2\n3,4' | fq -rRs 'fromcsv | . + [["a","b"]] | tocsv' |
| 44 | + 1,2 |
| 45 | + 3,4 |
| 46 | + a,b |
| 47 | + ``` |
| 48 | +- Add support for binary encodings |
| 49 | + - Base64. `tobase64`, `frombase64` options for encoding variants. |
| 50 | + ```sh |
| 51 | + $ echo -n hello | base64 | fq -rRs 'frombase64 | tostring' |
| 52 | + hello |
| 53 | + ``` |
| 54 | + - Hex string. `tohex`, `fromhex` |
| 55 | +- Add support for text formats |
| 56 | + - XML entities `toxmlentities`, `fromxmlentities` |
| 57 | + - URL `tourl`, `fromurl` |
| 58 | + ```sh |
| 59 | + $ echo -n 'https://host/path/?key=value#fragment' | fq -Rs 'fromurl | ., (.host = "changed" | tourl)' |
| 60 | + { |
| 61 | + "fragment": "fragment", |
| 62 | + "host": "host", |
| 63 | + "path": "/path/", |
| 64 | + "query": { |
| 65 | + "key": "value" |
| 66 | + }, |
| 67 | + "rawquery": "key=value", |
| 68 | + "scheme": "https" |
| 69 | + } |
| 70 | + "https://changed/path/?key=value#fragment" |
| 71 | + ``` |
| 72 | + - URL path encoding `tourlpath`, `fromurlpath` |
| 73 | + - URL encoding `tourlencode`, `fromurlencode` |
| 74 | + - URL query `tourlquery`, `fromurlquery` |
| 75 | +- Add support for common hash functions: |
| 76 | + - MD4 `tomd4` |
| 77 | + - MD5 `tomd5` |
| 78 | + ```sh |
| 79 | + $ echo -n hello | fq -rRs 'tomd5 | tohex' |
| 80 | + 5d41402abc4b2a76b9719d911017c592 |
| 81 | + ``` |
| 82 | + - SHA1 `tosha1` |
| 83 | + - SHA256 `tosha256` |
| 84 | + - SHA512 `tosha512` |
| 85 | + - SHA3 224 `tosha3_224` |
| 86 | + - SHA3 256 `tosha3_256` |
| 87 | + - SHA3 384 `tosha3_384` |
| 88 | + - SHA3 512 `tosha3_512` |
| 89 | +- Add support for common text encodings: |
| 90 | + - ISO8859-1 `toiso8859_1`, `fromiso8859_1` |
| 91 | + - UTF8 `tutf8`, `fromutf8` |
| 92 | + - UTF16 `toutf16`, `fromutf16` |
| 93 | + - UTF16LE `toutf16le`, `fromutf16le` |
| 94 | + - UTF16BE `toutf16be`, `fromutf16be` |
| 95 | + ```sh |
| 96 | + $ echo -n 00680065006c006c006f | fq -rRs 'fromhex | fromutf16be' |
| 97 | + hello |
| 98 | + ``` |
| 99 | +- Add `group` function, same as `group_by(.)` #299 |
| 100 | +- Update/rebase readline dependency (based on @tpodowd https://github.com/chzyer/readline/pull/207) #305 #308 |
| 101 | + - Less blinking/redraw in REPL |
| 102 | + - Lots of small bug fixes |
| 103 | +- Update/rebase gojq dependency #247 |
| 104 | + - Fixes JQValue destructing issue (ex: `<some object JQValue> as {$key}`) |
| 105 | +- Major rewrite/refactor how native function are implemented. Less verbose and less error-prone as now shared code takes care of type casting and some argument errors. #316 |
| 106 | +- Add `tojson($opts)` that support indent option. `tojson` still works as before (no indent). |
| 107 | + ```sh |
| 108 | + $ echo '{a: 1}' | fq -r 'tojson({indent: 2})' |
| 109 | + { |
| 110 | + "a": 1 |
| 111 | + } |
| 112 | + ``` |
| 113 | +- Rename `--decode-file` (will still work) to `--argdecode` be be more consistent with existing `--arg*` arguments. #309 |
| 114 | +- On some decode error cases fq can now keep more of partial tree making it easier to know where it stopped #245 |
| 115 | +- Build with go 1.18 #272 |
| 116 | + |
| 117 | +## Decoder changes |
| 118 | + |
| 119 | +- `bitcoin` Add Bitcoin blkdat, block, transcation and script decoders #239 |
| 120 | +- `elf` Use correct offset to dynamic linking string table #304 |
| 121 | +- `tcp` Restructure into separate client/server objects and add `skipped_bytes` (number of bytes with known missing ACK), `has_start` (has first byte in stream) and `has_end` (has last byte in stream) per direction #251 |
| 122 | + - Old: |
| 123 | + ``` |
| 124 | + │00 01 02 03 04 05 06 07│01234567│.tcp_connections[0]{}: tcp_connection |
| 125 | + │ │ │ source_ip: "192.168.69.2" |
| 126 | + │ │ │ source_port: 34059 |
| 127 | + │ │ │ destination_ip: "192.168.69.1" |
| 128 | + │ │ │ destination_port: "http" (80) (World Wide Web HTTP) |
| 129 | + │ │ │ has_start: true |
| 130 | + │ │ │ has_end: true |
| 131 | + 0x000│47 45 54 20 2f 74 65 73│GET /tes│ client_stream: raw bits |
| 132 | + 0x008│74 2f 65 74 68 65 72 65│t/ethere│ |
| 133 | + * │until 0x1bc.7 (end) (44│ │ |
| 134 | + 0x000│48 54 54 50 2f 31 2e 31│HTTP/1.1│ server_stream: raw bits |
| 135 | + 0x008│20 32 30 30 20 4f 4b 0d│ 200 OK.│ |
| 136 | + * │until 0x191.7 (end) (40│ │ |
| 137 | + ``` |
| 138 | + - New: |
| 139 | + ``` |
| 140 | + │00 01 02 03 04 05 06 07│01234567│.tcp_connections[0]{}: tcp_connection |
| 141 | + │ │ │ client{}: |
| 142 | + │ │ │ ip: "192.168.69.2" |
| 143 | + │ │ │ port: 34059 |
| 144 | + │ │ │ has_start: true |
| 145 | + │ │ │ has_end: true |
| 146 | + │ │ │ skipped_bytes: 0 |
| 147 | + 0x000│47 45 54 20 2f 74 65 73│GET /tes│ stream: raw bits |
| 148 | + 0x008│74 2f 65 74 68 65 72 65│t/ethere│ |
| 149 | + * │until 0x1bc.7 (end) (44│ │ |
| 150 | + │ │ │ server{}: |
| 151 | + │ │ │ ip: "192.168.69.1" |
| 152 | + │ │ │ port: "http" (80) (World Wide Web HTTP) |
| 153 | + │ │ │ has_start: true |
| 154 | + │ │ │ has_end: true |
| 155 | + │ │ │ skipped_bytes: 0 |
| 156 | + 0x000│48 54 54 50 2f 31 2e 31│HTTP/1.1│ stream: raw bits |
| 157 | + 0x008│20 32 30 30 20 4f 4b 0d│ 200 OK.│ |
| 158 | + * │until 0x191.7 (end) (40│ │ |
| 159 | + ``` |
| 160 | +- `zip` Add 64-bit support and add `uncompress` option #278 |
| 161 | +- `matroska` Update and regenerate based on latest spec and also handle unknown ids better #291 |
| 162 | +- `mp4` Changes: |
| 163 | + - Fix PSSH decode issue #283 |
| 164 | + - Add track for track_id references without tfhd box |
| 165 | + - Makes it possible to see samples in fragments without having an init segment. |
| 166 | + Note it is possible to decode samples in a fragment file by concatenating the init and fragment file ex: `cat init frag | fq ...`. |
| 167 | + - Add `senc` box support #290 |
| 168 | + - Don't decode encrypted samples #311 |
| 169 | + - Add `track_id` to tracks #254 |
| 170 | + - Add fairplay PSSH system ID #310 |
| 171 | + - Properly handle `trun` data offset #294 |
| 172 | + - Skip decoding of individual PCM samples for now #268 |
| 173 | + - Add `mvhd`, `tkhd`, `mdhd` and `mehd` version 1 support #258 |
| 174 | + - Make sure to preserve sample table order #330 |
| 175 | +- `fairplay_spc` Add basic FairPlay Server Playback Context decoder #310 |
| 176 | +- `avc_pps` Correctly check for more rbsp data |
| 177 | +
|
| 178 | +## Changelog |
| 179 | +
|
| 180 | +* 210940a4 Update docker-golang from 1.18.1 to 1.18.2 |
| 181 | +* fbeabdc3 Update docker-golang from 1.18.2 to 1.18.3 |
| 182 | +* 51a414db Update docker-golang from 1.18.3 to 1.18.4 |
| 183 | +* 3017e8b4 Update github-go-version from 1.18.1, 1.18.1, 1.18.1 to 1.18.2 |
| 184 | +* c597f7f7 Update github-go-version from 1.18.2, 1.18.2, 1.18.2 to 1.18.3 |
| 185 | +* dd283923 Update github-go-version from 1.18.3, 1.18.3, 1.18.3 to 1.18.4 |
| 186 | +* d10a3616 Update github-golangci-lint from 1.45.2 to 1.46.0 |
| 187 | +* 75b5946c Update github-golangci-lint from 1.46.0 to 1.46.1 |
| 188 | +* 3ffa9efb Update github-golangci-lint from 1.46.1 to 1.46.2 |
| 189 | +* 4be8cb91 Update github-golangci-lint from 1.46.2 to 1.47.0 |
| 190 | +* 1b8f4be8 Update github-golangci-lint from 1.47.0 to 1.47.1 |
| 191 | +* fc596a7a Update github-golangci-lint from 1.47.1 to 1.47.2 |
| 192 | +* 62be9223 Update gomod-BurntSushi/toml from 1.1.0 to 1.2.0 |
| 193 | +* 5db7397a Update make-golangci-lint from 1.45.2 to 1.46.0 |
| 194 | +* 456742ea Update make-golangci-lint from 1.46.0 to 1.46.1 |
| 195 | +* 06757119 Update make-golangci-lint from 1.46.1 to 1.46.2 |
| 196 | +* 3d69e9d0 Update make-golangci-lint from 1.46.2 to 1.47.0 |
| 197 | +* 2170925d Update make-golangci-lint from 1.47.0 to 1.47.1 |
| 198 | +* c4199c0f Update make-golangci-lint from 1.47.1 to 1.47.2 |
| 199 | +* 02f00be9 Update usage.md |
| 200 | +* 75169a65 asn1: Add regression test for range decode fix ##330 |
| 201 | +* b0096bc1 avc_pps: Correct check if there is more rbsp data |
| 202 | +* 5d67df47 avro_ocf: Fix panic on missing meta schema |
| 203 | +* 417255b7 bitcoin: Add blkdat, block, transcation and script decoder |
| 204 | +* a6a97136 decode: Cleanup Try<f>/<f> pairs |
| 205 | +* 3ce660a2 decode: Keep decode tree on RangeFn error |
| 206 | +* c4dd518e decode: Make compound range sort optional |
| 207 | +* 8bb4a6d2 decode: Range decode with new decoder to preserve bit reader |
| 208 | +* 342612eb dev: Cleanup linters and fix some unused args |
| 209 | +* 78aa96b0 dev: Cleanup some code to fix a bunch of new linter warnings |
| 210 | +* 3570f1f0 doc: Add more related tools |
| 211 | +* 7aff654a doc: Clarify decode, slurp and spew args |
| 212 | +* 0863374f doc: Correct bencode spec URL |
| 213 | +* 10cc5518 doc: Improve and cleanup text formats |
| 214 | +* b1006119 doc: Typos and add note about Try* functions |
| 215 | +* c27646a6 doc: Update and shorten README.md a bit |
| 216 | +* b0388722 doc: Use singular jq value to refer to jq value |
| 217 | +* a980656c doc: go 1.18 and improve intro text a bit |
| 218 | +* a64c28d9 dump: Skip JQValueEx if there are not options |
| 219 | +* 40481f66 elf,fuzz: Error on too large string table |
| 220 | +* f66a359c elf: Use correct offset to dynamic linking string table |
| 221 | +* 64f3e5c7 fairplay: Add basic SPC decoder and PSSH system id |
| 222 | +* cae288e6 format,intepr: Refactor json, yaml, etc into formats also move out related functions |
| 223 | +* e9d9f8ae fq: Use go 1.18 |
| 224 | +* 377af133 fqtest: Cleanup path usage |
| 225 | +* 2464ebc2 fuzz: Replace built tag with FUZZTEST env and use new interp api |
| 226 | +* 0f78687b gojq: Fix JQValue index and destructuring issue and rebase fq fork |
| 227 | +* 59c7d0df gojq: Rebase fq fork |
| 228 | +* c57dc17d gojq: Rebase fq fork |
| 229 | +* 9a7ce148 gojq: Update rebased fq fork |
| 230 | +* c1a0cda5 gojq: Update rebased fq fork |
| 231 | +* 32361dee gojqextra: Cleanup gojq type cast code |
| 232 | +* 9b2e474e gojqextra: Simplify function type helpers |
| 233 | +* fd302093 hevc_vps,fuzz: Error on too many vps layers |
| 234 | +* efa5e23a icc_profile: Correctly clamp align padding on EOF |
| 235 | +* 1ddea1ad interp,format: Refactor registry usage and use function helpers |
| 236 | +* a3c33fc1 interp: Add group/0 |
| 237 | +* 95e61965 interp: Add internal _is_<type> helpers |
| 238 | +* 3b717c3b interp: Add to/from<encoding> for some common serialzations, encodings and hashes |
| 239 | +* 6b088000 interp: Cast jq value to go value properly for encoding functions |
| 240 | +* f5be5180 interp: Cleanup and clarify some format naming |
| 241 | +* c7701851 interp: Extract to/from map/struct to own package |
| 242 | +* 8dde3ef5 interp: Fix crash when including relatve path when no search paths are set |
| 243 | +* 735c443b interp: Improve type normalization and use it for toyaml and totoml |
| 244 | +* 81a014ce interp: Make empty _finally fin error on error |
| 245 | +* 2dc509ab interp: Refactor dump and revert #259 for now |
| 246 | +* ab8c728a interp: Rename --decode-file to --argdecode to be more consistent |
| 247 | +* dff3cc11 interp: dump: Fix column truncate issue with unicode bars |
| 248 | +* 5109df4a interp: dump: Show address bar for nested roots |
| 249 | +* 80214921 interp: help: Fix incorrect options example |
| 250 | +* 76714349 mapstruct: Handle nested values when converting to camel case |
| 251 | +* c92f4f13 matroska: Update ebml_matroska.xml and allow unknown ids |
| 252 | +* c2a359bd mod: Update golang.org/x/{crypto,net} |
| 253 | +* 3780375d mp3: Use d.FieldValueU and some cleanup |
| 254 | +* 7b27e506 mp4,bitio: Fix broken pssh decoding and add proper reader cloning to bitio |
| 255 | +* 6b00297e mp4,senc: Refactor current track/moof tracking and add senc box support |
| 256 | +* 8228ecae mp4: Add track id field and add track for tfhd with unseen track_id |
| 257 | +* ea2cc3c2 mp4: Don't decode encrypted samples |
| 258 | +* c6d0d89c mp4: Don't range sort samples, keep sample table order |
| 259 | +* 7d25fbfd mp4: Properly use trun data offset |
| 260 | +* ba844eb0 mp4: Skip fields for pcm samples for now |
| 261 | +* 0e02bb66 mp4: iinf: Only assume sub boxes for version 0 |
| 262 | +* 2e328180 mp4: mvhd,tkhd,mdhd,mehd: Add version 1 support |
| 263 | +* 44bab274 readline: Rebase on top of tpodowd's redraw/completion fixes PR |
| 264 | +* a5122690 readline: Rebase on top of tpodowd's update PR |
| 265 | +* 54dcdce9 readline: Update fq fork |
| 266 | +* 6e7267d2 readme: add MacPorts install details |
| 267 | +* 76161a1b scalar,mp4,gzip,tar: Add timestamp to description |
| 268 | +* 9133f0e5 scalar: Add *Fn type to map value and clearer naming |
| 269 | +* 34cf5442 tcp: Split into client/server structs and add skipped_bytes and has_start/end per direction |
| 270 | +* 1aaaefb0 wav,bencode,mpeg_ps_packet,id3v1: Random fixes |
| 271 | +* 47350e46 zip: Add uncompress=false test and some docs |
| 272 | +* e6412744 zip: Add zip64 support and uncompress option |
| 273 | +* aa694e3f zip: s/Decompress/Uncompress/ |
| 274 | +
|
| 275 | +
|
1 | 276 | # 0.0.7
|
2 | 277 |
|
3 | 278 | ## Changes
|
@@ -458,8 +733,6 @@ Also thanks to @Doctor-love @mathieu-aubin for keeping things tidy.
|
458 | 733 |
|
459 | 734 | (Some commits have been removed from list for clarity)
|
460 | 735 |
|
461 |
| - |
462 |
| - |
463 | 736 | # 0.0.2
|
464 | 737 |
|
465 | 738 | ## Changelog
|
|
0 commit comments