Skip to content

2. Installation

VMx has five catalog-complete source flavors implementing spec 3.25.0. Their current package source versions are listed below; Rust 0.31.0 declares MIN_SPEC_VERSION = "3.25.0". All five implement the canonical concepts and behavior, with intentional flavor idioms documented by ADR; the completed Rust convergence ledger records the focused 0.27.0 evidence. Public package availability can lag the source tree, so check the flavor README and registry before pinning a release.

Flavor Source tree Public package status
C# v3.25.0 NuGet package not published yet
Python v3.25.0 PyPI release 3.23.0
TypeScript v3.26.0 npm package not published yet
React adapter v0.1.1 in source publication waits for core npm #57
Swift v3.26.0 SwiftPM release 3.24.0
Rust 0.31.0 crates.io package not published yet

The package command applies after the first NuGet publication:

dotnet add package VMx

Until then, clone VMx beside the consumer and use a project reference:

dotnet add MyApp.csproj reference ../VMx/langs/csharp/src/VMx/VMx.csproj
pip install vmx
# or
uv add vmx

The registry command applies after the first npm publication:

npm install @thekaveh/vmx rxjs

# Official React bindings (after core and adapter publication)
npm install @thekaveh/vmx-react react use-sync-external-store

Until then, clone VMx beside the consumer and install packed tarballs. Do not link the live adapter directory: a source checkout's React dev dependency can conflict with a React 18 consumer, while the tarball matches the public package payload.

npm --prefix ../VMx/langs/typescript ci
npm --prefix ../VMx/langs/typescript run build
npm --prefix ../VMx/packages/react ci
npm --prefix ../VMx/packages/react run build
mkdir -p /tmp/vmx-packs
npm pack ../VMx/langs/typescript --pack-destination /tmp/vmx-packs
npm pack ../VMx/packages/react --pack-destination /tmp/vmx-packs
npm install /tmp/vmx-packs/thekaveh-vmx-3.26.0.tgz \
  /tmp/vmx-packs/thekaveh-vmx-react-0.1.1.tgz \
  react rxjs use-sync-external-store
dependencies: [
    .package(url: "https://github.com/thekaveh/VMx.git", from: "3.24.0")
],
targets: [
    .target(name: "MyApp", dependencies: [
        .product(name: "VMx", package: "vmx")
    ])
]

SwiftPM resolves v3.24.0. The matching swift-v3.24.0 GitHub Release contains the Swift changelog notes. Supported floors are iOS 16, macOS 13, tvOS 16, and watchOS 9.

Clone VMx beside the consumer and use the unpublished crate by path:

vmx-rs = { path = "../VMx/langs/rust" }

2.1. Notes

  • C# uses System.Reactive.
  • Python uses reactivex.
  • TypeScript uses rxjs.
  • Swift uses Combine.
  • Rust uses its VMx-owned hot-stream facade.