Expand description
A crate providing foundational capabilities to other git-*
crates with trade-offs between compile time, binary size or speed
selectable using cargo feature toggles.
It’s designed to allow the application level crate to configure feature toggles, affecting all other git-*
crates using
this one.
Thus all features provided here commonly have a ‘cheap’ base implementation, with the option to pull in counterparts with higher performance.
§Feature Flags
-
progress
— Provide traits and utilities for providing progress information. These can then be rendered using facilities of theprodash
crate. -
progress-unit-human-numbers
— Provide human-readable numbers as well as easier to read byte units for progress bars. -
progress-unit-bytes
— Provide human readable byte units for progress bars. -
fs-read-dir
— Provide utilities suitable for working with thestd::fs::read_dir()
. -
tracing
— Implementtracing
withtracing-core
, which provides applications with valuable performance details if they opt-in to it.Note that this may have overhead as well, thus instrumentations should be used stategically, only providing coarse tracing by default and adding details only where needed while marking them with the appropriate level.
-
tracing-detail
— If enabled, detailed tracing is also emitted, which can greatly increase insights but at a cost. -
parallel
— Use scoped threads and channels to parallelize common workloads on multiple objects. If enabled, it is used everywhere where it makes sense. As caches are likely to be used and instantiated per thread, more memory will be used on top of the costs for threads. Thethreading
module will contain thread-safe primitives for shared ownership and mutation, otherwise these will be their single threaded counterparts. This way, single-threaded applications don’t have to pay for threaded primitives. -
once_cell
— If enabled, OnceCell will be made available for interior mutability either in sync or unsync forms. -
walkdir
— Makes facilities of thewalkdir
crate partially available. In conjunction with the parallel feature, directory walking will be parallel instead behind a compatible interface. -
crc32
— provide a proven and fastcrc32
implementation. -
zlib
— Enable the usage of zlib-related utilities to compress or decompress data. This enables theflate2
crate, and always uses the high-performancezlib-rs
backend. Note that the various past features for selecting zlib backends are now deprecated and do nothing. -
zlib-ng
— Deprecated: gix always uses zlib-rs. -
zlib-rs
— Deprecated: gix always uses zlib-rs now. As of zlib-rs 0.5.0 (used by flate2 1.1.1), this no longer exports C symbols # by default, so it doesn’t conflict with any other zlib library that might be loaded into the same address space. -
zlib-ng-compat
— Deprecated: gix always uses zlib-rs. -
zlib-stock
— Deprecated: gix always uses zlib-rs. -
zlib-rust-backend
— Deprecated: gix always uses zlib-rs.
§Other
cache-efficiency-debug
— Count cache hits and misses and print that debug information on drop. Caches implement this by default, which costs nothing unless this feature is enabled
Re-exports§
pub use gix_trace as trace;
Modules§
- cache
- decode
- fs
- Filesystem utilities
- hash
- Hash functions and hash utilities
- interrupt
- Utilities to cause interruptions in common traits, like Read/Write and Iterator.
- io
io-pipe
- A unidirectional pipe for bytes, analogous to a unix pipe. Available with the
io-pipe
feature toggle. - iter
- parallel
- Run computations in parallel, or not based the
parallel
feature toggle. - progress
progress
- Various
prodash
types along with various utilities for comfort. - threading
- Type definitions for putting shared ownership and synchronized mutation behind the
threading
feature toggle. - zlib
zlib