Keyboard shortcuts

Press ← or → to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Release archive licenses

Plenty is licensed MIT OR Apache-2.0 (license in both manifests). The archive ships LICENSE-MIT and LICENSE-APACHE from the repository root and THIRD-PARTY-NOTICES.md, generated by scripts/release/third_party_notices.py from cargo metadata. It lists every crate linked into the compiler or its embedded runtime (normal dependencies only; build scripts and procedural macros do not ship) with each crate’s own license files, plus the vendored SQLite amalgamation and Brotli codec, and the third-party code and data that standard library modules and the runtime embed. VENDORED_SOURCES lists source copied from a published package with its license files kept beside the copy: plenty-runtime/src/unicode/vendor holds unicode-normalization 0.1.25 (MIT OR Apache-2.0). EMBEDDED lists the rest: std.markdown derives from commonmark.js 0.31.2 (BSD-2-Clause) and carries tables generated from the Unicode Character Database 16.0.0 and the WHATWG HTML named character references (BSD-3-Clause for portions in source code), and the unicode-normalization tables derive from the Unicode Character Database 17.0.0 (Unicode License v3). std.diff derives its Myers and patience algorithms from the similar crate 3.2.1 (Apache-2.0). Their reviewed license texts are bundled in scripts/release/licenses/; update the entry and its text together when the upstream version changes. The compiler notices fail when a directory named vendor, or a subdirectory of plenty-runtime/native, has no notice: a child of a vendor directory named after a shipped crate (NAME-VERSION, as in plenty-runtime/vendor) is covered by that crate’s entry, and any other vendored directory needs a VENDORED_SOURCES or native-library entry. The Rust standard library’s notices come from the build toolchain’s share/doc/rust. The script fails when a shipped crate has no license file or reviewed fallback, so a new dependency’s license is reviewed before it ships. For iced-x86 1.21.0, whose published crate omits its license file, the generator uses a bundled copy from the upstream commit recorded in the crate’s .cargo_vcs_info.json. The fallback matches the package name, version, and declared license and includes the source URL in the notices. yaxpeax-arm 0.5.0, the A64 assembly decoder, declares 0BSD but omits a license file; its pinned fallback supplies the standard SPDX 0BSD terms without inventing a copyright notice. Both fallbacks identify their package version and source URL. Dependency upgrades require a fresh review if they still omit the license file; notice generation does not download fallback text during the release build.

For each engine’s NAME-notices/, third_party_notices.py --component NAME walks its own manifest/lockfile. The faer fork and its backend are Git dependencies pinned in the linalg lockfile, with their upstream notices; missing workspace-root licenses in the dependency family have version-pinned, reviewed fallbacks. Offline builds need the pinned Git checkout as well as Cargo’s registry cache. For dataframe, alloc-stdlib shares its repository’s BSD license with alloc-no-stdlib. polars-parquet-format 0.1.0 declares MIT AND Apache-2.0 but omits top-level license files; a version/license-pinned fallback preserves its upstream parquet-format-safe license texts and the published package’s author attribution. Its Thrift sources retain Apache Software Foundation license headers. The bundled fallback identifies its upstream revision, and dependency upgrades require review again.