aboutsummaryrefslogtreecommitdiff
path: root/src/io.rs
Commit message (Collapse)AuthorAge
* Rewrite ansi parser using vte crateJoe Wilm2016-09-18
| | | | | | | Using the vte crate allows removal of the ansi parser state machine and enables us to just be concerned with actions described in the protocol. In addition to making alacritty simpler, this also improves correctness and performance.
* Improve pty reading and renderer synchronizationJoe Wilm2016-07-01
| | | | | | | | | | | The pty read thread now runs the parser and directly updates the terminal in the same thread. This obviates the need for a channel which sends every char read from the pty; this is a huge performance boon. Synchronization between the updater and the renderer is now achieved with a PriorityMutex. Previously, an atomic bool was (poorly) used to request the lock on terminal. The PriorityMutex is dead simple to use, and it _Just Works_.
* Vendor upcoming Utf8Chars iterator from libstdJoe Wilm2016-06-30
The upcoming Utf8Chars iterator was vendored from a libstd PR. The iterator works on BufRead types which is critical for improving performance. A small modification was made where the number of unused bytes is included with Utf8CharsError::IncompleteUtf8. The pty reader thread was updated to use this new type. Next steps will be moving the parsing there and either sending parse results in batches or updating the terminal directly from that thread.