T1: Secure Programming For Embedded Systems

Back to the list of Speakers and Sessions
Description of T1, a new programming language that targets embedded systems: low RAM, low ROM, memory-safe, portable, supports coroutines.

Among the myriad of programming languages which have been defined overthe last five decades, some provide memory safety (e.g. Java, Rust)but are often inapplicable to low-end embedded systems with 32-bitmicrocontrollers and a few dozen kilobytes of RAM at best:

  • Both RAM and ROM (Flash) sizes are severely constrained; a bulky runtime systems cannot be accommodated, and even a "normal-sized" stack is not an option.

  • Small embedded systems do not have an operating system at all, and do not provide features on which many language runtimes rely on, e.g. a MMU to trap dereferencing of NULL pointers, or multithreading.

  • Many microcontrollers use custom or reduced CPU versions that existing code generators do not support, forcing the use of a vendor-provided C compiler.

This talk describes T1, a novel programming language that tries toaddress these issues. It is an evolution of T0, the Forth-like languagewhich is already successfully used in BearSSL for managing the SSL/TLShandshake and for verifying X.509 certificate chains.