I renamed type BGN pairings to type A1.
I wrote more of the manual. Now it describes how to generate pairing parameters, and some of the gory behind-the-scenes details of PBC.
I also modified the contributed code so it comforms to the way I do things.
I’ve been working on PBC fairly intensely and yet there have been no performance improvements. Most of the work has been manual labour. The documentation is in much better shape now, and includes a tutorial that I hope will show how easy it is to write cryptography applications using the library.
I also made some API changes. It is now possible to implement cryptosystems without knowing the details of PBC library types, and also without calling any GMP functions. I thought about adding more wrapper data types so that type checking will prevent elements of G1, G2, GT and Zr getting mixed up, but I felt that the library is usable enough as it is, and I have other priorities.
It might be a while before I can start working on optimizations. I still want to clean up the build system a little, make a few more API changes, and of course, keep adding documentation.
There were a few minor problems which I hastily corrected. Luckily, since the new build system gives the distribution the extension tar.gz instead of tgz I got the link to it wrong so no one could have downloaded it anyway.
I’ve started more work on the documentation, but there’s still a long way to go.
Added element_printf(), element_out_str() now returns number of bytes written (and zero on error). Swapped type C and type D curves so that it matches the labeling in my thesis. Applied patch sent by Joe Cooley: many compilation warnings eliminated, uses GNU build system, and other miscellaneous improvements. Put code in a Git repository.
I wanted to add more but I decided to release sooner rather than later. High on my list is to improve the shoddy documentation.
The build system needs tidying. At the moment there is the GNU build system for various UNIX flavours, the legacy Makefile just in case, and a Makefile for mingw on Windows.
I also want to move platform-dependent code to separate files, rather than have a bunch of ifdefs. I like to have as little preprocessor code as possible in source files, and would prefer to delegate the problem of deciding which variant to use to the build system.
There are now three places to look for news. Firstly, the ChangeLog, generated by git, which will be updated with terse statements every time the source is edited. Secondly, this webpage, which I intend to make more like a blog: chatty and containing any items related to this project, not just release-related news (such as plans for the future). Lastly, the NEWS file, which shall be written with a library user in mind, as opposed to someone developing the library.