Export actor simulations to production-ready code in multiple languages and frameworks
GenServerVirtualTime can generate production-ready actor system implementations in multiple languages and frameworks. Design your system in Elixir using the high-level DSL, simulate it with virtual time, then export to your target platform with complete build configuration, tests, and CI/CD pipelines.
Generator | Language | Framework & Output | Example Projects |
---|---|---|---|
CAF
C++ Actor Framework โ
|
C++ |
โข Typed actors with callback interfaces
โข CMake build system with Conan dependencies โข Catch2 test suite with GitHub Actions CI โข Separation: generated code + user callbacks |
|
OMNeT++
Network Simulation Framework โ
|
C++ |
โข Discrete-event simulation modules
โข NED network topology files โข CMake build with omnetpp.ini config โข Industry-standard network simulation |
|
Pony
Pony Language โ
|
Pony |
โข Capabilities-secure actors
โข Data-race free by design โข Corral dependency management โข PonyTest suite with Makefile |
|
Phony
Phony Actor Library โ
|
Go |
โข Zero-allocation actor system
โข Pony-inspired Go library โข Go modules with go test โข High-performance message passing |
|
Ractor
Ractor Actor Framework โ
|
Rust |
โข Gen_server-inspired actor model
โข OTP-style supervision trees โข Cargo build with integration tests โข Type-safe async/await actors |
|
VLINGO XOOM
VLINGO Platform โ
|
Java |
โข Type-safe protocol actors
โข Scheduled message delivery โข Maven build with JUnit 5 tests โข Enterprise-ready actor platform |
CMake, Maven, Go modules, or Corral - ready to build immediately
Comprehensive tests with Catch2, JUnit 5, PonyTest, Go testing, or Cargo
GitHub Actions workflows for continuous integration
Separation of generated code and user-defined behavior
Conan, Maven, Corral, or Go modules with versions specified
README files with build instructions and usage examples
Production-ready layout following framework conventions
Design in Elixir (10-100x faster), export to production
Generate code from an actor simulation:
# Define your simulation
simulation = ActorSimulation.new()
|> ActorSimulation.add_actor(:publisher,
send_pattern: {:periodic, 100, :event},
targets: [:sub1, :sub2])
|> ActorSimulation.add_actor(:sub1)
|> ActorSimulation.add_actor(:sub2)
# Generate CAF (C++) code
{:ok, files} = ActorSimulation.CAFGenerator.generate(simulation,
project_name: "PubSubActors",
enable_callbacks: true)
ActorSimulation.CAFGenerator.write_to_directory(files, "output/")
# Or OMNeT++ for network simulation
{:ok, files} = ActorSimulation.OMNeTPPGenerator.generate(simulation,
network_name: "PubSub",
sim_time_limit: 10)
# Or Pony for capabilities-secure actors
{:ok, files} = ActorSimulation.PonyGenerator.generate(simulation,
project_name: "pubsub",
enable_callbacks: true)
# Or Go with Phony
{:ok, files} = ActorSimulation.PhonyGenerator.generate(simulation,
project_name: "pubsub")
# Or Rust with Ractor
{:ok, files} = ActorSimulation.RactorGenerator.generate(simulation,
project_name: "pubsub",
enable_callbacks: true)
# Or Java with VLINGO XOOM
{:ok, files} = ActorSimulation.VlingoGenerator.generate(simulation,
project_name: "pubsub-actors",
group_id: "com.example")
Then build and run in your target language:
# CAF (C++)
cd output/ && mkdir build && cd build
cmake .. && make && make test
# OMNeT++
cd output/ && mkdir build && cd build
cmake .. && make && ./PubSub -u Cmdenv
# Pony
cd output/ && make test
# Phony (Go)
cd output/ && go test ./...
# Ractor (Rust)
cd output/ && cargo test
# VLINGO (Java)
cd output/ && mvn test
Detailed guides for each generator:
โ API Reference