~/talk

Unboxing Virgil ADTs For Fun and Profit

Talkat JENSFEST 2024 · on Tuesday, 2024-10-22· [compilers-and-language-design]
links:none on file
links:none on file
slides:none on file

Adds two annotations to Virgil: #unboxed removes heap allocation by lowering non-nullary ADT cases into multiple machine scalars/words, and #packed lets the programmer specify exact bit layouts for fields so network or kernel formats map directly. Compiler implements a greedy solution for the scalar assignment problem to minimize words and reuse tag-pointer encodings; packing layout solving is NP-complete so the compiler either falls back, errors, or requires a SAT/solver step. Implementation exists in Virgil and unboxing works but recursion/closure-captured ADTs and packing remain work in progress.

AI-written summary · about

  1. 0:00Virgil ADTs intro
  2. 4:24Unboxing ADTs in Virgil
  3. 6:54What unboxing ADTs means
  4. 9:02ADT types to machine scalers
  5. 12:32Packing ADTs for memory
  6. 15:41Runtime discrimination of ADTs
  7. 18:31NP-complete packing problems
  8. 20:19Compiler feedback on layouts
  9. 22:28Unboxing in production
  10. 23:17Q&A on integers and WebAssembly
~/search
type to search 6,249 conferences, 138,987 speakers and 185,172 talks
~/help
cmdctrl k
search every conference, speaker and series
/
focus the filter search
h
home
c
conferences
s
speakers
e
series
t
light / dark — the status bar button does the same
?
this help
esc
close this, then clear every filter — or just the search, while you are typing in it

Ignored while you are typing. Pages without a filter rail have no search to focus.