Skip to content

v0.5.39

Pre-release
Pre-release
Compare
Choose a tag to compare
@alexrp alexrp released this 28 Dec 17:56
· 615 commits to master since this release
v0.5.39
  • Improvements and refactoring to I/O APIs.
    • Added asynchronous API surface.
      • This currently just wraps the synchronous APIs; full asynchronous support may be a future possibility.
      • Pooling of System.Threading.Tasks.ValueTask instances is used where possible.
    • Added cancellation token support throughout all APIs.
      • This currently only performs actual cancellation for read operations, not write operations.
    • Added a Resumed event to System.VirtualTerminal for handling SIGCONT.
    • Added a new System.TerminalControl API for acquiring exclusive terminal control.
    • Refactored exception types.
      • Moved TerminalException from System to System.IO and changed base type to System.IO.IOException.
      • Added new System.IO.TerminalNotAttachedException which derives from System.IO.TerminalException.
      • Added new System.IO.TerminalConfigurationException which derives from System.IO.TerminalException.
    • Renamed Reader and Writer properties on System.IO.TerminalReader and System.IO.TerminalWriter to TextReader and TextWriter, respectively.
    • Removed superfluous I/O API surface (e.g. methods that perform formatting).
    • Moved Instance property from System.SystemVirtualTerminal to System.Terminal and renamed it to System.
    • Changed core methods on System.IO.TerminalReader and System.IO.TerminalWriter to have Unix-like semantics.
      • Number of bytes written is now returned rather being an out parameter.
      • An exception must only be thrown if zero bytes were processed.
  • Improvements to control sequence construction.
    • System.Text.Control.ControlBuilder now uses an interpolated string handler to efficiently append interpolated strings.
    • Added DECSCNM support.
    • Added Null method to System.Text.Control.ControlBuilder.
    • Added some missing C0 control constants to System.Text.Control.ControlConstants.
    • Changed C0 control constants in System.Text.Control.ControlConstants to be typed as char.
    • Reduced allocations a bit in System.Text.Control.ControlSequences.
  • Various platform-specific driver improvements.
    • Suppress suspension by SIGTTOU while switching to cooked mode on Unix.
    • Set TOSTOP bit when switching to raw mode on Unix.
    • Fixed some cases where the value of errno was fetched too late on Unix.
    • Revert console modes if flushing the input buffer fails on Windows.
  • Improvements to the process APIs.
    • Added Refresh and SendSignal methods to System.Diagnostics.TerminalProcess.
    • Exposed various properties available on the underlying System.Diagnostics.Process.
  • Changed System.Diagnostics.TerminalTraceListener to take a TerminalWriter instance.
  • Optimized various areas of the library to avoid bounds checks on spans and arrays.