Thicket data repository for the EEG
at main 41 kB view raw
1{ 2 "id": "https://ryan.freumh.org/2025-01-13.html", 3 "title": "13 Jan 2025", 4 "link": "https://ryan.freumh.org/2025-01-13.html", 5 "updated": "2025-01-13T00:00:00", 6 "published": "2025-01-13T00:00:00", 7 "summary": "<div>\n <span> Previous: <a href=\"2025-01-06.html\"> 6 Jan 2025</a> </span>\n <span> Next: <a href=\"2025-01-20.html\">20 Jan 2025</a> </span>\n </div>\n \n \n\n <ol>\n<li><p><span>babel</span></p>\n<ol>\n<li><p><span><span>O</span> opam-repo maps\n[2/3]</span></p>\n<ol>\n<li><p><span><span>X</span> <a href=\"https://github.com/mtelvers/pacman2opam/\">https://github.com/mtelvers/pacman2opam/</a></span></p>\n<ol>\n<li><p><span>it seems like firefox doesn’t\ninstall</span></p>\n<pre><code>_build/default/bin/main.exe --repo /dev/shm/packages pacman-firefox\n[ERROR] No solution\nCan't find all required versions.\nSelected: pacman-acl.2.3.2-1\n pacman-adobe-source-code-pro-fonts.2.042u+1.062i+1.026vf-2\n pacman-adwaita-cursors.47.0-1 pacman-adwaita-icon-theme.47.0-1\n pacman-adwaita-icon-theme-legacy.46.2-3 pacman-alsa-lib.1.2.13-1\n pacman-alsa-topology-conf.1.2.5.1-4 pacman-alsa-ucm-conf.1.2.13-2\n pacman-aom.3.11.0-1 pacman-at-spi2-core.2.54.1-1\n pacman-attr.2.5.2-1 pacman-audit.4.0.2-3\n pacman-avahi.1_0.8+r194+g3f79789-3 pacman-bash.5.2.037-1\n pacman-brotli.1.1.0-3 pacman-bzip2.1.0.8-6\n pacman-ca-certificates.20240618-1\n pacman-ca-certificates-mozilla.3.107-1\n pacman-ca-certificates-utils.20240618-1 pacman-cairo.1.18.2-2\n pacman-cantarell-fonts.1_0.303.1-2 pacman-coreutils.9.5-2\n pacman-cryptsetup.2.7.5-2 pacman-curl.8.11.1-3 pacman-dav1d.1.5.0-1\n pacman-dbus.1.16.0-1 pacman-dbus-broker.36-4\n pacman-dbus-broker-units.36-4 pacman-dbus-units.36-4\n pacman-dconf.0.40.0-3 pacman-default-cursors.3-1\n pacman-desktop-file-utils.0.28-1 pacman-device-mapper.2.03.29-1\n pacman-duktape.2.7.0-7 pacman-e2fsprogs.1.47.2-1\n pacman-expat.2.6.4-1 pacman-ffmpeg.2_7.1-5 pacman-fftw.3.3.10-7\n pacman-file.5.46-3 pacman-filesystem.2024.11.21-1\n pacman-findutils.4.10.0-2 pacman-firefox.134.0.1-1\n pacman-flac.1.4.3-2 pacman-fontconfig.2_2.15.0-2\n pacman-freetype2.2.13.3-1 pacman-fribidi.1.0.16-1\n pacman-gcc-libs.14.2.1+r134+gab884fffe3fc-2 pacman-gdbm.1.24-1\n pacman-gdk-pixbuf2.2.42.12-2 pacman-giflib.5.2.2-1\n pacman-glib-networking.1_2.80.1-1 pacman-glib2.2.82.4-2\n pacman-glibc.2.40+r16+gaa533d58ff-2 pacman-glslang.15.0.0-2\n pacman-gmp.6.3.0-2 pacman-gnutls.3.8.8-1 pacman-gperftools.2.16-1\n pacman-graphite.1_1.3.14-4 pacman-grep.3.11-1\n pacman-gsettings-desktop-schemas.47.1-1\n pacman-gsettings-system-schemas.47.1-1 pacman-gsm.1.0.22-2\n pacman-gtk-update-icon-cache.1_4.16.12-1 pacman-gtk3.1_3.24.43-4\n pacman-gzip.1.13-4 pacman-harfbuzz.10.2.0-1\n pacman-hicolor-icon-theme.0.18-1 pacman-hidapi.0.14.0-3\n pacman-highway.1.2.0-1 pacman-hwdata.0.391-1\n pacman-iana-etc.20241206-1 pacman-icu.75.1-2\n pacman-iso-codes.4.17.0-1 pacman-jack.1 pacman-jbigkit.2.1-8\n pacman-json-c.0.18-1 pacman-json-glib.1.10.6-1 pacman-kbd.2.7.1-1\n pacman-keyutils.1.6.3-3 pacman-kmod.33-3 pacman-krb5.1.21.3-1\n pacman-l-smash.2.14.5-4 pacman-lame.3.100-5 pacman-lcms2.2.16-1\n pacman-libacl_so.1-64 pacman-libasound_so.2-64\n pacman-libass.0.17.3-1 pacman-libass_so.9-64\n pacman-libasyncns.1_0.8+r3+g68cd5af-3 pacman-libattr_so.1-64\n pacman-libaudit_so.1-64 pacman-libavc1394.0.5.4-6\n pacman-libblkid_so.1-64 pacman-libbluray.1.3.4-2\n pacman-libbluray_so.2-64 pacman-libbpf.1.5.0-1\n pacman-libbrotlidec_so.1-64 pacman-libbs2b.3.1.0-9\n pacman-libbs2b_so.0-64 pacman-libbz2_so.1.0-64 pacman-libcap.2.71-1\n pacman-libcap-ng.0.8.5-3 pacman-libcap-ng_so.0-64\n pacman-libcap_so.2-64 pacman-libcloudproviders.0.3.6-1\n pacman-libcolord.1.4.7-2 pacman-libcom_err_so.2-64\n pacman-libcrypt_so.2-64 pacman-libcrypto_so.3-64\n pacman-libcryptsetup_so.12-64 pacman-libcups.2_2.4.11-2\n pacman-libcurl_so.4-64 pacman-libdaemon.0.14-6\n pacman-libdatrie.0.2.13-4 pacman-libdav1d_so.7-64\n pacman-libdbus-1_so.3-64 pacman-libdevmapper_so.1.02-64\n pacman-libdovi.3.3.1-1 pacman-libdovi_so.3-64\n pacman-libdrm.2.4.124-1 pacman-libdvdnav.6.1.1-2\n pacman-libdvdread.6.1.3-2 pacman-libedit.20240808_3.1-1\n pacman-libegl.1 pacman-libelf.0.192-2 pacman-libepoxy.1.5.10-3\n pacman-libevent.2.1.12-4 pacman-libexpat_so.1-64\n pacman-libFLAC_so.12-64 pacman-libffi.3.4.6-1 pacman-libffi_so.8-64\n pacman-libfftw3_so.3-64 pacman-libfreetype_so.6-64\n pacman-libgcrypt.1.11.0-2 pacman-libgdbm_so.6-64\n pacman-libgio-2_0_so.0-64 pacman-libgl.1 pacman-libglib-2_0_so.0-64\n pacman-libglvnd.1.7.0-1 pacman-libgobject-2_0_so.0-64\n pacman-libgpg-error.1.51-1 pacman-libgraphite2_so.3-64\n pacman-libgssapi_krb5_so.2-64 pacman-libharfbuzz_so.0-64\n pacman-libice.1.1.2-1 pacman-libidn2.2.3.7-1 pacman-libidn2_so.0-64\n pacman-libiec61883.1.2.0-8 pacman-libjack_so.0-64\n pacman-libjpeg-turbo.3.1.0-1 pacman-libjpeg_so.8-64\n pacman-libjson-c_so.5-64 pacman-libjxl.0.11.1-1\n pacman-libjxl_so.0.11-64 pacman-libkeyutils_so.1-64\n pacman-libkrb5_so.3-64 pacman-liblcms2_so.2-64\n pacman-libldap.2.6.9-1 pacman-liblsmash_so.2-64\n pacman-liblzma_so.5-64 pacman-libmagic_so.1-64\n pacman-libmodplug.0.8.9.0-6 pacman-libmount_so.1-64\n pacman-libmp3lame_so.0-64 pacman-libmpg123_so.0-64\n pacman-libncursesw_so.6-64 pacman-libnghttp2.1.64.0-1\n pacman-libnghttp2_so.14-64 pacman-libnghttp3.1.7.0-1\n pacman-libnghttp3_so.9-64 pacman-libnsl.2.0.1-1\n pacman-libogg.1.3.5-2 pacman-libogg_so.0-64\n pacman-libopenmpt.0.7.12-1 pacman-libopenmpt_so.0-64\n pacman-libopus_so.0-64 pacman-libp11-kit.0.25.5-1\n pacman-libp11-kit_so.0-64 pacman-libpam_misc_so.0-64\n pacman-libpam_so.0-64 pacman-libpciaccess.0.18.1-2\n pacman-libpgm.5.3.128-3 pacman-libplacebo.7.349.0-3\n pacman-libplacebo_so.349-64 pacman-libpng.1.6.45-1\n pacman-libproxy.0.5.9-1 pacman-libpsl.0.21.5-2\n pacman-libpsl_so.5-64 pacman-libpulse.17.0+r43+g3e2bb8a1e-1\n pacman-librav1e_so.0.7-64 pacman-libraw1394.2.1.2-4\n pacman-libreadline_so.8-64 pacman-librsvg.2_2.59.2-1\n pacman-librsvg-2_so.2-64 pacman-librubberband_so.3-64\n pacman-libsamplerate.0.2.2-3 pacman-libsamplerate_so.0-64\n pacman-libsasl.2.1.28-5 pacman-libseccomp.2.5.5-4\n pacman-libseccomp_so.2-64 pacman-libshaderc_shared_so.1-64\n pacman-libsm.1.2.5-1 pacman-libsndfile.1.2.2-2\n pacman-libsndfile_so.1-64 pacman-libsodium.1.0.20-1\n pacman-libsoup3.3.6.3-1 pacman-libsoxr.0.1.3-4\n pacman-libspeexdsp_so.1-64 pacman-libss_so.2-64\n pacman-libssh.0.11.1-1 pacman-libssh2.1.11.1-1\n pacman-libssh2_so.1-64 pacman-libssl_so.3-64\n pacman-libstemmer.2.2.0-2 pacman-libsysprof-capture.47.2-1\n pacman-libsystemd_so.0-64 pacman-libtasn1.4.19.0-2\n pacman-libthai.0.1.29-3 pacman-libtheora.1.1.1-6\n pacman-libtiff.4.7.0-1 pacman-libtirpc.1.3.6-1\n pacman-libudev_so.1-64 pacman-libunibreak.6.1-1\n pacman-libunistring.1.3-1 pacman-libunistring_so.5-64\n pacman-libunwind.1.8.1-3 pacman-libusb.1.0.27-1\n pacman-libuuid_so.1-64 pacman-libva.2.22.0-1\n pacman-libva-drm_so.2-64 pacman-libva-x11_so.2-64\n pacman-libva_so.2-64 pacman-libvdpau.1.5-3 pacman-libverto.0.3.2-5\n pacman-libverto-module-base.1 pacman-libverto_so.1-64\n pacman-libvidstab_so.1.2-64 pacman-libvorbis.1.3.7-3\n pacman-libvorbis_so.0-64 pacman-libvorbisenc_so.2-64\n pacman-libvpx.1.15.0-1 pacman-libvpx_so.9-64\n pacman-libvulkan_so.1-64 pacman-libwebp.1.5.0-1\n pacman-libx11.1.8.10-1 pacman-libx264_so.164-64\n pacman-libx265_so.212-64 pacman-libxau.1.0.12-1\n pacman-libxcb.1.17.0-1 pacman-libxcomposite.0.4.6-2\n pacman-libxcrypt.4.4.37-1 pacman-libxcursor.1.2.3-1\n pacman-libxdamage.1.1.6-2 pacman-libxdmcp.1.1.5-1\n pacman-libxext.1.3.6-1 pacman-libxfixes.6.0.1-2\n pacman-libxft.2.3.8-2 pacman-libxi.1.8.2-1\n pacman-libxinerama.1.1.5-2 pacman-libxkbcommon.1.7.0-2\n pacman-libxml2.2.13.5-2 pacman-libxrandr.1.5.4-1\n pacman-libxrender.0.9.12-1 pacman-libxshmfence.1.3.3-1\n pacman-libxss.1.2.4-2 pacman-libxt.1.3.1-1 pacman-libxtst.1.2.5-1\n pacman-libxv.1.0.13-1 pacman-libxvidcore_so.4-64\n pacman-libxxf86vm.1.1.6-1 pacman-libz_so.1-64\n pacman-libzimg_so.2-64 pacman-libzmq_so.5-64 pacman-libzstd_so.1-64\n pacman-linux-api-headers.6.10-1 pacman-llvm-libs.19.1.6-3\n pacman-lm_sensors.1_3.6.0.r41.g31d1f125-3 pacman-lmdb.0.9.33-1\n pacman-lz4.1_1.10.0-2 pacman-lzo.2.10-5 pacman-mime-types.1\n pacman-mpdecimal.4.0.0-2 pacman-mpg123.1.32.10-1\n pacman-ncurses.6.5-3 pacman-nettle.3.10.1-1 pacman-nspr.4.36-1\n pacman-nss.3.107-1 pacman-ocl-icd.2.3.2-2 pacman-onevpl.1\n pacman-opencore-amr.0.1.6-2 pacman-opengl-driver.1\n pacman-openjpeg2.2.5.3-1 pacman-openssl.3.4.0-1 pacman-opus.1.5.2-1\n pacman-p11-kit.0.25.5-1 pacman-pam.1.7.0-1\n pacman-pambase.20230918-2 pacman-pango.1_1.54.0-1\n pacman-pcre2.10.44-1 pacman-pixman.0.44.2-1 pacman-popt.1.19-2\n pacman-portaudio.1_19.7.0-3 pacman-python.3.13.1-1\n pacman-rav1e.0.7.1-1 pacman-readline.8.2.013-1\n pacman-rubberband.4.0.0-1 pacman-sdl2.2.30.11-1 pacman-sed.4.9-3\n pacman-sh.1 pacman-shaderc.2024.3-2 pacman-shadow.4.16.0-1\n pacman-shared-mime-info.2.4-1 pacman-snappy.1.2.1-2\n pacman-speex.1.2.1-2 pacman-speexdsp.1.2.1-2\n pacman-spirv-tools.2024.4.rc1-1 pacman-sqlite.3.47.2-1\n pacman-srt.1.5.4-1 pacman-svt-av1.2.3.0-1 pacman-systemd.257.2-2\n pacman-systemd-libs.257.2-2 pacman-tinysparql.3.8.2-2\n pacman-ttf-font.1 pacman-ttf-input.20220502-6 pacman-tzdata.2024b-2\n pacman-util-linux.2.40.4-1 pacman-util-linux-libs.2.40.4-1\n pacman-v4l-utils.1.28.1-2 pacman-vapoursynth.R70-2\n pacman-vid_stab.1.1.1-2 pacman-vmaf.3.0.0-1\n pacman-vulkan-icd-loader.1.4.303-1 pacman-wayland.1.23.1-1\n pacman-x264.3_0.164.r3108.31e19f9-2 pacman-x265.4.0-1\n pacman-xcb-proto.1.17.0-3 pacman-xkeyboard-config.2.43-1\n pacman-xorg-xprop.1.2.8-1 pacman-xorgproto.2024.1-2\n pacman-xvidcore.1.3.7-3 pacman-xxhash.0.8.3-1 pacman-xz.5.6.3-1\n pacman-zeromq.4.3.5-2 pacman-zimg.3.0.5-1 pacman-zlib.1_1.3.1-2\n pacman-zstd.1.5.6-1 pacman-firefox pacman-firefox\n- pacman-libvpl -&gt; (problem)\n Rejected candidates:\n pacman-libvpl.2.14.0-1: Requires pacman-onevpl conflict with all versions\n- pacman-mailcap -&gt; (problem)\n Rejected candidates:\n pacman-mailcap.2.1.54-2: Requires pacman-mime-types conflict with all versions\n- pacman-mesa -&gt; pacman-mesa.1_24.3.3-2\n pacman-opengl-driver 1 requires = 1_24.3.3-2\n- pacman-pipewire-jack -&gt; (problem)\n Rejected candidates:\n pacman-pipewire-jack.1_1.2.7-1: Requires pacman-jack conflict with all versions\n</code></pre></li>\n</ol></li>\n<li><p><span><span>X</span> <a href=\"https://github.com/jonludlam/brew-opam-repository/\">https://github.com/jonludlam/brew-opam-repository/</a></span></p></li>\n<li><p><span><span>O</span> <a href=\"https://github.com/mtelvers/rpm2opam/\">https://github.com/mtelvers/rpm2opam/</a></span></p></li>\n</ol></li>\n<li><p><span>PubGrub</span></p>\n<ol>\n<li><p><span><span>X</span> <a href=\"https://www.youtube.com/watch?v=oyLBGkS5ICk\">Spec-ulation</a></span></p>\n<p><span>what is a version?</span></p></li>\n<li><p><span>state of the project</span></p>\n<p><span>hasn’t had a release in 4 years, but the\nmaintainer’s employer is kind of supporting them and uv using it <a href=\"https://github.com/pubgrub-rs/pubgrub/issues/128#issuecomment-1566377638\">https://github.com/pubgrub-rs/pubgrub/issues/128#issuecomment-1566377638</a></span></p></li>\n<li><p><span>exotic functionality</span></p>\n<p><span><a href=\"https://github.com/pubgrub-rs/pubgrub/issues/39\">https://github.com/pubgrub-rs/pubgrub/issues/39</a></span></p>\n<ol>\n<li><p><span><span>X</span> <a href=\"https://pubgrub-rs-guide.pages.dev/limitations/optional_deps\">optional\ndependencies</a></span></p>\n<ul>\n<li><a href=\"https://github.com/pubgrub-rs/advanced_dependency_providers/blob/main/optional-deps/src/optional_deps.rs\">https://github.com/pubgrub-rs/advanced_dependency_providers/blob/main/optional-deps/src/optional_deps.rs</a></li>\n<li><a href=\"https://rust-lang.zulipchat.com/#narrow/channel/260232-t-cargo.2FPubGrub/topic/feature.20resolution\">https://rust-lang.zulipchat.com/#narrow/channel/260232-t-cargo.2FPubGrub/topic/feature.20resolution</a></li>\n<li><a href=\"https://rust-lang.zulipchat.com/#narrow/channel/260232-t-cargo.2FPubGrub/topic/So.20what.20to.20do.20next.3F/near/212812259\">https://rust-lang.zulipchat.com/#narrow/channel/260232-t-cargo.2FPubGrub/topic/So.20what.20to.20do.20next.3F/near/212812259</a></li>\n</ul>\n<ol>\n<li><p><span><span>O</span> optional\ndependencies are the same as features, update the paper to reflect\nthis</span></p>\n<p><span>also add dependencies added by feature to\nillustrated example</span></p></li>\n</ol></li>\n<li><p><span><a href=\"https://pubgrub-rs-guide.pages.dev/limitations/multiple_versions\">multiple\nversions</a></span></p>\n<ul>\n<li><a href=\"https://github.com/pubgrub-rs/advanced_dependency_providers/blob/main/allow-multiple-versions/src/multiple_versions.rs\">https://github.com/pubgrub-rs/advanced_dependency_providers/blob/main/allow-multiple-versions/src/multiple_versions.rs</a></li>\n</ul>\n<ol>\n<li><p><span>I’m trying to decide whether their solution or\nmy solution is more elegant:</span></p>\n<ul>\n<li><p><span>I like their ‘bucket’ approach instead of my\nconflict relationships approach. In their approach conflicts between\ndifferent versions of the same package are implicit. To support\nmulti-versions you store different versions under different names. For\nrust, this is elegant: you just move the major version number into the\npackage name. This is similar to [[*<span>$$\\[https://www.youtube.com/watch?v=oyLBGkS5ICk$$</span><span><em>S</em><em>p</em><em>e</em><em>c</em> − <em>u</em><em>l</em><em>a</em><em>t</em><em>i</em><em>o</em><em>n</em></span>\\]][Spec-ulation]]\napproach of putting breaking functionality under a new\nnamespace.</span></p></li>\n<li><p><span>I think their ‘proxies’ solution to depending\non multiple different package names is less elegant. I wonder if there’s\na good reason not to allow different package names in a dependency? I\nsuppose restricting to solve for a single one without the conflicts\nbetween versions is no longer possible. We get around this by keeping\ntrack of the resolved graph in the SAT problem, but this adds\ncomplexity. So maybe their approach is better.</span></p>\n<p><span>I also think we jump through hoops in order to\nextract the resolved graph from the SAT problem, but we can actually\njust reassemble this from the set of package solutions (and if there’s\nmultiple possible interpretations, which is possible in the\nmulti-version scenario, then each interpretation is equally\nvalid).</span></p></li>\n</ul></li>\n<li><p><span><span>X</span> Figure out if\nthese proxy packages pollute the error messages</span></p>\n<p><span>No, we can filter them out.</span></p></li>\n</ol></li>\n<li><p><span><span>X</span>\ndisjunctions</span></p>\n<p><span>Disjunctions use proxy packages as defined in <a href=\"https://pubgrub-rs-guide.pages.dev/limitations/multiple_versions\">multiple\nversions</a></span></p></li>\n<li><p><span><span>X</span>\nconflicts</span></p>\n<p><span>Conflicts are implicit between packages with the\nsame name. Is this a problem for opam? We could also the API to include\nthem <a href=\"https://github.com/pubgrub-rs/pubgrub/issues/122\">https://github.com/pubgrub-rs/pubgrub/issues/122</a>.</span></p></li>\n<li><p><span><span>X</span>\nupgrades</span></p>\n<p><span>Solves are one-shot. We could make a version\nordering to prefer the current version first.</span></p></li>\n<li><p><span><a href=\"https://github.com/RyanGibb/hyperres-pubgrub/\">hyperres-pubgrub</a></span></p>\n<ol>\n<li><p><span><span>X</span> fig3\nresolution</span></p></li>\n<li><p><span><span>X</span> fig4 diamond\nproblem</span></p></li>\n<li><p><span><span>~</span> fig5\nupgrades</span></p></li>\n<li><p><span><span>X</span> fig6\narch</span></p></li>\n<li><p><span><span>X</span> fig7\nalgebra</span></p>\n<ul>\n<li>use proxies for disjunctions (<span><em>conflicts</em></span>)</li>\n<li>can’t express negations</li>\n</ul></li>\n<li><p><span><span>X</span> fig8\nmulti-version</span></p></li>\n<li><p><span><span>X</span> fig10\nfeatures</span></p></li>\n</ol></li>\n<li><p><span><span>O</span> multi-version\noptional dependencies</span></p></li>\n<li><p><span>other functionality</span></p>\n<ol>\n<li><p><span><a href=\"https://github.com/pubgrub-rs/advanced_dependency_providers/issues/2\">replacements</a></span></p></li>\n<li><p><span><a href=\"https://github.com/pubgrub-rs/advanced_dependency_providers/issues/3\">pre-release</a></span></p>\n<p><span>We could need to implement version’s for each\necosystem, e.g. for Debian and Opam: <a href=\"https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-version\">https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-version</a>.</span></p></li>\n<li><p><span><a href=\"https://github.com/pubgrub-rs/advanced_dependency_providers/issues/4\">lockfiles</a></span></p>\n<p><span>Uv has lockfiles which take platforms as\nparameters <a href=\"https://github.com/astral-sh/uv/blob/54bb5a38a41cbb7e3b02c457c37287996c43a65e/docs/concepts/projects/layout.md#the-lockfile\">https://github.com/astral-sh/uv/blob/54bb5a38a41cbb7e3b02c457c37287996c43a65e/docs/concepts/projects/layout.md#the-lockfile</a>\nIt would be interesting to see if we could encode parameters like\nplatforms as packages (section 5.1.5 <span><a href=\"#ref-gibbSolvingPackageManagement\">[1]</a></span>).</span></p></li>\n<li><p><span><a href=\"https://pubgrub-rs-guide.pages.dev/limitations/public_private\">public\nand private packages</a></span></p></li>\n</ol></li>\n</ol></li>\n<li><p><span><span>X</span> read <a href=\"http://blog.ezyang.com/2018/03/online-offline-continuous-integration/\">Online/offline\ncontinuous integration</a></span></p>\n<p><span>While Nix is reproducible, it comes at a large\ncost in computation and disk space. This adherence to absolute\nreproducibility also makes it difficult to operate offline. Babel could\nrestrict solving to the local cache when offline using a PubGrub\nOfflineDependencyProvider.</span></p></li>\n</ol></li>\n<li><p><span>what is the novelty of babel?</span></p>\n<ul>\n<li>cross-ecosystem solves</li>\n<li>deduplicating packages</li>\n<li>fast solving with understandable error messages</li>\n</ul></li>\n<li><p><span>research questions</span></p>\n<ol>\n<li><p><span><span>X</span> can we use\nPubGrub to model <span><em>exotic\nfunctionality</em></span></span></p>\n<p><span>yes</span></p></li>\n<li><p><span><span>O</span> can we create\na common format for cross-ecosystem dependencies including boolean\nalgebra</span></p>\n<p><span>Or maybe we should just write ecosystem-specific\nparsers to the solver. Next: get PubGrub to run on\nopam-giga-repository.</span></p>\n<ol>\n<li><p><span><span>O</span> create a\ncross-ecosystem PubGrub dependency provider</span></p></li>\n</ol></li>\n</ol></li>\n</ol></li>\n</ol>\n<div>\n<div>\n<span><div>[1] </div><div>R. Gibb <em>et al.</em>, <span>“Solving\n<span>Package Management</span> via <span>Hypergraph Dependency\nResolution</span>.”</span> </div></span>\n</div>\n</div>", 8 "content": "<div>\n <span> Previous: <a href=\"2025-01-06.html\"> 6 Jan 2025</a> </span>\n <span> Next: <a href=\"2025-01-20.html\">20 Jan 2025</a> </span>\n </div>\n \n \n\n <ol>\n<li><p><span>babel</span></p>\n<ol>\n<li><p><span><span>O</span> opam-repo maps\n[2/3]</span></p>\n<ol>\n<li><p><span><span>X</span> <a href=\"https://github.com/mtelvers/pacman2opam/\">https://github.com/mtelvers/pacman2opam/</a></span></p>\n<ol>\n<li><p><span>it seems like firefox doesn’t\ninstall</span></p>\n<pre><code>_build/default/bin/main.exe --repo /dev/shm/packages pacman-firefox\n[ERROR] No solution\nCan't find all required versions.\nSelected: pacman-acl.2.3.2-1\n pacman-adobe-source-code-pro-fonts.2.042u+1.062i+1.026vf-2\n pacman-adwaita-cursors.47.0-1 pacman-adwaita-icon-theme.47.0-1\n pacman-adwaita-icon-theme-legacy.46.2-3 pacman-alsa-lib.1.2.13-1\n pacman-alsa-topology-conf.1.2.5.1-4 pacman-alsa-ucm-conf.1.2.13-2\n pacman-aom.3.11.0-1 pacman-at-spi2-core.2.54.1-1\n pacman-attr.2.5.2-1 pacman-audit.4.0.2-3\n pacman-avahi.1_0.8+r194+g3f79789-3 pacman-bash.5.2.037-1\n pacman-brotli.1.1.0-3 pacman-bzip2.1.0.8-6\n pacman-ca-certificates.20240618-1\n pacman-ca-certificates-mozilla.3.107-1\n pacman-ca-certificates-utils.20240618-1 pacman-cairo.1.18.2-2\n pacman-cantarell-fonts.1_0.303.1-2 pacman-coreutils.9.5-2\n pacman-cryptsetup.2.7.5-2 pacman-curl.8.11.1-3 pacman-dav1d.1.5.0-1\n pacman-dbus.1.16.0-1 pacman-dbus-broker.36-4\n pacman-dbus-broker-units.36-4 pacman-dbus-units.36-4\n pacman-dconf.0.40.0-3 pacman-default-cursors.3-1\n pacman-desktop-file-utils.0.28-1 pacman-device-mapper.2.03.29-1\n pacman-duktape.2.7.0-7 pacman-e2fsprogs.1.47.2-1\n pacman-expat.2.6.4-1 pacman-ffmpeg.2_7.1-5 pacman-fftw.3.3.10-7\n pacman-file.5.46-3 pacman-filesystem.2024.11.21-1\n pacman-findutils.4.10.0-2 pacman-firefox.134.0.1-1\n pacman-flac.1.4.3-2 pacman-fontconfig.2_2.15.0-2\n pacman-freetype2.2.13.3-1 pacman-fribidi.1.0.16-1\n pacman-gcc-libs.14.2.1+r134+gab884fffe3fc-2 pacman-gdbm.1.24-1\n pacman-gdk-pixbuf2.2.42.12-2 pacman-giflib.5.2.2-1\n pacman-glib-networking.1_2.80.1-1 pacman-glib2.2.82.4-2\n pacman-glibc.2.40+r16+gaa533d58ff-2 pacman-glslang.15.0.0-2\n pacman-gmp.6.3.0-2 pacman-gnutls.3.8.8-1 pacman-gperftools.2.16-1\n pacman-graphite.1_1.3.14-4 pacman-grep.3.11-1\n pacman-gsettings-desktop-schemas.47.1-1\n pacman-gsettings-system-schemas.47.1-1 pacman-gsm.1.0.22-2\n pacman-gtk-update-icon-cache.1_4.16.12-1 pacman-gtk3.1_3.24.43-4\n pacman-gzip.1.13-4 pacman-harfbuzz.10.2.0-1\n pacman-hicolor-icon-theme.0.18-1 pacman-hidapi.0.14.0-3\n pacman-highway.1.2.0-1 pacman-hwdata.0.391-1\n pacman-iana-etc.20241206-1 pacman-icu.75.1-2\n pacman-iso-codes.4.17.0-1 pacman-jack.1 pacman-jbigkit.2.1-8\n pacman-json-c.0.18-1 pacman-json-glib.1.10.6-1 pacman-kbd.2.7.1-1\n pacman-keyutils.1.6.3-3 pacman-kmod.33-3 pacman-krb5.1.21.3-1\n pacman-l-smash.2.14.5-4 pacman-lame.3.100-5 pacman-lcms2.2.16-1\n pacman-libacl_so.1-64 pacman-libasound_so.2-64\n pacman-libass.0.17.3-1 pacman-libass_so.9-64\n pacman-libasyncns.1_0.8+r3+g68cd5af-3 pacman-libattr_so.1-64\n pacman-libaudit_so.1-64 pacman-libavc1394.0.5.4-6\n pacman-libblkid_so.1-64 pacman-libbluray.1.3.4-2\n pacman-libbluray_so.2-64 pacman-libbpf.1.5.0-1\n pacman-libbrotlidec_so.1-64 pacman-libbs2b.3.1.0-9\n pacman-libbs2b_so.0-64 pacman-libbz2_so.1.0-64 pacman-libcap.2.71-1\n pacman-libcap-ng.0.8.5-3 pacman-libcap-ng_so.0-64\n pacman-libcap_so.2-64 pacman-libcloudproviders.0.3.6-1\n pacman-libcolord.1.4.7-2 pacman-libcom_err_so.2-64\n pacman-libcrypt_so.2-64 pacman-libcrypto_so.3-64\n pacman-libcryptsetup_so.12-64 pacman-libcups.2_2.4.11-2\n pacman-libcurl_so.4-64 pacman-libdaemon.0.14-6\n pacman-libdatrie.0.2.13-4 pacman-libdav1d_so.7-64\n pacman-libdbus-1_so.3-64 pacman-libdevmapper_so.1.02-64\n pacman-libdovi.3.3.1-1 pacman-libdovi_so.3-64\n pacman-libdrm.2.4.124-1 pacman-libdvdnav.6.1.1-2\n pacman-libdvdread.6.1.3-2 pacman-libedit.20240808_3.1-1\n pacman-libegl.1 pacman-libelf.0.192-2 pacman-libepoxy.1.5.10-3\n pacman-libevent.2.1.12-4 pacman-libexpat_so.1-64\n pacman-libFLAC_so.12-64 pacman-libffi.3.4.6-1 pacman-libffi_so.8-64\n pacman-libfftw3_so.3-64 pacman-libfreetype_so.6-64\n pacman-libgcrypt.1.11.0-2 pacman-libgdbm_so.6-64\n pacman-libgio-2_0_so.0-64 pacman-libgl.1 pacman-libglib-2_0_so.0-64\n pacman-libglvnd.1.7.0-1 pacman-libgobject-2_0_so.0-64\n pacman-libgpg-error.1.51-1 pacman-libgraphite2_so.3-64\n pacman-libgssapi_krb5_so.2-64 pacman-libharfbuzz_so.0-64\n pacman-libice.1.1.2-1 pacman-libidn2.2.3.7-1 pacman-libidn2_so.0-64\n pacman-libiec61883.1.2.0-8 pacman-libjack_so.0-64\n pacman-libjpeg-turbo.3.1.0-1 pacman-libjpeg_so.8-64\n pacman-libjson-c_so.5-64 pacman-libjxl.0.11.1-1\n pacman-libjxl_so.0.11-64 pacman-libkeyutils_so.1-64\n pacman-libkrb5_so.3-64 pacman-liblcms2_so.2-64\n pacman-libldap.2.6.9-1 pacman-liblsmash_so.2-64\n pacman-liblzma_so.5-64 pacman-libmagic_so.1-64\n pacman-libmodplug.0.8.9.0-6 pacman-libmount_so.1-64\n pacman-libmp3lame_so.0-64 pacman-libmpg123_so.0-64\n pacman-libncursesw_so.6-64 pacman-libnghttp2.1.64.0-1\n pacman-libnghttp2_so.14-64 pacman-libnghttp3.1.7.0-1\n pacman-libnghttp3_so.9-64 pacman-libnsl.2.0.1-1\n pacman-libogg.1.3.5-2 pacman-libogg_so.0-64\n pacman-libopenmpt.0.7.12-1 pacman-libopenmpt_so.0-64\n pacman-libopus_so.0-64 pacman-libp11-kit.0.25.5-1\n pacman-libp11-kit_so.0-64 pacman-libpam_misc_so.0-64\n pacman-libpam_so.0-64 pacman-libpciaccess.0.18.1-2\n pacman-libpgm.5.3.128-3 pacman-libplacebo.7.349.0-3\n pacman-libplacebo_so.349-64 pacman-libpng.1.6.45-1\n pacman-libproxy.0.5.9-1 pacman-libpsl.0.21.5-2\n pacman-libpsl_so.5-64 pacman-libpulse.17.0+r43+g3e2bb8a1e-1\n pacman-librav1e_so.0.7-64 pacman-libraw1394.2.1.2-4\n pacman-libreadline_so.8-64 pacman-librsvg.2_2.59.2-1\n pacman-librsvg-2_so.2-64 pacman-librubberband_so.3-64\n pacman-libsamplerate.0.2.2-3 pacman-libsamplerate_so.0-64\n pacman-libsasl.2.1.28-5 pacman-libseccomp.2.5.5-4\n pacman-libseccomp_so.2-64 pacman-libshaderc_shared_so.1-64\n pacman-libsm.1.2.5-1 pacman-libsndfile.1.2.2-2\n pacman-libsndfile_so.1-64 pacman-libsodium.1.0.20-1\n pacman-libsoup3.3.6.3-1 pacman-libsoxr.0.1.3-4\n pacman-libspeexdsp_so.1-64 pacman-libss_so.2-64\n pacman-libssh.0.11.1-1 pacman-libssh2.1.11.1-1\n pacman-libssh2_so.1-64 pacman-libssl_so.3-64\n pacman-libstemmer.2.2.0-2 pacman-libsysprof-capture.47.2-1\n pacman-libsystemd_so.0-64 pacman-libtasn1.4.19.0-2\n pacman-libthai.0.1.29-3 pacman-libtheora.1.1.1-6\n pacman-libtiff.4.7.0-1 pacman-libtirpc.1.3.6-1\n pacman-libudev_so.1-64 pacman-libunibreak.6.1-1\n pacman-libunistring.1.3-1 pacman-libunistring_so.5-64\n pacman-libunwind.1.8.1-3 pacman-libusb.1.0.27-1\n pacman-libuuid_so.1-64 pacman-libva.2.22.0-1\n pacman-libva-drm_so.2-64 pacman-libva-x11_so.2-64\n pacman-libva_so.2-64 pacman-libvdpau.1.5-3 pacman-libverto.0.3.2-5\n pacman-libverto-module-base.1 pacman-libverto_so.1-64\n pacman-libvidstab_so.1.2-64 pacman-libvorbis.1.3.7-3\n pacman-libvorbis_so.0-64 pacman-libvorbisenc_so.2-64\n pacman-libvpx.1.15.0-1 pacman-libvpx_so.9-64\n pacman-libvulkan_so.1-64 pacman-libwebp.1.5.0-1\n pacman-libx11.1.8.10-1 pacman-libx264_so.164-64\n pacman-libx265_so.212-64 pacman-libxau.1.0.12-1\n pacman-libxcb.1.17.0-1 pacman-libxcomposite.0.4.6-2\n pacman-libxcrypt.4.4.37-1 pacman-libxcursor.1.2.3-1\n pacman-libxdamage.1.1.6-2 pacman-libxdmcp.1.1.5-1\n pacman-libxext.1.3.6-1 pacman-libxfixes.6.0.1-2\n pacman-libxft.2.3.8-2 pacman-libxi.1.8.2-1\n pacman-libxinerama.1.1.5-2 pacman-libxkbcommon.1.7.0-2\n pacman-libxml2.2.13.5-2 pacman-libxrandr.1.5.4-1\n pacman-libxrender.0.9.12-1 pacman-libxshmfence.1.3.3-1\n pacman-libxss.1.2.4-2 pacman-libxt.1.3.1-1 pacman-libxtst.1.2.5-1\n pacman-libxv.1.0.13-1 pacman-libxvidcore_so.4-64\n pacman-libxxf86vm.1.1.6-1 pacman-libz_so.1-64\n pacman-libzimg_so.2-64 pacman-libzmq_so.5-64 pacman-libzstd_so.1-64\n pacman-linux-api-headers.6.10-1 pacman-llvm-libs.19.1.6-3\n pacman-lm_sensors.1_3.6.0.r41.g31d1f125-3 pacman-lmdb.0.9.33-1\n pacman-lz4.1_1.10.0-2 pacman-lzo.2.10-5 pacman-mime-types.1\n pacman-mpdecimal.4.0.0-2 pacman-mpg123.1.32.10-1\n pacman-ncurses.6.5-3 pacman-nettle.3.10.1-1 pacman-nspr.4.36-1\n pacman-nss.3.107-1 pacman-ocl-icd.2.3.2-2 pacman-onevpl.1\n pacman-opencore-amr.0.1.6-2 pacman-opengl-driver.1\n pacman-openjpeg2.2.5.3-1 pacman-openssl.3.4.0-1 pacman-opus.1.5.2-1\n pacman-p11-kit.0.25.5-1 pacman-pam.1.7.0-1\n pacman-pambase.20230918-2 pacman-pango.1_1.54.0-1\n pacman-pcre2.10.44-1 pacman-pixman.0.44.2-1 pacman-popt.1.19-2\n pacman-portaudio.1_19.7.0-3 pacman-python.3.13.1-1\n pacman-rav1e.0.7.1-1 pacman-readline.8.2.013-1\n pacman-rubberband.4.0.0-1 pacman-sdl2.2.30.11-1 pacman-sed.4.9-3\n pacman-sh.1 pacman-shaderc.2024.3-2 pacman-shadow.4.16.0-1\n pacman-shared-mime-info.2.4-1 pacman-snappy.1.2.1-2\n pacman-speex.1.2.1-2 pacman-speexdsp.1.2.1-2\n pacman-spirv-tools.2024.4.rc1-1 pacman-sqlite.3.47.2-1\n pacman-srt.1.5.4-1 pacman-svt-av1.2.3.0-1 pacman-systemd.257.2-2\n pacman-systemd-libs.257.2-2 pacman-tinysparql.3.8.2-2\n pacman-ttf-font.1 pacman-ttf-input.20220502-6 pacman-tzdata.2024b-2\n pacman-util-linux.2.40.4-1 pacman-util-linux-libs.2.40.4-1\n pacman-v4l-utils.1.28.1-2 pacman-vapoursynth.R70-2\n pacman-vid_stab.1.1.1-2 pacman-vmaf.3.0.0-1\n pacman-vulkan-icd-loader.1.4.303-1 pacman-wayland.1.23.1-1\n pacman-x264.3_0.164.r3108.31e19f9-2 pacman-x265.4.0-1\n pacman-xcb-proto.1.17.0-3 pacman-xkeyboard-config.2.43-1\n pacman-xorg-xprop.1.2.8-1 pacman-xorgproto.2024.1-2\n pacman-xvidcore.1.3.7-3 pacman-xxhash.0.8.3-1 pacman-xz.5.6.3-1\n pacman-zeromq.4.3.5-2 pacman-zimg.3.0.5-1 pacman-zlib.1_1.3.1-2\n pacman-zstd.1.5.6-1 pacman-firefox pacman-firefox\n- pacman-libvpl -&gt; (problem)\n Rejected candidates:\n pacman-libvpl.2.14.0-1: Requires pacman-onevpl conflict with all versions\n- pacman-mailcap -&gt; (problem)\n Rejected candidates:\n pacman-mailcap.2.1.54-2: Requires pacman-mime-types conflict with all versions\n- pacman-mesa -&gt; pacman-mesa.1_24.3.3-2\n pacman-opengl-driver 1 requires = 1_24.3.3-2\n- pacman-pipewire-jack -&gt; (problem)\n Rejected candidates:\n pacman-pipewire-jack.1_1.2.7-1: Requires pacman-jack conflict with all versions\n</code></pre></li>\n</ol></li>\n<li><p><span><span>X</span> <a href=\"https://github.com/jonludlam/brew-opam-repository/\">https://github.com/jonludlam/brew-opam-repository/</a></span></p></li>\n<li><p><span><span>O</span> <a href=\"https://github.com/mtelvers/rpm2opam/\">https://github.com/mtelvers/rpm2opam/</a></span></p></li>\n</ol></li>\n<li><p><span>PubGrub</span></p>\n<ol>\n<li><p><span><span>X</span> <a href=\"https://www.youtube.com/watch?v=oyLBGkS5ICk\">Spec-ulation</a></span></p>\n<p><span>what is a version?</span></p></li>\n<li><p><span>state of the project</span></p>\n<p><span>hasn’t had a release in 4 years, but the\nmaintainer’s employer is kind of supporting them and uv using it <a href=\"https://github.com/pubgrub-rs/pubgrub/issues/128#issuecomment-1566377638\">https://github.com/pubgrub-rs/pubgrub/issues/128#issuecomment-1566377638</a></span></p></li>\n<li><p><span>exotic functionality</span></p>\n<p><span><a href=\"https://github.com/pubgrub-rs/pubgrub/issues/39\">https://github.com/pubgrub-rs/pubgrub/issues/39</a></span></p>\n<ol>\n<li><p><span><span>X</span> <a href=\"https://pubgrub-rs-guide.pages.dev/limitations/optional_deps\">optional\ndependencies</a></span></p>\n<ul>\n<li><a href=\"https://github.com/pubgrub-rs/advanced_dependency_providers/blob/main/optional-deps/src/optional_deps.rs\">https://github.com/pubgrub-rs/advanced_dependency_providers/blob/main/optional-deps/src/optional_deps.rs</a></li>\n<li><a href=\"https://rust-lang.zulipchat.com/#narrow/channel/260232-t-cargo.2FPubGrub/topic/feature.20resolution\">https://rust-lang.zulipchat.com/#narrow/channel/260232-t-cargo.2FPubGrub/topic/feature.20resolution</a></li>\n<li><a href=\"https://rust-lang.zulipchat.com/#narrow/channel/260232-t-cargo.2FPubGrub/topic/So.20what.20to.20do.20next.3F/near/212812259\">https://rust-lang.zulipchat.com/#narrow/channel/260232-t-cargo.2FPubGrub/topic/So.20what.20to.20do.20next.3F/near/212812259</a></li>\n</ul>\n<ol>\n<li><p><span><span>O</span> optional\ndependencies are the same as features, update the paper to reflect\nthis</span></p>\n<p><span>also add dependencies added by feature to\nillustrated example</span></p></li>\n</ol></li>\n<li><p><span><a href=\"https://pubgrub-rs-guide.pages.dev/limitations/multiple_versions\">multiple\nversions</a></span></p>\n<ul>\n<li><a href=\"https://github.com/pubgrub-rs/advanced_dependency_providers/blob/main/allow-multiple-versions/src/multiple_versions.rs\">https://github.com/pubgrub-rs/advanced_dependency_providers/blob/main/allow-multiple-versions/src/multiple_versions.rs</a></li>\n</ul>\n<ol>\n<li><p><span>I’m trying to decide whether their solution or\nmy solution is more elegant:</span></p>\n<ul>\n<li><p><span>I like their ‘bucket’ approach instead of my\nconflict relationships approach. In their approach conflicts between\ndifferent versions of the same package are implicit. To support\nmulti-versions you store different versions under different names. For\nrust, this is elegant: you just move the major version number into the\npackage name. This is similar to [[*<span>$$\\[https://www.youtube.com/watch?v=oyLBGkS5ICk$$</span><span><em>S</em><em>p</em><em>e</em><em>c</em> − <em>u</em><em>l</em><em>a</em><em>t</em><em>i</em><em>o</em><em>n</em></span>\\]][Spec-ulation]]\napproach of putting breaking functionality under a new\nnamespace.</span></p></li>\n<li><p><span>I think their ‘proxies’ solution to depending\non multiple different package names is less elegant. I wonder if there’s\na good reason not to allow different package names in a dependency? I\nsuppose restricting to solve for a single one without the conflicts\nbetween versions is no longer possible. We get around this by keeping\ntrack of the resolved graph in the SAT problem, but this adds\ncomplexity. So maybe their approach is better.</span></p>\n<p><span>I also think we jump through hoops in order to\nextract the resolved graph from the SAT problem, but we can actually\njust reassemble this from the set of package solutions (and if there’s\nmultiple possible interpretations, which is possible in the\nmulti-version scenario, then each interpretation is equally\nvalid).</span></p></li>\n</ul></li>\n<li><p><span><span>X</span> Figure out if\nthese proxy packages pollute the error messages</span></p>\n<p><span>No, we can filter them out.</span></p></li>\n</ol></li>\n<li><p><span><span>X</span>\ndisjunctions</span></p>\n<p><span>Disjunctions use proxy packages as defined in <a href=\"https://pubgrub-rs-guide.pages.dev/limitations/multiple_versions\">multiple\nversions</a></span></p></li>\n<li><p><span><span>X</span>\nconflicts</span></p>\n<p><span>Conflicts are implicit between packages with the\nsame name. Is this a problem for opam? We could also the API to include\nthem <a href=\"https://github.com/pubgrub-rs/pubgrub/issues/122\">https://github.com/pubgrub-rs/pubgrub/issues/122</a>.</span></p></li>\n<li><p><span><span>X</span>\nupgrades</span></p>\n<p><span>Solves are one-shot. We could make a version\nordering to prefer the current version first.</span></p></li>\n<li><p><span><a href=\"https://github.com/RyanGibb/hyperres-pubgrub/\">hyperres-pubgrub</a></span></p>\n<ol>\n<li><p><span><span>X</span> fig3\nresolution</span></p></li>\n<li><p><span><span>X</span> fig4 diamond\nproblem</span></p></li>\n<li><p><span><span>~</span> fig5\nupgrades</span></p></li>\n<li><p><span><span>X</span> fig6\narch</span></p></li>\n<li><p><span><span>X</span> fig7\nalgebra</span></p>\n<ul>\n<li>use proxies for disjunctions (<span><em>conflicts</em></span>)</li>\n<li>can’t express negations</li>\n</ul></li>\n<li><p><span><span>X</span> fig8\nmulti-version</span></p></li>\n<li><p><span><span>X</span> fig10\nfeatures</span></p></li>\n</ol></li>\n<li><p><span><span>O</span> multi-version\noptional dependencies</span></p></li>\n<li><p><span>other functionality</span></p>\n<ol>\n<li><p><span><a href=\"https://github.com/pubgrub-rs/advanced_dependency_providers/issues/2\">replacements</a></span></p></li>\n<li><p><span><a href=\"https://github.com/pubgrub-rs/advanced_dependency_providers/issues/3\">pre-release</a></span></p>\n<p><span>We could need to implement version’s for each\necosystem, e.g. for Debian and Opam: <a href=\"https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-version\">https://www.debian.org/doc/debian-policy/ch-controlfields.html#s-f-version</a>.</span></p></li>\n<li><p><span><a href=\"https://github.com/pubgrub-rs/advanced_dependency_providers/issues/4\">lockfiles</a></span></p>\n<p><span>Uv has lockfiles which take platforms as\nparameters <a href=\"https://github.com/astral-sh/uv/blob/54bb5a38a41cbb7e3b02c457c37287996c43a65e/docs/concepts/projects/layout.md#the-lockfile\">https://github.com/astral-sh/uv/blob/54bb5a38a41cbb7e3b02c457c37287996c43a65e/docs/concepts/projects/layout.md#the-lockfile</a>\nIt would be interesting to see if we could encode parameters like\nplatforms as packages (section 5.1.5 <span><a href=\"#ref-gibbSolvingPackageManagement\">[1]</a></span>).</span></p></li>\n<li><p><span><a href=\"https://pubgrub-rs-guide.pages.dev/limitations/public_private\">public\nand private packages</a></span></p></li>\n</ol></li>\n</ol></li>\n<li><p><span><span>X</span> read <a href=\"http://blog.ezyang.com/2018/03/online-offline-continuous-integration/\">Online/offline\ncontinuous integration</a></span></p>\n<p><span>While Nix is reproducible, it comes at a large\ncost in computation and disk space. This adherence to absolute\nreproducibility also makes it difficult to operate offline. Babel could\nrestrict solving to the local cache when offline using a PubGrub\nOfflineDependencyProvider.</span></p></li>\n</ol></li>\n<li><p><span>what is the novelty of babel?</span></p>\n<ul>\n<li>cross-ecosystem solves</li>\n<li>deduplicating packages</li>\n<li>fast solving with understandable error messages</li>\n</ul></li>\n<li><p><span>research questions</span></p>\n<ol>\n<li><p><span><span>X</span> can we use\nPubGrub to model <span><em>exotic\nfunctionality</em></span></span></p>\n<p><span>yes</span></p></li>\n<li><p><span><span>O</span> can we create\na common format for cross-ecosystem dependencies including boolean\nalgebra</span></p>\n<p><span>Or maybe we should just write ecosystem-specific\nparsers to the solver. Next: get PubGrub to run on\nopam-giga-repository.</span></p>\n<ol>\n<li><p><span><span>O</span> create a\ncross-ecosystem PubGrub dependency provider</span></p></li>\n</ol></li>\n</ol></li>\n</ol></li>\n</ol>\n<div>\n<div>\n<span><div>[1] </div><div>R. Gibb <em>et al.</em>, <span>“Solving\n<span>Package Management</span> via <span>Hypergraph Dependency\nResolution</span>.”</span> </div></span>\n</div>\n</div>", 9 "content_type": "html", 10 "categories": [], 11 "source": "https://ryan.freumh.org/atom.xml" 12}