Skip to content

v2.1.2

Latest

Choose a tag to compare

@tomcheney tomcheney released this 23 Jun 20:39
· 1 commit to main since this release

This release adds support for Expedition’s EXP_API_VERSION 1.2 DLL (ExpeditionX), while continuing to work with older Expedition installs.

Highlights

Dual DLL compatibility — ExpeditionDLL now probes available exports at init, so the same package works on legacy ExpDLL and ExpeditionX without separate installs.
New typed channel API — get_exp_var2() / set_exp_var2() and the ExVal type wrap the new GetExpVar2 / SetExpVar2 exports.
Existing code keeps working — set_exp_vars(), get_exp_vars(), and boat position helpers automatically fall back to single-var SetExpVar / GetExpVar when batch exports are removed.
Clear capability detection — use api_version ("legacy" or "1.2"), has_batch_vars, and has_exp_var2 to branch in your integration code.

What still works on Expedition < 12.8.0
Core channel I/O, system vars/bools, boat count, MOB, user var names, and batch position/var updates (via Python fallback).

Legacy-only APIs

On ExpDLL 1.2, these methods raise ExpeditionAPIError because the underlying exports were removed:

Var precision: set_var_precision, get_var_precision
Boat UI: set_boat_name, get_boat_colour, set_boat_colour
AIS: get_ais_dangerous_cpa
Marks/routes: ping_mark, create_active_route, add_mark_to_active_route
get_variation() still works on 1.2 via the existing Var.MagVar fallback when GetVariation is not exported.

Upgrade notes

No enum breaking changes — channel enums are unchanged from 2.0; this is a DLL-wrapper release, not a major bump.
Check your Expedition install — Python bitness must still match the Expedition install (32 vs 64 bit).
Inspect capabilities at runtime if you use legacy-only APIs:

from Expedition import ExpeditionDLL
exp = ExpeditionDLL.from_default_location()
print(exp.api_version)  # "1.2" or "legacy"

Requirements

Windows with Expedition installed and running (for live DLL integration)
Python 3.10+
Full details: see CHANGELOG.md.