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.