Thicket data repository for the EEG
1{
2 "id": "https://ryan.freumh.org/2025-03-03.html",
3 "title": "3 Mar 2025",
4 "link": "https://ryan.freumh.org/2025-03-03.html",
5 "updated": "2025-03-03T00:00:00",
6 "published": "2025-03-03T00:00:00",
7 "summary": "<div>\n <span> Previous: <a href=\"2025-02-25.html\">25 Feb 2025</a> </span>\n <span> Next: <a href=\"2025-03-10.html\">10 Mar 2025</a> </span>\n </div>\n \n \n\n <ol>\n<li><p><span><a href=\"https://github.com/RyanGibb/babel\">Babel</a></span></p>\n<ol>\n<li><p><span>A Debian encoding in PubGrub</span></p>\n<ol>\n<li><p><span><span>X</span> <a href=\"https://www.debian.org/doc/debian-policy/ch-relationships.html#virtual-packages-provides\">provides</a>\nwith virtual packages</span></p>\n<p><span><a href=\"https://github.com/RyanGibb/pubgrub-debian/commit/0e1b76fd89b8773b555905858e3e3ed3796e78a3\">here</a></span></p></li>\n</ol></li>\n<li><p><span><span>X</span> cross\necosystem resolutions between opam and debian</span></p>\n<p><span>Done in <a href=\"https://github.com/RyanGibb/babel\">babel</a>.</span></p>\n<p><span>Some examples follow.</span></p>\n<ol>\n<li><p><span><code>conf-gmp</code></span></p>\n<pre><code>#[test]\nfn test_conf_gmp_variables() -> Result<(), Box<dyn Error>> {\n let root = OpamPackage::Root(vec![\n (\n OpamPackage::Base("conf-gmp".to_string()),\n Range::singleton(OpamVersion("4".to_string())),\n ),\n (\n OpamPackage::Var("os-family".to_string()),\n Range::singleton(OpamVersion("debian".to_string())),\n ),\n (\n OpamPackage::Var("os-distribution".to_string()),\n Range::singleton(OpamVersion("debian".to_string())),\n ),\n ]);\n solve_repo(\n BabelPackage::Opam(root),\n BabelVersion::Opam(OpamVersion("".to_string())),\n "../pubgrub_opam/opam-repository/packages",\n "../pubgrub_debian/repositories/buster/Packages",\n )?;\n Ok(())\n}\n</code></pre>\n<pre><code>Solution Set:\n Debian (libgmp10, 2:6.1.2+dfsg-4+deb10u1)\n Opam os-family = debian\n Debian (libc6, 2.28-10+deb10u1)\n Debian (libgcc1, 1:8.3.0-6)\n Opam os-distribution = debian\n Opam os = linux\n Debian (libstdc++6, 8.3.0-6)\n Debian (libgmpxx4ldbl, 2:6.1.2+dfsg-4+deb10u1)\n Debian (gcc-8-base, 8.3.0-6)\n Opam (conf-gmp, 4)\n Debian (libgmp-dev, 2:6.1.2+dfsg-4+deb10u1)\n\nResolved Dependency Graph:\n (conf-gmp, 4) -> (Opam `os-distribution`, debian), (Opam `os-family`, debian), (Opam `os`, linux), (libgmp-dev, 2:6.1.2+dfsg-4+deb10u1)\n (gcc-8-base, 8.3.0-6)\n (libc6, 2.28-10+deb10u1) -> (libgcc1, 1:8.3.0-6)\n (libgcc1, 1:8.3.0-6) -> (gcc-8-base, 8.3.0-6), (libc6, 2.28-10+deb10u1)\n (libgmp-dev, 2:6.1.2+dfsg-4+deb10u1) -> (libgmp10, 2:6.1.2+dfsg-4+deb10u1), (libgmpxx4ldbl, 2:6.1.2+dfsg-4+deb10u1)\n (libgmp10, 2:6.1.2+dfsg-4+deb10u1) -> (libc6, 2.28-10+deb10u1)\n (libgmpxx4ldbl, 2:6.1.2+dfsg-4+deb10u1) -> (libc6, 2.28-10+deb10u1), (libgcc1, 1:8.3.0-6), (libgmp10, 2:6.1.2+dfsg-4+deb10u1), (libstdc++6, 8.3.0-6)\n (libstdc++6, 8.3.0-6) -> (gcc-8-base, 8.3.0-6), (libc6, 2.28-10+deb10u1), (libgcc1, 1:8.3.0-6)\n</code></pre></li>\n<li><p><span><code>ocluster</code></span></p>\n<pre><code>let root = OpamPackage::Root(vec![\n (\n OpamPackage::Base("ocluster".to_string()),\n Range::singleton(OpamVersion("0.3.0".to_string())),\n ),\n (\n OpamPackage::Var("os-family".to_string()),\n Range::singleton(OpamVersion("debian".to_string())),\n ),\n (\n OpamPackage::Var("os-distribution".to_string()),\n Range::singleton(OpamVersion("debian".to_string())),\n ),\n]);\nsolve_repo(\n BabelPackage::Opam(root),\n BabelVersion::Opam(OpamVersion("".to_string())),\n "../pubgrub_opam/opam-repository/packages",\n "../pubgrub_debian/repositories/buster/Packages",\n)?;\nOk(())\n</code></pre>\n<pre><code>Solution Set:\n Opam (ppx_deriving, 6.0.3)\n Opam (stringext, 1.6.0)\n Debian (libgcc1, 1:8.3.0-6)\n Opam (mirage-crypto-ec, 0.11.3)\n Opam (conduit-lwt-unix, 7.1.0)\n Opam (bigstringaf, 0.10.0)\n Opam (base-bytes, base)\n Opam (angstrom, 0.16.1)\n Opam (cstruct-lwt, 6.2.0)\n Opam (sha, 1.15.4)\n Opam (ppx_here, v0.17.0)\n Debian (gcc-8-base, 8.3.0-6)\n Opam (tls-mirage, 0.17.5)\n Opam (conf-gmp, 4)\n Opam (ocaml-compiler, 5.3)\n Opam os-family = debian\n Opam (ppx_inline_test, v0.17.0)\n Opam (domain-name, 0.4.0)\n Opam (extunix, 0.4.3)\n Opam (eqaf, 0.9)\n Debian (libstdc++6, 8.3.0-6)\n Opam (mirage-crypto-rng, 0.11.3)\n Opam opam-version = 2.1.0\n Opam (ppx_base, v0.17.0)\n Opam (yojson, 2.2.2)\n Opam (ppx_expect, v0.17.2)\n Opam (ocaml-variants, 5.3.1+trunk)\n Opam (duration, 0.2.1)\n Opam (ca-certs, 0.2.3)\n Opam (pbkdf, 1.2.0)\n Opam (zarith, 1.13)\n Opam (prometheus, 1.2)\n Opam (obuilder, 0.6.0)\n Opam (psq, 0.2.1)\n Opam (result, 1.5)\n Opam (hmap, 0.8.1)\n Opam (system-mingw, 1)\n Opam (asetmap, 0.8.1)\n Opam (cstruct, 6.2.0)\n Opam (conf-mingw-w64-gcc-i686, 1)\n Opam (ocplib-endian, 1.2)\n Opam (cohttp-lwt, 6.0.0)\n Opam (ipaddr-sexp, 5.6.0)\n Opam (ocaml-env-mingw32, 1)\n Opam (ocluster, 0.3.0)\n Opam (ocaml, 5.3.1)\n Opam (dune, 3.17.2)\n Opam (base-unix, base)\n Opam (magic-mime, 1.3.1)\n Debian (libgmp-dev, 2:6.1.2+dfsg-4+deb10u1)\n Opam (x509, 0.16.5)\n Opam (fpath, 0.7.3)\n Opam (fmt, 0.9.0)\n Opam (ppxlib_jane, v0.17.2)\n Opam (eio, 1.2)\n Opam (optint, 0.3.0)\n Opam (jst-config, v0.17.0)\n Opam (re, 1.12.0)\n Opam (csexp, 1.5.2)\n Opam (base-bigarray, base)\n Debian (libc6, 2.28-10+deb10u1)\n Opam (sexplib0, v0.17.0)\n Opam post = false\n Opam (stdio, v0.17.0)\n Opam (ppx_hash, v0.17.0)\n Opam (ppx_cold, v0.17.0)\n Opam (thread-table, 1.0.0)\n Opam (uri, 4.4.0)\n Opam (parsexp, v0.17.0)\n Opam (base, v0.17.1)\n Opam (conduit-lwt, 7.1.0)\n Opam (cmdliner, 1.3.0)\n Opam (mirage-crypto, 0.11.3)\n Opam (sexplib, v0.17.0)\n Opam (mtime, 2.1.0)\n Opam (ppx_sexp_conv, v0.17.0)\n Opam (mirage-flow, 5.0.0)\n Opam (lwt-dllist, 1.0.1)\n Opam os-distribution = debian\n Opam (ocaml_intrinsics_kernel, v0.17.1)\n Opam os = linux\n Opam build = false\n Debian (libgmpxx4ldbl, 2:6.1.2+dfsg-4+deb10u1)\n Opam (capnp-rpc-lwt, 2.0)\n Opam (ppx_compare, v0.17.0)\n Opam (base-threads, base)\n Opam (logs, 0.7.0)\n Opam (stdlib-shims, 0.3.0)\n Opam (dune-configurator, 3.17.2)\n Opam (ipaddr, 5.6.0)\n Opam (res, 5.0.2)\n Opam (capnp-rpc-net, 1.2.3)\n Opam (tar-unix, 2.6.0)\n Opam (ppx_assert, v0.17.0)\n Opam (mirage-kv, 6.1.1)\n Debian (libev4, 1:4.25-1)\n Opam with-dev-setup = false\n Opam (lwt, 5.9.0)\n Opam (ppx_globalize, v0.17.0)\n Opam (mirage-crypto-pk, 0.11.3)\n Opam (rresult, 0.7.0)\n Opam (conf-libev, 4-12)\n Opam (capnp, 3.6.0)\n Opam (time_now, v0.17.0)\n Opam (domain-local-await, 1.0.1)\n Opam (stdint, 0.7.2)\n Debian (libgmp10, 2:6.1.2+dfsg-4+deb10u1)\n Opam (digestif, 1.2.0)\n Opam with-test = false\n Opam (lwt_eio, 0.5.1)\n Opam (sqlite3, 5.3.0)\n Opam (asn1-combinators, 0.2.6)\n Opam with-doc = false\n Opam (dune-build-info, 3.17.2)\n Opam (num, 1.5-1)\n Opam (prometheus-app, 1.2)\n Opam dev = false\n Opam (capnp-rpc-unix, 1.2.4)\n Opam (ppx_derivers, 1.2.1)\n Opam (gmap, 0.3.0)\n Opam (astring, 0.8.5)\n Opam (bos, 0.2.1)\n Opam (hkdf, 1.0.4)\n Opam (mirage-crypto-rng-lwt, 1.2.0)\n Opam (mirage-clock, 4.2.0)\n Opam (ocaml-compiler-libs, v0.17.0)\n Opam (ptime, 1.2.0)\n Opam arch = x86_64\n Opam (ocaml-config, 3)\n Opam (jane-street-headers, v0.17.0)\n Opam (ppxlib, 0.35.0)\n Opam (seq, base)\n Opam version = false\n Opam (cohttp-lwt-unix, 6.0.0)\n Opam (base64, 3.5.1)\n Opam (ppx_enumerate, v0.17.0)\n Opam (ppx_optcomp, v0.17.0)\n Opam (ocamlfind, 1.9.8)\n Opam (tls, 0.17.5)\n Debian (libev-dev, 1:4.25-1)\n</code></pre></li>\n</ol></li>\n<li><p><span><span>X</span> An Alpine\nencoding in PubGrub</span></p>\n<pre><code>$ apk dot openssh-server\ndigraph "apkindex" {\n rankdir=LR;\n node [shape=box];\n "libcrypto3-3.3.3-r0" -> "musl-1.2.5-r1"[arrowhead=inv,label="so:libc.musl-x86_64.so.1",];\n "openssh-keygen-9.7_p1-r5" -> "libcrypto3-3.3.3-r0"[];\n "openssh-keygen-9.7_p1-r5" -> "musl-1.2.5-r1"[arrowhead=inv,label="so:libc.musl-x86_64.so.1",];\n "openssh-keygen-9.7_p1-r5" -> "libcrypto3-3.3.3-r0"[arrowhead=inv,label="so:libcrypto.so.3",];\n "openssh-server-9.7_p1-r5" -> "openssh-keygen-9.7_p1-r5"[];\n "openssh-server-9.7_p1-r5" -> "openssh-server-common-9.7_p1-r5"[];\n "openssh-server-9.7_p1-r5" -> "musl-1.2.5-r1"[arrowhead=inv,label="so:libc.musl-x86_64.so.1",];\n "openssh-server-9.7_p1-r5" -> "libcrypto3-3.3.3-r0"[arrowhead=inv,label="so:libcrypto.so.3",];\n "zlib-1.3.1-r1" -> "musl-1.2.5-r1"[arrowhead=inv,label="so:libc.musl-x86_64.so.1",];\n "openssh-server-9.7_p1-r5" -> "zlib-1.3.1-r1"[arrowhead=inv,label="so:libz.so.1",];\n}\n</code></pre>\n<pre><code>(/bin/sh, yash-binsh) -> (yash-binsh, 2.57-r0)\n(libcrypto3, 3.3.3-r0) -> (so:libc.musl-x86_64.so.1, musl)\n(libncursesw, 6.5_p20241006-r3) -> (ncurses-terminfo-base, 6.5_p20241006-r3), (so:libc.musl-x86_64.so.1, musl)\n(musl, 1.2.5-r9)\n(ncurses-terminfo-base, 6.5_p20241006-r3)\n(openssh-keygen, 9.9_p2-r0) -> (libcrypto3, 3.3.3-r0), (so:libc.musl-x86_64.so.1, musl), (so:libcrypto.so.3, libcrypto3)\n(openssh-server, 9.9_p2-r0) -> (/bin/sh, yash-binsh), (openssh-keygen, 9.9_p2-r0), (openssh-server-common, 9.9_p2-r0), (so:libc.musl-x86_64.so.1, musl), (so:libcrypto.so.3, libcrypto3), (so:libz.so.1, zlib)\n(openssh-server-common, 9.9_p2-r0)\n(so:libc.musl-x86_64.so.1, musl) -> (musl, 1.2.5-r9)\n(so:libcrypto.so.3, libcrypto3) -> (libcrypto3, 3.3.3-r0)\n(so:libncursesw.so.6, libncursesw) -> (libncursesw, 6.5_p20241006-r3)\n(so:libz.so.1, zlib) -> (zlib, 1.3.1-r2)\n(yash, 2.57-r0) -> (/bin/sh, yash-binsh), (so:libc.musl-x86_64.so.1, musl), (so:libncursesw.so.6, libncursesw)\n(yash-binsh, 2.57-r0) -> (yash, 2.57-r0)\n(zlib, 1.3.1-r2) -> (so:libc.musl-x86_64.so.1, musl)\n</code></pre>\n<p><span>We could similarly prune out virtual\npackages.</span></p></li>\n<li><p><span><span>O</span> read up on\nanswer set programming</span></p>\n<p><span><a href=\"https://pubgrub-rs-guide.pages.dev/internals/intro\">https://pubgrub-rs-guide.pages.dev/internals/intro</a>\nis a good starting point</span></p></li>\n<li><p><span><span>O</span> benchmark\npubgrub against zero install</span></p></li>\n<li><p><span><span>O</span> paper\nresubmission</span></p>\n<p><span>3 stunts:</span></p>\n<ul>\n<li>stunt 1: cross-ecosystem solving\n<ul>\n<li>debian and alpine MVP</li>\n</ul></li>\n<li>stunt 2: portable lock files\n<ul>\n<li>portability metric</li>\n<li>semantics from formalism</li>\n<li>look at what uv does</li>\n<li>add to table 1</li>\n</ul></li>\n<li>stunt 3: gpu package\n<ul>\n<li>filesystems</li>\n<li>hetrogenous hardware</li>\n<li>intel amd</li>\n</ul></li>\n</ul></li>\n<li><p><span><span>O</span> think about\nuses of this graph other than solving</span></p>\n<ol>\n<li><p><span>security vunrabilities - USENIX\nsecurity</span></p></li>\n<li><p><span>local vector db of internet scale packages\nmanagers</span></p></li>\n</ol></li>\n</ol></li>\n<li><p><span>paper plans</span></p>\n<ol>\n<li><p><span>Babel to SPLASH</span></p></li>\n<li><p><span>Shark to SOSP</span></p></li>\n<li><p><span>Eilean to HotNets <span><span>idea</span></span></span></p></li>\n<li><p><span>Spatial Name System sensor networks to SIGCOMM\n<span><span>idea</span></span></span></p></li>\n<li><p><span>Agentic systems to use Babel to NeurIPS <span><span>idea</span></span></span></p></li>\n</ol></li>\n<li><p><span>meeting</span></p>\n<ol>\n<li><p><span><span>O</span> consider opam\nenv requirement for providing packages once solved</span></p></li>\n<li><p><span><span>O</span> how to\ngenerate depexts for everything</span></p>\n<ul>\n<li>e.g. tries to link to libssl</li>\n<li>run build log through LLM</li>\n<li>or instrument the compiler\n<ul>\n<li>assuming a successful link</li>\n<li>or see where it fails</li>\n<li>cargo and ocaml</li>\n</ul></li>\n</ul></li>\n<li><p><span>evaluation</span></p>\n<ol>\n<li><p><span>ocaml-polars</span></p></li>\n<li><p><span>portable lock files</span></p></li>\n</ol></li>\n<li><p><span>artefact: selected a subset of ecosystems in\nthis eval for you to try</span></p></li>\n<li><p><span>contributions: cross-ecosystem, tooling,\npartial evaluation</span></p></li>\n</ol></li>\n</ol>",
8 "content": "<div>\n <span> Previous: <a href=\"2025-02-25.html\">25 Feb 2025</a> </span>\n <span> Next: <a href=\"2025-03-10.html\">10 Mar 2025</a> </span>\n </div>\n \n \n\n <ol>\n<li><p><span><a href=\"https://github.com/RyanGibb/babel\">Babel</a></span></p>\n<ol>\n<li><p><span>A Debian encoding in PubGrub</span></p>\n<ol>\n<li><p><span><span>X</span> <a href=\"https://www.debian.org/doc/debian-policy/ch-relationships.html#virtual-packages-provides\">provides</a>\nwith virtual packages</span></p>\n<p><span><a href=\"https://github.com/RyanGibb/pubgrub-debian/commit/0e1b76fd89b8773b555905858e3e3ed3796e78a3\">here</a></span></p></li>\n</ol></li>\n<li><p><span><span>X</span> cross\necosystem resolutions between opam and debian</span></p>\n<p><span>Done in <a href=\"https://github.com/RyanGibb/babel\">babel</a>.</span></p>\n<p><span>Some examples follow.</span></p>\n<ol>\n<li><p><span><code>conf-gmp</code></span></p>\n<pre><code>#[test]\nfn test_conf_gmp_variables() -> Result<(), Box<dyn Error>> {\n let root = OpamPackage::Root(vec![\n (\n OpamPackage::Base("conf-gmp".to_string()),\n Range::singleton(OpamVersion("4".to_string())),\n ),\n (\n OpamPackage::Var("os-family".to_string()),\n Range::singleton(OpamVersion("debian".to_string())),\n ),\n (\n OpamPackage::Var("os-distribution".to_string()),\n Range::singleton(OpamVersion("debian".to_string())),\n ),\n ]);\n solve_repo(\n BabelPackage::Opam(root),\n BabelVersion::Opam(OpamVersion("".to_string())),\n "../pubgrub_opam/opam-repository/packages",\n "../pubgrub_debian/repositories/buster/Packages",\n )?;\n Ok(())\n}\n</code></pre>\n<pre><code>Solution Set:\n Debian (libgmp10, 2:6.1.2+dfsg-4+deb10u1)\n Opam os-family = debian\n Debian (libc6, 2.28-10+deb10u1)\n Debian (libgcc1, 1:8.3.0-6)\n Opam os-distribution = debian\n Opam os = linux\n Debian (libstdc++6, 8.3.0-6)\n Debian (libgmpxx4ldbl, 2:6.1.2+dfsg-4+deb10u1)\n Debian (gcc-8-base, 8.3.0-6)\n Opam (conf-gmp, 4)\n Debian (libgmp-dev, 2:6.1.2+dfsg-4+deb10u1)\n\nResolved Dependency Graph:\n (conf-gmp, 4) -> (Opam `os-distribution`, debian), (Opam `os-family`, debian), (Opam `os`, linux), (libgmp-dev, 2:6.1.2+dfsg-4+deb10u1)\n (gcc-8-base, 8.3.0-6)\n (libc6, 2.28-10+deb10u1) -> (libgcc1, 1:8.3.0-6)\n (libgcc1, 1:8.3.0-6) -> (gcc-8-base, 8.3.0-6), (libc6, 2.28-10+deb10u1)\n (libgmp-dev, 2:6.1.2+dfsg-4+deb10u1) -> (libgmp10, 2:6.1.2+dfsg-4+deb10u1), (libgmpxx4ldbl, 2:6.1.2+dfsg-4+deb10u1)\n (libgmp10, 2:6.1.2+dfsg-4+deb10u1) -> (libc6, 2.28-10+deb10u1)\n (libgmpxx4ldbl, 2:6.1.2+dfsg-4+deb10u1) -> (libc6, 2.28-10+deb10u1), (libgcc1, 1:8.3.0-6), (libgmp10, 2:6.1.2+dfsg-4+deb10u1), (libstdc++6, 8.3.0-6)\n (libstdc++6, 8.3.0-6) -> (gcc-8-base, 8.3.0-6), (libc6, 2.28-10+deb10u1), (libgcc1, 1:8.3.0-6)\n</code></pre></li>\n<li><p><span><code>ocluster</code></span></p>\n<pre><code>let root = OpamPackage::Root(vec![\n (\n OpamPackage::Base("ocluster".to_string()),\n Range::singleton(OpamVersion("0.3.0".to_string())),\n ),\n (\n OpamPackage::Var("os-family".to_string()),\n Range::singleton(OpamVersion("debian".to_string())),\n ),\n (\n OpamPackage::Var("os-distribution".to_string()),\n Range::singleton(OpamVersion("debian".to_string())),\n ),\n]);\nsolve_repo(\n BabelPackage::Opam(root),\n BabelVersion::Opam(OpamVersion("".to_string())),\n "../pubgrub_opam/opam-repository/packages",\n "../pubgrub_debian/repositories/buster/Packages",\n)?;\nOk(())\n</code></pre>\n<pre><code>Solution Set:\n Opam (ppx_deriving, 6.0.3)\n Opam (stringext, 1.6.0)\n Debian (libgcc1, 1:8.3.0-6)\n Opam (mirage-crypto-ec, 0.11.3)\n Opam (conduit-lwt-unix, 7.1.0)\n Opam (bigstringaf, 0.10.0)\n Opam (base-bytes, base)\n Opam (angstrom, 0.16.1)\n Opam (cstruct-lwt, 6.2.0)\n Opam (sha, 1.15.4)\n Opam (ppx_here, v0.17.0)\n Debian (gcc-8-base, 8.3.0-6)\n Opam (tls-mirage, 0.17.5)\n Opam (conf-gmp, 4)\n Opam (ocaml-compiler, 5.3)\n Opam os-family = debian\n Opam (ppx_inline_test, v0.17.0)\n Opam (domain-name, 0.4.0)\n Opam (extunix, 0.4.3)\n Opam (eqaf, 0.9)\n Debian (libstdc++6, 8.3.0-6)\n Opam (mirage-crypto-rng, 0.11.3)\n Opam opam-version = 2.1.0\n Opam (ppx_base, v0.17.0)\n Opam (yojson, 2.2.2)\n Opam (ppx_expect, v0.17.2)\n Opam (ocaml-variants, 5.3.1+trunk)\n Opam (duration, 0.2.1)\n Opam (ca-certs, 0.2.3)\n Opam (pbkdf, 1.2.0)\n Opam (zarith, 1.13)\n Opam (prometheus, 1.2)\n Opam (obuilder, 0.6.0)\n Opam (psq, 0.2.1)\n Opam (result, 1.5)\n Opam (hmap, 0.8.1)\n Opam (system-mingw, 1)\n Opam (asetmap, 0.8.1)\n Opam (cstruct, 6.2.0)\n Opam (conf-mingw-w64-gcc-i686, 1)\n Opam (ocplib-endian, 1.2)\n Opam (cohttp-lwt, 6.0.0)\n Opam (ipaddr-sexp, 5.6.0)\n Opam (ocaml-env-mingw32, 1)\n Opam (ocluster, 0.3.0)\n Opam (ocaml, 5.3.1)\n Opam (dune, 3.17.2)\n Opam (base-unix, base)\n Opam (magic-mime, 1.3.1)\n Debian (libgmp-dev, 2:6.1.2+dfsg-4+deb10u1)\n Opam (x509, 0.16.5)\n Opam (fpath, 0.7.3)\n Opam (fmt, 0.9.0)\n Opam (ppxlib_jane, v0.17.2)\n Opam (eio, 1.2)\n Opam (optint, 0.3.0)\n Opam (jst-config, v0.17.0)\n Opam (re, 1.12.0)\n Opam (csexp, 1.5.2)\n Opam (base-bigarray, base)\n Debian (libc6, 2.28-10+deb10u1)\n Opam (sexplib0, v0.17.0)\n Opam post = false\n Opam (stdio, v0.17.0)\n Opam (ppx_hash, v0.17.0)\n Opam (ppx_cold, v0.17.0)\n Opam (thread-table, 1.0.0)\n Opam (uri, 4.4.0)\n Opam (parsexp, v0.17.0)\n Opam (base, v0.17.1)\n Opam (conduit-lwt, 7.1.0)\n Opam (cmdliner, 1.3.0)\n Opam (mirage-crypto, 0.11.3)\n Opam (sexplib, v0.17.0)\n Opam (mtime, 2.1.0)\n Opam (ppx_sexp_conv, v0.17.0)\n Opam (mirage-flow, 5.0.0)\n Opam (lwt-dllist, 1.0.1)\n Opam os-distribution = debian\n Opam (ocaml_intrinsics_kernel, v0.17.1)\n Opam os = linux\n Opam build = false\n Debian (libgmpxx4ldbl, 2:6.1.2+dfsg-4+deb10u1)\n Opam (capnp-rpc-lwt, 2.0)\n Opam (ppx_compare, v0.17.0)\n Opam (base-threads, base)\n Opam (logs, 0.7.0)\n Opam (stdlib-shims, 0.3.0)\n Opam (dune-configurator, 3.17.2)\n Opam (ipaddr, 5.6.0)\n Opam (res, 5.0.2)\n Opam (capnp-rpc-net, 1.2.3)\n Opam (tar-unix, 2.6.0)\n Opam (ppx_assert, v0.17.0)\n Opam (mirage-kv, 6.1.1)\n Debian (libev4, 1:4.25-1)\n Opam with-dev-setup = false\n Opam (lwt, 5.9.0)\n Opam (ppx_globalize, v0.17.0)\n Opam (mirage-crypto-pk, 0.11.3)\n Opam (rresult, 0.7.0)\n Opam (conf-libev, 4-12)\n Opam (capnp, 3.6.0)\n Opam (time_now, v0.17.0)\n Opam (domain-local-await, 1.0.1)\n Opam (stdint, 0.7.2)\n Debian (libgmp10, 2:6.1.2+dfsg-4+deb10u1)\n Opam (digestif, 1.2.0)\n Opam with-test = false\n Opam (lwt_eio, 0.5.1)\n Opam (sqlite3, 5.3.0)\n Opam (asn1-combinators, 0.2.6)\n Opam with-doc = false\n Opam (dune-build-info, 3.17.2)\n Opam (num, 1.5-1)\n Opam (prometheus-app, 1.2)\n Opam dev = false\n Opam (capnp-rpc-unix, 1.2.4)\n Opam (ppx_derivers, 1.2.1)\n Opam (gmap, 0.3.0)\n Opam (astring, 0.8.5)\n Opam (bos, 0.2.1)\n Opam (hkdf, 1.0.4)\n Opam (mirage-crypto-rng-lwt, 1.2.0)\n Opam (mirage-clock, 4.2.0)\n Opam (ocaml-compiler-libs, v0.17.0)\n Opam (ptime, 1.2.0)\n Opam arch = x86_64\n Opam (ocaml-config, 3)\n Opam (jane-street-headers, v0.17.0)\n Opam (ppxlib, 0.35.0)\n Opam (seq, base)\n Opam version = false\n Opam (cohttp-lwt-unix, 6.0.0)\n Opam (base64, 3.5.1)\n Opam (ppx_enumerate, v0.17.0)\n Opam (ppx_optcomp, v0.17.0)\n Opam (ocamlfind, 1.9.8)\n Opam (tls, 0.17.5)\n Debian (libev-dev, 1:4.25-1)\n</code></pre></li>\n</ol></li>\n<li><p><span><span>X</span> An Alpine\nencoding in PubGrub</span></p>\n<pre><code>$ apk dot openssh-server\ndigraph "apkindex" {\n rankdir=LR;\n node [shape=box];\n "libcrypto3-3.3.3-r0" -> "musl-1.2.5-r1"[arrowhead=inv,label="so:libc.musl-x86_64.so.1",];\n "openssh-keygen-9.7_p1-r5" -> "libcrypto3-3.3.3-r0"[];\n "openssh-keygen-9.7_p1-r5" -> "musl-1.2.5-r1"[arrowhead=inv,label="so:libc.musl-x86_64.so.1",];\n "openssh-keygen-9.7_p1-r5" -> "libcrypto3-3.3.3-r0"[arrowhead=inv,label="so:libcrypto.so.3",];\n "openssh-server-9.7_p1-r5" -> "openssh-keygen-9.7_p1-r5"[];\n "openssh-server-9.7_p1-r5" -> "openssh-server-common-9.7_p1-r5"[];\n "openssh-server-9.7_p1-r5" -> "musl-1.2.5-r1"[arrowhead=inv,label="so:libc.musl-x86_64.so.1",];\n "openssh-server-9.7_p1-r5" -> "libcrypto3-3.3.3-r0"[arrowhead=inv,label="so:libcrypto.so.3",];\n "zlib-1.3.1-r1" -> "musl-1.2.5-r1"[arrowhead=inv,label="so:libc.musl-x86_64.so.1",];\n "openssh-server-9.7_p1-r5" -> "zlib-1.3.1-r1"[arrowhead=inv,label="so:libz.so.1",];\n}\n</code></pre>\n<pre><code>(/bin/sh, yash-binsh) -> (yash-binsh, 2.57-r0)\n(libcrypto3, 3.3.3-r0) -> (so:libc.musl-x86_64.so.1, musl)\n(libncursesw, 6.5_p20241006-r3) -> (ncurses-terminfo-base, 6.5_p20241006-r3), (so:libc.musl-x86_64.so.1, musl)\n(musl, 1.2.5-r9)\n(ncurses-terminfo-base, 6.5_p20241006-r3)\n(openssh-keygen, 9.9_p2-r0) -> (libcrypto3, 3.3.3-r0), (so:libc.musl-x86_64.so.1, musl), (so:libcrypto.so.3, libcrypto3)\n(openssh-server, 9.9_p2-r0) -> (/bin/sh, yash-binsh), (openssh-keygen, 9.9_p2-r0), (openssh-server-common, 9.9_p2-r0), (so:libc.musl-x86_64.so.1, musl), (so:libcrypto.so.3, libcrypto3), (so:libz.so.1, zlib)\n(openssh-server-common, 9.9_p2-r0)\n(so:libc.musl-x86_64.so.1, musl) -> (musl, 1.2.5-r9)\n(so:libcrypto.so.3, libcrypto3) -> (libcrypto3, 3.3.3-r0)\n(so:libncursesw.so.6, libncursesw) -> (libncursesw, 6.5_p20241006-r3)\n(so:libz.so.1, zlib) -> (zlib, 1.3.1-r2)\n(yash, 2.57-r0) -> (/bin/sh, yash-binsh), (so:libc.musl-x86_64.so.1, musl), (so:libncursesw.so.6, libncursesw)\n(yash-binsh, 2.57-r0) -> (yash, 2.57-r0)\n(zlib, 1.3.1-r2) -> (so:libc.musl-x86_64.so.1, musl)\n</code></pre>\n<p><span>We could similarly prune out virtual\npackages.</span></p></li>\n<li><p><span><span>O</span> read up on\nanswer set programming</span></p>\n<p><span><a href=\"https://pubgrub-rs-guide.pages.dev/internals/intro\">https://pubgrub-rs-guide.pages.dev/internals/intro</a>\nis a good starting point</span></p></li>\n<li><p><span><span>O</span> benchmark\npubgrub against zero install</span></p></li>\n<li><p><span><span>O</span> paper\nresubmission</span></p>\n<p><span>3 stunts:</span></p>\n<ul>\n<li>stunt 1: cross-ecosystem solving\n<ul>\n<li>debian and alpine MVP</li>\n</ul></li>\n<li>stunt 2: portable lock files\n<ul>\n<li>portability metric</li>\n<li>semantics from formalism</li>\n<li>look at what uv does</li>\n<li>add to table 1</li>\n</ul></li>\n<li>stunt 3: gpu package\n<ul>\n<li>filesystems</li>\n<li>hetrogenous hardware</li>\n<li>intel amd</li>\n</ul></li>\n</ul></li>\n<li><p><span><span>O</span> think about\nuses of this graph other than solving</span></p>\n<ol>\n<li><p><span>security vunrabilities - USENIX\nsecurity</span></p></li>\n<li><p><span>local vector db of internet scale packages\nmanagers</span></p></li>\n</ol></li>\n</ol></li>\n<li><p><span>paper plans</span></p>\n<ol>\n<li><p><span>Babel to SPLASH</span></p></li>\n<li><p><span>Shark to SOSP</span></p></li>\n<li><p><span>Eilean to HotNets <span><span>idea</span></span></span></p></li>\n<li><p><span>Spatial Name System sensor networks to SIGCOMM\n<span><span>idea</span></span></span></p></li>\n<li><p><span>Agentic systems to use Babel to NeurIPS <span><span>idea</span></span></span></p></li>\n</ol></li>\n<li><p><span>meeting</span></p>\n<ol>\n<li><p><span><span>O</span> consider opam\nenv requirement for providing packages once solved</span></p></li>\n<li><p><span><span>O</span> how to\ngenerate depexts for everything</span></p>\n<ul>\n<li>e.g. tries to link to libssl</li>\n<li>run build log through LLM</li>\n<li>or instrument the compiler\n<ul>\n<li>assuming a successful link</li>\n<li>or see where it fails</li>\n<li>cargo and ocaml</li>\n</ul></li>\n</ul></li>\n<li><p><span>evaluation</span></p>\n<ol>\n<li><p><span>ocaml-polars</span></p></li>\n<li><p><span>portable lock files</span></p></li>\n</ol></li>\n<li><p><span>artefact: selected a subset of ecosystems in\nthis eval for you to try</span></p></li>\n<li><p><span>contributions: cross-ecosystem, tooling,\npartial evaluation</span></p></li>\n</ol></li>\n</ol>",
9 "content_type": "html",
10 "categories": [],
11 "source": "https://ryan.freumh.org/atom.xml"
12}