## 1.25 2017-10-24

S3 Performance Improvements

Fix custom settings for compress-level option being ignored.

Remove error when overlapping timelines are detected. Overlapping timelines are valid in many Point-in-Time-Recovery (PITR) scenarios.

Fix instances where database-id was not rendered as an integer in JSON info output.

Improve performance of list requests on S3. Any beginning literal portion of a filter expression is used to generate a search prefix which often helps keep the request small enough to avoid rate limiting.

Improve protocol error handling. In particular, stop errors are no longer reported as unexpected.

Allow functions with sensitive options to be logged at debug level with redactions. Previously, functions with sensitive options had to be logged at trace level to avoid exposing them. Trace level logging may still expose secrets so use with caution.

Replace dynamically built class hierarchies in I/O layer with fixed `parent()` calls.

Improve labeling for errors in helper processes.

Update C naming conventions.

Use int datatype wherever possible.

Better separation of C source from Perl interface.

Add LibC.template.pm to simplify LibC module generation.

Add C error handler.

Perl error handler recognizes errors thrown from the C library.

Page checksum module uses new C error handler.

Add C memory contexts.

Add base64 encode/decode.

Add I/O performance tests.

Add C unit test infrastructure.

Add test macros for C results and errors.

Warnings in C builds treated as errors.

Run all tests on tempfs rather than local disk.

Improve performance of test code. Wait when all tests have been assigned to reduce CPU load.

Remove Debian test repo after PostgreSQL 10 release.

Convert config and page checksum tests into C unit tests.

Add versions to Debian VMs for testing.