§Babel
I’ve been focusing on our new package manager to rule them all, code name `Babel’, this week.
§PubGrub opam dependency provider
I’m making progress so supporting Opam’s full feature set with the Rust implementation of the PubGrub version solving algorithm, which we’re aiming to use for a cross-ecosystem solver.
Previous work has used the Opam semantics for multiple ecosystems.
The PubGrub encoding is quite similar to the `HyperRes’ formalism we defined for a minimal subset of functionality between ecosystems..
DONE I’ve added support for the complicated ordering of opam versions - here
DONE I’ve added an encoding of boolean logic in Opam’s package formula - here
- We support version formula with PubGrub’s Range operations (e.g. union, intersection, etc)
- We support package formula with a proxy package for a logical or; the proxy package has two version - “lhs” and “rhs” with appropriate dependencies, and we can extract the edges in the resolved dependency graph from this. This is equivalent to our edges clauses in the SAT encoding, but using packages themselves to encode it.
An example;
Created index with 5 packages: (C, 1.0.0) (C, 1.5.0) -> (E: 1.0.0 <= v) (B, 1.0.0) -> (E: 1.0.0) (B, 1.2.0) -> ((C: ∗) | (E: [ , 1.1.0 [ [ 1.1.0.1, ∞ [)) (B, 2.0.0) -> (((A: v < 3.0.0) & (E: 1.0.0 <= v)) | (C: ∗)) (E, 1.0.0) (A, 1.0.0) -> ((B: 1.0.0.1 <= v) & (C: v < 1.4.0)) (A, 1.1.0) -> ((B: 1.0.0.1 <= v) | (C: v < 1.4.0)) (A, 1.2.0) -> ((B: 5.0.0.1 <= v) | (C: v < 1.4.0)) (A, 1.3.0) -> ((C: v < 1.4.0) | (B: 1.0.0.1 <= v)) (A, 2.0.0) -> ((B: 1.2.0.1 <= v) & ((C: ∗) | (D: [ 2.0.0, 2.0.0.1 [ [ 2.5.0, ∞ [))) (A, 2.1.0) -> ((B: 2.0.0 <= v) & ((C: v < 2.0.0) | (E: 1.0.0 <= v))) (A, 3.0.0) -> (((B: 2.0.0 <= v) & (C: 1.5.0 <= v)) | ((D: 2.0.0 <= v) & (E: 1.0.0))) (D, 2.0.0) -> ((E: 2.0.0 <= v) | (C: ∗)) Resolved Dependency Graph: (A, 2.0.0) -> (C, 1.5.0), (B, 2.0.0) (B, 2.0.0) -> (A, 2.0.0), (E, 1.0.0) (E, 1.0.0) (C, 1.5.0) -> (E, 1.0.0)
where,
name: "A" version: "2.0.0" depends: [ "B" {> "1.2.0"} & ( "C" | ( "D" {= "2.0.0" & ! (< "2.5.0")} ) ) ]
TODO support variables as package with Opam filtered formula
§Next week
§TODO explore error messages with exotic encoding, including opam’s package formula
this might require a custom error provider
§TODO try PubGrub 0.3.0 prerelease
I think there’s probably a lot of improvements to be had since the last release was 4 years ago.
TODO it looks like we might be able to manually add conflicts
add_incompatibility
§TODO solve on the opam repository
just strip out everything non essential (filtered formulas, variables, conflicts, etc) to get something working
§TODO a Debian/Alpine encoding in PubGrub, which I think should be much simpler than Opam
and tie into opam with depexts for cross-ecosystem resolutions
Uv is using the development branch of PubGrub.
§Could submit a theory paper to SPLASH and a practice to SOSP
- tool solve for these
- tricky because of new problems
- error reporting
interactive solving with LLMS to NeurIPS
install a web server using jdgango
give environment
zero day attacks alpine
translate all ocaml packages to pip
§Eon
§Found a bug in Eon where NS records aren’t being propigated to the secondary.
$ dig ns freumh.org @freumh.org +short
ns1.freumh.org.
ns1.sirref.org.
$ dig ns freumh.org @sirref.org +short
ns1.sirref.org.
Which means we’re failing https://internet.nl/ with nameservers not reachable with IPv6.
This is probably in here.
§When an Eon server statically adds a resource record it isn’t propigated to the secondary on a restart.
Need to look at this.
§Eilean
Fixed mailserver DKIM records resulting from a change in the Eon capability update CLI
§Spatial Name System
Agreed to prototype something to provision resources from a nameserver on a Raspberry Pi that could be deployed to ESP32 sensors while Josh continues to hack on the ESP32.