Review: rust-dashu-int 0.6.2-1
Package Information
| Description | Arbitrary-precision integer math library for Rust, balancing ergonomics and efficiency - Rust source code Provides UBig and IBig (unsigned and signed), with small values inlined on the stack. Efficient arithmetic, modular arithmetic, and number theory (pow, ilog, gcd, gcd_ext); two's-complement bit operations; parsing and formatting in base 2-36; optional serde, rand, num-traits, rkyv, and zeroize. Source code for Debianized Rust crate "dashu-int" |
|---|---|
| Maintainer | Debian Rust Maintainers <pkg-rust-maintainers@alioth-lists.debian.net> |
| Changed By | Alexander Kjäll <alexander.kjall@gmail.com> |
| Distribution | unstable |
| Architecture | any |
| VCS | git: https://salsa.debian.org/rust-team/debcargo-conf.git [src/dashu-int] (browse) |
| Tracker | https://tracker.debian.org/pkg/rust-dashu-int |
| Uploaded | 4 days ago |
New Package Report
.changes
| Distribution | unstable |
|---|---|
| Date | Sun, 11 Oct 2026 11:15:21 +0000 |
| Source | rust-dashu-int |
| Version | 0.6.2-1 |
| Changed-By | Alexander Kjäll <alexander.kjall@gmail.com> |
| Architecture | amd64 source |
Changelog
rust-dashu-int (0.6.2-1) unstable; urgency=medium . * Package dashu-int 0.6.2 from crates.io using debcargo 2.8.5+alpha.0
.dsc
| Package-List | librust-dashu-int-dev deb rust optional arch=any |
|---|---|
| Section | rust |
| Priority | optional |
| Component | main |
debian/copyright
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/ Upstream-Name: dashu-int Upstream-Contact: Jacob Zhong <cmpute@gmail.com> Tomek Czajka <tczajka@gmail.com> Source: https://github.com/cmpute/dashu Files: * Copyright: 2022-2026 Jacob Zhong <cmpute@gmail.com> 2020-2026 Tomek Czajka <tczajka@gmail.com> License: MIT or Apache-2.0 Files: debian/* Copyright: 2026 Debian Rust Maintainers <pkg-rust-maintainers@alioth-lists.debian.net> 2026 Alexander Kjäll <alexander.kjall@gmail.com> License: MIT or Apache-2.0 License: Apache-2.0 Debian systems provide the Apache 2.0 license in /usr/share/common-licenses/Apache-2.0 License: MIT Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: . The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. . THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
DFSG Assistant LLM REVIEW 0 blocker, 0 important, 3 minor
This is an LLM based review using a Debian Inference based workflow. It was not written by a member of the DFSG team and has not been checked by one. It is not a decision on the package: it may be wrong, and it may have missed things.
Reviewed 1 day ago.
Report
DFSG NEW review for rust-dashu-int version 0.6.2-1
Summary
- Licensing is DFSG-compliant and
debian/copyrightis accurate: Yes - Packaging is of good quality: Yes
- Issues: 0 blocker, 0 important, 3 minor
- debian/watch: version 5
- debian/copyright: machine-readable
Licensing
debian/copyright is in DEP-5 format (correct https Format: URL) and matches the evidence in the tree. Upstream declares license = "MIT OR Apache-2.0" in Cargo.toml/Cargo.toml.orig and in the header of src/lib.rs; the only other licence notice in the package is NOTICE.md, which reproduces the MIT licence of the ibig crate this one was forked from (Copyright (c) 2020 Tomek Czajka), and both holders — Jacob Zhong (2022-2026) and Tomek Czajka (2020-2026) — appear in the Files: * stanza with the same MIT or Apache-2.0 terms. Both licences are DFSG-free and mutually compatible; the MIT text is reproduced in full and Apache-2.0 is pointed at /usr/share/common-licenses/Apache-2.0, as Policy 12.5 requires. No file lacks a licence, no non-free or field-of-use terms, no excluded files, and no binary/minified/generated-without-source files.
Packaging
Normal debcargo output and in good shape: source format 3.0 (quilt), debhelper-compat 13 with dh-sequence-cargo, the canonical two-line debian/rules, Multi-Arch: same on the -dev package, correct Provides for every feature name, autopkgtest stanzas for the default set and each feature, Vcs-* pointing at debcargo-conf, Standards-Version 4.7.4 (current) and a clean changelog. Every dependency in Build-Depends, Build-Depends-Arch and debian/tests/control resolves in the archive, including the feature pseudo-packages, and the one patch does something necessary (dropping the rkyv 0.7 and rand 0.9 features whose crates Debian does not have) although nothing references the removed features unconditionally. Only minor things to fix: the patch lacks a DEP-3 header, debian/cargo-checksum.json is a placeholder, and the binary synopsis is 105 characters with debcargo's FIXME asking for an override left in place.
Issues
1. [minor] [packaging] debian/cargo-checksum.json is a stub: no file hashes and a placeholder crates.io checksum
- Files:
debian/cargo-checksum.json:1 - Evidence:
{"package":"Could not get crate checksum","files":{}} - Problem: This file is installed verbatim as
/usr/share/cargo/registry/dashu-int-0.6.2/.cargo-checksum.json(dh-cargo'sconfigureandbuildcopy it intodebian/_source/copied_sourcesand then into the registry; see /usr/share/perl5/Debian/Debhelper/Buildsystem/cargo.pm), so the crate ships without a record of its crates.io checksum and with no per-file checksums at all. It reads as a failed or offline debcargo run — debian/changelog namesdebcargo 2.8.5+alpha.0— and means the vendored source can never be checked against what crates.io published. I could not test what, if anything, this changes at build time (dh-cargo deletes Cargo.lock at configure time and builds against a directory source, so the placeholderpackagevalue is probably never compared with anything). - Fix: Regenerate the file with a debcargo that can reach crates.io, so that
packageis the published sha256. An emptyfilesmap is normal for a crate whose sources Debian patches (/usr/share/cargo/scripts/prune-checksums does exactly that), but the package checksum must be real.
2. [minor] [packaging] relax-deps.patch has no DEP-3 header, so the change to upstream Cargo.toml is undocumented
- Files:
debian/patches/relax-deps.patch:1 - Evidence: The file begins with
diff --git a/Cargo.lock b/Cargo.lock— there is noDescription:,Origin:/Author:orForwarded:field anywhere before the diff. - Problem: The reader has to reconstruct from the diff alone that the change drops the optional
rkyv_v07andrand_v09dependencies (justified: neither librust-rkyv-0.7-dev nor librust-rand-0.9-dev exists in the archive), and there is nothing to say whether it was offered upstream. The Cargo.lock half has no effect on the Debian build at all, since dh-cargo'sconfiguredeletes Cargo.lock and the build regenerates it, which makes a header explaining the intent more, not less, useful. - Fix: Add a DEP-3 header, e.g.
Description: Drop the rkyv 0.7 and rand 0.9 features, whose crates are not in Debian,Author:/Origin:of the change andForwarded: not-needed(or the URL of the upstream issue/PR).
3. [minor] [packaging] Binary synopsis is 105 characters and debcargo's FIXME asking for an override was left in debian/control
- Files:
debian/control:111,debian/control:24 - Evidence:
Description: Arbitrary-precision integer math library for Rust, balancing ergonomics and efficiency - Rust source code(105 characters), preceded by# FIXME (packages."(name)".section) debcargo auto-generated summary for librust-dashu-int-dev is very long, consider overriding - Problem: Policy 3.4.1: "The single line synopsis should be kept brief—certainly under 80 characters." This one is 105 characters and the display software truncates it, and the tool that generated it explicitly asked the packager to override it; the unaddressed FIXME is also visible to anyone reading the source package.
- Fix: Override the summary in the debcargo package configuration (as the FIXME hint suggests) or shorten the Description in debian/control, e.g.
Arbitrary-precision integers for Rust - Rust source code, and drop the FIXME comment.
Verified
- Read debian/copyright in full: DEP-5,
Format: https://www.debian.org/doc/packaging-manuals/copyright-format/1.0/,Files: *(MIT or Apache-2.0; 2022-2026 Jacob Zhong, 2020-2026 Tomek Czajka),Files: debian/*(Debian Rust Maintainers, Alexander Kjäll), stand-aloneLicense: Apache-2.0(points to /usr/share/common-licenses/Apache-2.0) andLicense: MIT(full Expat text); noFiles-Excluded. - Grepped the whole tree (except .pc/) for
copyright,(C),©,SPDX-License-Identifier,Licensed under,Permission is hereby granted,GNU General/GNU Lesser,Apache License,Mozilla Public,public domain,All rights reserved,BSDandlicen*. The only notices are src/lib.rs:1-17 (Apache-2.0 or MIT,Copyright (c) 2022 Jacob Zhong) and NOTICE.md (the MIT text of ibig,Copyright (c) 2020 Tomek Czajka, the crate dashu-int was forked from per README.md and CHANGELOG.md). No other holder or licence is claimed anywhere in the shipped files, so theFiles: *stanza covers every notice and the notices match its licence names (no GPL/LGPL/MPL/CC/unknown terms at all). - Full file inventory (hidden files included, .pc/ ignored): ~120 files, all .rs/.py/.md/.toml/.json/.lock. No .so, .jar, .class, .pyc, .exe, no firmware, fonts, images, PDFs or minified JS/CSS, so there is no file without its preferred form for modification. The single Python file, src/mul/ntt/compute_constants.py, is the generator for the
OMEGA_MAX/CRT_INV_IJconstants in src/arch/*/ntt.rs, i.e. its input is present. - src/third_party/* are trait implementations for third-party crates (num-integer, num-modular, num-order, num-traits, rand 0.8/0.9/0.10, rkyv 0.7/0.8, serde, zeroize), not embedded copies of those crates: each file is a
modof impl blocks (checked src/third_party/{mod,num_integer,num_modular,rand,rkyv_v08,zeroize}.rs). A grep foradapted|ported from|based on|taken from|derived from|borrowed|provenancefound nothing beyond the documented ibig port, and the crate depends on those crates rather than vendoring them. - Checked every name in Build-Depends, Build-Depends-Arch and debian/tests/control against the archive's package lists with apt-cache: all resolve, including the feature pseudo-packages (
librust-rkyv-0.8+pointer-width-32-dev,librust-rkyv-0.8+alloc-dev,librust-dashu-base-0.6+std-dev,librust-cfg-if-1+default-dev,librust-static-assertions-1+default-dev,librust-criterion-0.5+html-reports-dev,librust-postcard-1+alloc-dev,librust-serde-test-1+default-dev,librust-num-order-1-dev,librust-num-integer-0.1-dev), anddh-sequence-cargois provided by dh-cargo 34. Dashu-base has 0.6.1-1 and num-modular 0.6.6-1, so the>= 0.6.1/>= 0.6.5lower bounds hold. - Read debian/rules, changelog, source/format, tests/control, upstream/metadata, debcargo.toml, copyright.debcargo.hint and cargo-checksum.json. Standards-Version 4.7.4 equals the installed Policy version (4.7.4.1, no changes to the checklist); the changelog is well formed (unstable, 0.6.2-1, a Sunday) and closes no bug;
Rules-Requires-Rootis absent, which Policy 4.9.3 permits. - Verified the relax-deps patch's justification: no librust-rkyv-0.7-dev and no librust-rand-0.9-dev exist in the archive, and the code behind the removed features is only referenced behind
#[cfg(feature = "rkyv_v07")]/#[cfg(feature = "rand_v09")](src/third_party/mod.rs:14,28, and one#[cfg(feature = "rand_v09")]fn in src/third_party/rand.rs:224), so nothing in the tree requires the removed dependencies. - Sampled the source for architecture-specific and generated code: src/arch/{x86,x86_64,generic_16/32/64_bit} are Rust, using core::arch intrinsics and runtime
is_x86_feature_detected!with#[target_feature(enable = "bmi2")](src/mul/simple.rs:184-327); build.rs only emitscargo:rustc-check-cfgfor theforce_bitscfg used by src/arch/mod.rs. - uscan found the packaged version as the newest upstream release (upstream
0.6.2, packaged0.6.2).
Not confirmed
- debian/debcargo.toml sets
test_is_broken = truefor thelib+num-integerandlib+num-integer_v01feature configurations (the two autopkgtest stanzas markedRestrictions: allow-stderr, flaky) without any explanation. I could not tell from the package which test fails or why, nor whether the first, not-flaky--all-featuresautopkgtest stanza — which enables both features — is affected by the same failure. - All per-feature autopkgtest stanzas except the
--all-featuresone carryArchitecture: !riscv64, but nothing in debian/ (not even debian/debcargo.toml) records who restricted them or why; I could not determine whether that is a debcargo default for collapsed feature tests or a hand edit. - This is a new source package (librust-dashu-int-dev is not in the archive lists). If an ITP was filed for it, debian/changelog does not close it; I have no tool to look up bug numbers.
Proposed changes
None.
Review Information
accepted — allocated to awm 2 hours ago, started 2 hours ago, completed 2 hours ago.
Final Comment
Hi,
Ignoring the first issue the LLM posits (I've fixed the review process so it won't nag about that in future, but there's still a few reviews done before that was in place). I can imagine the unexplained patch might be an automated thing, in which case automating an explanation should be doable.
And the FIXME in debian/control?
Thanks!