GitHub

Important

A discussion is underway on what features or changes are needed before we consider a 1.0 release. If you have thoughts, suggestions, or feature requests, please join the conversation and help guide the future of Martin.

What's Changed

using pmtiles via S3

We now support storing your pmtiles in S3 or S3-compatible blob stores and serving them.
For further information on this feature, please see our documentation.

Note

There is work outstanding upstream to extend PMtiles support to more than blob stores other than S3.
If you would like to contribute on this, please see stadiamaps/pmtiles-rs#42

Done by @alamminsalo and @Youssef-Harby in #1477

ETag header handling

Important

An ETag offers a way for the client to validate that the tile is still the same.
In prior versions, we did not have ETags.
In theory there could be a difference in behavior with regards to tile refreshes, how CDNs/Reverse proxys cache content or how you do accounting if you are a SAAS.

This optimisation enables

  • CDN-style caching of requests and
  • may reduce network bandwith and time spend downloading tiles a bit

It is particularly noticable in usecases with slow networking.

What we did:
We added ETag-header handling to martin.
If your device caches tiles, it will attach an If-None-Match-header with the expected ETag.
If we notice that the tile would match this ETag, we will send a 304 Not Modified.
Your device now skips a bit of network bandwith and time downloading tiles.

Note

This change currently is not free.
We hash (with a noncryptografic hash function) over all tiles.
Concretely, this means that while response times are the same, we can now deliver 5% less tiles per second in stress tests (f.ex. 206k to 197k requests per second) due to the slightly increased CPU load.
We have plans on the way to skip this work in some cases, but those have not made it into this release.

For further details, please see the benchmarks we did.
Please see #580 if you want to contribute on this.

Done by @CommanderStorm in #1836 #1834 #1787

Confiugring CORS

We added the ability to configure CORS-related setting for tighter security.

The configuration file now accepts

# CORS Configuration
#
# Defaults to `cors: true`, which allows all origins.
# Sending/Acting on CORS headers can be completely disabled via `cors: false`
cors:
  # Sets the `Access-Control-Allow-Origin` header [default: *]
  # '*' will use the requests `ORIGIN` header
  origin:
    - https://example.org
  # Sets `Access-Control-Max-Age` Header. [default: null]
  # null means not setting the header for preflight requests
  max_age: 3600

Done by @NINNiT in #1815

Minor changes

  • martin-cp does now not require --source if one source is available by @sdf-jkl in #1823
  • added a few labels (important for some dependency update tooling) and made sure that by @NINNiT and @CommanderStorm in #1832 #1833
  • as in the last few releases, work is underway to stabilise the COG feature by @sharkAndshark

mbtiles-crate

Maintenance

Documentation

Dependency updates

  • update rollup by @mmoll in #1816

  • update all deps by @nyurik in #1852

  • and a bunch of dependency updates (click to expand)
    • [pre-commit.ci] pre-commit autoupdate by @pre-commit-ci in #1800
    • chore(deps): Bump rustls from 0.23.25 to 0.23.26 in the all-cargo-version-updates group by @dependabot in #1780
    • chore(deps-dev): Bump vite from 4.5.12 to 4.5.13 in /demo/frontend by @dependabot in #1788
    • chore(deps): Bump crossbeam-channel from 0.5.14 to 0.5.15 in the all-cargo-security-updates group by @dependabot in #1779
    • chore(deps): Bump the all-cargo-version-updates group with 2 updates by @dependabot in #1790
    • chore(deps): Bump sqlx from 0.8.3 to 0.8.4 in the all-cargo-version-updates group by @dependabot in #1793
    • chore(deps): Bump sqlx from 0.8.4 to 0.8.5 in the all-cargo-version-updates group by @dependabot in #1795
    • chore(deps): Bump clap from 4.5.36 to 4.5.37 in the all-cargo-version-updates group by @dependabot in #1799
    • chore(deps): Bump ctor from 0.4.1 to 0.4.2 in the all-cargo-version-updates group by @dependabot in #1802
    • chore(deps): Bump insta from 1.42.2 to 1.43.0 in the all-cargo-version-updates group by @dependabot in #1810
    • chore(deps): Bump insta from 1.43.0 to 1.43.1 in the all-cargo-version-updates group by @dependabot in #1812
    • chore(deps-dev): Bump vite from 4.5.13 to 4.5.14 in /demo/frontend by @dependabot in #1817
    • chore(deps): Bump the all-cargo-version-updates group with 2 updates by @dependabot in #1818
    • chore(deps): Bump rustls from 0.23.26 to 0.23.27 in the all-cargo-version-updates group by @dependabot in #1819
    • chore(deps): Bump tokio from 1.44.2 to 1.45.0 in the all-cargo-version-updates group by @dependabot in #1822
    • chore(deps): Bump the all-cargo-version-updates group with 6 updates by @dependabot in #1824
    • chore(deps): Bump dependabot/fetch-metadata from 2.3.0 to 2.4.0 in the all-actions-version-updates group by @dependabot in #1827
    • chore(deps): Bump sqlx from 0.8.5 to 0.8.6 in the all-cargo-version-updates group by @dependabot in #1839
    • chore(deps): Bump DavidAnson/markdownlint-cli2-action from 19 to 20 in the all-actions-version-updates group by @dependabot in #1830

New Contributors

Full Changelog: v0.16.0...v0.17.0

Read the original on github.com ↗