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
Minor changes
- martin-cp does now not require
--sourceif 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
- feat: add
Mbtiles::containsby @CommanderStorm in #1850 - feat(mbtiles): add
Mbtiles::stream_coordsandMbtiles::stream_tilesby @Murtaught in #1847 - feat:
mbtileshash extraction support by @CommanderStorm in #1787
Maintenance
- chore: add SQLFluff to pre-commit hooks by @IvanPiatnishin in #1774
- Add get origin func to COG by @sharkAndshark in #1840
- hack: remove the PR file changed checks for CI by @CommanderStorm in #1806
- improve fmt and related just commands by @nyurik in #1854
- Ignore unused
DANGER_ACCEPT_INVALID_CERTSenv var by @nyurik in #1853 - chore: don't build webclient for docs.rs by @CommanderStorm in #1794
- tests(mbtiles): split pool metadata and pool access tests by @CommanderStorm in #1851
- fix:
clippy::uninlined_format_argsby @CommanderStorm in #1843 - chore: fix clippy 1.87 by @nyurik in #1844
- Add
just fmt-sqlto just recipe by @sharkAndshark in #1813 - chore: fix coverage CI by @CommanderStorm in #1826
- fix(ci): adds
cargo::rerun-if-env-changedto prevent cache poisoning by @CommanderStorm in #1797 #1798 - fix
clippy::unnecessary_semicolonby @CommanderStorm in #1782 - Remove postgis 11-3.0 test and fix gdalbin installation by @sharkAndshark in #1785
- feat: auto-wrap cli and add colors to the CLI by @CommanderStorm in #1842
- Add funcs to get modelinfo from cog by @sharkAndshark in #1831
- feat: remove wastefull
Dashmapfrom the catalog by @CommanderStorm in #1825
Documentation
- chore: add more doc-comments by @CommanderStorm in #1835
- Update run-with-docker-compose.md to support styles serving by @Andreal2000 in #1837
- Fix minor typo in API Endpoints header docs page by @mdjong1 in #1821
- docs: add docs for more mbtiles functions by @CommanderStorm in #1849
- docs: fix typo in security policy link by @CommanderStorm in #1775
- docs: add styling documentation by fixing wrong linkage by @CommanderStorm in #1776
- docs: add more docstrings to
mbtilesby @CommanderStorm in #1786 - docs: restructure docs sidebar by @CommanderStorm in #1796
- docs: add more meat to the development section by @CommanderStorm in #1801
- docs: fix typo in dev-docs by @CommanderStorm in #1807
- docs: add a recipe how to add data on top of a basemap by @CommanderStorm in #1808
Dependency updates
-
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
- @IvanPiatnishin made their first contribution in #1774
- @mmoll made their first contribution in #1816
- @mdjong1 made their first contribution in #1821
- @NINNiT made their first contribution in #1832
- @Andreal2000 made their first contribution in #1837
- @alamminsalo made their first contribution in #1477
- @Youssef-Harby made their first contribution in #1477
- @Murtaught made their first contribution in #1847
- @sdf-jkl made their first contribution in #1823
Full Changelog: v0.16.0...v0.17.0