Skip to content

Commit

Permalink
Merge pull request #1431 from yinheli/bugfix/typo-posts-2024-11-07-gs…
Browse files Browse the repository at this point in the history
…oc-2024-results

posts: Fix typo in 2024-11-07-gsoc-2024-results
  • Loading branch information
ehuss authored Nov 26, 2024
2 parents 8adc6d4 + c7a647c commit 44471f6
Showing 1 changed file with 2 additions and 2 deletions.
4 changes: 2 additions & 2 deletions posts/2024-11-07-gsoc-2024-results.md
Original file line number Diff line number Diff line change
Expand Up @@ -168,11 +168,11 @@ Even though this project did not fulfill its original goals and more work will b
- Mentor: [Oli Scherer](https://github.com/oli-obk)
- [Final report](https://gist.github.com/tiif/3e08ba6e8cfb1d078e6155410108ae48)

[miri][miri] is an intepreter that can find possible instances of undefined behavior in Rust code. It is being used across the Rust ecosystem, but previously it was not possible to run it on any non-trivial programs (those that ever `await` on anything) that use [tokio][tokio], due a to a fundamental missing feature: support for the `epoll` syscall on Linux (and similar APIs on other major platforms).
[miri][miri] is an interpreter that can find possible instances of undefined behavior in Rust code. It is being used across the Rust ecosystem, but previously it was not possible to run it on any non-trivial programs (those that ever `await` on anything) that use [tokio][tokio], due a to a fundamental missing feature: support for the `epoll` syscall on Linux (and similar APIs on other major platforms).

Tiffany implemented the basic `epoll` operations needed to cover the majority of the tokio test suite, by crafting pure `libc` code examples that exercised those `epoll` operations, and then implementing their emulation in miri itself. At times, this required refactoring core miri components like file descriptor handling, as they were originally not created with syscalls like `epoll` in mind.

Suprising to everyone (though probably not tokio-internals experts), once these core `epoll` operations were finished, operations like async file reading and writing started working in miri out of the box! Due to limitations of non-blocking file operations offered by operating systems, tokio is wrapping these file operations in dedicated threads, which was already supported by miri.
Surprising to everyone (though probably not tokio-internals experts), once these core `epoll` operations were finished, operations like async file reading and writing started working in miri out of the box! Due to limitations of non-blocking file operations offered by operating systems, tokio is wrapping these file operations in dedicated threads, which was already supported by miri.

Once Tiffany has finished the project, including stretch goals like implementing async file operations, she proceeded to contact tokio maintainers and worked with them to run miri on most tokio tests in CI. And we have good news: so far no soundness problems have been discovered! Tiffany has become a regular contributor to miri, focusing on continuing to expand the set of supported file descriptor operations. We thank her for all her contributions!

Expand Down

0 comments on commit 44471f6

Please sign in to comment.