The universal organizing principle for large software systems in programming languages today is the package, the unit by which reusable code may be versioned and distributed. However, most package systems provide only a weak form of modularity, where packages depend directly on other packages. Backpack breaks new ground by arguing mixin packages can be a good fit for package-level modularity. Unfortunately, Backpack as was described in POPL’14 cannot be easily implemented for most existing languages today (including Haskell), because it tightly couples the compiler with the package manager. In this talk, I describe an evolution of the Backpack design which respects the division between package manager and compiler. This is not a paper design: it is principally motivated by our (ongoing) efforts to implement Backpack in GHC and the Cabal package system, which we hope to land for GHC 8.2.
I am a fourth year PhD student at Stanford advised by David Mazières and John Mitchell. I am a proud member of the Secure Computer Systems group. I’m interested in applying operating system mechanisms (hardware isolation, dynamic resource limits) to the design and construction of programming languages, and vice versa (type systems, formal verification, information flow control). I’m a big fan of Haskell, a non-strict purely functional language.r.