Mon 10 Feb 2025

Babel: solve the opam repository with pubgrub-opam

While converting the whole repository I fixed a bug in a package definition

DONE on-demand dependency provider

opam-repository has a lot of packages, so we only load packages we need

  1. TODO add a caching dependency provider with interior mutation

DONE parse filtered package formula

  • While the grammar allows for it I can’t actually find any booleans or integers in the dependency formula of Opam.
  • Why are they there?
  • I’m just ignoring them for now so I don’t need to complement logic for comparing them etc.

DONE encode filtered package formula in pubgrub

Take (A, 1) depending on B {build} as a minimal example. We encode this in the ‘package calculus’ as

(A, 1) -> (B {build}, *)
(B {build}, lhs) -> (B, *), (`build`, false)
(B {build}, rhs) -> (`build`, true)

Note that B {build} is a proxy package associated with the formula build.

  1. TODO conjuntions and disjuntions aren’t complete

A deployment idea

  • whenever a binary is executed, execute the packaging/build lazily to satisfy the request for that binary
  • you could use binfmt_misc for this in Linux
  • with mount namespaces, you could hide the compilation/packaging of the binary in its own namespace and the only thing “exported” to the main filesystem are the binary/data needed to runtime

Teaching

I marked the first supervision work for Robinson Part II’s Computer Networking.

There’s a bit of a tension between examinable work and hands-on experience. I’ve previously given some practical ideas for students, but didn’t get any bites.

Patrick said his networking supervisor was very light on the setting / marking work, but gave them a lot of hands-on demos of real life Linux networking with iptables and so on. Michael recounted his Unix socket programming introduction to networking, which I think is great. My first networking practical was writing a file distribution program then some hands-on performance analysis of TCP.

I think a bit of this practical element is missing in the Cambridge curriculum. The course page encourages learning by doing, but with the pressures of term I haven’t found many students have the time to pick up work that does count towards their grade. The masters-level course on networking, Introduction to networking and systems measurements, gets very practical, which I think is great.

SNS

TODO read https://arxiv.org/pdf/2405.20745 and think about how it could apply to a spatial DSL

Misc

TODO write up research ideas for website