Index | Thread | Search

From:
"David Emerson" <d@nnix.com>
Subject:
NEW: editors/issy (resubmit)
To:
ports@openbsd.org
Date:
Thu, 16 Apr 2026 05:12:24 -0400

Download raw body.

Thread
  • David Emerson:

    NEW: editors/issy (resubmit)

Submitting editors/issy: a small console text editor written in Zig,
BSD 3-Clause licensed. Source at https://github.com/davidemerson/issy.

What it is:

  A gap-buffer editor with syntax highlighting for 17 languages
  (including TeX/LaTeX), multi-cursor editing, incremental search,
  undo/redo, and PDF export via a hand-rolled PDF 1.4 writer with
  TTF/OTF font embedding. No runtime dependencies beyond libc.

Build notes:

  `zig build -Doptimize=ReleaseSafe`. BUILD_DEPENDS on lang/zig and
  redirects the zig cache into ${WRKBUILD} via MAKE_ENV (same pattern
  as lang/zig's own Makefile) so the ports build doesn't write to
  $HOME. Unit tests run under `zig build test`, wired to do-test.

  As far as I can tell this is the first port in the tree consuming
  lang/zig as a build tool — lang/zig itself bootstraps from
  CMake+LLVM — so there's no existing zig module to inherit. If you'd
  like a lang/zig consumer module (à la lang/go) factored out, happy
  to help.

Arches:

  ONLY_FOR_ARCHS = amd64 arm64, matching lang/zig. powerpc64 is
  excluded because lang/zig is marked BROKEN there.

Testing:

  Re-submission. The first round failed at do-build with
  `std.fs.Dir.realpath ... unsupported on this host` — Zig's stdlib
  reaches for /proc/self/fd/ which OpenBSD lacks. Fixed upstream in
  commit 4438a2d by switching to std.posix.getcwd (plain libc).

  Build and test now verified end-to-end on a real OpenBSD 7.8 amd64
  VM with lang/zig 0.15.1 from packages: 666/666 unit tests pass,
  and all 14 integration suites under `bash tests/run_tests.sh`
  pass. Upstream CI runs the same sequence on every push via
  cross-platform-actions/action, so future regressions will block
  main.

  Upstream build.zig calls linkLibC() on OpenBSD so native builds go
  through libc rather than raw syscalls.

Port directory attached as a gzipped tarball; extract into
ports/editors/ to produce ports/editors/issy/.

Thanks for the feedback last time,
David Emerson