Low-level programming languages continue to be used to write many of our critical systems. Moreover, with the proliferation of mobile code, extensible kernels and active networks, research on the design and implementation of *safe* low-level languages is increasingly important.
In this talk, I will give a brief introduction to a very low-level, but safe language: Typed Assembly Language (TAL). TAL's instructions are standard: they come directly from Intel's IA32 (Pentium) architecture. However, TAL is also equipped with an extremely flexible type system, which makes it possible to encode abstractions from a variety of high-level languages. Like Java applets, TAL programs can be distributed over the net and checked for safety by untrusting hosts.
The original version of TAL relied upon a conservative garbage collector for safe memory management, making TAL an unattractive choice for some applications. To give programmers the ability to safely and explicitly recycle or deallocate memory, I have devised a system of "static capabilities" that control access to memory regions. These static capabilities also have a variety applications outside the domain of memory management. In particular, they can be used to enforce a rich class of security properties.