|
1 | 1 | # Changelog |
2 | 2 |
|
3 | | -## 1.4.0 (2026-02-25) |
| 3 | +## 1.5.0 (unreleased) |
4 | 4 |
|
5 | | -- Add `decode_zodb_record_for_pg_json()` — converts ZODB pickle records |
6 | | - directly to a JSON string entirely in Rust with the GIL released, |
7 | | - eliminating the intermediate Python dict + `json.dumps()` step |
8 | 5 | - Direct PickleValue → JSON string writer (`json_writer.rs`), bypassing |
9 | 6 | all `serde_json::Value` intermediate allocations (PG path 1.3-3.3x |
10 | 7 | faster than dict + `json.dumps()`) |
|
15 | 12 | replaces 7 opcode writes for ~99.6% of records |
16 | 13 | - O(1) `@cls` hash lookup replaces O(n) key scan for marker detection |
17 | 14 | - Direct i64 LONG1 encoding (eliminates BigInt heap allocation) |
18 | | -- Enable thin LTO (`lto = "thin"`) and single codegen unit |
19 | | - (`codegen-units = 1`) in release profile |
20 | 15 | - Profile-guided optimization (PGO) support with real FileStorage + |
21 | 16 | synthetic data profiling (adds 5-15%) |
22 | 17 |
|
|
27 | 22 | - PG JSON path: 1.4x faster at median on 1,692 real ZODB records |
28 | 23 | - Full codec overhead: ~28 µs per object (both directions) |
29 | 24 |
|
| 25 | +## 1.4.0 (2026-02-24) |
| 26 | + |
| 27 | +- Add `decode_zodb_record_for_pg_json()` — converts ZODB pickle records |
| 28 | + directly to a JSON string entirely in Rust with the GIL released, |
| 29 | + eliminating the intermediate Python dict + `json.dumps()` step |
| 30 | + (1.3x faster full pipeline on real-world data) |
| 31 | +- Enable thin LTO (`lto = "thin"`) and single codegen unit |
| 32 | + (`codegen-units = 1`) in Cargo release profile for 6-9% faster |
| 33 | + decode/encode |
| 34 | + |
30 | 35 | ## 1.3.0 (2026-02-24) |
31 | 36 |
|
32 | 37 | - Fix SETITEMS/SETITEM/APPENDS/APPEND on dict/list subclasses (OrderedDict, |
|
0 commit comments