Saudações a todos.
Apresento-lhes uma nova linguagem de programação que está causando certo burburinho no mundo informático, a
Rust.
Criada pelo canadense Graydon Hoare e atualmente desenvolvida pela Mozilla Research, esta linguagem é bastante citada pela segurança que proporciona ao código. A promessa, segundo
Hoare, é atrair programadores
C++.
O burburinho em questão, é o fato de a linguagem estar sendo constantemente comparada com outras, como Google Go, Facebook Hack e Apple Swift. E isto vem sendo o assunto principal de
diversas flame wars entre usuários dessas linguagens.
Deixando esta questão da briga de lado, vamos voltar a falar da Rust. Esta linguagem foi escolhida pela Mozilla para ser usada no projeto Servo, que trata de uma arquitetura paralelizada de
browser com ênfase em dispositivos móveis, processadores multi-core e GPUs de alto desempenho.
Os aspectos voltados para segurança mais interessantes dessa nova linguagem, são a proteção contra criação de ponteiros nulos ou oscilantes. Outro aspecto importantes, é o gerenciamento de
alocação de memória que dá maior proteção ao código contra os chamados buffers overflow.
Instalação
Para instalar Rust, é necessário atender às seguintes dependências relacionadas abaixo:
- g++ 4.4 ou clang++ 3.x;
- python 2.6 ou superior (nada de python 3.x);
- perl 5.0 ou superior;
- gnu make 3.81 ou superior;
- curl.
Após verificar todas as dependências, instale Rust usando os comandos no terminal:
curl -O https://static.rust-lang.org/dist/rust-nightly.tar.gz
tar -xzf rust-nightly.tar.gz
cd rust-nightly
./configure
sudo make && sudo make install
Pelo Git:
git clone https://github.com/rust-lang/rust
cd rust
./configure
sudo make
sudo make install
Uma ferramenta bastante útil é a Cargo, que abordarei mais a frente. Para instalar, use:
git clone https://github.com/rust-lang/cargo
cd cargo
./configure
sudo make
sudo make install
Dependências da ferramenta:
- rustc;
- python;
- curl;
- cmake;
- pkg-config;
- OpenSSL headers (libssldev no Ubuntu).
Eu recomendo, fortemente, usar o comando abaixo, pois já instala Rust e a ferramenta Cargo:
curl -s https://static.rust-lang.org/rustup.sh | sudo sh
Uma breve introdução
A sintaxe da linguagem é bastante parecida com
C/C++, mas é bem mais legível. Rust trabalha com a extensão
.rs.
Para compilar o código, usa-se:
rustc nome_programa.rs
Um exemplo de programa em Rust:
fn main() {
println!("Viva o
Linux!")
}
Para ver o
help, digite:
rustc -h
Para ler o manual:
man rustc
Para conhecer mais detalhes sobre a estrutura da linguagem Rust, acesse o link:
A ferramenta Cargo
Cargo é uma ferramenta que auxilia na compilação de projetos verificando possíveis dependências e baixando os arquivos quando necessário.
Para demonstração, criei uma pasta chamada
teste e criei os arquivos
teste_rust.rs e "
Cargo.toml", dentro dela.
Este é o conteúdo do arquivo
teste_rust.rs:
fn main() {
println!("Viva o Linux!")
}
O conteúdo de
Cargo.toml deve se parecer com isto:
[package]
name = "teste_rust"
version = "0.0.1"
authors = [ "Uberlan G. Soares" ]
[[bin]]
name = "teste_rust"
Agora, deve-se criar uma pasta
src e mover o código para seu interior. Comandos:
mkdir src
mv teste_rust.rs src/teste_rust.rs
Com tudo pronto, basta digitar o seguinte:
cargo build
Resultado:
Compiling teste_rust v0.0.1 (file:///home/uberlan/teste)
Cargo vai criar uma pasta chamada
target e vai colocar o executável dentro. Para executar o programa, basta digitar :
./target/teste_rust
Opcionalmente, você pode usar o comando
cargo run para compilar e executar o programa. Resultado:
Compiling teste_rust v0.0.1 (file:///home/uberlan/teste)
Running 'target/teste_rust'
Viva o Linux!
A ferramenta Cargo também pode ser usada para criar um projeto básico, já com a estrutura toda pronta. Para isso, basta usar o comando:
cargo new nome_do_programa -bin
Para ver como ficou, use o comando
tree. Resultado:
nome_do_programa
|__Cargo.toml
|__src
|__main.rs
Conclusão
Bem, pessoal. Encerro este artigo, desejando boa sorte a quem desejar se aprofundar mais nessa linguagem de programação que, a meu ver, demonstra uma evolução no quesito segurança.
Espero que gostem do artigo.
Referências: