Skip to main content

Process-isolated networked Lua VMs managed from Python (extracted from BioXen)

Project description

pylua-bioxen-vm

A Python library for orchestrating networked Lua virtual machines through subprocess management and socket communication.

Overview

pylua-bioxen-vm provides a unique approach to running multiple Lua interpreters as isolated processes, managed from Python with built-in networking capabilities. Unlike embedded Lua solutions, this library offers true process isolation, fault tolerance, and dynamic scaling of Lua VMs.

Key Features

  • Process-isolated Lua VMs - Each VM runs in its own subprocess for fault tolerance
  • Built-in networking - Socket-based communication using LuaSocket
  • Multiple communication patterns - Server, client, and P2P messaging modes
  • Dynamic VM management - Spawn and terminate VMs as needed
  • Language-agnostic architecture - Could be extended to other interpreters
  • Python orchestration - Full lifecycle management from Python

Architecture

Python Process
├── VM Manager
│   ├── Lua Process 1 (subprocess)
│   ├── Lua Process 2 (subprocess)
│   └── Lua Process N (subprocess)
└── Networking Layer
    ├── Socket Server
    ├── Socket Client
    └── P2P Communication

Installation

pip install pylua-bioxen-vm

Prerequisites

  • Python 3.7+
  • Lua interpreter installed on system
  • LuaSocket library (luarocks install luasocket)

Quick Start

from pylua-bioxen-vm import VMManager

# Create a VM manager
manager = VMManager()

# Spawn Lua VMs
vm1 = manager.create_vm("vm1")
vm2 = manager.create_vm("vm2")

# Execute Lua code
result = vm1.execute("return math.sqrt(16)")
print(result)  # 4.0

# Enable networking
vm1.start_server(port=8080)
vm2.connect_to("localhost", 8080)

# Send messages between VMs
vm2.send_message("Hello from VM2!")
message = vm1.receive_message()

# Cleanup
manager.shutdown_all()

Use Cases

  • Distributed computing - Parallel Lua script execution
  • Game servers - Isolated game logic processes
  • Microservices - Lightweight Lua-based services
  • Sandboxed scripting - Safe execution of untrusted Lua code
  • Load balancing - Multiple worker processes
  • Protocol testing - Network protocol simulation

Communication Patterns

Server Mode

vm.start_server(port=8080)
vm.accept_connections()

Client Mode

vm.connect_to("hostname", port)
vm.send_data("message")

P2P Mode

vm1.establish_p2p_with(vm2)
vm1.broadcast("Hello network!")

example usage

from pylua-bioxen-vm import VMManager

with VMManager() as manager:
    # Server VM
    server_vm = manager.create_vm("server", networked=True)
    server_future = manager.start_server_vm("server", port=8080)
    
    # Client VM  
    client_vm = manager.create_vm("client", networked=True)
    client_future = manager.start_client_vm("client", "localhost", 8080, "Hello!")
    
    # P2P VM
    p2p_vm = manager.create_vm("p2p", networked=True)
    p2p_future = manager.start_p2p_vm("p2p", 8081, "localhost", 8080)

Examples

See the examples/ directory for:

  • Basic VM management (basic_usage.py)
  • Distributed computation (distributed_compute.py)
  • P2P messaging (p2p_messaging.py)

Documentation

Development

git clone https://github.com/yourusername/pylua-bioxen-vm.git
cd pylua-bioxen-vm
pip install -e .
python -m pytest tests/

Contributing

Contributions welcome! Please read our contributing guidelines and submit pull requests.

License

MIT License - see LICENSE file for details.

Why pylua-bioxen-vm?

Existing Python-Lua integrations focus on embedding Lua within Python processes. pylua-bioxen-vm takes a different approach by managing separate Lua processes, providing:

  • True isolation - One VM crash doesn't affect others
  • Horizontal scaling - Easy to distribute across cores/machines
  • Network-first design - Built for distributed systems
  • Fault tolerance - Automatic recovery and reconnection
  • Resource management - Independent memory and CPU usage per VM

Perfect for applications requiring robust, scalable Lua script execution with network communication capabilities.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pylua-bioxen-vm-0.1.3.tar.gz (16.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pylua_bioxen_vm-0.1.3-py3-none-any.whl (18.8 kB view details)

Uploaded Python 3

File details

Details for the file pylua-bioxen-vm-0.1.3.tar.gz.

File metadata

  • Download URL: pylua-bioxen-vm-0.1.3.tar.gz
  • Upload date:
  • Size: 16.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.10.12

File hashes

Hashes for pylua-bioxen-vm-0.1.3.tar.gz
Algorithm Hash digest
SHA256 bba868aeb3e2125c8fd5dfd829b4c36a8a1ff9f694d2dfbb7c10666e783fa8a8
MD5 7943f71a4e80f3799549ad6ddd98f132
BLAKE2b-256 4cff5e91a4d26260b6bd8c4814db79e0eca8e95bdf1767caae06d798b8219f43

See more details on using hashes here.

File details

Details for the file pylua_bioxen_vm-0.1.3-py3-none-any.whl.

File metadata

File hashes

Hashes for pylua_bioxen_vm-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 4fc2c930dd6db4157c8e6459411549a5e404566a409cd83ff0bbe4547e75b02f
MD5 4ed54a247b7eecf559bdfa0c3e29e86a
BLAKE2b-256 e1add076d1913388f9d215637f20e000dff819e4314d92b5a6369ae2c223c046

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page