Rust (linguagem de programação)

Origem: Wikipédia, a enciclopédia livre.
Rust
Paradigma orientada a objetos, estruturada, imperativa compilada, concorrente, funcional
Surgido em 2010
Última versão 1.4.0 (29 de outubro de 2015; há 8 anos)
Criado por Graydon Hoare, Rust Project Developers, Mozilla
Estilo de tipagem Estática, forte, inferida
Principais implementações rustc
Influenciada por Alef, C#, C++, Cyclone, Erlang, Haskell, Hermes, Limbo, Newsqueak, NIL, Ocaml, Ruby, Standard ML, Swift
Influenciou Swift, Idris
Licença: Licença MIT
Página oficial rust-lang.org

Rust é uma linguagem de programação multi-paradigma compilada desenvolvida pela Mozilla Research.[1] É projetada para ser "segura, concorrente e prática",[2][3] suportando os estilos puramente funcional, procedural, e orientado a objetos.

A linguagem apareceu como um projeto pessoal do empregado da Mozilla Graydon Hoare. A organização começou a apoiar o projeto em 2009 e anunciou-o em 2010. No mesmo ano, os esforços mudaram do compilador original (escrito em OCaml) para um auto-hospedado feito em Rust. Conhecido por rustc, conseguiu compilar-se pela primeira vez em 2011 e utiliza o LLVM como back-end.

Foi lançada pela primeira vez uma versão numerada pré-alfa em 2012. Rust 1.0, a primeira versão estável, foi lançada em 15 de Maio de 2015.[4]

Design

Rust se baseia nos seguintes princípios: Segurança sem coletor de lixo, concorrência sem corrida de dados e abstração sem overhead.[5] Estes princípios fazem com que Rust seja rápida para ser usada em aplicações de baixo nível como o browser Servo[6] e também prática para projetos de alto nível.

Em Rust não existem ponteiros nulos ou ponteiros soltos, impossibilitando falhas de segmentação. Rust gerencia memória e recursos automaticamente,[7] sem necessitar de um coletor de lixo.

A linguagem impede corridas de dados entre threads pois não é possível que duas threads possam modificar um mesmo valor ao mesmo tempo. Para que uma referência possa ser compartilhada entre várias threads, ela deve ser somente leitura. Existem diversas técnicas seguras de comunicação entre threads.[8]

O princípio de abstração sem overhead vem do C++. Nas palavras de Bjarne Stroustrup: "Você não paga por aquilo que você não usa. E mais: Aquilo que você usa, não conseguiria programar melhor a mão".[9] Rust permite um alto grau de abstração através do sistema de traits, que são interfaces que podem ser implementadas separadamente da declaração de um tipo.[10] Tipos genéricos são utilizados extensamente.

Versões

O histórico de versões da linguagem compreende 12 lançamentos em pré-alfa desde o ano de 2012.[11] Rust utiliza versionamento semântico. Uma nova versão estável é lançada a cada 6 semanas.

Versão Data de Lançamento Tipo
0.1 20 de janeiro de 2012 Pré-alfa
0.2 28 de março de 2012 Pré-alfa
0.3 12 de junho de 2012 Pré-alfa
0.4 12 de outubro de 2012 Pré-alfa
0.5 20 de dezembro de 2012 Pré-alfa
0.6 2 de fevereiro de 2013 Pré-alfa
0.7 3 de junho de 2013 Pré-alfa
0.8 26 de setembro de 2013 Pré-alfa
0.9 9 de janeiro de 2014 Pré-alfa
1.0.0 15 de maio de 2015 Estável
1.1.0 25 de junho de 2015 Estável
1.2.0 7 de agosto de 2015 Estável
1.3.0 17 de setembro de 2015 Estável

Programa "Olá Mundo"

fn main() {
    println!("Hello, world!");
}

Pode ser compilado e executado com (considerando que o arquivo se chame main.rs)[12]:

$ rustc main.rs
$ ./main

Ver também

Referências

  1. «The Rust Language». Lambda the Ultimate. 8 de julho de 2010. Consultado em 30 de outubro de 2010  |nome1= sem |sobrenome1= em Authors list (ajuda)
  2. «The Rust Programming Language». Consultado em 21 de outubro de 2012 
  3. «Doc language FAQ». Consultado em 21 de outubro de 2012 
  4. «Announcing Rust 1.0 - The Rust Programming Language Blog». blog.rust-lang.org. Consultado em 12 de outubro de 2015 
  5. «Rust in 2016 - The Rust Programming Language Blog». blog.rust-lang.org. Consultado em 12 de outubro de 2015 
  6. «servo/servo». GitHub. Consultado em 12 de outubro de 2015 
  7. «Rust Means Never Having to Close a Socket». Inside Skylight. Consultado em 12 de outubro de 2015 
  8. «Fearless Concurrency with Rust - The Rust Programming Language Blog». blog.rust-lang.org. Consultado em 12 de outubro de 2015 
  9. http://www.stroustrup.com/ETAPS-corrected-draft.pdf
  10. «Abstraction without overhead: traits in Rust - The Rust Programming Language Blog». blog.rust-lang.org. Consultado em 12 de outubro de 2015 
  11. GitHub: Rust
  12. The Rust Programming Language

Ligações externas