Get started

Your first five minutes

One command with Homebrew, nothing to compile. Or build it from the sources: CMake 3.20+ and a C++20 compiler, nothing else (the libraries are vendored, Node.js is not needed).

  1. Install

    On macOS or Linux (x86_64 or aarch64), with Homebrew: the prebuilt zinc of the latest release, its SHA-256 checked, on your PATH. brew update && brew upgrade zinc installs each new release.

    $ brew install frulko/zinc/zinc

    On Windows, or to work on Zinc itself, build from the sources (git clone https://github.com/Frulko/zinc && cd zinc && cmake -S . -B build -DCMAKE_BUILD_TYPE=Release && tools/build zinc): CMake 3.20+ and a C++20 compiler, see the guide.

  2. Ask Zinc what it sees

    zinc doctor

    The engine, this machine's renderer, the tools it downloads by itself the day you build for a board, and the plugins.

  3. Create a project

    zinc new desktop-app my-app
    cd my-app

    zinc new --list prints the 13 templates: game, game-2d, 3d, desktop-app, dashboard, cli, server, service, iot, iot-board, eink, remarkable, plugin.

  4. Run it

    zinc run

    A window opens. The first run compiles for this machine and takes a few seconds, the next ones start at once.

  5. Edit with Fast Refresh

    zinc dev

    Watches the project and swaps every save into the running program: the window stays, and so does the state (the page you were on, what you typed, the game round in progress). Only the files you changed run again, and a component you edit renders again in place. When a change cannot be swapped (a native plugin, a module with a side effect it cannot undo), it restarts and says why in one line. A compile error is a red box on the screen. UI programs get the Chrome DevTools inspector. None of this is in what zinc build ships.

  6. Build for another target

    zinc build                          # this machine
    zinc build --target aarch64-linux   # a Raspberry Pi 64-bit
    TargetMachines
    aarch64-macos, x86_64-macosMac, Apple silicon and Intel
    x86_64-windowsWindows 10 and 11 (console programs for now)
    x86_64-linuxPCs and servers
    aarch64-linuxRaspberry Pi 3, 4 and 5 (64-bit), reMarkable Paper Pro
    armhf-linuxevery 32-bit Raspberry Pi OS, Pi 1 and Zero included
    armv7-linuxNTC CHIP and PocketCHIP
    armv7-webosHP TouchPad on webOS 3
    esp32flashes the board, or runs it in Espressif's QEMU
  7. Flash a board

    zinc flash --target esp32

    Uses the pinned esptool. Without a board, zinc run --simulate hp-touchpad and the ESP32 QEMU runner let you try a device you do not have.

CLI cheat sheet Developer guide