Run the snapshot Kaitai verifier in its own required xsm job. This gives schema, fixture, checksum, and cross-record validation a distinct CI result without coupling it to the libghostty-vt test suite.
Replaces: https://github.com/ghostty-org/ghostty/pull/13427
Zig's Mach-O linker does not emit LC_ENCRYPTION_INFO_64 for physical
iOS dylibs. This allows libghostty-vt to build successfully but causes
frameworks containing it to fail App Store validation.
I think it'd be cleaner to always just build Apple targets on Apple hosts
with the native linker. We don't need to rely on Zig being correct and
this helps ensure compatibility for details like this.
Closes#12228
Supersedes #12388
**UPDATED** - Also check comments for additional details!
This commit represents the majority of the work necessary to upgrade
Ghostty to use Zig 0.16.0.
At this point, all tests pass under Linux, but more work may be
necessary to get them to build and function on other platforms.
There are some parts of this update that deserve commentary, so that
follows below:
## Expanded use of global state (IO/environment related)
Global state, once generally only used by the C library, has now been
expanded to be used across the project at large. The static local
variable that holds the state has been moved private in its source
container with all attributes that need to be accessed globally gated
behind accessors, most of which guard on testing and send test copies
instead. Use of the global state in non-testing scenarios asserts that
the state has been initialized through `init` naturally through the
optional assertion process.
The rationale for this change is to have a location to store a
general-purpose I/O implementation and environment variables, both of
which are now provided through [Juicy
Main](https://ziglang.org/download/0.16.0/release-notes.html#Juicy-Main)
and hence can no longer be accessed or mutated through stdlib without
use of lower-level system calls and hacks (some of which are employed,
but sparingly).
As the code matures, dependence on global state should naturally slim
down.
We do not allow global state to be used in libghostty-vt. There are
comptime guards that prevent this should compilation of libghostty-vt
end up pulling `global.zig`. This means that as per the last paragraph,
work has already begun to de-couple the codebase from global state where
necessary. Additionally, in some places where environment needs to be
updated and where it can be done in an isolated fashion, environment
maps are used - system-level injection of environment through the use of
`setenv` or `unsetenv` now only happens during early initialization (and
hopefully we can remove these in the future too, especially since they
require re-synchronization of the higher-level environment primitives
after this is done).
## The `lib/compat` Tree
Some stdlib features that have been removed but still either seem they
would be valuable to us or outright complex to move away from
(particularly `SegmentedList`) have been extracted from 0.15.2, updated
as needed, and placed in `src/lib/compat`. The intention again is to
allow for piecemeal migration to more modern implementations or possibly
straight local versions.
This paradigm has also allowed us to add `std.Io.Condition.waitTimeout`,
which incidentally was missed in the 0.16.0 shuffle and has been
re-added for 0.17.0. We can remove this in favor of the upstream when we
eventually migrate to that, obviously.
Note that there was a lot more of this extracted code when this work was
started, but a lot of said code has been removed (namely environment or
process/fd-related functionality).
## translate-c Issues (functional on Linux, Darwin WIP)
There have been a number of C translation issues that we have been
working through through submitted patches and the great help from folks
on the Arocc and Zig side. This is ongoing, with the remaining work to
getting things fixed mainly focused on the MacOS side. Stay tuned for
further developments.
As mentioned at the top, follow comments for more details!
This commit represents the majority of the work necessary to upgrade
Ghostty to use Zig 0.16.0.
Key parts:
* In addition to its previous responsibilities, the global state now
houses state for global I/O implementations and the process
environment. It is now also utilized in the main application along
with the C library. Where necessary, global state is isolated from key
parts of the implementation (e.g., in libghostty subsystems), and it's
expected that this list will grow.
* We currently manage our own C translation layer where necessary. In
these cases, cImport has been removed in favor of the new external
translate-c package. Due to fixes that have needed be made to properly
translate the dependencies that were swapped out, as mentioned, we
have had to backport fixes from the current translate-c package (and
the upstream Arocc dependency). We will host this ourselves until Zig
0.17.0 is released with these fixes.
* Where necessary (only a small number of cases), some stdlib code from
0.15.2 (and even from 0.17.0) has been taken, adopted, and vendored in
lib/compat.
Co-authored-by: Leah Amelia Chen <hi@pluie.me>
Bumps
[mitchellh/vouch/action/manage-by-issue](https://github.com/mitchellh/vouch)
from 1.4.2 to 1.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mitchellh/vouch/releases">mitchellh/vouch/action/manage-by-issue's
releases</a>.</em></p>
<blockquote>
<h2>v1.5.0</h2>
<h2>What's New</h2>
<h3>Improvements</h3>
<p>-<strong><code>action/check-issue</code></strong> has a new option
<code>auto-lock</code> to automatically lock closed issues. (<a
href="https://redirect.github.com/mitchellh/vouch/pull/90">#90</a>)</p>
<ul>
<li><strong><code>gh-manage-by-discussion</code></strong> supports
numerical IDs. (<a
href="https://redirect.github.com/mitchellh/vouch/pull/77">#77</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d66fa29a64"><code>d66fa29</code></a>
Merge pull request <a
href="https://redirect.github.com/mitchellh/vouch/issues/93">#93</a>
from mitchellh/dependabot/github_actions/actions/check...</li>
<li><a
href="c22b93d0e8"><code>c22b93d</code></a>
Bump actions/checkout from 6.0.2 to 7.0.0</li>
<li><a
href="baeb3bf7c7"><code>baeb3bf</code></a>
Merge pull request <a
href="https://redirect.github.com/mitchellh/vouch/issues/90">#90</a>
from trag1c/lock-issues</li>
<li><a
href="52aec3d646"><code>52aec3d</code></a>
add an option to lock closed issues</li>
<li><a
href="3dbc69c691"><code>3dbc69c</code></a>
Merge pull request <a
href="https://redirect.github.com/mitchellh/vouch/issues/87">#87</a>
from freepicheep/example-attribute</li>
<li><a
href="a6933466b4"><code>a693346</code></a>
Update VOUCHED list</li>
<li><a
href="21177c0fec"><code>21177c0</code></a>
Merge pull request <a
href="https://redirect.github.com/mitchellh/vouch/issues/74">#74</a>
from pavelzw/vouch-cli</li>
<li><a
href="527cdc3488"><code>527cdc3</code></a>
Merge pull request <a
href="https://redirect.github.com/mitchellh/vouch/issues/81">#81</a>
from mitchellh/dependabot/github_actions/hustcer/setup...</li>
<li><a
href="1895e9c54f"><code>1895e9c</code></a>
feat: use <a
href="https://github.com/example"><code>@example</code></a> attribute
for command examples</li>
<li><a
href="8c80ada45b"><code>8c80ada</code></a>
Update README</li>
<li>Additional commits viewable in <a
href="c6d80ead49...d66fa29a64">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Bumps
[mitchellh/vouch/action/check-pr](https://github.com/mitchellh/vouch)
from 1.4.2 to 1.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mitchellh/vouch/releases">mitchellh/vouch/action/check-pr's
releases</a>.</em></p>
<blockquote>
<h2>v1.5.0</h2>
<h2>What's New</h2>
<h3>Improvements</h3>
<p>-<strong><code>action/check-issue</code></strong> has a new option
<code>auto-lock</code> to automatically lock closed issues. (<a
href="https://redirect.github.com/mitchellh/vouch/pull/90">#90</a>)</p>
<ul>
<li><strong><code>gh-manage-by-discussion</code></strong> supports
numerical IDs. (<a
href="https://redirect.github.com/mitchellh/vouch/pull/77">#77</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d66fa29a64"><code>d66fa29</code></a>
Merge pull request <a
href="https://redirect.github.com/mitchellh/vouch/issues/93">#93</a>
from mitchellh/dependabot/github_actions/actions/check...</li>
<li><a
href="c22b93d0e8"><code>c22b93d</code></a>
Bump actions/checkout from 6.0.2 to 7.0.0</li>
<li><a
href="baeb3bf7c7"><code>baeb3bf</code></a>
Merge pull request <a
href="https://redirect.github.com/mitchellh/vouch/issues/90">#90</a>
from trag1c/lock-issues</li>
<li><a
href="52aec3d646"><code>52aec3d</code></a>
add an option to lock closed issues</li>
<li><a
href="3dbc69c691"><code>3dbc69c</code></a>
Merge pull request <a
href="https://redirect.github.com/mitchellh/vouch/issues/87">#87</a>
from freepicheep/example-attribute</li>
<li><a
href="a6933466b4"><code>a693346</code></a>
Update VOUCHED list</li>
<li><a
href="21177c0fec"><code>21177c0</code></a>
Merge pull request <a
href="https://redirect.github.com/mitchellh/vouch/issues/74">#74</a>
from pavelzw/vouch-cli</li>
<li><a
href="527cdc3488"><code>527cdc3</code></a>
Merge pull request <a
href="https://redirect.github.com/mitchellh/vouch/issues/81">#81</a>
from mitchellh/dependabot/github_actions/hustcer/setup...</li>
<li><a
href="1895e9c54f"><code>1895e9c</code></a>
feat: use <a
href="https://github.com/example"><code>@example</code></a> attribute
for command examples</li>
<li><a
href="8c80ada45b"><code>8c80ada</code></a>
Update README</li>
<li>Additional commits viewable in <a
href="c6d80ead49...d66fa29a64">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Bumps
[mitchellh/vouch/action/check-issue](https://github.com/mitchellh/vouch)
from baeb3bf7c7e6c12d6e33bab3870b7e936580a934 to
d66fa29a64600490892131ad87597c30c91fcac4.
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d66fa29a64"><code>d66fa29</code></a>
Merge pull request <a
href="https://redirect.github.com/mitchellh/vouch/issues/93">#93</a>
from mitchellh/dependabot/github_actions/actions/check...</li>
<li><a
href="c22b93d0e8"><code>c22b93d</code></a>
Bump actions/checkout from 6.0.2 to 7.0.0</li>
<li>See full diff in <a
href="baeb3bf7c7...d66fa29a64">compare
view</a></li>
</ul>
</details>
<br />
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Bumps
[mitchellh/vouch/action/manage-by-discussion](https://github.com/mitchellh/vouch)
from 1.4.2 to 1.5.0.
<details>
<summary>Release notes</summary>
<p><em>Sourced from <a
href="https://github.com/mitchellh/vouch/releases">mitchellh/vouch/action/manage-by-discussion's
releases</a>.</em></p>
<blockquote>
<h2>v1.5.0</h2>
<h2>What's New</h2>
<h3>Improvements</h3>
<p>-<strong><code>action/check-issue</code></strong> has a new option
<code>auto-lock</code> to automatically lock closed issues. (<a
href="https://redirect.github.com/mitchellh/vouch/pull/90">#90</a>)</p>
<ul>
<li><strong><code>gh-manage-by-discussion</code></strong> supports
numerical IDs. (<a
href="https://redirect.github.com/mitchellh/vouch/pull/77">#77</a>)</li>
</ul>
</blockquote>
</details>
<details>
<summary>Commits</summary>
<ul>
<li><a
href="d66fa29a64"><code>d66fa29</code></a>
Merge pull request <a
href="https://redirect.github.com/mitchellh/vouch/issues/93">#93</a>
from mitchellh/dependabot/github_actions/actions/check...</li>
<li><a
href="c22b93d0e8"><code>c22b93d</code></a>
Bump actions/checkout from 6.0.2 to 7.0.0</li>
<li><a
href="baeb3bf7c7"><code>baeb3bf</code></a>
Merge pull request <a
href="https://redirect.github.com/mitchellh/vouch/issues/90">#90</a>
from trag1c/lock-issues</li>
<li><a
href="52aec3d646"><code>52aec3d</code></a>
add an option to lock closed issues</li>
<li><a
href="3dbc69c691"><code>3dbc69c</code></a>
Merge pull request <a
href="https://redirect.github.com/mitchellh/vouch/issues/87">#87</a>
from freepicheep/example-attribute</li>
<li><a
href="a6933466b4"><code>a693346</code></a>
Update VOUCHED list</li>
<li><a
href="21177c0fec"><code>21177c0</code></a>
Merge pull request <a
href="https://redirect.github.com/mitchellh/vouch/issues/74">#74</a>
from pavelzw/vouch-cli</li>
<li><a
href="527cdc3488"><code>527cdc3</code></a>
Merge pull request <a
href="https://redirect.github.com/mitchellh/vouch/issues/81">#81</a>
from mitchellh/dependabot/github_actions/hustcer/setup...</li>
<li><a
href="1895e9c54f"><code>1895e9c</code></a>
feat: use <a
href="https://github.com/example"><code>@example</code></a> attribute
for command examples</li>
<li><a
href="8c80ada45b"><code>8c80ada</code></a>
Update README</li>
<li>Additional commits viewable in <a
href="c6d80ead49...d66fa29a64">compare
view</a></li>
</ul>
</details>
<br />
[](https://docs.github.com/en/github/managing-security-vulnerabilities/about-dependabot-security-updates#about-compatibility-scores)
Dependabot will resolve any conflicts with this PR as long as you don't
alter it yourself. You can also trigger a rebase manually by commenting
`@dependabot rebase`.
[//]: # (dependabot-automerge-start)
[//]: # (dependabot-automerge-end)
---
<details>
<summary>Dependabot commands and options</summary>
<br />
You can trigger Dependabot actions by commenting on this PR:
- `@dependabot rebase` will rebase this PR
- `@dependabot recreate` will recreate this PR, overwriting any edits
that have been made to it
- `@dependabot show <dependency name> ignore conditions` will show all
of the ignore conditions of the specified dependency
- `@dependabot ignore this major version` will close this PR and stop
Dependabot creating any more for this major version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this minor version` will close this PR and stop
Dependabot creating any more for this minor version (unless you reopen
the PR or upgrade to it yourself)
- `@dependabot ignore this dependency` will close this PR and stop
Dependabot creating any more for this dependency (unless you reopen the
PR or upgrade to it yourself)
</details>
Detect changes since the last tip with dorny/paths-filter (base: tip)
and skip the build when a push touches only files that never reach the
built artifact: all of .github (except release-tip.yml, which defines the
build/tag/publish jobs) plus docs and repo/lint/editor metadata.