
Hello, I am the student that was lucky enough to be selected as the developer of Boost Bigint library as a Summer Of Code project. I've started working on the project earlier than I had to, and there is a header draft ready which I'd like to share with you - there are some issues that are not quite clear (I've marked them with comments), and I would very much like to hear possible problems with the current interface/suggestions about improvement/etc. The header is here: http://zeux.info/pub/soc/header.hpp (the SVN repository was just set up, so I did not have enough time to upload all necessary files to it). Note, that while the reference (GMP-based) implementation is more than 50% done (actually, it's almost done, some issues with string conversion and 64-bit correctness remain), I've stripped everything related to implementation from the header - implementation is subject to change, it's not finished, and possible interface changes could affect either the implementation class interface or the actual implementation. The suggestions that ARE known: - the bigint class may benefit from expression templates/move semantics regardless of the actual implementation behind the scenes. This is a known thing, and I'll address it once all base things (stable header, 2 stable implementation, test suite, documentation) are finished - initially the approach that allowed to freely mix implementation strategy (i.e. performing calculations) and storage strategy (memory management) was selected, but after concept drafts it was clear that it will restrict the possible implementations or make writing a wrapper for existing libraries too complicated or even impossible. Now the implementation has to performn its own memory management, though the default implementation (portable C++ one which will not depend on any third-party libraries) will provide a reusable storage strategy (if that was unclear, bigint_base<bigint_default_implementation<some_custom_strategy_that_performs_custom_memory_manager>
).
Thanks in advance.