| Description: | 
                Cyclone is a programming language based on C that is safe, meaning that it rules out programs that have buffer overflows, dangling pointers, format string attacks, and so on. High-level, type-safe languages, such as Java, Scheme, or ML also provide safety, but they dont give the same control over data representations and memory management that C does (witness the fact that the run-time systems for these languages are usually written in C.) Furthermore, porting legacy C code to these languages or interfacing with legacy C libraries is a difficult and error-prone process. The goal of Cyclone is to give programmers the same low-level control and performance of C without sacrificing safety, and to make it easy to port or interface with legacy C code. 
 
Cyclone achieves safety while remaining compatible with C by: 
 
Enforcing type safety (e.g., a cast from t1 to t2 is allowed only if it is safe to view a t1 as a t2) 
Not changing data representation or calling conventions 
Providing region-based, manual memory management 
Using a combination of type information and run-time checks to prevent array-bound violations  
Wrapping the C standard library with appropriate run-time checks as necessary (e.g., has a FILE already been closed) 
Cyclone also provides modern features for convenient programming: 
Tagged unions 
Parametric polymorphism 
Pattern matching 
Exceptions 
Anonymous structs equivalent by structure 
Parameterized typedefs 
An extensive library for container types and other common utilities 
A lexer generator and parser generator 
Function-level debugging with gdb and profiling with gprof. 
                            |