neilzhu 6dd8e59864 first commit 1 month ago
..
README.md 6dd8e59864 first commit 1 month ago
aarch64-apple-darwin-default 6dd8e59864 first commit 1 month ago
aarch64-apple-darwin-jemalloc 6dd8e59864 first commit 1 month ago
aarch64-apple-darwin-no-default-features 6dd8e59864 first commit 1 month ago
aarch64-apple-darwin-workspace-hack-no-default-features 6dd8e59864 first commit 1 month ago
aarch64-unknown-linux-gnu-default 6dd8e59864 first commit 1 month ago
aarch64-unknown-linux-gnu-jemalloc 6dd8e59864 first commit 1 month ago
aarch64-unknown-linux-gnu-no-default-features 6dd8e59864 first commit 1 month ago
aarch64-unknown-linux-gnu-workspace-hack-no-default-features 6dd8e59864 first commit 1 month ago
x86_64-apple-darwin-default 6dd8e59864 first commit 1 month ago
x86_64-apple-darwin-jemalloc 6dd8e59864 first commit 1 month ago
x86_64-apple-darwin-no-default-features 6dd8e59864 first commit 1 month ago
x86_64-apple-darwin-workspace-hack-no-default-features 6dd8e59864 first commit 1 month ago
x86_64-unknown-linux-gnu-default 6dd8e59864 first commit 1 month ago
x86_64-unknown-linux-gnu-jemalloc 6dd8e59864 first commit 1 month ago
x86_64-unknown-linux-gnu-no-default-features 6dd8e59864 first commit 1 month ago
x86_64-unknown-linux-gnu-workspace-hack-no-default-features 6dd8e59864 first commit 1 month ago

README.md

Dependency lints

In this directory, we store the expected output of dependency lints. At the moment, this is limited to linting the status of jemalloc dependencies, but it could be extended to others in the future. Each file corresponds to a target architecture and a set of features. Currently, the architectures we check are x86_64-unknown-linux-gnu for 64-bit Linux OSs, and aarch64-apple-darwin and x86_64-apple-darwin for ARM64- and x86-64-based Mac releases. The set of targets is crossed with the default and no-default-features.

The files correspond to the output of cargo tree, filtered to show a specific set of packages and the path where they are included. First, the file contains the name of the dependency. The lines following it show the depth of the dependency, followed by the name of the lib crate that include the dependency. Lastly, each line lists the effective flags. The crate's name is empty if it is a non-library crate, for example a binary-only crate. All fields are separated by colons.

The following example shows the that crate named tikv_jemalloc_ctl is included by materialized through mz_prof.

tikv_jemalloc_ctl
0:materialized:
1:mz_prof:jemalloc,tikv-jemalloc-ctl
2:tikv_jemalloc_ctl:default,use_std

The files are checked and generated by lint-deps.sh. Use the --rewrite option to update the files if the set of dependencies or features change. However, note the specifics for jemalloc below.

Specifics for jemalloc

  • --no-default-features unequivocally disables jemalloc, regardless of platform.
  • --features=jemalloc unequivocally enables jemalloc, regardless of platform.
  • --default-features chooses the best allocator for the platform: the system allocator on macOS and jemalloc on Linux.

To determine the validity of changes, ensure that the following files mention the tikv-jemallocator family of dependencies:

  • aarch64-apple-darwin-jemalloc
  • aarch64-unknown-linux-gnu-default
  • aarch64-unknown-linux-gnu-jemalloc
  • x86_64-apple-darwin-jemalloc
  • x86_64-unknown-linux-gnu-default
  • x86_64-unknown-linux-gnu-jemalloc

And that the following files do not mention the tikv-jemallocator family of dependencies:

  • aarch64-apple-darwin-default
  • aarch64-apple-darwin-no-default-features
  • aarch64-unknown-linux-gnu-no-default-features
  • x86_64-apple-darwin-default
  • x86_64-apple-darwin-no-default-features
  • x86_64-unknown-linux-gnu-no-default-features