Development of Passgen happens at GitLab. Merge requests and bug reports are very welcome there. These are some useful resources for development of passgen:
Passgen uses GitLab to store code and run continuous integration and deployment jobs.
Doxygen-generated source code documentation is available.
GitLab CI is used for Continuous Integration and Continuous Deployment.
As part of the CI/CD pipeline, test coverage reports are generated.
GitLab CI is used to test and build the code on every commit, for all of the platforms that are supported. LLVM sanitizers and valgrind are used to catch memory unsafety errors. QEMU is used to execute all of the unit tests for all of the supported platforms. Additionally, the CI generates SSH signatures for the nightly builds that are also available for download at the releases page.
Code coverage reports from llvm-cov are currently broken
The code coverage reports from llvm-cov are currently broken. They only show code coverage of the files of the test system, but not of passgen itself. I'm working on fixing that.
Doxygen documentation is published for the source code on every
commit to the
master branch. Finally, code coverage (as determined by the
unit tests) is generated by lcov and
llvm-cov, and published similarly (see the respective
Passgen is written in C, consisting of a library and a command-line utility that uses the library. It can be easily embedded into other applications. Passgen does not use any global state, and as such it is safe to use from different threads. However, the parser can only be used from one thread at a time (it has no mutex to prevent errors from happening due to concurrent access).
Passgen uses the CMake build system, allowing it to be built on
different platforms and with different compilers. However, only
clang are officially supported and tested, as those are used in the CI
You may also check out the GitHub project page, which is kept somewhat in sync. If you are interested in an explainer of how to build Passgen, check out the Building page.