Table of contents:
- Cyclone
- C ++, ownership and aliases
- Rust
- Midori's M #
- Pony
- Cone
- Summary
In 2001, Jim Trevor (AT&T Research) and Greg Morrisett (Cornell) launched a joint project to develop a safe dialect of the C programming language as a development of earlier work on Typed Assembler . After five years of hard work and several published scientific papers , the team (including Dan Grossman, Michael Hicks, Nick Swami and others ) released Cyclone 1.0 . And then the developers went on to other things.
Few have heard of Cyclone, and almost no one has used it. And yet, when you throw the right stone into a prepared pond, the water continues to diverge in circles for a long time. Cyclone was a large, well-cut stone; and the pulsations of his spirit, as well as the innovations that were first highlighted in him, continue to spread in non-trivial ways.
Before I tell this story, I warn you: Innovation and influence is a complex social process. Nothing new arises in a vacuum. Thousands of people every year throw new interesting stones into the pond, under the influence of those already thrown. But no article can cover all this chaotic ripples entirely.
, : , ("") . , . . , .
Cyclone
20- ( "-" ++). CPU, , . , , β , , .
Cyclone , C, , , , , . : , , .
, , : , , use-after-free, , double free, printf, , , , goto , union'.
( ) C ML, Haskell, , :
- . C - struct, union - . , Cyclone , . Cyclone , .
- . Cyclone () . , , () . Cyclone , , . , - .
- . Cyclone 1990- . ML Kit ( ), (GC) , (). Aiken C. Cyclone , - . , , : ( ), , GC ( Boehm), , (unique) .
- / . Cyclone 1980- , , . , ( ), , GC . , . , ( ) - , Cyclone .
, :
- . " " , . (, int @x) . , - , , , .
- . Cyclone "" (char ?), . , . -.
- . , , , . , . , .
- . , ( ) , . Cyclone , , .
Cyclone (, ), , . "" . , , thread-local .
, C. , C. , C Cyclone, , , .
C++,
, Cyclone C++. C++ , 1990 : ( , ) β (RAII). RAII, , , . RAII , new.
- delete, 1997 auto_ptr, "" . , , RAII . , auto_ptr - [1]: . .
, auto_ptr , . 2002 , Bell Labs, " C++". : , . unique_ptr, auto_ptr 2005 (TR1) , , C++11. shared_ptr, , 1990- .
, 2006 , Cyclone, C++ : () . Cyclone, , ( GC) .
, Cyclone , . , , (Smith and Walker, 2000, Typed Assembly Language), Objective C, (.) (Reynolds, O'Hearn, Pym, 2000-2002). : " Cyclone , , ".
"" Cyclone C++. get() ++ . ++ , , , , , , .
Cyclone , . C++, Cyclone , . ( ) . , Cyclone .
Rust
2006 , , Cyclone , ( Mozilla) Rust . , , 1.0 2015 .
Rust, Cyclone . Rust β , , Cyclone.
Rust Cyclone, C++ SML/OCaml . , , , .
Rust , Cyclone, . , :
- Rust C/C++, .
- , ML-. (, Option, Result "" , Rc Mutex).
- Borrowed References , , (, &mut), , , . , Cyclone `r ( ) Rust '.
- . , Rust , , Cyclone. C++, (Box) (Rc) . Rust GC , Cyclone , .
- unsafe. Rust , , , , . .
, Rust , . , , .
, () . . , , , . , . ( Cyclone) , .
. Ada, restrict C, C++, Fortran, Java, , (-) .
, β . . 1992 Clean - . , ATS, Alms Mezzo, -. Rust , .
Rust , , , . . , .
, , , , (, Mutex) , Cell.
Midori M#
Midori β / , 2007 2014 . Singularity, , , ++ .
, , C# M#. C#, async/await, M#. , Cyclone ( Rust') ; M# ( ).
Cyclone Rust, Midori M# : C++ const, , , , , , , , , C++, D, Go Rust. Midori Cyclone. , Cyclone, /, Midori. , "", Cyclone, Singularity. , Singularity/Midori, ( Cyclone) Microsoft' Checked C, Cyclone.
Midori " ", Cyclone Rust. , ( ), union' . , , , , (.. , ).
M# . M# ( ): , , . , , ( ) -. , isolated, β : .
() . , () . , . , , .
, () , . ? , . , (writable), . , , , . , " ", , .
M# , . β " ", - , . , , - ( ) , .
M# (), "" . ( ) , . , , , . , , immutable isolated , - ( ).
, , M# . ( ) , . , Midori .
Pony
2014-5 - Pony. , - Erlang. , .
Pony , : , , , , , . M#, Pony . Pony , , , . .
Cone
, , , Cone.
Rust Pony . , , , . , Rust () Pony , , .
, Cyclone Rust and Pony. , . , Cyclone .
, Cone , Cyclone, , , . , , GC, , . , Cyclone, 15 , 1 . , , , .
1990 " !", β : " , , ". . , , , .
, , , , , , ( ) . D (.. ). Nim (.., .177), Google/IBM, Cyclone.
, . , Cyclone, , .
I am grateful to Greg Morriset, Graydon Hoare, Michael Hicks, Colin Gordon, and Dan Grossman for their invaluable feedback on an earlier version of this article, which opened my eyes to how many people contributed to the foundational ideas that led to these languages.
about the author
Jonathan Goodwin - 3D Web Evangelist. The author of the programming languages ββCone and Acorn.
[1] C ++ was not the first. Five years earlier (1992), Linear Lisp demonstrated the use of linear logic as a garbage collection solution.