Fórum sobre desenvolvimento de sistemas embarcados: Hardware e Software, Tecnologias: Eletrônica digital e analógica, Microcontroladoras, Microprocessadores, Sistemas *NIX (Linux, BSD), Software embarcado Baremetal. Sem fins lucrativos.
O Linux tem que ser reescrito em Rust (pois eu não sei C).
Rust é mais seguro: olha o programinha que eu fiz em Rust que seguro, vejam, muito mais seguro e melhor do que o programa rodando em C/C++ ( rodando provavelmente na máquina rodando Linux)
Eu acredito que a análise que vocês estão fazendo é um tanto simplista acerca da proposta. Existem vantagens e desvantagens na migração do código para Rust, e as vantagens que a migração traz são bastante relevantes. O próprio Linus Torvalds, que é um defensor ferrenho do C e considera esta a linguagem perfeita, entendeu estas vantagens e não se opôs (em um primeiro momento), e de maneira sensata ele preferiu se manter distante e ver no vai dar. Hoje quem defende a utilização do Rust no Linux são pessoas empolgadas com a ferramenta, e isso pode deixar as pessoas um tanto cegas a respeito da mesma, mas o fato do Linus não ter dito "nem a pau!" até agora, significa que migrar para Rust faz sentido e é até possível que venha a ocorrer.
De qualquer maneira, não enxergo que as pessoas estejam defendendo o Rust porque não sabem programar em C, ou porque o Rust seja mais fácil de programar. Eu não me aventurei em Rust por enquanto, mas o que li de relatos de muita gente é que fazer o compilador aceitar teu código Rust e compilar o mesmo é um porre, não pode deixar nenhuma ponta solta, qualquer coisa que ele considerar perigoso ele taca um erro na tua cara e não compila. Então migrar o Linux para Rust não vejo como questão de preguiça, muito pelo contrário, porque vai ser um trabalho gigantesco. A grande vantagem é deixar a cargo do compilador encontrar os mesmos erros de buffer overflow que aparecem sistematicamente, que abrem vulnerabilidades e instabilidades no kernel e usar um compilador mais esperto hoje em dia faz todo o sentido.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
xultz escreveu:Eu acredito que a análise que vocês estão fazendo é um tanto simplista acerca da proposta. Existem vantagens e desvantagens na migração do código para Rust, e as vantagens que a migração traz são bastante relevantes. O próprio Linus Torvalds, que é um defensor ferrenho do C e considera esta a linguagem perfeita, entendeu estas vantagens e não se opôs (em um primeiro momento), e de maneira sensata ele preferiu se manter distante e ver no vai dar. Hoje quem defende a utilização do Rust no Linux são pessoas empolgadas com a ferramenta, e isso pode deixar as pessoas um tanto cegas a respeito da mesma, mas o fato do Linus não ter dito "nem a pau!" até agora, significa que migrar para Rust faz sentido e é até possível que venha a ocorrer.
De qualquer maneira, não enxergo que as pessoas estejam defendendo o Rust porque não sabem programar em C, ou porque o Rust seja mais fácil de programar. Eu não me aventurei em Rust por enquanto, mas o que li de relatos de muita gente é que fazer o compilador aceitar teu código Rust e compilar o mesmo é um porre, não pode deixar nenhuma ponta solta, qualquer coisa que ele considerar perigoso ele taca um erro na tua cara e não compila. Então migrar o Linux para Rust não vejo como questão de preguiça, muito pelo contrário, porque vai ser um trabalho gigantesco. A grande vantagem é deixar a cargo do compilador encontrar os mesmos erros de buffer overflow que aparecem sistematicamente, que abrem vulnerabilidades e instabilidades no kernel e usar um compilador mais esperto hoje em dia faz todo o sentido.
Não tenho nada contra, mas acho irônico o jeito que falam:
Tem que reescrever tudo em Rust pois é mais seguro. Diz o cara que compara o programa feito em Rust VS programa feito em C/C++ , ambos rodando sob um linux hahahahah
Eu dei uma olhada no Rust, num achei mais simples que C/C++, mas não vi sentido em usar, pelo menos não pra mim, em minhas aplicações.
Você pode habilitar Warnings no gcc por exemplo para travar a compilação a qualquer mensagem, sem deixar gerar o executável, até agora num vi vantagem.
É claro que o Linus num vai falar "nem a pau", fui tentar falar com algumas pessoas que usam Rust e parece uma ceita. Mas o Linus já disse algo parecido com o "nem a pau" aqui (e eu concordo com ele.):
Sim, RUST é bem exigente, não deixa desde o inicio da codificação você cometer erros...no começo um paradigma estranho, mas é questão de se acostumar...
Por exemplo, se você atribui A=B; qual o sentido de você utilizar B ? Ele te questiona direto.
Outra coisa, toda variável é IMUTABLE, pq você esta fazendo A=23 ?
A sintaxe é assustadora, nas gera um código muito seguro
Expressões que não utilizamos na linguagem tradicional
Valor Retorno de função, basta colocar se ; no final...
Vários detalhes que confunde no começo, mas como falei...é para se acostumar...
Forte para tratamento de exceção
Roda muito bem nos ARM
Baseado no compilador LLVM
O pessoal esta portando para Mynewt, Zephyr, RIOT, Nuttx e outros mais...
Estão tem problemas em portar para o ESP-IDF SDK RTOS
Roda bem com auto-complete do Microsoft Visual Code
Cansativo para aprender, se você é do tempo da programação estrutura, partiu para eventos, depois declarativa, orientada o objetos (Rust não é OOP)
tcpipchip escreveu:Sim, RUST é bem exigente, não deixa desde o inicio da codificação você cometer erros...no começo um paradigma estranho, mas é questão de se acostumar...
Por exemplo, se você atribui A=B; qual o sentido de você utilizar B ? Ele te questiona direto.
Outra coisa, toda variável é IMUTABLE, pq você esta fazendo A=23 ?
A sintaxe é assustadora, nas gera um código muito seguro
Expressões que não utilizamos na linguagem tradicional
Valor Retorno de função, basta colocar se ; no final...
Vários detalhes que confunde no começo, mas como falei...é para se acostumar...
Forte para tratamento de exceção
Roda muito bem nos ARM
Baseado no compilador LLVM
O pessoal esta portando para Mynewt, Zephyr, RIOT, Nuttx e outros mais...
Estão tem problemas em portar para o ESP-IDF SDK RTOS
Roda bem com auto-complete do Microsoft Visual Code
Cansativo para aprender, se você é do tempo da programação estrutura, partiu para eventos, depois declarativa, orientada o objetos (Rust não é OOP)
Eu não entendi isso:
Outra coisa, toda variável é IMUTABLE, pq você esta fazendo A=23 ?
se é imutável , num é variável! ? é constante? Toda variável é constante?
A questão é que ninguém (que eu tenha visto) sugere fazer um del *.* no fonte do Linux e recomeçar tudo do zero em Rust, isso seria insano. A ideia é que novos códigos sejam implementados em Rust, e a primeira barreira a se vencer é ter certeza que binários escritos em C e Rust no Linux conversem entre si sem dificuldades. Aparentemente este ponto está bem definido, haja visto que já existe código feito em Rust no Linux atualmente. Tanto o Linus quanto o Kroah-Hartman defendem que o ponto de partida é que novos drivers sejam escritos em Rust, porque esses códigos são onde a questão da segurança e estabilidade pegam. Eu não acredito num curto prazo ocorra nenhum tipo de imposição a respeito de que novos códigos sejam obrigatoriamente escritos em Rust, isso vai ser uma escolha do programador que está fazendo o código (é importante lembrar que o Linux é fruto de contribuição de milhares de programadores mundo afora). Mas se pensar na análise desses dois pesquisadores que quase 2/3 das vulnerabilidades são resultantes de buffers overflow que poderiam ter sido detectados em tempo de compilação se fosse feitos em Rust, migrar novos códigos de seções críticas (em relação a segurança) para Rust faz todo o sentido.
98% das vezes estou certo, e não estou nem aí pros outros 3%.
O que eu achei interessante de go é a integração fácil entre c vs go, inclusive se colocar código c no projeto go ele compila e links fácil além de ser fácil gerar lib dinâmica no go e chamar em c/c++ . Fiz isso em pouco tempo em uma aplicação que eu precisava de uma função específica que já estava implementado e funcionando em GO. Estudei um pouco, criei uma lib shared e depois continuei com minha aplicação em c++ chamando o que eu precisava da lib feita em go.
Pelo pouco que estou estudando de Rust, até agora não me convenceu.