Skip to content

Bump tz_world from 1.4.1 to 2.3.0#63

Open
dependabot[bot] wants to merge 1 commit intomasterfrom
dependabot/hex/tz_world-2.3.0
Open

Bump tz_world from 1.4.1 to 2.3.0#63
dependabot[bot] wants to merge 1 commit intomasterfrom
dependabot/hex/tz_world-2.3.0

Conversation

@dependabot
Copy link
Copy Markdown

@dependabot dependabot Bot commented on behalf of github May 1, 2026

Bumps tz_world from 1.4.1 to 2.3.0.

Release notes

Sourced from tz_world's releases.

Tz World version 2.2.0

Bug Fixes

  • mix tz_world.update now produces a single clear error instead of a long File.Error stack trace when the configured :data_dir does not exist. To create the directory automatically, pass --force. This affects users who set :data_dir to a path outside the package's priv/ (e.g. an application-level data directory shared across releases).

Migration

  • If you set config :tz_world, data_dir: "..." to a directory that is not part of the build artifacts, run mix tz_world.update --force once on first install (or any install where the directory may not yet exist). The default :data_dir (the package's priv/) always exists and is unaffected.

Tz World version 2.1.0

Tz_World v2.1.0

Enhancements

THe primary focus in this release is peak memory used during the mix tz_world.update process. With the changes in this release, peak memory has been reduced from about 920Mb to about 70Mb.

  • On-disk data format upgraded; existing installations must run mix tz_world.update once after upgrading.

  • The :jason dependency has been removed in favour of the built-in :json module (with :json_polyfill on OTP < 27)."

Tz_World v2.0.0

Enhancements

  • Adds TzWorld.Backend.SpatialIndex, a new backend that resolves timezones using a pure-Elixir R-tree (Sort-Tile-Recursive packed) held in :persistent_term. Lookups bypass the GenServer mailbox and read directly from :persistent_term, eliminating the linear bounding-box scan used by the previous backends.

  • TzWorld.Backend.SpatialIndex is now the default backend, and is the first entry in the default backend precedence list. Existing applications that do not pin :default_backend will pick it up automatically.

  • Benchmarked against the previous backends across a categorised fixture set (dense regions, sparse/large zones, small/thin zones, ocean points with no match, points adjacent to the international date line):

    Input category Speedup vs. the next-fastest existing backend
    ocean (no-match) 18.2×
    sparse_or_large 1.64×
    dense (cities) 1.43×
    random uniform 1.42×
    small_or_thin 1.08×

    The largest wins are on no-match queries: previously, points in the open ocean caused a full scan of every shape's bounding box; the R-tree exits at the root.

  • Adds TzWorld.SpatialIndex, a small standalone R-tree implementation (build + stab) used by the new backend.

  • Adds TzWorld.TimezoneFixtures, a categorised set of coordinate fixtures used by both the test suite and the benchmark.

Breaking Changes

  • Removes TzWorld.Backend.Memory. It is strictly dominated by TzWorld.Backend.SpatialIndex on every measured workload (same memory profile, faster lookups, no GenServer round-trip).

  • Removes TzWorld.Backend.Ets. Without an in-memory bbox index, every lookup on a no-match point performed a full ETS scan via match-spec — orders of magnitude slower than the index-cache variant or the new SpatialIndex backend. TzWorld.Backend.EtsWithIndexCache remains for users who want ETS-backed shape storage.

... (truncated)

Changelog

Sourced from tz_world's changelog.

Tz_World v2.3.0

This is the changelog for Tz_World v2.3.0 released on April 29th, 2026.

Breaking Changes

  • TzWorld.reload_timezone_data/0 now returns {:ok, [{backend, result}, ...]} or {:error, [{backend, reason}, ...]} instead of a bare list. Callers that pattern-matched the previous return shape need updating.

  • Adds :telemetry ~> 1.0 as a runtime dependency.

Enhancements

  • mix tz_world.update fails fast with a clean error and exit 1 when the configured :data_dir does not exist. Pass --force to create it on the fly.

  • TzWorld.reload_timezone_data/0 now actually works in every backend configuration: backends that aren't running are skipped instead of crashing the caller with :noproc. Reload also runs the backends in dependency-correct order (DETS before ETS).

  • On-disk .tzw1 and .dets files are now written atomically (write-temp + rename in the same directory). Concurrent readers in another BEAM never observe a half-written file, even while mix tz_world.update is running.

  • Reload emits [:tz_world, :reload, :start | :stop | :exception] and [:tz_world, :reload, :backend, :start | :stop | :exception] telemetry events with :duration measurements and :backend / :result metadata.

  • mix tz_world.update no longer starts the SpatialIndex backend internally; the version check reads the on-disk header directly. This removes the misleading "started without timezone data — run mix tz_world.update" warning that the update task itself used to log.

Bug Fixes

  • Fixed TzWorld.Backend.EtsWithIndexCache retaining stale entries across reloads. Shapes removed upstream (or whose bounding-box keys changed) now actually disappear from the cache.

  • Fixed TzWorld.Backend.SpatialIndex reload briefly exposing an inconsistent index. The three persistent-term entries are packed into a single key so reload is an atomic swap.

  • Fixed TzWorld.Backend.DetsWithIndexCache reload failing with :incompatible_arguments when another opener held a reference to the live DETS file.

Tz_World v2.2.0

This is the changelog for Tz_World v2.2.0released on April 28th, 2026. For older changelogs please consult the release tag on GitHub.

Bug Fixes

  • mix tz_world.update now produces a single clear error instead of a long File.Error stack trace when the configured :data_dir does not exist. To create the directory automatically, pass --force. This affects users who set :data_dir to a path outside the package's priv/ (e.g. an application-level data directory shared across releases).

Migration

  • If you set config :tz_world, data_dir: "..." to a directory that is not part of the build artifacts, run mix tz_world.update --force once on first install (or any install where the directory may not yet exist). The default :data_dir (the package's priv/) always exists and is unaffected.

Tz_World v2.1.0

This is the changelog for Tz_World v2.1.0 released on April 27th, 2026. For older changelogs please consult the release tag on GitHub.

Enhancements

THe primary focus in this release is peak memory used during the mix tz_world.update process. With the changes in this release, peak memory has been reduced from about 920Mb to about 70Mb.

... (truncated)

Commits

Dependabot compatibility score

Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


Dependabot commands and options

You can trigger Dependabot actions by commenting on this PR:

  • @dependabot rebase will rebase this PR
  • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
  • @dependabot show <dependency name> ignore conditions will show all of the ignore conditions of the specified dependency
  • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
  • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)

Bumps [tz_world](https://github.com/kipcole9/tz_world) from 1.4.1 to 2.3.0.
- [Release notes](https://github.com/kipcole9/tz_world/releases)
- [Changelog](https://github.com/kipcole9/tz_world/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kipcole9/tz_world/commits)

---
updated-dependencies:
- dependency-name: tz_world
  dependency-version: 2.3.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot added dependencies Pull requests that update a dependency file elixir Pull requests that update Elixir code labels May 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file elixir Pull requests that update Elixir code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants