# Where can my program run? [Programming guides](README.md) A host is the environment that runs your program. A text terminal, browser, and desktop preview do not all provide the same drawing, input, sound, or device features. ## Reading the platform names A **capability** is something an environment can provide, such as drawing or key input. **Support** means it can actually carry out that operation. A **backend** is the part that creates or runs a program for a chosen target. **Reserved** means a target name is set aside; it does not mean that target is available yet. Processor labels such as ARM64 and AMD64 are explained in [building applications](build.md). Go and TypeScript are programming languages used to implement Pliro. You can write Pliro programs without learning them. **React Native** names the technology behind the phone preview player. A **protocol** is an agreed format for exchanging information; **v1** means version 1. The preview can only show effects its protocol and player understand. ## Technical Linux display names - **X11** and **Wayland** are systems used to display application windows. **XWayland** lets an X11 application appear in a Wayland desktop. [Wayland documentation](https://wayland.freedesktop.org/docs/book/Xwayland.html). - **DRM/KMS** refers to Linux's *Direct Rendering Manager* and *Kernel Mode Setting*: facilities for graphics devices and display settings. Pliro's direct-display mode uses them to show graphics without a desktop window system. [Linux display documentation](https://docs.kernel.org/gpu/drm-kms.html). - **evdev** is a Linux interface for input events. **Relative input** reports a change, such as moving five units left. **Absolute input** reports a position, such as where a screen was touched. **Multitouch** means following several touches at once; **calibration** adjusts how device positions match the screen. The table's direct-display mouse support does not imply touchscreen or multitouch support. [Linux input documentation](https://docs.kernel.org/input/event-codes.html). ## Host support table | Host or target | Current capability behavior | |---|---| | Go reference interpreter | Implements all currently registered canonical function semantics. Graphics, turtle, media, sprites, and GPIO are structured events; the selected host decides the visible or physical effect. | | [CLI](../concepts/command-line.md) `pliro run` | Renders console output and input prompts. It intentionally does not draw scene, turtle, media, or sprite events. GPIO uses safe virtual state. | | Desktop [IDE](../concepts/ide.md) live preview | Renders console, prompts, keyboard state, logical primary-pointer presses, releases, and clicks, 2D/3D scenes and turtle graphics, project images, sound, retained sprites, and virtual GPIO inspection. | | TypeScript browser runtime | Implements all canonical operations and emits the matching portable events. A particular browser renderer may support only a subset of media or hardware effects. | | Browser playground renderer | Projects console, typed prompts, keyboard, logical primary-pointer presses, releases, and clicks, turtle, and 2D/3D scenes; it currently does not resolve project media, retained sprites, or GPIO effects. | | React Native preview player | Projects console, typed prompts, logical primary-pointer presses, releases, and clicks, turtle, and basic 2D scene commands; project media, retained sprites, and GPIO are not projected yet. Protocol-v1 phone preview does not support 3D and shows a notice directing users to the IDE or a native build. | | Native console | Supports application exit, core functions, repeated lists, random integers, waits, and all four typed prompt functions. | | Native host graphical mode | Currently available when the host platform is Windows; adds keyboard polling, primary-pointer presses, releases, and clicks, 2D/3D graphics, fonts, turtle graphics, packaged images, and retained sprites. | | Explicit Linux AMD64/ARM64 | Supports 2D/3D graphics, keyboard input, and primary mouse press/release/click events through X11/XWayland or direct DRM/KMS display with relative evdev mice. Does not provide GPIO. | | Native Raspberry Pi ARM64/ARMv7 | Supports the Linux graphical and primary mouse event capabilities plus physical GPIO. GPIO is also available in console mode and remains scoped to explicit Pi targets. | | Experimental Linux RISC-V 64 | Supports console programs only; graphical programs receive a target diagnostic. | | Android ARM64 | Target name is reserved but the native backend is not available yet. | Direct-display Linux mouse support covers relative evdev mice; absolute touchscreens, pen calibration, and multitouch are not implemented. Native targets reject a used unsupported capability with a build diagnostic; they do not silently compile it to a no-op. `playSound` is not yet supported by the native build target. ## Related entries [Syntax and values](../syntax/README.md) · [Built-ins](../builtins/README.md) · [Programming guides](README.md)