Type-Safe Memory Management in Cyclone

The Legacy of C

Buffers are Not the Only Problem

C Is Also Very Useful:

The Cyclone Project

Key Technologies

Cyclone in Practice

Rest of the Talk

Hello World

Extended Qualifiers

Using Qualifiers Effectively

Explicit Checks

Flow Analysis

Thus Far...

Dangling Pointers in Cyclone

Points:  what you think you wrote

Points: what you really wrote

Points Continued

Points Inferred

Region Subtyping

Region Subtyping, contd.

Dangling Pointers Revisited

Ensuring Soundness

Live Region Sets

Beyond Stack Allocation

Lexical Arena Allocation

Lexical Arena Allocation

Lexical Arena Allocation

Lexical Arena Allocation

Lexical Arena Allocation

Lexical Arena Allocation

Lexical Arena Allocation

Lexical Arena Allocation

Runtime Organization

Lexical Region Drawbacks

To Address these Issues

Prelim. Results for MediaNET

Dynamic Arenas

Notes on Dynamic Arenas

Unique Pointers

Copying Kills

Flow Analysis

Joins

Sharing Unique Pointers

Swap to the Rescue

Example:  Imperative Reversal

Unifying U and r

Alias Declarations

From the List Library

Compiler Can Often Infer Alias:

Notes on Alias Declarations

Reference Counting:

Summary:

What Next?

For more info: