Add Windows ConPTY support and tar.xz release packaging#108
Conversation
kiennq
commented
Apr 15, 2026
- ConPTY pseudoconsole backend for Windows terminal I/O
- Transport abstractions (ghostel--process-send/live-p/set-window-size) that dispatch to ConPTY or PTY depending on the active backend
- Windows-specific process startup skipping the shell wrapper
- ConPTY module build via emacs-util-mods dependency
- Release artifacts packaged as per-platform .tar.xz archives containing ghostel-module + conpty-module (Windows)
- Download/extract flow for .tar.xz release archives
- Windows entries in CI build and test matrix
- 7 new ConPTY tests + extract-module-archive test
a89709b to
72a67ef
Compare
|
Thank you very much for this. Imho looks already really good. So here is the claude review after chatting a bit. Here the review:ReviewThanks for this — the ConPTY work is well-structured overall and the transport abstraction is the right shape. Before merging I'd like a few changes to make the Windows path more isolated (so it's easy to revert as a unit if Windows-specific bugs surface), plus a few smaller fixes from the review. Detailed list below; an LLM should be able to crank through these mechanically. Required: Windows isolationThe goal is that reverting Windows support is "delete one section + one dispatch line + one bootstrap block", with no diff churn in shared Unix code paths. 1. Cluster all Windows-only elisp under one sectionGroup the following under a single
2. Factor Windows process startup out of
|
fa8ae17 to
02ed6f2
Compare
|
Thanks, the review is helpful. I will try to address most of them. However for the strip, the Zig build system already handles stripping — build.zig sets |
At least for MacOS that's not completely true.
|
e601474 to
4150e0e
Compare
- ConPTY pseudoconsole backend for Windows terminal I/O - Transport abstractions (ghostel--process-send/live-p/set-window-size) that dispatch to ConPTY or PTY depending on the active backend - Shared process-start state extraction for Unix/Windows code sharing - Windows-specific process startup factored into ghostel--start-process-windows - ConPTY module build via emacs-util-mods dependency - Lazy ConPTY loading when user invokes ghostel on Windows - Release artifacts packaged as per-platform .tar.xz archives containing ghostel-module + conpty-module (Windows) - Download/extract flow for .tar.xz release archives - Strip step for all platforms in release workflow - Windows entries in CI build and test matrix - .gitattributes enforcing LF line endings Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
4150e0e to
4e44fd9
Compare
|
@dakra, please let me know if you want me to fix anything else |
|
@kiennq Thank you very much. Looks already really good. 3 quick thoughts (without consulting AI ;) ): Iirc I did the strip -x only for Mac because it was only needed there. There are a few unrelated indent changes What do you think if we just copy your conpty.zig in here? It's only 560 lines and probably doesn't change very often. would have the advantage to have 1 less external dependency and also we would not need a few workarounds (e.g. tar) because we have 2 .dll files for windows. I would have a closer look at this at the weekend. Thanks again ❤️ |
The conpty is a module on its own and independent from |
Sure, I don't want to move the emacs-utils repo (/conpty) in here. Just as it is one small file, kinda vendor it here similar to emacs.h or I'll soon add another small PNG decoder for the kitty graphics support. |
Since the conpty will expose some module functions, would it be okay for them to clobber the |
|
After thinking and talking with Claude a bit more about it, I personally would favour to put the conpty stuff just under src/conpty or so. I couldn't see any downside and only a few improvements (one dll download, no tar calls, no ghostel--ensure-conpty-loaded (because if ghostel is loaded, so is contpy on windows), etc)
sure, you can make the changes necessary. Also sorry for always changing the codebase under you. ghostel is still in heavy development, |