# 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. The **Pliro desktop IDE** is available for Windows 10/11 and supported Debian-based Linux systems (AMD64). [Download and install the IDE](pliro-ide.md#download-and-install). The table below describes where your programs run; exported Raspberry Pi apps do not require installing this AMD64 IDE package on the Pi. ## 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, recorded/synthesized audio, retained sprites, HTML forms, 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 | Console, typed prompts, keyboard/pointer input, turtle, 2D/3D, synthesized audio and basic HTML forms. Project media/sprites require an asset-enabled host; physical GPIO is unavailable. | | React Native preview player | Console, typed prompts, pointer input, turtle and basic 2D. Protocol v1 has no project media, sprites, audio, 3D or GPIO transport. Complete forms in the IDE. | | Native console | Core operations, typed prompts and sequential terminal forms. No graphical form or scene. | | Native host graphical mode | Supported Windows and Linux hosts provide keyboard/pointer input, 2D/3D, fonts, turtle, project images, sprites, basic forms, PCM WAV and synthesized audio. | | 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. Native audio supports bounded PCM WAV and synthesis. Other codecs may report a diagnostic. See [music](music.md), [forms](forms.md), and [display settings](display-settings.md). ## Related entries [Syntax and values](../syntax/README.md) · [Built-ins](../builtins/README.md) · [Programming guides](README.md) ## Advanced application hosts [Pro development tools](development-tools.md) run in the desktop IDE and CLI. [Advanced data/network APIs](advanced-applications.md) additionally run in supported native exports after explicit host permission; generated apps have no product-licence check. Public-playground execution is unavailable, and browser/phone hosts have no advanced adapter. Ordinary Core code from Pro editors remains portable.