Capabilities
A capability is an unforgeable token of authority.
Holding a capability endows an agent (e.g. user, program, process) with the rights and ability to do some particular action (e.g. access a resource, read a region of memory). Thus, a capability is something an agent should not be able to create, only something they are handed. In some cases, they may be able to pass it on to another agent.
In stack safety
The notion of a capability plays a central role in modern architectures, which try to adhere to some kind of stack safety.
In particular, capabilities are central to the Capability Hardware Enhanced RISC Instructions (CHERI) instruction set: see the project website for more information.
References
-
The Wikipedia article on capability-based security.
-
The Wikipedia article on capability-based addressing.
-
The concept of a capability is rumoured to have first occurred in the paper