§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
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
.
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.