From contributor
to main maintainer
of a Rust database driver
Pierre Zemb
@PierreZ
$ whoami
@PierreZ
$ whoami
@PierreZ
5 years ago…
@PierreZ
No response…
@PierreZ
Then, one day…
I received a mail from the former maintainer:
@PierreZ
@PierreZ
@PierreZ
Today
@PierreZ
How do I maintain the binding?
@PierreZ
How do I maintain the binding?
How I make sure that the bindings
is working properly?
🙈🙉🙊
@PierreZ
Rust, or the curse of FFI
foundationdb-rs
Written in Rust
libfdb
Written in C
FoundationDB
FoundationDB
FoundationDB
@PierreZ
FFI and Bindgen
foundationdb-rs
Written in Rust
libfdb
Written in C
@PierreZ
Dev experience
@PierreZ
We need a lot of CI
@PierreZ
Testing is hard
@PierreZ
The BindingTester
@PierreZ
How does it works?
@PierreZ
How does it works?
@PierreZ
How does it works?
@PierreZ
How does it works?
@PierreZ
Benefits of the BindingTester
@PierreZ
Binding’s safety
libfdb
(tested by Apple)
@PierreZ
Binding’s safety
fdb-rs
(tested with bindingTester)
libfdb
(tested by Apple)
@PierreZ
Binding’s safety
user’s code
How can we test this part???
fdb-rs
(tested with bindingTester)
libfdb
(tested by Apple)
@PierreZ
FoundationDB simulation framework
@PierreZ
@PierreZ
What is trying to achieve
@PierreZ
Introduce random network partitions
@PierreZ
Reboot up to 10 machines, keep at least 3 running
@PierreZ
@PierreZ
Will happen concurrently
@PierreZ
@PierreZ
@PierreZ
FDB and Rust
🦀
@PierreZ
FDB and Rust
🦀
@PierreZ
The workload trait
@PierreZ
Open-sourced
@PierreZ
And helping the community
@PierreZ
Binding’s safety
libfdb
(tested by Apple)
@PierreZ
Binding’s safety
fdb-rs
(tested with bindingTester)
libfdb
(tested by Apple)
@PierreZ
Binding’s safety
user’s code
(tested with the simulation)
fdb-rs
(tested with bindingTester)
libfdb
(tested by Apple)
@PierreZ
We are hiring 😉
@PierreZ
Automating things around Github
@PierreZ
The good and the bad
@PierreZ
Thanks!
Do you have any questions?
@PierreZ