Commit Graph

27 Commits

Author SHA1 Message Date
Alessandro De Blasis
ca08ab8619 windows: simplify DLL init test and improve README 2026-03-27 06:04:09 -07:00
Alessandro De Blasis
6afc174a4f windows: remove .NET test infrastructure and CRT probe function
The C# test suite and ghostty_crt_workaround_active() probe were
unnecessary overhead. The DllMain workaround is harmless to keep
(CRT init is ref-counted) and comments document when to remove it.
test_dll_init.c remains as a standalone C reproducer.
2026-03-27 06:04:09 -07:00
Alessandro De Blasis
f764b16465 windows: add DLL init regression tests and probe
C# test suite and C reproducer validating DLL initialization.

The probe test (DllMainWorkaround_IsStillActive) checks that the CRT
workaround is compiled in via ghostty_crt_workaround_active(). When
Zig fixes MSVC DLL CRT init, removing the DllMain will make this test
fail with instructions on how to verify the fix and clean up.

ghostty_init is tested via the C reproducer (test_dll_init.c) rather
than C# because the global state teardown crashes the test host on
DLL unload. The C reproducer exits without FreeLibrary.
2026-03-27 06:04:09 -07:00
Alessandro De Blasis
a0785710bb windows: initialize MSVC C runtime in DLL mode
Zig's _DllMainCRTStartup does not initialize the MSVC C runtime when
building a shared library targeting MSVC ABI. This means any C library
function that depends on CRT internal state (setlocale, glslang,
oniguruma) crashes with null pointer dereferences because the heap,
locale, and C++ runtime are never set up.

Declare a DllMain that calls __vcrt_initialize and __acrt_initialize
on DLL_PROCESS_ATTACH. Zig's start.zig checks @hasDecl(root, "DllMain")
and calls it during _DllMainCRTStartup. Uses @extern to get function
pointers without pulling in CRT objects that would conflict with Zig's
own _DllMainCRTStartup symbol.

Only compiles on Windows MSVC (comptime guard). On other platforms and
ABIs, DllMain is void and has no effect.
2026-03-27 06:04:09 -07:00
Qwerasd
6d5b4a3426 perf: replace std.debug.assert with inlined version
See doc comment in `quirks.zig` for reasoning
2025-11-17 12:13:56 -07:00
CoderJoshDK
d79441edd1 test: valid string slices for ghostty_string_s 2025-09-25 12:26:52 -04:00
Jeffrey C. Ollie
79685f87c4 use comptime to make C String interface nicer 2025-09-24 16:33:18 -05:00
CoderJoshDK
c5786c5d38 fix: alloc free off by one 2025-09-24 16:58:39 -04:00
Mitchell Hashimoto
20bb71c627 libghostty: export benchmark CLI API 2025-07-09 15:06:24 -07:00
Mitchell Hashimoto
b7ffbf933f macos: open URLs with NSWorkspace APIs instead of open
Fixes #5256

This updates the macOS apprt to implement the `OPEN_URL` apprt action to
use the NSWorkspace APIs instead of the `open` command line utility.

As part of this, we removed the `ghostty_config_open` libghostty API and
instead introduced a new `ghostty_config_open_path` API that returns the
path to open, and then we use the `NSWorkspace` APIs to open it (same
function as the `OPEN_URL` action).
2025-07-06 21:01:01 -07:00
Mitchell Hashimoto
984d123fe4 macos: support configuration via CLI arguments
This makes it so `zig build run` can take arguments such as
`--config-default-files=false` or any other configuration. Previously,
it only accepted commands such as `+version`.

Incidentally, this also makes it so that the app in general can now take
configuration arguments via the CLI if it is launched as a new instance
via `open`. For example:

    open -n Ghostty.app --args --config-default-files=false

This previously didn't work. This is kind of cool.

To make this work, the libghostty C API was modified so that
initialization requires the CLI args, and there is a new C API to try to
execute an action if it was set.
2025-07-05 21:31:23 -07:00
Mitchell Hashimoto
edf619205c add ghostty_translate C API 2025-03-07 13:42:00 -08:00
Mitchell Hashimoto
a9107e7eb6 apprt/embedded: fix usingnamespace usage 2024-08-16 15:00:07 -07:00
Mitchell Hashimoto
ba29bf759b lots more yeeting 2024-08-16 14:35:10 -07:00
Mitchell Hashimoto
b7bf59d772 update zig 2024-03-22 11:15:26 -07:00
Mitchell Hashimoto
f1227a3ebd build: get benchmarks building again 2024-02-04 20:27:53 -08:00
Mitchell Hashimoto
7059b4f74d apprt/embedded: ghostty_cli_main 2023-09-20 12:35:52 -07:00
Mitchell Hashimoto
1327028d44 Merge pull request #471 from mitchellh/mode-warning
macos, gtk: show warning when running with debug build
2023-09-15 16:03:04 -07:00
Mitchell Hashimoto
de0f71c6a1 c api: add ghostty_info to get metadata about the build 2023-09-15 12:32:41 -07:00
Mitchell Hashimoto
26313bc85d do not write logs to stderr for cli actions 2023-09-15 09:27:48 -07:00
Mitchell Hashimoto
2adb0c9234 apprt: C API for embedded updated to new style 2023-02-24 07:58:29 -08:00
Mitchell Hashimoto
eed6979868 apprt: start embedded implement, make App API available to C 2023-02-19 10:44:55 -08:00
Mitchell Hashimoto
26182611c6 move allocator to global state 2023-02-19 10:44:55 -08:00
Mitchell Hashimoto
f30d80cabe build: must set run condition to always now 2023-02-19 10:44:55 -08:00
Mitchell Hashimoto
9bd527fe00 macos: config API 2023-02-19 10:44:54 -08:00
Mitchell Hashimoto
8b80e65928 lots of broken stuff 2023-02-19 10:44:54 -08:00
Mitchell Hashimoto
8035865596 build: ghostty lib, framework, build into app 2023-02-19 10:44:53 -08:00