Prefiere Rust sobre C / C ++ para código nuevo

2019-02-07



  • Cuando usar Rust
  • Cuando no usar Rust
  • Cuándo usar C / C ++
  • Falsas razones para usar C / C ++
  • Apéndice: mi historia con C / C ++
  • Aplicación: coro


Este es un documento de posición que distribuí originalmente dentro de la comunidad de firmware en X. Recibí solicitudes de un enlace público, así que limpié el artículo y lo publiqué en el blog. Esta es obviamente mi opinión personal. Por favor, lea todo antes de enviarme correos electrónicos enojados.



TL; DR: C / C ++ tiene suficientes fallas de diseño y las herramientas de desarrollo alternativo ya están en muy buena forma, por lo que no recomiendo usar C / C ++ para nuevos desarrollos excepto en circunstancias especiales. Para situaciones en las que realmente necesita el poder de C / C ++, use Rust en su lugar . En otras situaciones, no debería usar C / C ++ de todos modos, use otra cosa.



Cuando usar Rust



, , , , ( 30 ) C C++. , , (buffer overflows), (dangling pointers), (race conditions), (integer overflows) .



: , , C. , , .



C/C++, , :



  • .
  • .
  • , .
  • , .


Rust , . , , C.



( … , .)



Rust 2013 . 2018 ^1^ , , , . C++11 2011 , Rust , C++11 GCC . - .



2018? " " (, ), Rust (nightly Rust toolchain). 2018 .



. , , C++ Rust. , , . Rust , .



Rust



Rust , C/C++, Rust , , C/C++. , . 2019 ; . Rust , .



: (symbolic algebra evaluator), (concurrent persistent data structure) - , , , , - — , - , Rust. C++, , Rust, . Swift^2^, Go, Typescript, Python Kotlin/Java — .



, , Swift , , , .



C/C++



, C/C++:



  • , , - . , Arduino. .



  • . , , Ada, , C.



  • Rust. Rust , LLVM, , GCC. , , 68HC11 68000. (Rust MSP430, Cortex-M .., AVR ). , , . IBM System 390.



  • , / (toolchain) . , - Rust. , - GCC, CodeSourcery.



  • , , rustc , , rustc . Rustc , GCC. , . C++; Rust , GCC.



  • C++, C++ , API (, extern "C", (pipes) RPC). C++ , . (Swift, , .) - "".





C/C++



, , .



C/C++ 30+ , /.



, . .



C C++ , C, , , , .



Rust , , Swift C++ (Clang). , C/C++.



C/C++, .



… . C/C++ , , , . , C++, , . , (UB). , Rust.



, C/C++ , , . , , .



Rust , .



C , , , Rust ( ). , , , Learning Rust With Allly Too Many Linked Lists.



C/C++ , , / SMP . Rust.



; , C++ , , Rust . — , .



: C/C++



, C++ , . , .



C 1993 , C++ 2002 , . , Google, Qt, Chrome, , . Loon, C++ ( 99); C++11 ( 2011 ), , . , X C++, C .



Loon " " C++ crt0.o Cortex-M, ; . C++, Rust- . C++ … , , . "" ().



: , , C++ , . C++ , .



:



. :-)



(Chris Palmer): State of Software Security 2019: ( )



C++ … , … , C++.

(Alex Gaynor) The Internet Has a Huge C/C++ Problem and Developers Don't Want to Deal With It ( Vice, ):



. , Windows Firefox . , , , . , , .

( .)



Manish Goregaokar Mozilla, ycombinator fuzzing Rust Firefox , C++ , :



, . Rust .

fuzzing Rust firefox, … ( / «» ). , Gecko .

Copyright 2011-2019 Cliff L. Biffle — Contact




All Articles