Installation Guide

Download and install the latest laylight command-line tool on Linux, macOS or Windows.

laylight is the Laylight compiler on the command line: it checks, formats and compiles Laylight files to GDSII, writes netlists and turns GDSII back into Laylight source. It is a single executable without dependencies, built for Linux, macOS on Apple silicon and Windows.

Download the latest release

These links always point to the newest release. Each archive holds the executable alone; unpack it into a directory on your PATH:

mkdir -p ~/.local/bin
tar -xzf laylight-*.tar.gz -C ~/.local/bin

On macOS, a file downloaded with a browser is quarantined and will not run until you clear the flag:

xattr -d com.apple.quarantine ~/.local/bin/laylight

Extract laylight.exe from the zip file into a folder such as %LOCALAPPDATA%\Programs\laylight, then add that folder to the Path user variable under Edit environment variables for your account.

Install with a script

The install script downloads the latest release for your system, checks its SHA-256 checksum and puts it on your PATH:

curl -fsSL https://download.photonstack.io/laylight/install.sh | sh

It installs laylight to ~/.local/bin and tells you if that directory is not on your PATH yet.

powershell -ExecutionPolicy ByPass -c "irm https://download.photonstack.io/laylight/install.ps1 | iex"

It installs laylight.exe to %LOCALAPPDATA%\Programs\laylight and adds that directory to your PATH. Open a new terminal to use it.

Two environment variables change what the script installs:

  • LAYLIGHT_VERSION installs a given version, such as 0.1.0, instead of the latest.
  • LAYLIGHT_INSTALL_DIR installs to another directory.

Install with pip

pip install laylight-cli

The laylight-cli package holds the same executables as the downloads above, one wheel per system, and pip puts laylight in the environment's bin directory (Scripts on Windows); it does not depend on the Python version. The Laylight Python library is released with the command line at the same version and depends on the laylight-cli of its version, so pip install laylight installs the command too. To have the command everywhere instead of in one environment, install it as a tool:

uv tool install laylight-cli   # or: pipx install laylight-cli

Check the installation

laylight --version
laylight help

Then compile a first layout, as in the Overview, or follow the Tour to learn the language.

Telemetry

laylight sends anonymous usage statistics: the command, option names, file kinds and sizes, run time, version and system. It never sends file names, contents or anything that identifies you, and it sends nothing in CI. The first run prints a notice and sends nothing. Turn the statistics off with laylight telemetry disable, LAYLIGHT_TELEMETRY=0 or DO_NOT_TRACK=1. Telemetry lists everything that is sent and how it is kept.

Editor support

laylight lsp runs the language server on stdin and stdout. Point an editor's LSP client at it for .lyl files to get diagnostics while typing (evaluation errors included), completion, hover with evaluated values, go to definition, references, rename, formatting and an outline. Imports are read from disk, with the editor's unsaved buffers taking precedence.

For GDS imports, the server completes paths and original cell names, navigates to the import, and renames local aliases without modifying the binary library.

Neovim 0.11 or newer, in init.lua:

vim.filetype.add({ extension = { lyl = 'laylight' } })
vim.lsp.config('laylight', {
  cmd = { 'laylight', 'lsp' },
  filetypes = { 'laylight' },
  root_markers = { '.git' },
})
vim.lsp.enable('laylight')

Helix, in languages.toml:

[language-server.laylight]
command = "laylight"
args = ["lsp"]

[[language]]
name = "laylight"
scope = "source.laylight"
file-types = ["lyl"]
comment-token = "#"
language-servers = ["laylight"]

Other versions and checksums

Every release stays available under its version, such as https://download.photonstack.io/laylight/v0.1.0/, with the same file names as the latest release; the Changelog lists what each one changed. Each release directory has a SHA256SUMS file; the latest one checks the downloads above:

curl -fsSLO https://download.photonstack.io/laylight/latest/SHA256SUMS
sha256sum --ignore-missing -c SHA256SUMS   # macOS: shasum -a 256 --ignore-missing -c SHA256SUMS

System requirements

  • Linux: x86-64 or ARM64 with glibc 2.17 or later, such as RHEL / CentOS 7, Ubuntu 14.04 and any newer distribution. Distributions built on musl, such as Alpine, are not supported.
  • macOS: macOS 11 or later on Apple silicon. Intel Macs are not supported.
  • Windows: Windows 10 or later on x86-64. Windows on Arm runs the x86-64 build under emulation.

Update and uninstall

To update, run the install script again, download the latest archive over the old executable, or run pip install -U laylight-cli (uv tool upgrade laylight-cli). To uninstall, delete the executable: ~/.local/bin/laylight on Linux and macOS. On Windows, delete %LOCALAPPDATA%\Programs\laylight and remove it from the Path user variable. A pip installation goes with pip uninstall laylight-cli.

On this page