Interessanter Einfluss von Cyclone

Inhaltsverzeichnis:



  • Zyklon
  • C ++, Besitz und Aliase
  • Rost
  • Midoris M #
  • Pony
  • Kegel
  • Zusammenfassung


Im Jahr 2001 starteten Jim Trevor (AT & T Research) und Greg Morrisett (Cornell) ein gemeinsames Projekt zur Entwicklung eines sicheren Dialekts der Programmiersprache C - als Folge früherer Arbeiten zu Typed Assembler . Nach fünf Jahren harter Arbeit und mehreren veröffentlichten wissenschaftlichen Arbeiten veröffentlichte das Team (einschließlich Dan Grossman, Michael Hicks, Nick Swami und anderer ) Cyclone 1.0 . Und dann gingen die Entwickler zu anderen Dingen über.



Nur wenige haben von Cyclone gehört, und fast niemand hat es benutzt. Und doch, wenn Sie den richtigen Stein in einen vorbereiteten Teich werfen, divergiert das Wasser noch lange im Kreis. Der Zyklon war ein großer, gut geschnittener Stein; und die Pulsationen seines Geistes sowie die Innovationen, die zuerst in ihm hervorgehoben wurden, verbreiten sich weiterhin auf nicht triviale Weise.



Bevor ich diese Geschichte erzähle, eine Warnung: Innovation und Einfluss sind ein komplexer sozialer Prozess. Im luftleeren Raum entsteht nichts Neues. Tausende von Menschen werfen jedes Jahr neue interessante Steine ​​in den Teich, unter dem Einfluss der bereits geworfenen. Aber kein Artikel kann all diese chaotischen Wellen vollständig abdecken.



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



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



Ich bin Greg Morriset, Graydon Hoare, Michael Hicks, Colin Gordon und Dan Grossman für ihr wertvolles Feedback zu einer früheren Version dieses Artikels dankbar, das mir die Augen geöffnet hat, wie viele Menschen zu den grundlegenden Ideen beigetragen haben, die zu diesen Sprachen geführt haben.



Über den Autor



Jonathan Goodwin - 3D Web Evangelist. Der Autor der Programmiersprachen Cone und Acorn.



[1] C ++ war nicht das erste. Fünf Jahre zuvor (1992) demonstrierte Linear Lisp die Verwendung linearer Logik als Speicherbereinigungslösung.




All Articles