Releases: maplibre/martin
v0.14.2
v0.14.1
v0.14.0
UPDATE: this release has a minor bug in mbtiles
utility, fixed in subsequent release
martin
- Add runtime for AWS Lambda by @jleedev in #1127
- Add
--preferred-encoding (gzip|brotli)
to use when tile is not pre-encoded by source by @sharkAndshark in #1189 - Switch default encoding to gzip for now by @nyurik in #1260
- Fix preferred encoding computation by @nyurik in #1355
- add application_name to PG connection by @nyurik in #1325
- Fix martin
--auto-bounds
silently ignored with--config
by @nyurik in #1223
martin-cp
- Add martin-cp to homebrew by @sharkAndshark in #1126
mbtiles
- New
mbtiles diff
command aliasingmbtiles copy --diff-with-file
by @sharkAndshark in #1068 - Add binary diff support for mbtiles by @nyurik in #1358
mbtiles diff
now has an additional--patch-type
param withwhole
,bin-diff-raw
andbin-diff-gz
values:whole
stores different tiles as before - as whole tiles in thetiles
tablebin-diff-raw
computes binary difference between tiles, and stores them as brotli-encoded value in absdiffraw
table, together with axxh3_64
hash of the tile as it will be stored after patchingbin-diff-gz
same asbin-diff-raw
, but assumes the tiles are gzip-compressed, so it uncompresses them before comparing. Thexxh3_64
stores the hash of the uncompressed tile. The data will be stored in thebsdiffrawgz
table (identical structure with above)
mbtiles copy --apply-patch
will automatically detect ifbsdiffrawgz
orbsdiffraw
tables exist, and will use binary patching.mbtiles apply-patch
does not support binary patching yetmbtiles copy --diff-with-file ... --patch-type ...
is an alias tombtiles diff --patch-type ...
- bug: ensure agg_tiles_hash_after_apply is added even on empty mbtiles by @nyurik in #1242
Documentation
- Add using-with-openlayers document by @sharkAndshark in #1150
- Fix apply-patch documentation by @nyurik in #1261
- Update mbtiles-copy.md by @sharkAndshark in #1181
- Update quick-start-linux.md by @Oquile in #1380
- Update quick-start-qgis.md by @sharkAndshark in #1382
- Update documentation for running with Docker Compose by @hiddewie in #1283
- fix broken links, reformat markdown by @nyurik in #1257
- Adjust readme and martin book by @sharkAndshark in #1253
- fix: handle if selected date was undefined while double click on a sa… by @jokopriyono in #1373
Other Changes
- Make the mbtiles and pmtiles deps optional. by @jleedev in #1124
- style: rename
git_source_info
toget_source_info
by @sharkAndshark in #1164 - add PGPARAMS to just for testing connections by @nyurik in #1131
- Upgrade deps and fix global RusTLS init by @nyurik in #1381
- Upgrade to Rustls 0.22 by @nyurik in #1136
- Use Rust 1.74 std::io::Error::other fn by @nyurik in #1009
- Use ORDERBY in calc_agg_tiles_hash - SQLite v3.44 by @nyurik in #1156
- Adapt justfiles for Docker Compose command by @justb4 in #1153
- test: add tests for empty mbtiles by @nyurik in #1218
- noop: refactor mbtiles copy to support new cases by @nyurik in #1265
- chore: some refactoring of postgres code by @nyurik in #1166
- Update macos runner by @sharkAndshark in #1165
- upgrade to latest pmtiles by @nyurik in #1173
- Better bounds debugging by @nyurik in #1180
- write! perf optimization - use write_str by @nyurik in #1182
- Update nginx path of windows runner in CI.yml by @sharkAndshark in #1210
- Bump locks, blessed expected tests by @nyurik in #1212
- CI fix: Wait for "docker-build-test" to use cross-build artifacts by @nyurik in #1215
- Use --locked with cargo install by @nyurik in #1216
- Add --base-path CLI option to override the URL path in the tilejson by @sharkAndshark in #1205
- Refactor to ensure values are not forgotten by @nyurik in #1224
- Fix typos by @kianmeng in #1225
- Added a test for schema.table.column containing special chars by @nyurik in #1222
- Add test for function with special character by @sharkAndshark in #1231
- Update lock, insta version deprecation, some test changes by @nyurik in #1240
- chore: rename agg_tiles_hash_in_diff to agg_tiles_hash_after_apply by @nyurik in #1243
- chore: increase complexity of the SQL table test by @nyurik in #1256
- chore: add empty pg table test by @nyurik in #1259
- Update sqlite-hashes dependency by @nyurik in #1268
- upgrade dependencies, Nasm on Windows by @nyurik in #1295
- Migrate to newer pmtiles dependency by @nyurik in #1299
- Upgrade to pmtiles, rm async-trait in a trait by @nyurik in #1300
- Fix a few CI issues and bump deps by @nyurik in #1341
- Fix CI: use new nginx and postgis actions by @nyurik in #1351
- Bump all dependencies by @nyurik in #1353
- Add
agg_tiles_hash_before_apply
, warnings, and validate on patch by @nyurik in #1266
New Contributors
- @jleedev made their first contribution in #1124
- @justb4 made their first contribution in #1153
- @kianmeng made their first contribution in #1225
- @hiddewie made their first contribution in #1283
- @jokopriyono made their first contribution in #1373
- @Oquile made their first contribution in #1380
Full Changelog: v0.13.0...v0.14.0
v0.13.0
Tile Caching
Add a top level config parameter -- the size of cache memory (in MB) to use for caching tiles and PMT directories, defaulting to 512, and 0 to disable. This also removes the pmtiles.dir_cache_size_mb
parameter (it will be ignored, but will give a warning)
cache_size_mb: 512
The new cache will contain all tiles as provided by the source. So if PostgreSQL returns a non-compressed tile, the cache will contain the uncompressed variant, and will be compressed for each response. This will be fixed in the later releases.
Note that fonts and sprites are not cached at this time, and are still a TODO.
Internal
- Fix sporadic macos test failures by @nyurik in #1104
- Lots of small refactorings by @nyurik in #1107
- Deprecate few things, lock and lints by @nyurik in #1111
Full Changelog: v0.12.0...v0.13.0
v0.12.0
Cached PMTiles with HTTP support
Martin now supports cached local and HTTP PMTiles sources. Additionally, multiple PMTiles sources share a single web client instance, optimizing connection reuse in case multiple pmtiles reside on the same host. Implemented by @nyurik with great help from @kyleslugg who did the integration testing CI work, see #991, #1095, #1094
pmtiles:
# Memory (in MB) to use for caching PMTiles directories [default: 32, 0 to disable]]
dir_cache_size_mb: 100
paths:
# scan this whole dir, matching all *.pmtiles files
- /dir-path
# specific pmtiles file will be published as a pmt source (filename without extension)
- /path/to/pmt.pmtiles
# A web server with a PMTiles file that supports range requests
- https://example.org/path/tiles.pmtiles
sources:
# named source matching source name to a single file
pm-src1: /path/to/pmt.pmtiles
# A named source to a web server with a PMTiles file that supports range requests
pm-web2: https://example.org/path/tiles.pmtiles
📝 We badly need someone to document how to setup Martin on AWS lambda, and/or similar setup on the other cloud providers. See #1102
martin-cp
and mbtiles
improvements
martin-cp
will now update min/max zoom levels after copying to an mbtiles file, but only if the existing metadata min/max zooms do not include the tiles actually contained in the file by @nyurik in #1096- mbtiles update now allows different types of zoom updates - reset to content, grow only, or skip (dry run) by @nyurik in #1096
Martin as a Reusable Crate
Martin has been refactored to allow modular reuse to be more of a library in your own Rust application. When used as a library, you can use the following features to limit which backends are compiled by @nyurik in #1097 and #1094
- postgres - enable PostgreSQL/PostGIS tile sources
- pmtiles - enable PMTile tile sources
- mbtiles - enable MBTile tile sources
- fonts - enable font sources
- sprites - enable sprite sources
Full Changelog: v0.11.6...v0.12.0
v0.11.6
What's Changed
- Multiple mbtiles and martin-cp fixes by @nyurik in #1083
- BREAKING:
martin-cp
will now setformat=pbf
instead ofmvt
. This is what QGIS and possibly others expect, and this is what tools like tilelive generates. martin-cp
setsminzoom
andmaxzoom
metadata values based on the zoom parameters- Add
mbtiles meta-update
command to refresh zoom levels based on the present tiles.
- BREAKING:
Internal Changes
Full Changelog: v0.11.5...v0.11.6
v0.11.5
Bug Fixes
- Fix composite sources returning bad data on empty by @nyurik in #1080, thanks
to @jjcfrancisco for helping identify and debug this issue.
What's Changed
mbtiles
andmartin-cp
now require--on-duplicate
when adding to existing mbtiles files by @nyurik
in #1064- New
mbtiles copy --bbox ...
filter to copy tiles within a bbox only by @nyurik
in #1060 - New
mbtiles copy --copy (all|tiles|metadata)
flag to limit what gets copied by @nyurik
in #1073 - Add a few aliases to
mbtiles
commands by @nyurik in #1063
Internal Improvements
- Lots of work on bbox vs xyz computation by @sharkAndshark and @nyurik
in #1059, #1070 - Split Clap code from
MbtilesCopier
intoCopyArgs
by @nyurik in #1072 - Minor test snapshot cleanup by @nyurik in #1074
Full Changelog: v0.11.4...v0.11.5
v0.11.4
What's Changed
- Add tiles table/view validation to
mbtiles validate
by @nyurik in #1057- Reports any invalid data in the
tiles
table/view, e.g. bad tile index or incorrect data type.
- Reports any invalid data in the
- Add extra CLI help string about RUST_LOG by @nyurik in #1053
- Clean up mbtiles tool output by @nyurik in #1048
- No more unrelated warnings due to slow running queries.
Miscellaneous
- chore: simplify fn git_source_info by @nyurik in #1055
- Move math utils to martin-tile-utils by @nyurik in #1056
- Adjust CI link checker by @nyurik in #1058
Full Changelog: v0.11.3...v0.11.4
v0.11.3
What's Changed
- Bugfix: Fix setting TileJSON with a SQL comment by @nyurik in #1045 (thx @jjcfrancisco for reporting)
- New:
martin-cp
can also set metadata values after copying by @nyurik in #1038
Internal
New Contributors
Full Changelog: v0.11.2...v0.11.3
v0.11.2
What's Changed
- add agg-tiles-hash calc to
martin-cp
by @nyurik in #1033 - Update Docker build process by @nyurik in #1022
- Upgarde to v0.10 spreet crate, cleanup SpreetResult by @nyurik in #984
- Add linting to CI for martin book by @sharkAndshark in #1030
Full Changelog: v0.11.1...v0.11.2