DatFilePublicSuffixList (added in #190) reads only the text .dat format via the publicsuffix crate. On a default Fedora install the .dat file is not present, but the binary .dafsa file at /usr/share/publicsuffix/public_suffix_list.dafsa is. With libwebauthn planned to ship by default on Fedora, the system loader will fail out of the box.
What ships where
On Fedora, libpsl (transitively pulled in by curl, wget, git) requires publicsuffix-list-dafsa but not publicsuffix-list, so nearly every Fedora system has the binary .dafsa and almost none have the text .dat.
Proposal
Add a DAFSA reader behind the existing PublicSuffixList trait. Open question for implementation time: ship a combined reader that probes .dafsa then falls back to .dat, or DAFSA-only and drop the .dat path. Either way the new code is the DAFSA parser itself.
The libpsl DAFSA format is documented in upstream libpsl (src/psl-make-dafsa.py, src/psl-load-dafsa.c). A safe-Rust reader is a self-contained ~150-300 LoC task plus tests. The publicsuffix crate v1.5 we currently use does not support DAFSA.
Why not bundle a snapshot
PSL freshness needs to track the system package manager, not crate releases. The point of DatFilePublicSuffixList is to delegate that update cadence to the OS. See discussion in #173.
DatFilePublicSuffixList(added in #190) reads only the text.datformat via thepublicsuffixcrate. On a default Fedora install the.datfile is not present, but the binary.dafsafile at/usr/share/publicsuffix/public_suffix_list.dafsais. With libwebauthn planned to ship by default on Fedora, the system loader will fail out of the box.What ships where
.datshipped.dafsashippedlibpslRecommendspublicsuffixpublicsuffix-listpublicsuffix-list-dafsa-dafsa(libpslRequires it)On Fedora,
libpsl(transitively pulled in by curl, wget, git) requirespublicsuffix-list-dafsabut notpublicsuffix-list, so nearly every Fedora system has the binary.dafsaand almost none have the text.dat.Proposal
Add a DAFSA reader behind the existing
PublicSuffixListtrait. Open question for implementation time: ship a combined reader that probes.dafsathen falls back to.dat, or DAFSA-only and drop the.datpath. Either way the new code is the DAFSA parser itself.The libpsl DAFSA format is documented in upstream libpsl (
src/psl-make-dafsa.py,src/psl-load-dafsa.c). A safe-Rust reader is a self-contained ~150-300 LoC task plus tests. Thepublicsuffixcrate v1.5 we currently use does not support DAFSA.Why not bundle a snapshot
PSL freshness needs to track the system package manager, not crate releases. The point of
DatFilePublicSuffixListis to delegate that update cadence to the OS. See discussion in #173.