旋风的有趣影响

目录:



  • 气旋
  • C ++,所有权和别名
  • Midori的M#
  • 小马
  • 锥体
  • 概要


2001年,Jim Trevor(AT&T研究公司)和Greg Morrisett(康奈尔公司)发起了一个联合项目,以开发C编程语言的安全方言,这是对Typed Assembler的早期工作的发展。经过五年的艰苦努力和几篇科学论文发表后,该团队(包括Dan Grossman,Michael Hicks,Nick Swami)发布了Cyclone 1.0。然后,开发人员继续进行其他工作。



很少有人听说过旋风,而且几乎没有人使用过它。但是,当您将正确的石头扔到准备好的池塘中时,水在很长一段时间内仍会继续分流。旋风是一块大巧的切割好的石头。他精神的脉动以及他最初所强调的创新,继续以不平凡的方式传播。



在我讲这个故事之前,有一个警告:创新和影响力是一个复杂的社会过程。真空中没有新事物出现。在已经扔掉的石头的影响下,每年有成千上万的人把新的有趣的石头扔进池塘。但是,没有一篇文章可以完全涵盖所有这些混乱的涟漪。



, : , ("") . , . . , .



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, , .



我感谢Greg Morriset,Graydon Hoare,Michael Hicks,Colin Gordon和Dan Grossman对本文早期版本的宝贵反馈,这让我看到有多少人为促成这些语言的基础思想做出了贡献。



关于作者



Jonathan Goodwin-3D网络传播者。编程语言锥和橡子的作者。



[1] C ++不是第一个。五年前(1992年),Linear Lisp演示了将线性逻辑用作垃圾回收解决方案的方法。




All Articles