VIGO Studio v0.4.1
Pre-releaseVIGO 0.4.1 moves active-timetable indexing into Rust, fixes bunching membership when live vehicles depart from scheduled order, and reorganizes the implementation and documentation.
Native timetable preparation
Rust now reads admitted active-service connections from SQLite directly into typed columns, builds per-stop departure order, deduplicates transfers, expands station fallback links, and packs transfer adjacency. It also reconstructs immutable realtime timetables and compiles directed station paths, retaining nondominated time/distance alternatives and packing their witnesses. Persisted station-path arrays are validated in Rust before reuse. JavaScript retains source-ID resolution, SQLite lifecycle, and result presentation. These production compilation paths require the matching native binding; they have no JavaScript algorithm fallback.
Equal-time departure order, published-transfer precedence, forbidden transfers, station walking times, and service-stop filtering retain their existing semantics. Seeded comparisons against an independent reference and routing regressions verify the migration. A native implementation alone is not a claim of faster complete City builds or live queries.
Routing efficiency
- Cold street preparation validates street and CCH arrays concurrently. In-memory drive hierarchies use a single balanced flow cut per component; persisted builds retain the existing ordering policy.
- Scalar transit scans avoid loading arrival and journey columns for unreachable departures. CCH path reconstruction uses sorted lookup for large adjacency ranges.
- Realtime timetable reconstruction bulk-copies unchanged trip columns while preserving cancellations, replacement trips, permissions, and stable departure ordering.
- Drive traffic weights and constrained-search workspace allocate only when used. Selected-trip shape alignment shares one implementation with shape clipping and avoids temporary transition objects.
- These changes preserve exact search and do not reuse query answers. Measure cold preparation, resident uncached queries, changed realtime snapshots, and materialization separately; no universal percentage is promised.
Live vehicle spacing
A bunch can include a vehicle whose scheduled neighbor has already moved ahead. Reordered predictions now require fresh supporting evidence, use a conservative local scheduled interval, and retain the evidence age and trip identities. Both members receive the indicator, and a vehicle can display multiple bunching links. This changes observation and display; it does not extend the engine's realtime routing coverage.
Maintenance and compatibility
- GTFS metadata, policy, walking plans, results, realtime processing, and previews have explicit module boundaries. Studio components, map features, and routing-worker lifecycle are also separated from their coordinators.
- Journey details use a continuous timeline with full route names, explicit transfer locations, and separate pre-departure and in-journey waits. Route, Analyze, and Network share typography and controls; superseded styles are removed.
- Documentation is grouped into guides, reference, development, and research. Redundant test-loading scaffolding and an obsolete source-text smoke check were removed; package auditing rejects test artifacts.
- API 1.0, City format 1, Result schema 1, and the active-timetable snapshot layout remain unchanged. Existing compatible timetable snapshots remain reusable. Source installations must rebuild the native binding.
See architecture, performance measurement, and the previous release.