Skip to content

Latest commit

 

History

History
36 lines (31 loc) · 2.22 KB

File metadata and controls

36 lines (31 loc) · 2.22 KB

PythonOS, RubyOS, and RemoteOS-SDL alignment

PythonOS 0.4.2 and RubyOS 0.3.0 pin the same RemoteOS-SDL 0.2.1 repository at services/remoteos-sdl. The former language-branded C companion has been removed; protocol and host-device behavior now have one owner.

Concern PythonOS RubyOS RemoteOS-SDL
Runtime source-built CPython source-built CRuby no guest runtime
Scheduling asyncio tasks Fibers host event loop only
Live programming VFS Python modules and window-source reload Module sandboxes and class patches none
Transport bare-metal TCP/UART bare-metal TCP/VirtIO console TCP/Unix stream endpoint
Presentation Python compositor Ruby compositor SDL resources and input/audio devices
Metrics guest RPC timing guest RPC timing wire volume and per-operation service time

RemoteOS protocol v2 is deliberately breaking. Negotiation is mandatory; old versions fail closed. Drawing is grouped into bounded, response-free batches. PythonOS follows each batch with an ordered one-way presentation while its independent input task supplies the next ordering barrier. RubyOS uses frame.commit to present and collect input in one round trip. Both approaches use the same service primitives but match their native schedulers.

The common layer stops at devices. PythonOS keeps asyncio, Python import/reload, its widget hierarchy, applications, and teaching curriculum. RubyOS keeps Fibers, Modules, class DSLs, object graphs, and Rack-shaped services. Convergence below that line removes duplicated systems code without flattening either language into a least-common-denominator API.

The shared service now provides depth-buffered 3D, FFmpeg decoding, audio-clocked short-clip playback, and bounded Matroska export (MPEG-4 plus optional stereo PCM). These are additive protocol-v2 capabilities. RubyOS exposes them through its scene, resource and recording APIs; PythonOS's existing compositor and retro graphics APIs remain unchanged. Both host builds now require FFmpeg development libraries and OpenGL alongside SDL. Media limits and security policy live in the pinned service's PROTOCOL.md, not in duplicated language-specific servers.