August 25, 2021

Wireleap API consumer-provider semantic versioning

As mentioned in the Monolithic wireleap repository split, released under MIT post, consumer-provider semantic versioning was in the works. Initial support has now been implemented and released in the latest component versions, along with other improvements.

Please note, this is a backwards incompatible release.

Protocol version

Previously, all components shared the same semantic software release and protocol version. This worked quite well and was convenient, but required a full software suite version bump for each change.

$ wireleap version
0.3.2, protocol version 0.3.2
sequenceDiagram participant client participant relay participant dir participant contract participant ps participant auth client->auth: semver

API Consumer-Provider versioning

With the split, each component received its own software version depicted by the git tag, and depended on a specific version of common, but still used a “common protocol version”.

With this release, each component now inherits the interface versions as defined in common for API consumer-provider intercomponent communication, allowing for versions to be bumped individually as needed, while adhering to the semantic versioning specification.

$ wireleap version -v
0.4.0
client-dir interface version 0.1.0
client-relay interface version 0.1.0
client-contract interface version 0.1.0

$ wireleap-relay version -v
0.4.0
client-relay interface version 0.1.0
relay-dir interface version 0.1.0
relay-relay interface version 0.1.0
relay-contract interface version 0.1.0
sequenceDiagram participant client participant relay participant dir participant contract participant ps participant auth client->>relay: semver client->>dir: semver client->>contract: semver relay->>relay: semver relay->>dir: semver relay->>contract: semver contract->>ps: semver ps->>auth: semver

Note: Releases are based on semantic versioning, and use the format MAJOR.MINOR.PATCH. While the MAJOR version is 0, MINOR version bumps are considered MAJOR bumps per the semver spec. https://wireleap.com/docs/client/#versioning

Changes

common

  • Introduced interfaces package with defined component interface versions.
  • Changed api/client and api/provide to perform interface version checks.
  • Improved h2conn synchronization to avoid race conditions.
  • Removed deprecated apiversion package and wlnet/version.go.
  • Default HTTP mux not versioned anymore.
  • Verbose (-v) option added to version command to display interface versions.
  • Fixed changelog download URL to point to the raw file content.
  • Fixed interface versions being set improperly by the default API provider.

wireleap

  • Depends on wireleap/common v0.2.1.
  • Improved bypass.json generation logic to cover edge cases.
  • Improved SKSource synchronization to avoid race conditions.
  • TUN changes:
    • Set IPv4 TTL & IPv6 HopLimit to 64 for UDP.
    • Refactored to read and write from the tun device asynchronously.
    • Improved synchronization to avoid race conditions.
    • ptable functions are now atomic.
  • UI changes:
    • config circuit.whitelist now accepts space-separated list of relays to use.
  • Added firefox exec script.
  • Bash completion added to embedded assets and documented.
  • Fixed issue where some config changes persisted after reload.
  • Uses new interfaces versioning:
    • clientdir v0.1.0
    • clientcontract v0.1.0
    • clientrelay v0.1.0

wireleap-relay

  • Depends on wireleap/common v0.2.1.
  • Uses new version command code.
  • Uses new interfaces versioning:
    • clientrelay v0.1.0
    • relaycontract v0.1.0
    • relaydir v0.1.0
    • relayrelay v0.1.0

wireleap-contract

  • Depends on wireleap/common v0.2.1.
  • Uses new version command code.
  • Uses new interfaces versioning:
    • clientcontract v0.1.0
    • relaycontract v0.1.0
    • contractps v0.1.0

wireleap-auth

  • Depends on wireleap/common v0.2.1.
  • Uses new version command code.
  • Uses new interfaces versioning:
    • psauth v0.1.0
    • contractps v0.1.0 (for unit testing only)
    • relaycontract v0.1.0 (for unit testing only)

wireleap-dir

  • Depends on wireleap/common v0.2.1.
  • Relay enrollment ping timeout increase to 1 minute (was 10 seconds).
  • Relay enrollment ping code moved to avoid excessive locking.
  • Uses new version command code.
  • Uses new interfaces versioning:
    • clientdir v0.1.0
    • relaydir v0.1.0

ps-dummy

  • Depends on wireleap/common v0.2.1.
  • Uses new version command code.
  • Uses new interfaces versioning:
    • psauth v0.1.0
    • contractps v0.1.0

ps-stripe

  • Depends on wireleap/common v0.2.1.
  • Uses new version command code.
  • Uses new interfaces versioning:
    • psauth v0.1.0
    • contractps v0.1.0

Version

0.4.0

Previous Article

Client bash completion