Skip to content

Conversation

@remorses
Copy link
Contributor

@remorses remorses commented Dec 23, 2025

Changes

  • Upgrade from Zig 0.14.x to 0.15.2
  • Add ghostty-vt as a dependency for terminal emulation
  • Update build.zig for Zig 0.15 API (createModule, standardOptimizeOption, etc.)
  • Use -gnu suffix for Linux targets to fix PIC linker errors when cross-compiling
  • Update CI workflows (build-core.yml, build-native.yml) to use Zig 0.15.2
  • Update all zig source files for 0.15 compatibility:
    • callconv(.C)callconv(.c)
    • std.ArrayListstd.ArrayListUnmanaged with explicit allocator
    • Writer/BufferedWriter API changes

Testing

Cross-compiled Linux binaries (both x64 and arm64) were tested inside an OrbStack Linux VM. The full rendering pipeline works correctly - created a test that renders a multi-panel layout with boxes, text, and different border styles (rounded, single, double). The TUI output renders properly and the renderer starts/stops cleanly with exit code 0.

- update build.zig for zig 0.15 API (createModule, standardOptimizeOption)
- add ghostty-vt dependency for terminal emulation
- use -gnu suffix for linux targets to fix PIC linker errors
- update CI workflows to use zig 0.15.2
- update all zig source files for 0.15 compatibility
@remorses remorses force-pushed the zig15 branch 2 times, most recently from bb0c7f2 to ac0b85e Compare December 23, 2025 13:16
…inux

- Update React and Solid workflows to use Zig 0.15.2 (required by ghostty-vt)
- Skip macOS targets when building on non-macOS hosts (ghostty's apple-sdk
  doesn't support cross-compilation from Linux)
- Update TypeScript build script to handle missing platform builds gracefully
- Add mitchellh/zig-build-macos-sdk dependency (official SDK used by Ghostty)
- Configure SDK paths on module before loading ghostty dependencies
- Update to latest ghostty commit
- Remove skip logic for macOS targets since SDK is now provided
Native binaries for all platforms are built in the release workflow
(build-native.yml on macOS). PR checks only need to build the TypeScript
library and run tests.
macOS can cross-compile to all platforms (Linux, Windows, macOS).
This avoids the complexity of setting up macOS SDK on Linux runners.
- By default, zig build now only builds for the native platform
- Add -Dall option to zig build for building all platforms
- Add --all flag to TypeScript build script
- Update release workflow to use --all for cross-compilation

This allows Linux users to run `bun run build` without failing on macOS targets.
- ArrayList.init(allocator) → ArrayListUnmanaged with allocator per-method
- std.fmt.formatIntBuf → std.fmt.bufPrint
- std.fmt.formatInt → writer.print
- std.zon.parse.Status removed, use fromSlice directly
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant