Skip to content

Language Flavors

VMx ships one language-neutral specification through four idiomatic surfaces: C#, Python, TypeScript, and Swift. The conceptual shape stays aligned; naming, package workflow, and host integration follow the local language.

At A Glance

Flavor Package status Reactive primitive Naming idiom
C# VMx package name reserved in docs; source-tree/local reference today System.Reactive PascalCase
Python vmx published on PyPI; source tree may be ahead of latest release reactivex snake_case
TypeScript @thekaveh/vmx package name defined; source-tree/local workspace today rxjs camelCase
Swift SwiftPM package from repo tags after release Combine camelCase

Reading Path

  • Start with the page for your flavor when you need install, package-status, and host-integration pointers.
  • Use Cross-Language Naming when you are translating an idea or snippet across flavors.
  • Use Quickstart when you want the smallest same-shape setup before diving into flavor-specific details.

Flavor Pages

Common Rules

  • All four full-parity flavors target the same VM family model, lifecycle semantics, and conformance catalog.
  • Public naming follows ADR-0006: PascalCase in C#, snake_case in Python, camelCase in TypeScript and Swift.
  • The substantive naming divergence is the modeled leaf/container type: ComponentVM<M> in C# versus ComponentVMOf[...] / ComponentVMOf<...> in Python, TypeScript, and Swift.

For source-tree status and the long-form API surface, use the flavor READMEs in the repository: C#, Python, TypeScript, Swift.