Libgit2: Bindings for the libgit2 Git Library
This package provides Racket bindings to libgit2, a portable, pure C implementation of the Git core methods provided as a re-entrant linkable library.
The Racket bindings are fairly low-level and closely follow the libgit2 C API: the goal is to provide a foundation for higher-level Git applications or libraries. Racket identifiers containing underscores directly correspond to the C-level functions, types, etc. with the same names. Many functions have different signatures, however, as this library protects Racket programmers from C-level details like memory management and checking error codes.
Status of this library: The Racket interface to libgit2 is not yet stable: backwards-incompatible changes are planned. This package already has extensive coverage of the libgit2 C API, but the signatures of some functions should be changed, either to handle memory management automatically or to use more correct C types at the FFI level.
Additionally, this package was initially developed against libgit2 v0.26.0. It has mostly been updated to support libgit2 v1.4.2—
all API removals up to that point have been dealt with, for example— but some additions and modifications remain to be addressed. Community contributors are working to address these details and stabilize this package around the post-1.0 libgit2 API. You can contribute to the development effort at https://github.com/libgit2-racket/libgit2.
In addition to the Racket interface, the native libgit2 library is distributed via platform-specific dependencies in the Racket package system, currently for GNU/Linux (x86_64), Windows (x86_64 and i386), and Mac OS (x86_64 and Aarch64).
The libgit2 Racket bindings were initially created by Brad Busching as a senior project at California Polytechnic State University, San Luis Obispo, under the guidance of John Clements (clements@racket-lang.org).