Rust (linguagem de programação)
Rust | |
---|---|
Paradigma | orientada a objetos, estruturada, imperativa compilada, concorrente, funcional |
Surgido em | 2010 |
Última versão | 1.4.0 (29 de outubro de 2015 | )
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
- ↑ «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) - ↑ «The Rust Programming Language». Consultado em 21 de outubro de 2012
- ↑ «Doc language FAQ». Consultado em 21 de outubro de 2012
- ↑ «Announcing Rust 1.0 - The Rust Programming Language Blog». blog.rust-lang.org. Consultado em 12 de outubro de 2015
- ↑ «Rust in 2016 - The Rust Programming Language Blog». blog.rust-lang.org. Consultado em 12 de outubro de 2015
- ↑ «servo/servo». GitHub. Consultado em 12 de outubro de 2015
- ↑ «Rust Means Never Having to Close a Socket». Inside Skylight. Consultado em 12 de outubro de 2015
- ↑ «Fearless Concurrency with Rust - The Rust Programming Language Blog». blog.rust-lang.org. Consultado em 12 de outubro de 2015
- ↑ http://www.stroustrup.com/ETAPS-corrected-draft.pdf
- ↑ «Abstraction without overhead: traits in Rust - The Rust Programming Language Blog». blog.rust-lang.org. Consultado em 12 de outubro de 2015
- ↑ GitHub: Rust
- ↑ The Rust Programming Language