Thicket data repository for the EEG
at main 29 kB view raw
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() -&gt; Result&lt;(), Box&lt;dyn Error&gt;&gt; {\n let root = OpamPackage::Root(vec![\n (\n OpamPackage::Base(&quot;conf-gmp&quot;.to_string()),\n Range::singleton(OpamVersion(&quot;4&quot;.to_string())),\n ),\n (\n OpamPackage::Var(&quot;os-family&quot;.to_string()),\n Range::singleton(OpamVersion(&quot;debian&quot;.to_string())),\n ),\n (\n OpamPackage::Var(&quot;os-distribution&quot;.to_string()),\n Range::singleton(OpamVersion(&quot;debian&quot;.to_string())),\n ),\n ]);\n solve_repo(\n BabelPackage::Opam(root),\n BabelVersion::Opam(OpamVersion(&quot;&quot;.to_string())),\n &quot;../pubgrub_opam/opam-repository/packages&quot;,\n &quot;../pubgrub_debian/repositories/buster/Packages&quot;,\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) -&gt; (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) -&gt; (libgcc1, 1:8.3.0-6)\n (libgcc1, 1:8.3.0-6) -&gt; (gcc-8-base, 8.3.0-6), (libc6, 2.28-10+deb10u1)\n (libgmp-dev, 2:6.1.2+dfsg-4+deb10u1) -&gt; (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) -&gt; (libc6, 2.28-10+deb10u1)\n (libgmpxx4ldbl, 2:6.1.2+dfsg-4+deb10u1) -&gt; (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) -&gt; (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(&quot;ocluster&quot;.to_string()),\n Range::singleton(OpamVersion(&quot;0.3.0&quot;.to_string())),\n ),\n (\n OpamPackage::Var(&quot;os-family&quot;.to_string()),\n Range::singleton(OpamVersion(&quot;debian&quot;.to_string())),\n ),\n (\n OpamPackage::Var(&quot;os-distribution&quot;.to_string()),\n Range::singleton(OpamVersion(&quot;debian&quot;.to_string())),\n ),\n]);\nsolve_repo(\n BabelPackage::Opam(root),\n BabelVersion::Opam(OpamVersion(&quot;&quot;.to_string())),\n &quot;../pubgrub_opam/opam-repository/packages&quot;,\n &quot;../pubgrub_debian/repositories/buster/Packages&quot;,\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 &quot;apkindex&quot; {\n rankdir=LR;\n node [shape=box];\n &quot;libcrypto3-3.3.3-r0&quot; -&gt; &quot;musl-1.2.5-r1&quot;[arrowhead=inv,label=&quot;so:libc.musl-x86_64.so.1&quot;,];\n &quot;openssh-keygen-9.7_p1-r5&quot; -&gt; &quot;libcrypto3-3.3.3-r0&quot;[];\n &quot;openssh-keygen-9.7_p1-r5&quot; -&gt; &quot;musl-1.2.5-r1&quot;[arrowhead=inv,label=&quot;so:libc.musl-x86_64.so.1&quot;,];\n &quot;openssh-keygen-9.7_p1-r5&quot; -&gt; &quot;libcrypto3-3.3.3-r0&quot;[arrowhead=inv,label=&quot;so:libcrypto.so.3&quot;,];\n &quot;openssh-server-9.7_p1-r5&quot; -&gt; &quot;openssh-keygen-9.7_p1-r5&quot;[];\n &quot;openssh-server-9.7_p1-r5&quot; -&gt; &quot;openssh-server-common-9.7_p1-r5&quot;[];\n &quot;openssh-server-9.7_p1-r5&quot; -&gt; &quot;musl-1.2.5-r1&quot;[arrowhead=inv,label=&quot;so:libc.musl-x86_64.so.1&quot;,];\n &quot;openssh-server-9.7_p1-r5&quot; -&gt; &quot;libcrypto3-3.3.3-r0&quot;[arrowhead=inv,label=&quot;so:libcrypto.so.3&quot;,];\n &quot;zlib-1.3.1-r1&quot; -&gt; &quot;musl-1.2.5-r1&quot;[arrowhead=inv,label=&quot;so:libc.musl-x86_64.so.1&quot;,];\n &quot;openssh-server-9.7_p1-r5&quot; -&gt; &quot;zlib-1.3.1-r1&quot;[arrowhead=inv,label=&quot;so:libz.so.1&quot;,];\n}\n</code></pre>\n<pre><code>(/bin/sh, yash-binsh) -&gt; (yash-binsh, 2.57-r0)\n(libcrypto3, 3.3.3-r0) -&gt; (so:libc.musl-x86_64.so.1, musl)\n(libncursesw, 6.5_p20241006-r3) -&gt; (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) -&gt; (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) -&gt; (/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) -&gt; (musl, 1.2.5-r9)\n(so:libcrypto.so.3, libcrypto3) -&gt; (libcrypto3, 3.3.3-r0)\n(so:libncursesw.so.6, libncursesw) -&gt; (libncursesw, 6.5_p20241006-r3)\n(so:libz.so.1, zlib) -&gt; (zlib, 1.3.1-r2)\n(yash, 2.57-r0) -&gt; (/bin/sh, yash-binsh), (so:libc.musl-x86_64.so.1, musl), (so:libncursesw.so.6, libncursesw)\n(yash-binsh, 2.57-r0) -&gt; (yash, 2.57-r0)\n(zlib, 1.3.1-r2) -&gt; (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() -&gt; Result&lt;(), Box&lt;dyn Error&gt;&gt; {\n let root = OpamPackage::Root(vec![\n (\n OpamPackage::Base(&quot;conf-gmp&quot;.to_string()),\n Range::singleton(OpamVersion(&quot;4&quot;.to_string())),\n ),\n (\n OpamPackage::Var(&quot;os-family&quot;.to_string()),\n Range::singleton(OpamVersion(&quot;debian&quot;.to_string())),\n ),\n (\n OpamPackage::Var(&quot;os-distribution&quot;.to_string()),\n Range::singleton(OpamVersion(&quot;debian&quot;.to_string())),\n ),\n ]);\n solve_repo(\n BabelPackage::Opam(root),\n BabelVersion::Opam(OpamVersion(&quot;&quot;.to_string())),\n &quot;../pubgrub_opam/opam-repository/packages&quot;,\n &quot;../pubgrub_debian/repositories/buster/Packages&quot;,\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) -&gt; (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) -&gt; (libgcc1, 1:8.3.0-6)\n (libgcc1, 1:8.3.0-6) -&gt; (gcc-8-base, 8.3.0-6), (libc6, 2.28-10+deb10u1)\n (libgmp-dev, 2:6.1.2+dfsg-4+deb10u1) -&gt; (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) -&gt; (libc6, 2.28-10+deb10u1)\n (libgmpxx4ldbl, 2:6.1.2+dfsg-4+deb10u1) -&gt; (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) -&gt; (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(&quot;ocluster&quot;.to_string()),\n Range::singleton(OpamVersion(&quot;0.3.0&quot;.to_string())),\n ),\n (\n OpamPackage::Var(&quot;os-family&quot;.to_string()),\n Range::singleton(OpamVersion(&quot;debian&quot;.to_string())),\n ),\n (\n OpamPackage::Var(&quot;os-distribution&quot;.to_string()),\n Range::singleton(OpamVersion(&quot;debian&quot;.to_string())),\n ),\n]);\nsolve_repo(\n BabelPackage::Opam(root),\n BabelVersion::Opam(OpamVersion(&quot;&quot;.to_string())),\n &quot;../pubgrub_opam/opam-repository/packages&quot;,\n &quot;../pubgrub_debian/repositories/buster/Packages&quot;,\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 &quot;apkindex&quot; {\n rankdir=LR;\n node [shape=box];\n &quot;libcrypto3-3.3.3-r0&quot; -&gt; &quot;musl-1.2.5-r1&quot;[arrowhead=inv,label=&quot;so:libc.musl-x86_64.so.1&quot;,];\n &quot;openssh-keygen-9.7_p1-r5&quot; -&gt; &quot;libcrypto3-3.3.3-r0&quot;[];\n &quot;openssh-keygen-9.7_p1-r5&quot; -&gt; &quot;musl-1.2.5-r1&quot;[arrowhead=inv,label=&quot;so:libc.musl-x86_64.so.1&quot;,];\n &quot;openssh-keygen-9.7_p1-r5&quot; -&gt; &quot;libcrypto3-3.3.3-r0&quot;[arrowhead=inv,label=&quot;so:libcrypto.so.3&quot;,];\n &quot;openssh-server-9.7_p1-r5&quot; -&gt; &quot;openssh-keygen-9.7_p1-r5&quot;[];\n &quot;openssh-server-9.7_p1-r5&quot; -&gt; &quot;openssh-server-common-9.7_p1-r5&quot;[];\n &quot;openssh-server-9.7_p1-r5&quot; -&gt; &quot;musl-1.2.5-r1&quot;[arrowhead=inv,label=&quot;so:libc.musl-x86_64.so.1&quot;,];\n &quot;openssh-server-9.7_p1-r5&quot; -&gt; &quot;libcrypto3-3.3.3-r0&quot;[arrowhead=inv,label=&quot;so:libcrypto.so.3&quot;,];\n &quot;zlib-1.3.1-r1&quot; -&gt; &quot;musl-1.2.5-r1&quot;[arrowhead=inv,label=&quot;so:libc.musl-x86_64.so.1&quot;,];\n &quot;openssh-server-9.7_p1-r5&quot; -&gt; &quot;zlib-1.3.1-r1&quot;[arrowhead=inv,label=&quot;so:libz.so.1&quot;,];\n}\n</code></pre>\n<pre><code>(/bin/sh, yash-binsh) -&gt; (yash-binsh, 2.57-r0)\n(libcrypto3, 3.3.3-r0) -&gt; (so:libc.musl-x86_64.so.1, musl)\n(libncursesw, 6.5_p20241006-r3) -&gt; (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) -&gt; (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) -&gt; (/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) -&gt; (musl, 1.2.5-r9)\n(so:libcrypto.so.3, libcrypto3) -&gt; (libcrypto3, 3.3.3-r0)\n(so:libncursesw.so.6, libncursesw) -&gt; (libncursesw, 6.5_p20241006-r3)\n(so:libz.so.1, zlib) -&gt; (zlib, 1.3.1-r2)\n(yash, 2.57-r0) -&gt; (/bin/sh, yash-binsh), (so:libc.musl-x86_64.so.1, musl), (so:libncursesw.so.6, libncursesw)\n(yash-binsh, 2.57-r0) -&gt; (yash, 2.57-r0)\n(zlib, 1.3.1-r2) -&gt; (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}