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

Roaring64Map support #58

Closed
stuarteberg opened this issue Jul 6, 2020 · 10 comments
Closed

Roaring64Map support #58

stuarteberg opened this issue Jul 6, 2020 · 10 comments

Comments

@stuarteberg
Copy link
Contributor

stuarteberg commented Jul 6, 2020

The CRoaring source code includes a C++ file named roaring64map.hh, which begins with the following comment:

/*
A C++ header for 64-bit Roaring Bitmaps, implemented by way of a map of many
32-bit Roaring Bitmaps.
*/

So... do you think it would be possible to add python bindings for Roaring64Map? Or is that not feasible (or not advisable) for some reason?

@stuarteberg
Copy link
Contributor Author

stuarteberg commented Jul 6, 2020

BTW (unrelated): I added a pyroaring recipe to conda-forge, so conda users can now install it with the following command:

conda install -c conda-forge pyroaring

Perhaps that should be mentioned as an installation option in the README?

@Ezibenroc
Copy link
Owner

Hello, and sorry for the delay.

It would be nice to have bindings for Roaring64Map. It would be quite a large amount of work though and I do not have much time presently, but if you want to give it a try, go for it!

The conda installation is pretty cool, thanks. Would you want to do a pull request for the README to phrase it yourself?

@stuarteberg
Copy link
Contributor Author

Thanks for the response. I don't know if I need 64-bit support after all :-)

Would you want to do a pull request for the README to phrase it yourself?

See #61

I've also opened conda-forge/pyroaring-feedstock#4 to add you as a maintainer to the conda-forge package. I'll merge it if you approve.

@Ezibenroc
Copy link
Owner

Thanks for the response. I don't know if I need 64-bit support after all :-)

Alright, I will keep this issue open anyway, in case someone else wants to try ;-)

@yihuang
Copy link

yihuang commented Oct 16, 2022

I tried to wrap the c++ interface of roaring64map, but struggle to get it build, because I can't set flag -std=c++20 to cpp files only.
But then I created a pure python implementation: https://github.com/yihuang/python-roaring64, wrapping PyRoaringBitMap bitmap as inner containers.

@lemire
Copy link
Contributor

lemire commented Oct 16, 2022

You should not need C++20 to build CRoaring.

@yihuang
Copy link

yihuang commented Oct 17, 2022

You should not need C++20 to build CRoaring.

it output some compile error which could be fixed with that flag though, I don't have the exact error message at hand right now.
the pure python version is nod bad though, unless one wants the full speed.

@Ezibenroc
Copy link
Owner

An alternative implementation of the 64 bit bitmaps is available in CRoaring, see RoaringBitmap/CRoaring#534
It should be more efficient than the existing one (caveat: I don't think it has been benchmarked yet).
It is also maybe easier to wrap since it is written in C.
Note that we still depend on this issue being closed if we want to use this new implementation: RoaringBitmap/CRoaring#543

@lemire
Copy link
Contributor

lemire commented Jan 9, 2024

RoaringBitmap/CRoaring#543 has been solved just now.

As soon as we have serialization/deserialization, I will issue a new release.

@Ezibenroc
Copy link
Owner

Fixed in the latest release 1.0.0 🎉

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

4 participants