Interesante influencia del ciclón

Tabla de contenido:



  • Ciclón
  • C ++, propiedad y alias
  • Oxido
  • M # de Midori
  • Poni
  • Cono
  • Resumen


En 2001, Jim Trevor (AT&T Research) y Greg Morrisett (Cornell) lanzaron un proyecto conjunto para desarrollar un dialecto seguro del lenguaje de programación C como un desarrollo del trabajo anterior en Typed Assembler . Después de cinco años de arduo trabajo y varios artículos científicos publicados , el equipo (incluidos Dan Grossman, Michael Hicks, Nick Swami y otros ) lanzó Cyclone 1.0 . Y luego los desarrolladores pasaron a otras cosas.



Pocos han oído hablar de Cyclone y casi nadie lo ha usado. Y, sin embargo, cuando arrojas la piedra correcta a un estanque preparado, el agua continúa divergiendo en círculos durante mucho tiempo. Cyclone era una piedra grande y bien tallada; y las pulsaciones de su espíritu, así como las innovaciones que se destacaron por primera vez en él, continúan extendiéndose de manera no trivial.



Antes de contar esta historia, les advierto: la innovación y la influencia es un proceso social complejo. Nada nuevo surge en el vacío. Miles de personas arrojan cada año nuevas piedras interesantes al estanque, bajo la influencia de las que ya se han lanzado. Pero ningún artículo puede cubrir todas estas ondas caóticas por completo.



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



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



Estoy agradecido a Greg Morriset, Graydon Hoare, Michael Hicks, Colin Gordon y Dan Grossman por sus invaluables comentarios sobre una versión anterior de este artículo, que me abrió los ojos a la cantidad de personas que contribuyeron a las ideas fundamentales que llevaron a estos idiomas.



Sobre el Autor



Jonathan Goodwin - Evangelista web 3D. Autor de los lenguajes de programación Cone y Acorn.



[1] C ++ no fue el primero. Cinco años antes (1992), Linear Lisp demostró el uso de lógica lineal como solución de recolección de basura.




All Articles