Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Implement DBMs/CDDs and or Federations in Rust #111

Closed
seblund opened this issue Jul 25, 2022 · 0 comments · Fixed by #115
Closed

Implement DBMs/CDDs and or Federations in Rust #111

seblund opened this issue Jul 25, 2022 · 0 comments · Fixed by #115
Labels
large endeavour An endeavour that requires a relatively more effort to implement new feature A feature that should eventually be added

Comments

@seblund
Copy link
Member

seblund commented Jul 25, 2022

Allows us to lose the dependency to UDBM which makes the project run entirely in rust!
This has many benefits:

  • Ensuring safe code as FFI is always unsafe
  • Allowing multithreading for performance increases (UDBM is single-threaded so we use a global lock to block multithreaded access)
  • Easier debugging as FFI is prone to segmentation faults which we cannot catch from rust
  • Simplifying the build process by losing the dependency to UDBM/FFI
  • Potentially allows us to perform use case specific optimizations of the internals

We can determine the methods that must be ported to rust from wrapper.cpp, and we have all source code available so we should be able to port without much trouble. I suspect that no code outside of src/DBMLib will need to be changed to handle a fully rust-based implementation.

Ulrik (edit): An (partial) implementation of DBM in Rust is available at: https://github.com/ScumbagDog/rdbm

@seblund seblund added new feature A feature that should eventually be added large endeavour An endeavour that requires a relatively more effort to implement labels Jul 25, 2022
seblund pushed a commit that referenced this issue Feb 1, 2023
Remove box requirement in ThreadPool.enqueue
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
large endeavour An endeavour that requires a relatively more effort to implement new feature A feature that should eventually be added
Projects
None yet
Development

Successfully merging a pull request may close this issue.

1 participant