herringbone 0.5.0 → 0.6.0

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: 36e3b2444245fc90b36b577284aab2a81e4991ff04e30dd781f9ba94df43ae90
4
+ data.tar.gz: 9e2e4dbe2ab635a03aa743206cd5e6d74d6039cc5e790cefae8b04a7afd8304b
5
5
  SHA512:
6
- metadata.gz: 9cc7d70651be9426aec7608b1fa456545ea0c5318c4aaf193a67b14c7d2371a7173c62cca23a73f603d412dd2ddafa5d8f8e0833b08e6efc9c0632fe367e56d2
7
- data.tar.gz: bb1b6ed8e32eb6bcbdb0c29ca1dbd773a74dd2f5d2587253a4a297d76a27ffddc7f0a508baabb9a3d45d0bcd40423f3f5ea531cdc4adf3b4564c3344f61f3fda
6
+ metadata.gz: 162e38811c7e6371ed61a777fddcfa8e1e811de5225842e13dad1cf67da20490c7b7eb2347eaeb6515322a6ace971d453fa4ce1556cc75f4e70acfdcda7a9179
7
+ data.tar.gz: 0e5798748be214eb32a7939799ecb7a885283099908c05003065a98569c0572dc17a25fd4e6d017c5635256cefdd3b0db5072e28c1536fe4e26867c1d019eca0
data/CHANGELOG.md CHANGED
@@ -2,6 +2,34 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.6.0
6
+
7
+ - `require "herringbone"` loads the rest of the gem on first use: under 1 ms instead of about
8
+ 40 ms, and reading or writing plain files no longer loads OpenSSL, the inspector or the
9
+ redaction code. `Herringbone.eager_load!` loads everything, which Ractors need before Ruby 3.4.
10
+ - `compression_level:` sets the level for `:zstd`, `:gzip` and `:brotli` in `Herringbone::Writer`,
11
+ `Herringbone.write`, `SimpleWriter` and `Herringbone.redact`.
12
+ - `Herringbone::Writer` (and `Herringbone.write`, `SimpleWriter`) take `encryption:` to write files
13
+ with Parquet modular encryption: footer and per-column keys, encrypted or signed plaintext
14
+ footer, AES-GCM or AES-GCM-CTR, AAD prefixes.
15
+ - `Herringbone::Key` (`Key.generate`, `Key.from_hex`) holds a key and its id: `encryption: key`
16
+ encrypts a whole file with it the way most readers (pyarrow 25+, Arrow, arrow-rs, Spark, Trino)
17
+ can decrypt, and `decryption: [key, older_key]` picks the key by the id stored in the file.
18
+ - `decryption:` takes a callable that returns the key for a key id.
19
+ - `Herringbone::SimpleWriter#encrypt!(key:)` encrypts the file with one key, given as its hex or as
20
+ a `Key`; Strings that are not the hex of a key are refused.
21
+ - `Herringbone::EncryptionConfiguration` and `Herringbone::DecryptionConfiguration` check the
22
+ `encryption:` and `decryption:` settings when they are built; Hashes are turned into them.
23
+ - `herringbone inspect` and `herringbone cat` take `--footer-key`, `--column-key`, `--key` and
24
+ `--aad-prefix` for encrypted files, and ask for missing keys on stdin.
25
+ - `Herringbone::Reader` and `Herringbone::Inspector` take `decryption:` with keys, or a `keys:`
26
+ lookup by the key metadata stored in the file, and read encrypted files from parquet-mr, Arrow
27
+ and Herringbone; `Reader#encryption` describes how a file is encrypted.
28
+ - `Herringbone.redact` takes `decryption:` and writes an encrypted input encrypted the same way,
29
+ unless `encryption:` says otherwise.
30
+ - **Breaking:** encrypted files raise `Herringbone::DecryptionError` (when their keys are missing
31
+ or wrong) instead of `Herringbone::UnsupportedError`.
32
+
5
33
  ## 0.5.0
6
34
 
7
35
  - `Herringbone.redact` and `Herringbone::Redaction` rewrite a file with rows deleted, values