Comment by nine_k

6 days ago

> 99.8% of bun’s pre-existing test suite passes on Linux x64 glibc in the rust rewrite

OK, they've got a working prototype, congrats! Now it needs to be put into shape so that all the unsafe blocks are eliminated (maybe with a few tiny exceptions), and the code is turned into maintainable, readable, reasonably idiomatic Rust.

I wonder how long is it going to take.

About 2 months, or 60 days, if we go by the old 90/10 rule.

Not sure that rule is even applicable anymore, but I don't have a better heuristic to make guesses by either.

  • maybe its tokens instead of time now? bun has access to an unlimited amount of it

This is the kind of program that would need to have a lot of unsafe even if it had been written in Rust from the very beginning. For comparison, there are about 2600 unsafe blocks in Deno, not counting dependencies.

> Now it needs to be put into shape so that all the unsafe blocks are eliminated

All the unsafe seems to be FFI?

https://github.com/search?q=repo%3Aoven-sh%2Fbun+unsafe+lang...

> and the code is turned into maintainable, readable, reasonably idiomatic Rust. I wonder how long is it going to take.

This isn't a c2rust rewrite?

  • That GitHub search only covers the main branch, not the not-yet-merged Rust rewrite; the only Rust code in there is tests for Rust FFI (so that people can write native extension modules for Bun in Rust if they want to).

    The rewrite's in https://github.com/oven-sh/bun/tree/claude/phase-a-port. By running the following command on it, I count about 14,000 unsafe blocks:

      rg --stats -g '*.rs' 'unsafe \{|unsafe impl|#!?\[unsafe\('

    • I have not had time to look at the code myself, but from when this was initially posted to Reddit, IIRC it had around a thousand global mutable variables, which are unsafe to access.

      I am very curious what the numbers are once the test suite passes and after a few passes of reducing the amount of unsafe.