Open
Conversation
- several new much faster pipe impls with good old callback based being the fastest (~10 times faster than promise based) - code restructuring started under /new - more clib basics and some posix defs like PIPE_BUF - stubbed new TTY (gonna be FasterPipe based) - early throughput tests with worker threads (SAB with locks being ~50% faster than transferrables)
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Playground branch to get crucial layout decisions straight.
Possible directions:
Pipe impl: event loop (setTimout) < promises < callbacks with queueMicrotask, speed gain is like 1:2:10
FasterPipewith agressive memory sharing (less copying, less ctx switches) - total speed gain compared toPipein master: 45 MB/s vs. 750 MB/s in dummy write/read testTTY will be binary only too internally, but prolly can pull proper unicode and width handling from xterm.js - this should make it possible to get ERASE/WERASE correctly handled (currently not even possible in FreeBSD or Linux)
early tests with worker threads - the tests show that an SAB with read/locks is the fastest for data piping, and only ~30% slower than a single threaded pipe. This looks promising, maybe we should do the new process logic based on workers.
Proside:
Downside: