C++Now 2017: Lisa Lippincott “Locally Atomic Capabilities and How to Count Them'

preview_player
Показать описание


When we write a program, we imagine that each function should only exercise certain local capabilities — for example, that it should only examine or alter certain objects, and that other objects are reserved to other parts of the program.

But when we execute a program, these restrictions are largely unenforced. If any part of a program may exercise a capability, all parts may, and the accidental (or malicious) use of a non-local capability is at the heart of many bugs.

In this talk, I will examine the nature of capabilities; show how a notation for function interfaces can express the flow of capabilities between functions; define correct usage of capabilities; and present a way to instrument a function’s neighborhood or an individual translation unit to test the correct local usage of capabilities.

This talk continues the examination of program correctness in “How we reason about procedural programs” (C++Now 2015) and “What is the basic interface?” (C++Now 2016, CppCon 2016), but is intended to be accessible to people unfamiliar with that material.

Lisa Lippincott is Chief Software Architect at Tanium, a bay-area startup. She's also a language nerd, and has contributed to arcane parts of the C++ standard. In her spare time, she studies mathematical logic with a category-theoretic approach.

---

*--*

---
Рекомендации по теме