I would suggest that the author creates a clone of a "simpler" DB like SQLite or Redis. Those have, as far as I understand, good C codebases, so understanding the system should be much easier.
This way you could also say: hey! I have successfully ported a DB written in C in the past, and it has been an extremely positive experience, how about trying the same with Postgres?
If you wanted to write a drop-in SQLite replacement in Rust, using the original project's (incredible) test suite would be on the mandatory side, wouldn't it?
To a degree. Certainly the end-to-end tests should be something you can expect to reuse. Other tests may be hit or miss. In the case of SQLite, where there's >100x as much test code as application code, there's a large range between "can use some of it" and "can use most of it" - as mathw gets at I think we should be able to expect the latter here.
Comments
I would suggest that the author creates a clone of a "simpler" DB like SQLite or Redis. Those have, as far as I understand, good C codebases, so understanding the system should be much easier.
This way you could also say: hey! I have successfully ported a DB written in C in the past, and it has been an extremely positive experience, how about trying the same with Postgres?
SQLite for sure. The test suite is top tier.
Hopefully you could even reuse it!
If you wanted to write a drop-in SQLite replacement in Rust, using the original project's (incredible) test suite would be on the mandatory side, wouldn't it?
To a degree. Certainly the end-to-end tests should be something you can expect to reuse. Other tests may be hit or miss. In the case of SQLite, where there's >100x as much test code as application code, there's a large range between "can use some of it" and "can use most of it" - as mathw gets at I think we should be able to expect the latter here.
Definitely! And Rust is capable of that kind of thing (producing a drop-in replacement for a C library) so there'd be no excuses either.
redis-in-rust : https://github.com/seppo0010/rsedis
it seems many people re-implement redis (I recall at least also Go and Scala).
It looks like it's the new "backend language todo list project".