You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This is part of a series of progress reports that are posted with a monthly-ish cadence when there's notable progress made on the project.
v0.12.42 Release
v0.12.42 saw some major improvements to terminal drivers and child process APIs.
The biggest change here is the introduction of a new Vezel.Cathode.Native library written in C (#43). This library now contains all platform-specific interop code (sans #141) for terminal drivers. This makes it easier for us to port Cathode to new platforms in the future and cuts down on some code duplication we had for Unix platforms. But most importantly, it comes with these user-facing improvements:
We now restore terminal configuration properly on shutdown without the use of Vezel.Cathode.Hosting. As a result, that package has been discontinued.
Note that this is still a best-effort feature. We don't currently attempt to restore the terminal configuration in case of native crashes (e.g. SIGSEGV or SIGILL), and there's literally no chance for us to do so for SIGKILL.
We now support cancellation for writes on Unix, in addition to our existing support for read cancellation.
Note that Vezel.Cathode.Native is not yet available on musl-based systems such as Alpine Linux. See #142 for details. This means that if you're using Cathode on such a system, you will want to hold off on upgrading for now.
A number of improvements were made to the child process APIs:
We added some extra Run() and RunIn() convenience methods on ChildProcess.
We redesigned exception handling so that ChildProcessException is thrown if something goes wrong with starting or killing a process, while the new ChildProcessErrorException (deriving from ChildProcessException) is thrown for a non-zero exit code if ChildProcessBuilder.ThrowOnError is set.
In some esoteric cases, if an underlying DuplicateHandle call failed, a variety of exceptions (deriving from SystemException) could be thrown. None of these are interesting to the caller.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Uh oh!
There was an error while loading. Please reload this page.
-
This is part of a series of progress reports that are posted with a monthly-ish cadence when there's notable progress made on the project.
v0.12.42 Release
v0.12.42 saw some major improvements to terminal drivers and child process APIs.
The biggest change here is the introduction of a new Vezel.Cathode.Native library written in C (#43). This library now contains all platform-specific interop code (sans #141) for terminal drivers. This makes it easier for us to port Cathode to new platforms in the future and cuts down on some code duplication we had for Unix platforms. But most importantly, it comes with these user-facing improvements:
SIGSEGVorSIGILL), and there's literally no chance for us to do so forSIGKILL.ReadConsoleor poll for text input microsoft/terminal#12143.Note that Vezel.Cathode.Native is not yet available on musl-based systems such as Alpine Linux. See #142 for details. This means that if you're using Cathode on such a system, you will want to hold off on upgrading for now.
A number of improvements were made to the child process APIs:
Run()andRunIn()convenience methods onChildProcess.ChildProcessExceptionis thrown if something goes wrong with starting or killing a process, while the newChildProcessErrorException(deriving fromChildProcessException) is thrown for a non-zero exit code ifChildProcessBuilder.ThrowOnErroris set.ChildProcess.Kill()to handleSystemExceptioninstead of the more specificInvalidOperationException(ChildProcess.Kill()can let internal exceptions through #139).DuplicateHandlecall failed, a variety of exceptions (deriving fromSystemException) could be thrown. None of these are interesting to the caller.ChildProcessReaderto not unnecessarily bubble upIOExceptions when the child process closes the pipe (ChildProcessReadercan bubble up internal exceptions toChildProcess.Completion#138).ChildProcessReaderto handle cancellation of the child process correctly.Finally, we added Black Box, Contour, Guake, Tilix, tmux, Xfce Terminal, and Yakuake to the list of supported terminal emulators (#134).
Future Plans
There are no changes to our plans for v1.0 and v2.0 since #136.
Beta Was this translation helpful? Give feedback.
All reactions