herringbone 0.5.0 → 0.6.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 4aca873b946a39da4bee947137c6914f0b321f95266f252f35487087e40ce3f4
4
- data.tar.gz: 6d7f439f61d6d871cfbf8682e2af71bf2c502b5360355570aabeed373240d0d7
3
+ metadata.gz: cad7828c89f6cdda317d574829316e6f96cc967e2a19d3c7589ab54324ae0967
4
+ data.tar.gz: f889fe0c5ac568435597a48d6cbdb779a0e3b5d1b6d66e5965e2a7a5f38168aa
5
5
  SHA512:
6
- metadata.gz: 9cc7d70651be9426aec7608b1fa456545ea0c5318c4aaf193a67b14c7d2371a7173c62cca23a73f603d412dd2ddafa5d8f8e0833b08e6efc9c0632fe367e56d2
7
- data.tar.gz: bb1b6ed8e32eb6bcbdb0c29ca1dbd773a74dd2f5d2587253a4a297d76a27ffddc7f0a508baabb9a3d45d0bcd40423f3f5ea531cdc4adf3b4564c3344f61f3fda
6
+ metadata.gz: 7095d8deb5d3232381ca860a1e58251fb8dea505c4ec911e96cdb28dba970575510fec7ab5f96f7b640f9f3fcbb1e557d424975c5e4bdb6f31040b38186093f8
7
+ data.tar.gz: fd061d539396bb88713c2c0daedcde0d6a70e6b797f7ce57728fa23f4076d9ca62c127e5c9d6b392300d55536ad898ee9ebf1d36082896b7c1aef5e086ff65f7
data/CHANGELOG.md CHANGED
@@ -2,6 +2,40 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.6.1
6
+
7
+ - `Herringbone::Reader` raises `Herringbone::FormatError` for forged metadata or page headers that
8
+ made it loop endlessly, overflow the stack or raise `ArgumentError`, `RangeError` or
9
+ `NoMemoryError`.
10
+
11
+ ## 0.6.0
12
+
13
+ - `require "herringbone"` loads the rest of the gem on first use: under 1 ms instead of about
14
+ 40 ms, and reading or writing plain files no longer loads OpenSSL, the inspector or the
15
+ redaction code. `Herringbone.eager_load!` loads everything, which Ractors need before Ruby 3.4.
16
+ - `compression_level:` sets the level for `:zstd`, `:gzip` and `:brotli` in `Herringbone::Writer`,
17
+ `Herringbone.write`, `SimpleWriter` and `Herringbone.redact`.
18
+ - `Herringbone::Writer` (and `Herringbone.write`, `SimpleWriter`) take `encryption:` to write files
19
+ with Parquet modular encryption: footer and per-column keys, encrypted or signed plaintext
20
+ footer, AES-GCM or AES-GCM-CTR, AAD prefixes.
21
+ - `Herringbone::Key` (`Key.generate`, `Key.from_hex`) holds a key and its id: `encryption: key`
22
+ encrypts a whole file with it the way most readers (pyarrow 25+, Arrow, arrow-rs, Spark, Trino)
23
+ can decrypt, and `decryption: [key, older_key]` picks the key by the id stored in the file.
24
+ - `decryption:` takes a callable that returns the key for a key id.
25
+ - `Herringbone::SimpleWriter#encrypt!(key:)` encrypts the file with one key, given as its hex or as
26
+ a `Key`; Strings that are not the hex of a key are refused.
27
+ - `Herringbone::EncryptionConfiguration` and `Herringbone::DecryptionConfiguration` check the
28
+ `encryption:` and `decryption:` settings when they are built; Hashes are turned into them.
29
+ - `herringbone inspect` and `herringbone cat` take `--footer-key`, `--column-key`, `--key` and
30
+ `--aad-prefix` for encrypted files, and ask for missing keys on stdin.
31
+ - `Herringbone::Reader` and `Herringbone::Inspector` take `decryption:` with keys, or a `keys:`
32
+ lookup by the key metadata stored in the file, and read encrypted files from parquet-mr, Arrow
33
+ and Herringbone; `Reader#encryption` describes how a file is encrypted.
34
+ - `Herringbone.redact` takes `decryption:` and writes an encrypted input encrypted the same way,
35
+ unless `encryption:` says otherwise.
36
+ - **Breaking:** encrypted files raise `Herringbone::DecryptionError` (when their keys are missing
37
+ or wrong) instead of `Herringbone::UnsupportedError`.
38
+
5
39
  ## 0.5.0
6
40
 
7
41
  - `Herringbone.redact` and `Herringbone::Redaction` rewrite a file with rows deleted, values