Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
142 commits
Select commit Hold shift + click to select a range
c96da06
Native Windows port (no WSL): working terminal with themed chrome
ecstra Jul 18, 2026
911443f
win32: custom frame with acrylic title-bar strip
ecstra Jul 18, 2026
edabdfe
win32: caption buttons, close fix, matched title bar, rounded frame
ecstra Jul 18, 2026
73f0e79
win32: bigger buttons/smaller glyphs, live resize, blur on maximize
ecstra Jul 18, 2026
cad49d9
win32: fix functional keys, native caption glyphs, maximized blur, in…
ecstra Jul 18, 2026
5faa88a
win32: enlarge caption glyphs to ~40% button height
ecstra Jul 18, 2026
3b0e13f
win32: bold/compact caption glyphs, make background_blur a real toggle
ecstra Jul 18, 2026
a0a738c
win32: consistent blur across maximize/restore, fix background_blur 0
ecstra Jul 18, 2026
2a53ef5
win32: real SVG caption icons; fix maximized blur, grey-on-open, no-b…
ecstra Jul 18, 2026
5654814
win32: use provided PNG caption icons; kill phantom caption in glass …
ecstra Jul 18, 2026
c8fd98c
win32: caption buttons as child window, no caption flash on open, sma…
ecstra Jul 18, 2026
f60873d
win32: try host-backdrop acrylic for uniform, maximize-stable blur (e…
ecstra Jul 18, 2026
ba483f2
win32: fix process crash on window close; remove win98 frame; smaller…
ecstra Jul 18, 2026
9201646
win32: restore 40px title bar; glass-only NCRP for phantom-caption fix
ecstra Jul 18, 2026
49087db
win32: no-blur transparency via DwmEnableBlurBehindWindow (no frame, …
ecstra Jul 18, 2026
793096b
win32: close with empty config, remember maximized state, Windows pad…
ecstra Jul 18, 2026
b3d144a
win32: keep the real (restore) size when a maximized window is closed
ecstra Jul 18, 2026
b6074b2
win32: overlay kitten spawn path, tab title and close defaults
ecstra Jul 18, 2026
4d578a7
docs: Windows port overview, internals, and decisions
ecstra Jul 18, 2026
b9a75a1
win32: revert tab title to the default
ecstra Jul 18, 2026
4135c3d
win32: run kittens in a console-subsystem launcher so the TUI loop works
ecstra Jul 19, 2026
f547131
win32: batch kitten frame writes to stop flicker, unblock read on exit
ecstra Jul 19, 2026
e4f410b
win32: port the ask kitten to Python for rename-tab and confirmations
ecstra Jul 19, 2026
7b9f225
gitignore the local Windows-port TODO list
ecstra Jul 19, 2026
af2d70e
win32: run kittens over pipes, not a pseudoconsole, to fix flicker an…
ecstra Jul 19, 2026
8462d8f
win32: release the pty entry when a child is removed
ecstra Jul 19, 2026
7e95e9b
win32: create a second OS window's tab-bar VAO in its own GL context
ecstra Jul 19, 2026
3462342
win32: close the window when a ConPTY shell exits
ecstra Jul 19, 2026
fdc37cf
win32: copy the selection to the real Windows clipboard
ecstra Jul 19, 2026
6316440
win32: ship xterm-kitty terminfo in the hashed dir pagers read
ecstra Jul 19, 2026
daa2c29
add a select_all action bound to ctrl+shift+a
ecstra Jul 19, 2026
9954233
win32: fail drag start cleanly instead of wedging the mouse
ecstra Jul 19, 2026
6aa9f1d
win32: read a process working directory via the PEB
ecstra Jul 19, 2026
ccf5863
win32: shell integration for PowerShell
ecstra Jul 19, 2026
a8c2d40
win32: apply shell-integration argv changes to the spawn
ecstra Jul 19, 2026
7333439
win32: default tab title to New Tab and ignore the conhost exe path
ecstra Jul 19, 2026
75e9447
win32: shell integration for cmd.exe via PROMPT
ecstra Jul 19, 2026
4b041bb
win32: port tools/utils to build on Windows
ecstra Jul 19, 2026
0bcf4a3
win32: port tools/tty to build on Windows
ecstra Jul 19, 2026
683b2ee
win32: port the tui loop to build on Windows
ecstra Jul 19, 2026
8c2a615
win32: fork go-shm and port more tool packages toward the Windows build
ecstra Jul 19, 2026
de4c186
win32: the Go kitten tool now builds and runs on Windows
ecstra Jul 19, 2026
117b00e
win32: install the Go kitten as kitten.exe
ecstra Jul 19, 2026
2797daf
win32: stop kitten workers flashing a console, use the Go ask kitten
ecstra Jul 19, 2026
467553b
win32: add opt-in kitten input logging to diagnose key handling
ecstra Jul 19, 2026
ca88cbc
kittens/ask: let arrow keys move the highlighted choice
ecstra Jul 19, 2026
176bd3d
windows: make standalone kittens work in the shell console
ecstra Jul 19, 2026
2e29ee8
windows: repaint the shell prompt after a full-screen kitten exits
ecstra Jul 19, 2026
8b1ec45
windows: hot-reload config on a named event (theme apply without rest…
ecstra Jul 19, 2026
e634623
windows: open the real console (CONIN$/CONOUT$) for terminal I/O
ecstra Jul 19, 2026
e6a50d3
windows: deliver overlay-kitten stdin data via a temp file (fixes hints)
ecstra Jul 19, 2026
dec2686
windows: let the diff kitten run without the kitty keyboard protocol
ecstra Jul 19, 2026
549f3c2
windows: drop the KITTEN_INPUT_LOG kitten-input diagnostic
ecstra Jul 19, 2026
c49e1f5
windows: native icat / graphics protocol via a conhost side channel
ecstra Jul 19, 2026
ed6d301
windows: don't flash the taskbar when kitty is already focused
ecstra Jul 19, 2026
948322e
windows: titlebar buttons and tab-bar strip follow the theme live
ecstra Jul 20, 2026
6df8e6f
windows: keep the always-on Gaussian blur; document why acrylic needs…
ecstra Jul 20, 2026
ed40c69
windows: wire up zsh shell integration and stop the multi-second spaw…
ecstra Jul 21, 2026
d911897
windows: derive the glass predicate from the computed blur flag
ecstra Jul 21, 2026
353ff67
windows: recover from ACCESS_DENIED when atomically replacing a cache…
ecstra Jul 21, 2026
b1c2c9d
windows: don't install kitty's zsh sudo() wrapper on Cygwin/MSYS2
ecstra Jul 21, 2026
88df28e
windows: resolve the kitty executable as kitty.exe in Go kittens
ecstra Jul 21, 2026
dab0c19
windows: stop the taskbar attention flash from sticking after a bell
ecstra Jul 21, 2026
8a58b1a
windows: credit the native Windows port author
ecstra Jul 21, 2026
ae09f52
windows: give update-self a clear message for the source-built port
ecstra Jul 21, 2026
ed64d4d
windows: colorize the port-credit line in the version banner
ecstra Jul 21, 2026
f0f7459
windows: run-shell falls back to the Windows shell, not /bin/sh
ecstra Jul 21, 2026
5f4938e
windows: emit the orange credit name in semicolon-form truecolor
ecstra Jul 21, 2026
719b355
windows: route edit-in-kitty's DCS through the conhost bypass pipe
ecstra Jul 21, 2026
279fed0
windows: make edit-in-kitty open an editor (file identity + editor re…
ecstra Jul 21, 2026
faf3894
windows: stop spurious bell notifications from conhost
ecstra Jul 21, 2026
5e0dce1
windows: fall back to plain text for the text-sizing protocol under c…
ecstra Jul 21, 2026
86c08ee
windows: shrink the choose-files search box to fit plain 1x text
ecstra Jul 21, 2026
5b004d4
Windows: implement desktop notifications as native toasts
ecstra Jul 22, 2026
757ae08
Windows: fix __show_error__ kitten unable to read its JSON payload
ecstra Jul 22, 2026
1ea7534
Windows: fix kittens failing to launch with WinError 267
ecstra Jul 22, 2026
8decb9d
Windows: fix command-palette failing to read its input data
ecstra Jul 22, 2026
ad792d4
Windows: implement drag-and-drop drop target
ecstra Jul 22, 2026
45ce963
Windows: show a clear message for kittens not yet implemented
ecstra Jul 22, 2026
97e6130
Windows: flag unsupported kittens in the kitten command list
ecstra Jul 22, 2026
55b0841
Windows: run MSYS2/Cygwin shells on a real Cygwin pty, bypassing conhost
ecstra Jul 22, 2026
9f4fb43
Windows: fix native-program output charset and typing latency in the …
ecstra Jul 22, 2026
7a350cf
Windows: install kitty terminfo into msys2 so native programs work on…
ecstra Jul 22, 2026
a4c4445
Windows: route kitten TUI output around conhost via the bypass pipe
ecstra Jul 22, 2026
1fd4e42
Windows: add a self-contained installer (Inno Setup)
ecstra Jul 22, 2026
da618c8
Windows: stop zsh exporting its prompt into the environment
ecstra Jul 22, 2026
f018ada
Windows: clean failures for kitty +list-fonts and icat outside kitty
ecstra Jul 22, 2026
06d9cc8
Windows: full-screen kittens require the kitty terminal
ecstra Jul 22, 2026
8a4fb54
Windows: fix rendering latency, report real refresh rate, attach pare…
ecstra Jul 22, 2026
43ad8e8
Windows: installer is now a standard admin install (Program Files, HK…
ecstra Jul 22, 2026
988be23
Windows: rebind CRT stdio after AttachConsole (handle check must prec…
ecstra Jul 22, 2026
dafed6d
Windows: modern context menu via signed sparse MSIX, and PATH shims
ecstra Jul 22, 2026
50a857b
Windows: acrylic blur, context menu renamed to "Open in kitty", shim …
ecstra Jul 22, 2026
31a0c15
Windows: extend the acrylic accent across the window frame borders (e…
ecstra Jul 22, 2026
6e3c6ae
Windows: harden the kitten gate to a clean exit; finalize acrylic edg…
ecstra Jul 22, 2026
dd451ff
Use the real Windows 11 acrylic material for the background
ecstra Jul 23, 2026
6d76954
Windows: stop paying the 15.625 ms timer tick on every keystroke
ecstra Jul 23, 2026
512a0da
Docs: bring the Windows docs up to date with the finished port
ecstra Jul 23, 2026
01f5518
Windows: credit the port in kitty --version, default to PowerShell, k…
ecstra Jul 23, 2026
0dc8d75
Windows: make kitty subcommands print in every shell
ecstra Jul 23, 2026
1a3d6fd
Windows: drop the +icat entry point
ecstra Jul 23, 2026
f026212
Windows: answer --help in the launcher, and narrow the shim to -v and -h
ecstra Jul 23, 2026
a09300e
Docs: state the port's real status, gaps, and where to report them
ecstra Jul 23, 2026
2a0a177
CI: build, test and package the Windows port on every push
ecstra Jul 23, 2026
a336e14
CI: fix the three things the first run found
ecstra Jul 23, 2026
2feecc9
CI: make the type check pass, and give the Windows build its font
ecstra Jul 23, 2026
922df98
Commit the launcher icon and resource script
ecstra Jul 23, 2026
0922738
Windows: copy the extensions to .pyd as part of the build
ecstra Jul 23, 2026
a037ea7
README: a front page for the fork
ecstra Jul 23, 2026
f605e35
README: centre the header and follow the ecstras-lab layout
ecstra Jul 23, 2026
c483374
Build portable packages, and fold CI into one Windows workflow
ecstra Jul 23, 2026
1f49527
README: one CI badge, since there is one workflow now
ecstra Jul 23, 2026
1c9328c
Docs: record why packages are built without -march=native
ecstra Jul 23, 2026
e59b3b6
Keep one README, and fix the lint step
ecstra Jul 23, 2026
877e051
Windows: build the acrylic ourselves instead of asking DWM for it
ecstra Jul 24, 2026
23a9583
Windows: make the acrylic path actually render
ecstra Jul 24, 2026
103cda3
Windows: stop the acrylic content scaling during a live resize
ecstra Jul 24, 2026
519b5ae
Windows: cap the acrylic swapchain to one frame in flight
ecstra Jul 24, 2026
efcb948
Windows: drive the live-resize repaint at the monitor refresh rate
ecstra Jul 24, 2026
4fa36fb
Docs: describe the composition acrylic path
ecstra Jul 24, 2026
7ea27da
Windows: stop the pty bridge stalling under a flood of mouse motion
ecstra Jul 24, 2026
ef2d46e
Windows: stop the mouse cursor flickering between shapes
ecstra Jul 24, 2026
b54f939
Docs: hand over the pwsh cursor jumping and flicker investigation
ecstra Jul 24, 2026
d2e5b9a
Docs: record the pwsh cursor flicker as an open bug, with measurements
ecstra Jul 24, 2026
b7f3d50
Windows: stop shells outliving their window and exhausting the Cygwin…
ecstra Jul 24, 2026
c30a05f
Drop the conpty repaint probe, keep its findings in the handover note
ecstra Jul 24, 2026
d563e83
Windows: make remote control work over a tcp address
ecstra Jul 24, 2026
37fca3e
Stop the mouse pointer flickering over an application that has grabbe…
ecstra Jul 24, 2026
757d835
Get the Python test suite passing on Windows
ecstra Jul 24, 2026
2868877
Make the Go test suite build on Windows
ecstra Jul 24, 2026
17d34c6
All tests now pass on Windows
ecstra Jul 24, 2026
d66e848
Build and test without needing PYTHONUTF8 set by hand on Windows
ecstra Jul 24, 2026
5d87f69
Windows: let kittens that ask for remote control actually open
ecstra Jul 24, 2026
d5be81b
Windows: stop the build silently dropping every per-source define
ecstra Jul 24, 2026
472dbad
Docs: record why kittens ran as Python and what that looked like
ecstra Jul 24, 2026
866a851
Drop the stopgap Python ask kitten now that the Go one runs
ecstra Jul 24, 2026
ed1465d
kittens/ask: let esc cancel the line prompt
ecstra Jul 24, 2026
b6c29cf
Docs: state Windows 11, say where the config lives, ship a sample config
ecstra Jul 24, 2026
bcaa048
Docs: claim the Windows work properly, and strip personal paths
ecstra Jul 24, 2026
e2780dd
CI: run the whole test suite, and fix what that exposed
ecstra Jul 24, 2026
98fbad4
CI: stop touching releases, leave them to be made by hand
ecstra Jul 24, 2026
0d90425
Stop tracking the go build output at the repo root
ecstra Jul 24, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
325 changes: 110 additions & 215 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
@@ -1,222 +1,117 @@
name: CI
on: [push, pull_request]
env:
CI: 'true'
ASAN_OPTIONS: detect_leaks=0
LC_ALL: en_US.UTF-8
LANG: en_US.UTF-8

# This fork exists for the native Windows port, so that is what CI builds and
# tests. Upstream's Linux and macOS matrix was dropped: it exercised platforms
# this fork does not change, and the port's own code is covered here.
on:
push:
branches: [windows-native-port, master]
# Documentation cannot break the build, so do not spend a runner on it.
# Written out twice because GitHub Actions does not support YAML anchors.
paths-ignore:
- '**.md'
- '**.rst'
- 'docs/**'
- 'LICENSE'
pull_request:
paths-ignore:
- '**.md'
- '**.rst'
- 'docs/**'
- 'LICENSE'
workflow_dispatch:

permissions:
contents: read # to fetch code (actions/checkout)
contents: read

jobs:
linux:
name: Linux (python=${{ matrix.pyver }} cc=${{ matrix.cc }} sanitize=${{ matrix.sanitize }})
runs-on: ubuntu-latest
env:
CC: ${{ matrix.cc }}
KITTY_SANITIZE: ${{ matrix.sanitize }}

strategy:
matrix:
python: [a, b, c]
cc: [gcc, clang]
include:
- python: a
pyver: "3.12"
sanitize: 0

- python: b
pyver: "3.13"
sanitize: 1

- python: c
pyver: "3.14"
sanitize: 1


exclude:
- python: a
cc: clang
- python: b
cc: clang
- python: c
cc: gcc

steps:
- name: Checkout source code
uses: actions/checkout@v7.0.0
with:
fetch-depth: 10
persist-credentials: false

- name: Set up Python ${{ matrix.pyver }}
uses: actions/setup-python@v6.3.0
with:
python-version: ${{ matrix.pyver }}

- name: Install Go
uses: actions/setup-go@v6.5.0
with:
go-version-file: go.mod

- name: Build kitty
run: python .github/workflows/ci.py build

- name: Test kitty
run: python .github/workflows/ci.py test
build:
name: Build, test and package
runs-on: windows-latest
defaults:
run:
shell: msys2 {0}

linux-package:
name: Linux package
runs-on: ubuntu-latest
env:
CFLAGS: -funsigned-char
steps:
- name: Checkout source code
uses: actions/checkout@v7.0.0
with:
fetch-depth: 0 # needed for :commit: docs role
persist-credentials: false

- name: Test for trailing whitespace
run: if grep -Inr '\s$' kitty kitty_tests kittens docs *.py *.asciidoc *.rst *.go .gitattributes .gitignore; then echo Trailing whitespace found, aborting.; exit 1; fi

- name: Test for bad code block formatting
run: if grep -Inr ':code:`\s' kitty kitty_tests kittens docs *.py *.asciidoc *.rst *.go .gitattributes .gitignore; then echo Space at code block start found, aborting.; exit 1; fi

- name: Set up Python
uses: actions/setup-python@v6.3.0
with:
python-version: "3.14"

- name: Install Go
uses: actions/setup-go@v6.5.0
with:
go-version-file: go.mod
cache: false

- name: Cache Go build artifacts separately
uses: actions/cache@v6.1.0
with:
path: |
~/.cache/go-build
~/go/pkg/mod
key: ${{ runner.os }}-golang-static-${{ hashFiles('**/go.sum') }}
restore-keys: |
${{ runner.os }}-golang-static-

- name: Install build-only deps
run: python -m pip install -r docs/requirements.txt ruff ty types-requests types-docutils types-Pygments

- name: Run ruff
run: ruff check .

- name: Run gofmt
run: go version && python .github/workflows/ci.py gofmt

- name: Build kitty package
run: python .github/workflows/ci.py package

- name: Build kitty
run: python setup.py build --debug

- name: Run type checking
run: which python && ./test.py type-check

- name: Run go vet
run: go version && go vet -tags testing ./...

- name: Build docs
run: make FAIL_WARN=1 docs

- name: Build static kittens
run: python setup.py build-static-binaries

bundle:
name: Bundle test (${{ matrix.os }})
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, macos-latest]
env:
KITTY_BUNDLE: 1
KITTY_SANITIZE: 1
steps:
- name: Checkout source code
uses: actions/checkout@v7.0.0
with:
fetch-depth: 10
persist-credentials: false

- name: Install Go
uses: actions/setup-go@v6.5.0
with:
go-version-file: go.mod

- name: Build kitty
run: which python3 && python3 .github/workflows/ci.py build

- name: Test kitty
run: python3 .github/workflows/ci.py test

brew:
name: macOS Brew
runs-on: macos-latest
steps:
- name: Checkout source code
uses: actions/checkout@v7.0.0
with:
fetch-depth: 0 # needed for :commit: docs role
persist-credentials: false

- name: Set up Python
uses: actions/setup-python@v6.3.0
with:
python-version: "3.14"

- name: Install Go
uses: actions/setup-go@v6.5.0
with:
go-version-file: go.mod

- name: Build kitty
run: python3 .github/workflows/ci.py build

- name: Test kitty
run: python3 .github/workflows/ci.py test

- name: Install deps for docs
run: python3 -m pip install -r docs/requirements.txt

- name: Builds docs
run: make FAIL_WARN=1 docs

- name: Build kitty package
run: python3 .github/workflows/ci.py package

- name: Run benchmarks
run: ./benchmark.py

linux-dev:
name: Test ./dev.sh and benchmark
runs-on: ubuntu-latest
steps:
- name: Checkout source code
uses: actions/checkout@v7.0.0
with:
fetch-depth: 10
persist-credentials: false

- name: Install build deps
run: sudo apt-get update && sudo apt-get install -y curl xz-utils build-essential git pkg-config libxrandr-dev libxinerama-dev libxcursor-dev libxi-dev libgl1-mesa-dev libxkbcommon-x11-dev libfontconfig-dev libx11-xcb-dev libdbus-1-dev

- name: Install Go
uses: actions/setup-go@v6.5.0
with:
go-version-file: go.mod

- name: Build kitty
run: ./dev.sh build

- name: Run benchmarks
run: ./benchmark.py
- uses: actions/checkout@v4

- name: Set up MSYS2
uses: msys2/setup-msys2@v2
with:
msystem: MINGW64
update: true
# The build needs the same toolchain and libraries the port is
# developed against. The library list matches the DLL closure
# make-dist.sh bundles into the install tree.
install: >-
base-devel
mingw-w64-x86_64-gcc
mingw-w64-x86_64-pkgconf
mingw-w64-x86_64-python
mingw-w64-x86_64-go
mingw-w64-x86_64-harfbuzz
mingw-w64-x86_64-freetype
mingw-w64-x86_64-fontconfig
mingw-w64-x86_64-cairo
mingw-w64-x86_64-libpng
mingw-w64-x86_64-xxhash
mingw-w64-x86_64-openssl
mingw-w64-x86_64-ncurses
mingw-w64-x86_64-lcms2
mingw-w64-x86_64-ruff

- name: Lint
run: |
set -euo pipefail
export PATH="/mingw64/bin:$PATH"
# ruff runs the same everywhere, so this catches what it
# caught on upstream's Linux runner. It comes from pacman
# above because the mingw python ships without pip.
ruff check .

- name: Fetch the bundled Nerd Font
run: |
set -euo pipefail
# setup.py copies Symbols Nerd Font Mono out of the system font
# directories into fonts/, which is gitignored, and fails the
# build when it cannot find it. A runner has no such font
# installed, so fetch the archive upstream CI uses and put the
# one file it wants in place. add_builtin_fonts skips when the
# destination already exists.
mkdir -p fonts /tmp/nerd
curl -fsSL -o /tmp/nerd.tar.xz https://github.com/ryanoasis/nerd-fonts/releases/latest/download/NerdFontsSymbolsOnly.tar.xz
tar -xf /tmp/nerd.tar.xz -C /tmp/nerd
find /tmp/nerd -name 'SymbolsNerdFontMono-Regular.ttf' -exec cp {} fonts/ \;
test -f fonts/SymbolsNerdFontMono-Regular.ttf

- name: Build
run: |
set -euo pipefail
# mingw64 first on PATH: the compiler loads its own DLLs through
# PATH and cc1 dies without it.
export PATH="/mingw64/bin:$PATH"
PYTHONUTF8=1 python setup.py build --verbose

- name: Test
run: |
export PATH="/mingw64/bin:$PATH"
./packaging/windows/run-tests.sh

- name: Package
run: |
set -euo pipefail
export PATH="/mingw64/bin:$PATH"
export MINGW_ROOT=/mingw64
export PYVER="$(python -c 'import sys; print(f"{sys.version_info.major}.{sys.version_info.minor}")')"
./packaging/windows/make-installer.sh

# Every run leaves the installer as a build artifact, which is how you
# get a build to try. Releases are made by hand: nothing here writes
# to one, so publishing a release does not trigger a build and no
# asset is attached without someone deciding to.
- name: Upload installer
uses: actions/upload-artifact@v4
with:
name: kitty-setup
path: dist/kitty-setup.exe
if-no-files-found: error
16 changes: 16 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,10 @@
/kitty.app/
/glad/out/
/kitty/launcher/kitt*
# The Windows port keeps two launcher sources in that directory, and the
# pattern above, which is there for the built launcher, was swallowing them.
!/kitty/launcher/kitty.rc
!/kitty/launcher/kitty.ico
/*.dSYM/
__pycache__/
/glfw/wayland-*-client-protocol.[ch]
Expand All @@ -30,3 +34,15 @@ __pycache__/
bypy/b
bypy/virtual-machines.conf
_codeql_detected_source_root
*.pyd

# Local Windows-port task list
WINDOWS_TODO.md
dist/
packaging/windows/cert/

# Stray output from "go build ./tools/cmd", which writes the binary into the
# working directory. Anchored to the root so the tools/cmd source tree is not
# caught by it.
/cmd
/cmd.exe
28 changes: 28 additions & 0 deletions 3rdparty/go-shm/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,28 @@
BSD 3-Clause License

Copyright (c) 2025, Kovid Goyal

Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:

1. Redistributions of source code must retain the above copyright notice, this
list of conditions and the following disclaimer.

2. Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.

3. Neither the name of the copyright holder nor the names of its
contributors may be used to endorse or promote products derived from
this software without specific prior written permission.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE
FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3 changes: 3 additions & 0 deletions 3rdparty/go-shm/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
Tools to create and manage shared memory (POSIX Shared memory) across all Unix
variants. Pure Go, no external dependencies. Implements Go versions of
shm_open() and shm_unlink() that interoperate with the libc versions.
Loading
Loading