Venha conhecer essa nova linguagem desenvolvida pela Mozilla, que foca em baixo nível, mas com a ergonomia que parece mais alto nível. "Essa palestra seria uma primeira introdução ao Rust, uma linguagem desenvolvida pela Mozilla. Rust é uma linguagem de programação para sistemas de baixo nível, com enfoque a velocidade, prevencão de erros de memória e segurança entre threads. Apesar de ser uma linguagem mais procedural que permite acesso baixo nivel, ideal para pequenos devices e programas gráficos, ela possui muitos dos beneficios de uma linguagem de alto nível. Muitos das construções que ela usa é bem familiar para quem está acostumado com o paradigma funcional, usando um sistema de tipos algebrico, não tem nulo e diversas outras coisas. Em breve, teremos partes do Firefox se beneficiando de todas essas novidades. Essa palestra seria uma introdução a linguagem, explicando o que eles buscam, um pouco de syntax, casos de uso atuais, ferramentas, comunidade, e todo o potencial que a ferramenta tem. Mais informações sobre a linguagem em https://www.rust-lang.org/
Bruno Tavares
Consultor na ThoughtWorks
@bltavares
O que me levou a me interessar por Rust?
Maiores e mais complexos
Meu laptop: Uma coleção de boostraps incompletos
Meu laptop: Uma coleção de boostraps incompletos
Projeto mais maduro em estrutura de entrega. Runtime complexo.
As coisas ficam simples depois de muita exposição
Sim
Dando uma olhada uma camada abaixo
Dando uma olhada uma camada abaixo
Dando uma olhada uma camada abaixo
Escolhas disponíveis
Motivos que me chamaram a atenção
Hello World
fn main() {
println!("Hello World");
}
Principios da linguagem
Rust is a systems programming language that runs blazingly fast, prevents segfaults, and guarantees thread safety.
Principios da linguagem
Rust é uma linguagem de programação para sistemas que executa rápido, previne erros acesso de memória, e garante segurança entre threads
Com conceitos novos e antigos
Com conceitos de liguagem funcional
Imutabilidade por padrão
fn main() {
let x = 1;
x = 2;
}
error: re-assignment of immutable variable `x` [E0384]
Imutabilidade por padrão
fn main() {
let mut x = 1;
x = 2;
}
Sistema de tipos algébricos
enum Color {
Red,
Blue,
Yellow,
}
Erros são explicitos
impl File {
fn open(path: Path) -> Result<File>
}
enum Result<T> {
Ok(T),
Err(io::Error)
}
Pattern matching
Não há null
fn main() {
let data : Vec<i32> = vec!();
match data.first() {
None => println!("Nope"),
Some(x) => println!("Here: {}", x),
}
}
Baixo que parece alto nível
for line in content.lines().filter(|x| x.is_empty()) {
let words: Vec<String> = line.split(PHRASE_TERMINATOR)
.flat_map(|x| x.split_whitespace())
.map(|x| x.to_owned())
.collect();
chain.feed(words);
}
let words: Vec<String> = chain.str_iter_for(100).collect();
Não deixa que eu faça erros comuns nessa camada
fn main() {
let valor = "Hello";
usa_e_libera_memoria(valor);
// println!("Valor agora: {}", valor);
}
Com conceitos de liguagem funcional
O que eu tenho visto que me mantém
Stability without stagination
Somos todos iniciantes em alguma área
Skylight Extendendo outros runtimes
Autumn Machine learning
Tessel IoT
Dropbox Plataforma
Chef Habitat Plataforma
cargo-rumpbake Unikernel
Por onde começar
@bltavares