Open rrnewton opened 8 years ago
Actually for 1..N
isn't quite accurate. If marking an earlier package as TrustWorthy causes a downstream dependency to become safe, then that downstream pkg can be removed from the "worklist" of packages to "trustify" in the experiment.
P.S. The above analysis can also be run filtering stackage to only the set of pkgs with benchmarks, plus their dependencies. That analysis is most relevant to our benchmarking problem, but the broader analysis is most relevant to the broader question of "can Safe Haskell be made real".
Here's the methodology. It's described at the package granularity, but it may be worth dropping down to the module granularity and (mostly) ignoring packages.
N
stackage packages, sorted by "number of transitive reverse dependencies".-fpackage-trust
and figure out what whitelist of packages is needed for the baseline level of safety already present.-Wunsafe
,-Wsafe
,-Wtrustworthy-safe
.for i = 1 .. N
, increase the TCB by marking packagei
asTrustworthy
. Attempt to compile all packages downstream fromi
with safety required (unless they are already trusted), and see how many "flip". Record the total count of safe/trustworthy/unsafe packages.N
.