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.
Arguably the biggest blocker to getting various components ported to Rust is that hookshot relies upon a central message queue for passing between components. While building a redis compatible one would be trivial, building a in-process one is trickier. This PR adds a nearly functionally complete version of our "LocalMQ" class, written in Rust.
Performance is...patchy. Rust does slightly better when the message contains no data, but is on the whole worse than JS when the data payload is populated. This is likely due to jumping the N-API barrier, and having to clone the content of the message each time it's used.
I'm sure more experienced rust folks might be able to tidy up the impl, but the performance issues only really show at the 1000Hz and above range. Hookshot will certainly bottleneck in other places before we ever reach that kind of throughput. For now with some cleanup I think this would allow us to begin looking at porting the RSS feed component to Rust.