Skip to content

Releases

Antares v0.2.0

Choose a tag to compare

@github-actions github-actions released this 29 Oct 22:24
c0c28fd
docker run --rm -p 9090:9090 ghcr.io/joinedcontext/antares-broker:0.2.0

Upgrade note: migration 0023 cannot be rolled back. It moves short history into an UNLOGGED partition, and a v0.1.x broker cannot write history after it ran. Take a pg_dump before you upgrade a Postgres or TimescaleDB store; that backup is the way back. crates/antares-sql/migrations.rollback.toml lists what a rollback means for each migration.

NGSI-LD API

  • Paging limits: 100 Entities a page by default, 1000 at most (403 TooManyResults past it). Temporal queries return 100 instances an Attribute by default, 1000 at most (206 with Content-Range past it). ANTARES_DEFAULT_LIMIT, ANTARES_MAX_LIMIT, ANTARES_TEMPORAL_DEFAULT_INSTANCES and ANTARES_TEMPORAL_INSTANCE_LIMIT change them.
  • Versions and provenance of measurements, history retention per type and per Entity, expiry of Attribute instances (clause 4.22).
  • Policy narrowing by type, id pattern, attributes and temporal window, applied in the store.
  • The shared crates ship as packages ngsild-model, ngsild-jsonld, ngsild-ql and ngsild-matcher (paths unchanged).
  • ETSI NGSI-LD test suite: 1833/1833 pass on the memory, file, Postgres and TimescaleDB stores.

Database (migrations 0008–0028)

  • New tables views, attr_versions, entity_types, iri_ids, history_cutover, entity_values, entity_attrs; new columns for dataset attributes, attribute expiry, location cells, name keys, versions and provenance.
  • History: one btree instead of two, integer history keys, short history in an UNLOGGED partition.
  • Indexes the broker role can use under forced row-level security: type pages, typed geo cells, id prefixes, name, q= and attrs= values.
  • Drops i_entities_jsonb, which no query under RLS could use.
  • Sessions run with jit = off and max_parallel_workers_per_gather = 0.

Security and dependencies

  • tokio 1.54.1, hyper 1.12.0, OpenTelemetry 0.33, redb 4.4.0, uuid 1.28.0, serde_json 1.0.154, proptest 1.12.0, flate2 1.1.10.
  • fuzz: rustls-webpki 0.103.16 and webpki-root-certs 1.0.10 (RUSTSEC-2026-0382, RUSTSEC-2026-0383).
  • rumqttc 0.25.1 vendored with rustls-webpki 0.103.
  • The broker image declares the distroless nonroot user (65532); the HFP demo ingester runs as nobody.
  • Base images: rust:1-slim and distroless/cc-debian13 pinned to new digests.

Playground

  • Responsive layout for phones, WCAG 2.1 A/AA clean under axe-core.
  • Federated callbacks go through the loopback; at most three toasts on screen.
  • React 19.3.1, Vite 8.3.5, Vitest 5, jsdom 30, swagger-ui-dist 5.34.

WebAssembly

  • The Node shim (www/node-shim.mjs) forwards ANTARES_TEMPORAL_INSTANCE_LIMIT to the wasm broker, like ANTARES_SWEEP_SECS and ANTARES_PUBLIC_URL; before, the wasm broker always used the default ceiling.

CI

  • Every push to dev runs the pipeline and publishes ghcr.io/joinedcontext/antares-broker:dev when green.
  • The weekly ThreadSanitizer job runs on nightly-2026-10-15: from nightly-2026-10-16 (LLVM 23.1.4) every TSan test binary segfaults at startup on arm64.
  • cargo deny drops five advisory ignores the vendored rumqttc no longer needs; the check passes without warnings.

Known issue

  • In a multi-pod NATS deployment, a notifier pod stopped mid-delivery can make one notification count twice in timesSent, and possibly deliver twice (#64). A single broker is not affected.

Antares v0.1.4

Choose a tag to compare

@github-actions github-actions released this 20 Oct 12:09
58c0c45
docker run --rm -p 9090:9090 ghcr.io/joinedcontext/antares-broker:0.1.4
  • deps: rustls 0.23.45 -> 0.23.46 (RUSTSEC-2026-0346..0349)

v0.1.3 was tagged but never released, so its changes ship here:

  • docker: runtime on distroless cc-debian13, matching the build stage
  • fuzz: rustls 0.23.43 -> 0.23.45 (RUSTSEC-2026-0285)
  • fuzz: lockfile follows the workspace's tower-http 0.7, geojson 1, gloo-timers 0.4
  • deps: sonic-number 0.1.2 -> 0.1.3
  • perf-janitor: schedule off while the Hetzner token is out of service
  • docker: distroless/cc-debian12:nonroot to digest 9dac0a7
  • deps: gloo-timers 0.3 -> 0.4
  • deps: geojson 0.24 -> 1.0
  • deps: tower-http 0.6 -> 0.7
  • tests: AtomicUsize::try_update over the deprecated fetch_update
  • deps: cargo group — async-trait 0.1.92, reqwest 0.13.5, uuid 1.26, hyper 1.11.1, redb 4.3 and 7 more
  • docker(wasm): node 22-slim -> 26-slim
  • ci: errata-ai/vale-action v2 -> v3
  • ci: docker/build-push-action v6 -> v7
  • ci: docker/setup-buildx-action v3 -> v4
  • ci: actions/setup-node v4 -> v7
  • ci: actions/checkout v5 -> v7
  • deps(www): source-map-js 1.2.2 (GHSA-68fv-2mgg-jv7q)
  • deps(www): vitest 3 -> 5
  • deps(www): vite 7 -> 8 with @vitejs/plugin-react 4 -> 6
  • deps(www): jsdom 26 -> 30
  • deps(www): playground group — react 19.3, @xyflow/react 12.12, swagger-ui-dist 5.33, playwright-core 1.63
  • perf-janitor: no HCLOUD_TOKEN, nothing to sweep
  • examples: browser step reads demo/pkg, only from a dev bundle
  • readme: the suite origin in one sentence
  • readme: where the conformance suite comes from
  • readme: NGSI-LD conformance count badge in the top row
  • readme: unit-test badge in the top row
  • readme: per-store ETSI results from the live badges

Antares v0.1.2

Choose a tag to compare

@github-actions github-actions released this 22 Sep 16:19
a3eb544
  • release: v0.1.2
  • release: the notes step forces the tag fetch
  • readme: the demo line says it twice
  • readme: docs and demo on their own lines
  • readme: the demo line keeps to the browser
  • readme: docs and demo links at the top; the playground drops its author footer
  • readme: the quickstart entity is laid out as JSON, and the tenancy bullet keeps to the model
  • readme: a docs badge, and tenancy in Why Antares
  • docs: the quickstart pulls :latest
  • release: image tags carry the bare version, and the image ships with the release
  • PR from dev (#25)