TAnOTaTU -- 10h A sua pergunta é extremamente pertinente, pois toca no centro do debate atual sobre a evolução das linguagens de programação em sistemas críticos de segurança. Rust, de fato, emerge como um candidato de peso para desafiar a hegemonia de décadas de Ada, C e C++ na indústria aeroespacial, e sua trajetória é marcada por promessas técnicas significativas e por um esforço concentrado da comunidade para superar as rigorosas barreiras da certificação. A relevância do Rust para esse setor é tanta que, em 2024, a Rust Foundation, em conjunto com empresas-chave como AdaCore, Arm, Ferrous Systems e Woven by Toyota, anunciou a formação do Safety-Critical Rust Consortium. O objetivo declarado deste consórcio é fomentar o uso responsável do Rust em softwares cuja falha pode resultar em danos a pessoas, propriedades ou ao meio ambiente, um escopo que abrange diretamente os setores automotivo, aeroespacial e de defesa. As Vantagens Técnicas: O Fator Segurança de Memória O principal argumento para a adoção de Rust reside em suas garantias de segurança de memória (memory safety). Diferentemente de C e C++, onde erros como buffer overflows, use-after-free e corridas de dados (data races) são fontes comuns e perigosas de vulnerabilidades, o modelo de ownership (propriedade) e o borrow checker (verificador de empréstimo) de Rust previnem essas classes inteiras de bugs em tempo de compilação, e sem a necessidade de um garbage collector. Essa característica é uma vantagem decisiva, pois permite a criação de código eficiente e previsível, com um footprint de memória controlado — requisitos inegociáveis em sistemas embarcados de tempo real. Um engenheiro de firmware entrevistado no blog oficial do Rust, com experiência em sistemas certificados pela IEC 61508, resumiu essa vantagem ao afirmar que Rust apresentou uma oportunidade onde "90% do que as ferramentas de análise de pilha tinham que verificar é simplesmente feito pelo compilador". Essa garantia em nível de linguagem reduz o esforço de verificação e o custo associado à criação de evidências para a certificação. Quando comparado a Ada, uma linguagem com décadas de história em sistemas críticos, ambos compartilham o objetivo de produzir software seguro, mas por caminhos distintos. Ada e seu subconjunto SPARK inclinam-se fortemente para a tipagem forte, contratos e métodos formais para provar a correção do programa. Rust, por outro lado, aposta em seu modelo de ownership para eliminar bugs de memória sem recorrer a um garbage collector. Uma visão emergente na indústria de defesa sugere uma abordagem híbrida: usar Ada para a lógica de controle de segurança mais crítica e Rust para gerenciar comunicações seguras ou novos subsistemas com requisitos rigorosos de cibersegurança. A Jornada Rumo à Certificação DO-178C Apesar de seu potencial, a adoção do Rust na aviônica de mais alta criticidade ainda está em seus estágios iniciais. A DO-178C não certifica uma linguagem, mas sim um ecossistema de ferramentas e processos. Para que o Rust seja utilizável em um sistema DAL A, um caminho de qualificação precisa ser estabelecido. É justamente nesse ponto que a comunidade e a indústria estão trabalhando ativamente. O Pilar Ferramental: Ferrocene e Compiladores Qualificados Para qualquer linguagem seriamente considerada para sistemas críticos, é necessário um compilador qualificado. O esforço mais notável nessa área é o Ferrocene, um toolchain de compilação desenvolvido pela Ferrous Systems. O Ferrocene é um fork de downstream do compilador oficial rustc, que passou por um rigoroso processo de qualificação. Ele já é certificado pela TÜV SÜD para os mais altos níveis de integridade de segurança para as normas ISO 26262 (automotiva, ASIL D) e IEC 61508 (industrial, SIL 3, com planos para SIL 4). Embora ainda não seja oficialmente qualificado para a DO-178C, a Ferrous Systems declara explicitamente seus planos de buscar essa qualificação, o que posiciona o Ferrocene como o principal candidato a viabilizar o Rust na aviônica a curto prazo. Em paralelo, a HighTec, outro membro do Safety-Critical Rust Consortium, também oferece um compilador Rust qualificado para ISO 26262 ASIL D, permitindo uma abordagem híbrida que combina código legado C/C++ com módulos modernos em Rust, um passo importante para a adoção gradual da linguagem na indústria. O Desafio da Cobertura de Código: MC/DC Um dos requisitos mais estritos para software de nível A na DO-178C é demonstrar a cobertura de decisão modificada/condição (MC/DC). Até recentemente, uma barreira técnica para o Rust era a ausência de ferramentas capazes de medir essa métrica no código gerado. Esse cenário, contudo, mudou drasticamente. A comunidade Rust já possui suporte estável e de fácil acesso para a geração de relatórios MC/DC que atendem aos requisitos da DO-178C, ISO 26262 e IEC 61508, principalmente através de ferramentas como cargo llvm-cov. No domínio acadêmico, que pavimenta o caminho para a indústria, um artigo fundamental "Toward Modified Condition/Decision Coverage of Rust" (Rumo à Cobertura de Decisão/Condição Modificada em Rust) investigou e clarificou as ambiguidades na aplicação do MC/DC às construções específicas do Rust, como o pattern matching. Este trabalho fornece a base teórica para a implementação de ferramentas de medição e é um marco essencial para o uso do Rust em aplicações de alta garantia. O ecossistema de ferramentas de verificação também está amadurecendo para atender às exigências de rastreabilidade e análise de pior tempo de execução (WCET). Um exemplo é a parceria entre a AdaCore (com seu GNAT Pro para Rust) e a Rapita Systems (com sua Rapita Verification Suite), que demonstra como gerar as evidências de auditoria exigidas pela DO-178C de forma integrada, cobrindo desde a rastreabilidade de requisitos até a análise de cobertura e tempo de execução. Avaliações da Indústria: A Visão do DLR e da ESA O Centro Aeroespacial Alemão (DLR) realizou uma avaliação abrangente sobre a viabilidade do Rust para o desenvolvimento de software aviônico, publicada em 2025. O estudo conclui que Rust é um candidato promissor, pois oferece as características de segurança de memória e concorrência desejadas, e propõe um caminho de adoção gradual, incluindo a qualificação para padrões aeroespaciais. Contudo, o DLR também destaca com clareza que Rust precisa competir e se integrar a um ecossistema já estabelecido e dominado por C/C++. Da mesma forma, a Agência Espacial Europeia (ESA) patrocinou atividades para avaliar o uso de Rust em aplicações espaciais. Um dos resultados concretos foi o desenvolvimento do Aerugo, um RTOS de código aberto escrito em Rust e orientado a aplicações críticas de segurança, como parte de um esforço maior para criar um ecossistema funcional (BSP, RTOS e aplicação de demonstração) para microcontroladores como o ARM Cortex-M7 SAMV71. Aplicações em Andamento e o Estado Atual É crucial entender que Rust não é mais uma linguagem meramente experimental nesse campo. Ela já está em produção em sistemas críticos de segurança, ainda que em um espectro de criticidade que não atinge o topo da DO-178C. Na robótica móvel, por exemplo, sistemas certificados pela IEC 61508 SIL 2 já estão operando com código Rust. No setor aeroespacial e de defesa, o foco atual está em projetos de pesquisa e desenvolvimento, como frameworks de software de voo para satélites (ex: sat-rs), controladores de drones baseados em ArduPilot (ex: airborne-oxide) e arquiteturas para software de voo ciber-resiliente (ex: Alcyone). O ecossistema de bibliotecas, embora ainda não maduro como o de C/C++, está em franca expansão, com projetos como o AeroRust oferecendo crates para protocolos como o MAVLink, que é fundamental para a comunicação com drones. Para a adoção plena em aviônica civil (DO-178C DAL A), a indústria ainda aguarda pela qualificação oficial de um compilador e de um RTOS que suporte Rust. No entanto, os blocos fundamentais estão sendo construídos: 1. O consórcio da indústria foi estabelecido. 2. O compilador (Ferrocene) está qualificado para normas análogas e mira a DO-178C. 3. As ferramentas de verificação para MC/DC e análise temporal estão em desenvolvimento ou em demonstração. 4. Um subconjunto certificado da biblioteca core do Rust (essencial para aplicações embarcadas no_std) já foi certificado pela TÜV SÜD para IEC 61508 SIL 2, removendo uma enorme barreira para o desenvolvimento de aplicações robustas e certificadas. Em conclusão, Rust não tornou Ada ou C irrelevantes para a aviônica, mas representa uma evolução significativa e necessária. Seu modelo de segurança de memória, combinado com o esforço concertado de qualificação ferramental, o posiciona de forma única para ser a linguagem que, no futuro, ajudará a construir sistemas aeroespaciais mais seguros e protegidos, não por substituir as linguagens existentes de uma só vez, mas por oferecer um novo e poderoso caminho gradual para o desenvolvimento de software crítico. A pergunta que paira não é mais "se", mas "quando" e "com que profundidade" o Rust permeará a cabine de comando. replyA sua pergunta é extremamente pertinente, pois toca no centro do debate atual sobre a evolução das linguagens de programação em sistemas críticos de segurança. Rust, de fato, emerge como um candidato de peso para desafiar a hegemonia de décadas de Ada, C e C++ na indústria aeroespacial, e sua trajetória é marcada por promessas técnicas significativas e por um esforço concentrado da comunidade para superar as rigorosas barreiras da certificação. A relevância do Rust para esse setor é tanta que, em 2024, a Rust Foundation, em conjunto com empresas-chave como AdaCore, Arm, Ferrous Systems e Woven by Toyota, anunciou a formação do Safety-Critical Rust Consortium. O objetivo declarado deste consórcio é fomentar o uso responsável do Rust em softwares cuja falha pode resultar em danos a pessoas, propriedades ou ao meio ambiente, um escopo que abrange diretamente os setores automotivo, aeroespacial e de defesa. As Vantagens Técnicas: O Fator Segurança de Memória O principal argumento para a adoção de Rust reside em suas garantias de segurança de memória (memory safety). Diferentemente de C e C++, onde erros como buffer overflows, use-after-free e corridas de dados (data races) são fontes comuns e perigosas de vulnerabilidades, o modelo de ownership (propriedade) e o borrow checker (verificador de empréstimo) de Rust previnem essas classes inteiras de bugs em tempo de compilação, e sem a necessidade de um garbage collector. Essa característica é uma vantagem decisiva, pois permite a criação de código eficiente e previsível, com um footprint de memória controlado — requisitos inegociáveis em sistemas embarcados de tempo real. Um engenheiro de firmware entrevistado no blog oficial do Rust, com experiência em sistemas certificados pela IEC 61508, resumiu essa vantagem ao afirmar que Rust apresentou uma oportunidade onde "90% do que as ferramentas de análise de pilha tinham que verificar é simplesmente feito pelo compilador". Essa garantia em nível de linguagem reduz o esforço de verificação e o custo associado à criação de evidências para a certificação. Quando comparado a Ada, uma linguagem com décadas de história em sistemas críticos, ambos compartilham o objetivo de produzir software seguro, mas por caminhos distintos. Ada e seu subconjunto SPARK inclinam-se fortemente para a tipagem forte, contratos e métodos formais para provar a correção do programa. Rust, por outro lado, aposta em seu modelo de ownership para eliminar bugs de memória sem recorrer a um garbage collector. Uma visão emergente na indústria de defesa sugere uma abordagem híbrida: usar Ada para a lógica de controle de segurança mais crítica e Rust para gerenciar comunicações seguras ou novos subsistemas com requisitos rigorosos de cibersegurança. A Jornada Rumo à Certificação DO-178C Apesar de seu potencial, a adoção do Rust na aviônica de mais alta criticidade ainda está em seus estágios iniciais. A DO-178C não certifica uma linguagem, mas sim um ecossistema de ferramentas e processos. Para que o Rust seja utilizável em um sistema DAL A, um caminho de qualificação precisa ser estabelecido. É justamente nesse ponto que a comunidade e a indústria estão trabalhando ativamente. O Pilar Ferramental: Ferrocene e Compiladores Qualificados Para qualquer linguagem seriamente considerada para sistemas críticos, é necessário um compilador qualificado. O esforço mais notável nessa área é o Ferrocene, um toolchain de compilação desenvolvido pela Ferrous Systems. O Ferrocene é um fork de downstream do compilador oficial rustc, que passou por um rigoroso processo de qualificação. Ele já é certificado pela TÜV SÜD para os mais altos níveis de integridade de segurança para as normas ISO 26262 (automotiva, ASIL D) e IEC 61508 (industrial, SIL 3, com planos para SIL 4). Embora ainda não seja oficialmente qualificado para a DO-178C, a Ferrous Systems declara explicitamente seus planos de buscar essa qualificação, o que posiciona o Ferrocene como o principal candidato a viabilizar o Rust na aviônica a curto prazo. Em paralelo, a HighTec, outro membro do Safety-Critical Rust Consortium, também oferece um compilador Rust qualificado para ISO 26262 ASIL D, permitindo uma abordagem híbrida que combina código legado C/C++ com módulos modernos em Rust, um passo importante para a adoção gradual da linguagem na indústria. O Desafio da Cobertura de Código: MC/DC Um dos requisitos mais estritos para software de nível A na DO-178C é demonstrar a cobertura de decisão modificada/condição (MC/DC). Até recentemente, uma barreira técnica para o Rust era a ausência de ferramentas capazes de medir essa métrica no código gerado. Esse cenário, contudo, mudou drasticamente. A comunidade Rust já possui suporte estável e de fácil acesso para a geração de relatórios MC/DC que atendem aos requisitos da DO-178C, ISO 26262 e IEC 61508, principalmente através de ferramentas como cargo llvm-cov. No domínio acadêmico, que pavimenta o caminho para a indústria, um artigo fundamental "Toward Modified Condition/Decision Coverage of Rust" (Rumo à Cobertura de Decisão/Condição Modificada em Rust) investigou e clarificou as ambiguidades na aplicação do MC/DC às construções específicas do Rust, como o pattern matching. Este trabalho fornece a base teórica para a implementação de ferramentas de medição e é um marco essencial para o uso do Rust em aplicações de alta garantia. O ecossistema de ferramentas de verificação também está amadurecendo para atender às exigências de rastreabilidade e análise de pior tempo de execução (WCET). Um exemplo é a parceria entre a AdaCore (com seu GNAT Pro para Rust) e a Rapita Systems (com sua Rapita Verification Suite), que demonstra como gerar as evidências de auditoria exigidas pela DO-178C de forma integrada, cobrindo desde a rastreabilidade de requisitos até a análise de cobertura e tempo de execução. Avaliações da Indústria: A Visão do DLR e da ESA O Centro Aeroespacial Alemão (DLR) realizou uma avaliação abrangente sobre a viabilidade do Rust para o desenvolvimento de software aviônico, publicada em 2025. O estudo conclui que Rust é um candidato promissor, pois oferece as características de segurança de memória e concorrência desejadas, e propõe um caminho de adoção gradual, incluindo a qualificação para padrões aeroespaciais. Contudo, o DLR também destaca com clareza que Rust precisa competir e se integrar a um ecossistema já estabelecido e dominado por C/C++. Da mesma forma, a Agência Espacial Europeia (ESA) patrocinou atividades para avaliar o uso de Rust em aplicações espaciais. Um dos resultados concretos foi o desenvolvimento do Aerugo, um RTOS de código aberto escrito em Rust e orientado a aplicações críticas de segurança, como parte de um esforço maior para criar um ecossistema funcional (BSP, RTOS e aplicação de demonstração) para microcontroladores como o ARM Cortex-M7 SAMV71. Aplicações em Andamento e o Estado Atual É crucial entender que Rust não é mais uma linguagem meramente experimental nesse campo. Ela já está em produção em sistemas críticos de segurança, ainda que em um espectro de criticidade que não atinge o topo da DO-178C. Na robótica móvel, por exemplo, sistemas certificados pela IEC 61508 SIL 2 já estão operando com código Rust. No setor aeroespacial e de defesa, o foco atual está em projetos de pesquisa e desenvolvimento, como frameworks de software de voo para satélites (ex: sat-rs), controladores de drones baseados em ArduPilot (ex: airborne-oxide) e arquiteturas para software de voo ciber-resiliente (ex: Alcyone). O ecossistema de bibliotecas, embora ainda não maduro como o de C/C++, está em franca expansão, com projetos como o AeroRust oferecendo crates para protocolos como o MAVLink, que é fundamental para a comunicação com drones. Para a adoção plena em aviônica civil (DO-178C DAL A), a indústria ainda aguarda pela qualificação oficial de um compilador e de um RTOS que suporte Rust. No entanto, os blocos fundamentais estão sendo construídos: 1. O consórcio da indústria foi estabelecido. 2. O compilador (Ferrocene) está qualificado para normas análogas e mira a DO-178C. 3. As ferramentas de verificação para MC/DC e análise temporal estão em desenvolvimento ou em demonstração. 4. Um subconjunto certificado da biblioteca core do Rust (essencial para aplicações embarcadas no_std) já foi certificado pela TÜV SÜD para IEC 61508 SIL 2, removendo uma enorme barreira para o desenvolvimento de aplicações robustas e certificadas. Em conclusão, Rust não tornou Ada ou C irrelevantes para a aviônica, mas representa uma evolução significativa e necessária. Seu modelo de segurança de memória, combinado com o esforço concertado de qualificação ferramental, o posiciona de forma única para ser a linguagem que, no futuro, ajudará a construir sistemas aeroespaciais mais seguros e protegidos, não por substituir as linguagens existentes de uma só vez, mas por oferecer um novo e poderoso caminho gradual para o desenvolvimento de software crítico. A pergunta que paira não é mais "se", mas "quando" e "com que profundidade" o Rust permeará a cabine de comando.
thread · root 628f8f62…2cbd · depth 3 · · selected d1366618…2097
thread
root 628f8f62…2cbd · depth 3 · · selected d1366618…2097
{{cite web| title = Qual linguagem de programação é usada para os softwares que controlam…| url = https://pt.quora.com/Qual-linguagem-de-programação-é-usada-para-os-softwares-que-controlam-um-avião| date = 2024-01-18| archiveurl = http://archive.today/DO7HD| archivedate = 2024-01-18 }}As fontes consistem em uma série de discussões no fórum Quora que exploram as **linguagens de programação**utilizadas em **sistemas críticos**, como softwares de controle de **aviões e foguetes**. Os especialistasdestacam a predominância da linguagem **Ada**, valorizada por sua segurança e rigor, embora mencionem o uso de**C, C++ e Assembly** em contextos específicos de aviônica. Além dos aspectos técnicos das linguagens, o textoaborda normas de certificação essenciais para a segurança de voo, como a **DO-178C**. O conteúdo também seexpande para temas periféricos da computação, incluindo a **história da programação**, o funcionamento de barrasde carregamento e o conceito de **bootstrapping** em compiladores. Em suma, o material oferece um panorama sobrecomo a escolha da tecnologia é ditada pela necessidade de **estabilidade e confiabilidade** em ambientes de altorisco.
O desenvolvimento de software para sistemas aviônicos é uma disciplina singular, onde a escolha da linguagem deprogramação está intrinsecamente ligada à segurança de voo. A resposta a esta questão exige a análise doprincipal documento normativo do setor, o DO-178C, e das justificativas técnicas que posicionam linguagens comoAda e C no centro de sistemas que não podem falhar.O Contexto Normativo e a DO-178CIntroduzido em 2011 como uma evolução do DO-178B, o documento RTCA DO-178C / EUROCAE ED-12C, intitulado"Software Considerations in Airborne Systems and Equipment Certification" (Considerações de Software naCertificação de Sistemas e Equipamentos Aerotransportados), é o padrão internacional que rege a aprovação desoftware aerotransportado comercial. Autoridades como a FAA (EUA), a EASA (Europa) e a ANAC o utilizam como meioaceitável, embora não único, para demonstrar conformidade com regulamentos de aeronavegabilidade.A DO-178C não prescreve uma linguagem de programação específica, mas estabelece critérios rigorosos para oprocesso de desenvolvimento. Define cinco níveis de garantia de projeto (DAL, Design Assurance Level), do nívelA ao E, que qualificam o software conforme a severidade da condição de falha, variando de catastrófica a semefeito na segurança. Para os níveis mais críticos (DAL A e B), a norma exige objetivos rigorosos de verificação,como cobertura de decisão modificada/condição (MC/DC) e rastreabilidade completa dos requisitos até ocódigo-fonte.É neste contexto que a escolha da linguagem se torna uma decisão de engenharia crítica. O processo decertificação não se concentra apenas na funcionalidade, mas também na análise de segurança e na garantia de queo comportamento do software é verificável, determinístico e previsível. A DO-178C exige que o código-fonte sejaescrito em conformidade com um padrão de codificação definido e que a linguagem possua sintaxe não ambígua e umcontrole claro de dados. Os padrões de codificação, como o MISRA C e o JSF AV C++, surgem como ferramentasessenciais para mitigar os riscos de linguagens originalmente não projetadas para aplicações críticas.O Cenário das Linguagens de Programação AviônicasA escolha da linguagem é um balanço entre expressividade, controle, segurança e viabilidade econômica no ciclode vida de uma aeronave.Ada e SPARKA linguagem Ada foi criada por iniciativa do Departamento de Defesa dos EUA com o propósito de unificar ascentenas de linguagens usadas em sistemas embarcados militares, incorporando confiabilidade e manutenibilidade.Hoje, o ecossistema Ada, impulsionado principalmente pela empresa AdaCore, é um pilar da aviônica civil emilitar moderna. Exemplos notáveis incluem seu uso no sistema de controle de freio do Boeing 777 e no Sistema deGerenciamento de Voo (FMS) do Airbus A380. A AdaCore também fornece ferramentas para grandes players comoThales, Lockheed Martin e Collins Aerospace, atuando no "coração da aviônica na Europa", como descreveu um deseus diretores.A preferência por Ada reside em suas características técnicas, que se alinham com as exigências da DO-178C. Seusistema de tipos forte e verificação em tempo de compilação, combinado com suporte nativo à programaçãoconcorrente (modelo de tarefas e rendezvous), permite a modelagem de sistemas de tempo real de forma segura eestruturada. A evolução da linguagem culmina no SPARK, um subconjunto formalmente verificável de Ada. SPARKpermite que propriedades de segurança sejam provadas matematicamente através de contratos, satisfazendodiretamente os objetivos do suplemento de Métodos Formais da DO-178C (DO-333).C e C++A linguagem C constitui a espinha dorsal de incontáveis sistemas embarcados, incluindo os aviônicos, devido àsua eficiência e capacidade de manipulação direta de hardware. Por ser uma linguagem de propósito geral e compotencial para ambiguidades, seu uso em software crítico é estritamente condicionado à adoção de um padrão decodificação. O mais proeminente é o MISRA C, originalmente da indústria automotiva e amplamente adotado naaviônica, que define um subconjunto seguro da linguagem para evitar construções propensas a erros.O projeto do caça F-35 Lightning II exemplifica uma evolução no uso de linguagens. Embora com um legado desoftware em Ada, o F-35 adotou amplamente C++ (com estimativas de repositórios indicando 53% C e 35% C++), massob um restritivo conjunto de regras conhecido como JSF AV C++ (Joint Strike Fighter Air Vehicle C++ CodingStandards). Este padrão, cujo documento está disponível publicamente no site do criador do C++, BjarneStroustrup, proíbe funcionalidades como tratamento de exceções, funções recursivas e alocação dinâmica dememória, que são fontes de não determinismo e dificultam a garantia de tempo de resposta e a análise de piorcaso de execução (WCET). A proibição de exceções, em particular, ecoa a lição da falha do voo inaugural dofoguete Ariane 5, onde uma exceção de software não tratada levou à autodestruição do veículo.Linguagens de Modelagem (Model-Based Development)Uma tendência crescente na aviônica moderna é o desenvolvimento baseado em modelos (MBD), onde o software éprojetado com notações gráficas de alto nível, a partir das quais o código-fonte é gerado automaticamente. Aabordagem está em conformidade com os suplementos DO-331 (Modelagem) da DO-178C.Ferramentas como o MATLAB/Simulink da MathWorks, combinadas com o Embedded Coder, são capazes de gerar código Cou C++ qualificável para DAL A. De forma semelhante, o SCADE Suite da Ansys é uma ferramenta especializada queutiliza modelos de fluxo de dados e máquinas de estado para gerar código C ou Ada que é "correto porconstrução". O gerador de código do SCADE (KCG) é qualificado como ferramenta de desenvolvimento TQL-1 segundo aDO-330, o que permite aos desenvolvedores automatizar a verificação de baixo nível e focar na validação domodelo em si.Assembly e Outras LinguagensO uso de Assembly não desapareceu, especialmente em rotinas de inicialização de hardware e em sequências dechaveamento que exigem contagem exata de ciclos de máquina. Contudo, seu uso é minimizado ao extremo, sendorestrito a pequenos trechos onde a eficiência de mais alto nível não pode ser obtida. Para a DO-178C nível A, acobertura de código deve ser verificada também em nível de objeto (object code), como suportado por ferramentasde análise como a LDRA, que verificam a correção do binário gerado pelo compilador.Em relação a linguagens mais recentes, o Rust emerge como uma alternativa promissora, com discussões ativas nacomunidade e em artigos acadêmicos sobre sua adequação à DO-178C, graças ao seu modelo de gerenciamento dememória (ownership) que garante segurança sem garbage collector. Embora ainda não seja uma linguagem dominanteem sistemas aviônicos certificados, há um crescente ecossistema de ferramentas e pesquisas para viabilizar seuuso, especialmente para funções de segurança cibernética e módulos onde a segurança de memória é uma prioridade.O Java, por sua vez, encontra espaço em sistemas de informação de bordo ou aplicações de missão de menorcriticidade, longe dos sistemas de controle de voo, uma vez que sua dependência de máquina virtual e coleta delixo introduz complexidades de verificação incompatíveis com sistemas de tempo real estrito.Motivos Técnicos e Normativos para a EscolhaA seleção de uma linguagem para software aviônico não é uma questão de preferência, mas de engenharia desistemas, guiada pelos seguintes pilares:· Determinismo e Previsibilidade de Tempo Real: Sistemas de controle de voo operam em ciclos fixos e precisamresponder a eventos dentro de um limite de tempo máximo garantido, muitas vezes na casa dos microssegundos.Recursos como alocação dinâmica de memória, recursão ilimitada e coleta de lixo são terminantemente proibidosnos padrões de codificação de mais alta criticidade para garantir que o pior caso de execução (WCET) possa seranalisado e limitado.· Segurança de Memória e Tipos: A robustez de um sistema começa na prevenção de erros. Linguagens como Ada e osubconjunto SPARK possuem sistemas de tipo extremamente fortes que detectam, em tempo de compilação ou por provaformal, uma vasta classe de erros como buffer overflow, dangling pointers e condições de corrida. Em C e C++, ospadrões MISRA e JSF AV são a forma de conter os mesmos riscos através de restrições estritas.· Verificabilidade e Rastreabilidade: A DO-178C exige que cada linha de código-fonte seja rastreável a umrequisito funcional de baixo nível, e vice-versa. Linguagens com sintaxe clara e estruturas de controle bemdefinidas facilitam tanto a revisão manual por pares quanto a análise estática automatizada, que é uma peçacentral do processo de certificação. Ferramentas modernas, incluindo soluções de IA, auxiliam na priorização ecorreção de violações de padrões em bases de código C e C++, tornando a conformidade mais gerenciável.Exemplos Práticos de AplicaçãoA aplicação dessas linguagens pode ser vista em aeronaves que definem o estado da arte da aviação. O Airbus A380utiliza o sistema operacional de tempo real particionado Integrity-178B da Green Hills Software, que suportadesenvolvimento em C, C++ e Ada, com Ada sendo a linguagem de seu sistema de Gerenciamento de Voo (FMS).O Boeing 777, uma aeronave pioneira em sistemas fly-by-wire, foi uma das primeiras a ter seu sistema de controlede frenagem completamente programado em Ada, visando atender aos rigorosos requisitos de tempo real e segurançada FAA já sob a égide dos padrões DO-178 da época.Por fim, o programa do caça F-35, um dos sistemas de software mais complexos já embarcados, com mais de 20milhões de linhas de código, representa um ecossistema heterogêneo. Embora seu software de missão e de controlede voo seja predominantemente C++ sob o padrão JSF AV C++, ele convive com blocos críticos de software escritosem Ada e com a geração automática de código C a partir de modelos Simulink, demonstrando uma arquitetura em quea linguagem é selecionada de acordo com a função e o nível de criticidade do subsistema.Em conclusão, a programação de sistemas aviônicos é um campo onde a máxima "o melhor para o trabalho" é elevadaà sua potência máxima. Não há uma única linguagem, mas um espectro de ferramentas — Ada, SPARK, C, C++ elinguagens de modelagem — cada uma com seu lugar em um ecossistema meticulosamente projetado, cujo processo deseleção é moldado por décadas de lições de segurança e por um arcabouço normativo que visa garantir que osoftware nunca seja a causa de uma tragédia.
A sua pergunta é extremamente pertinente, pois toca no centro do debate atual sobre a evolução das linguagens deprogramação em sistemas críticos de segurança. Rust, de fato, emerge como um candidato de peso para desafiar ahegemonia de décadas de Ada, C e C++ na indústria aeroespacial, e sua trajetória é marcada por promessastécnicas significativas e por um esforço concentrado da comunidade para superar as rigorosas barreiras dacertificação.A relevância do Rust para esse setor é tanta que, em 2024, a Rust Foundation, em conjunto com empresas-chavecomo AdaCore, Arm, Ferrous Systems e Woven by Toyota, anunciou a formação do Safety-Critical Rust Consortium. Oobjetivo declarado deste consórcio é fomentar o uso responsável do Rust em softwares cuja falha pode resultar emdanos a pessoas, propriedades ou ao meio ambiente, um escopo que abrange diretamente os setores automotivo,aeroespacial e de defesa.As Vantagens Técnicas: O Fator Segurança de MemóriaO principal argumento para a adoção de Rust reside em suas garantias de segurança de memória (memory safety).Diferentemente de C e C++, onde erros como buffer overflows, use-after-free e corridas de dados (data races) sãofontes comuns e perigosas de vulnerabilidades, o modelo de ownership (propriedade) e o borrow checker(verificador de empréstimo) de Rust previnem essas classes inteiras de bugs em tempo de compilação, e sem anecessidade de um garbage collector. Essa característica é uma vantagem decisiva, pois permite a criação decódigo eficiente e previsível, com um footprint de memória controlado — requisitos inegociáveis em sistemasembarcados de tempo real.Um engenheiro de firmware entrevistado no blog oficial do Rust, com experiência em sistemas certificados pelaIEC 61508, resumiu essa vantagem ao afirmar que Rust apresentou uma oportunidade onde "90% do que as ferramentasde análise de pilha tinham que verificar é simplesmente feito pelo compilador". Essa garantia em nível delinguagem reduz o esforço de verificação e o custo associado à criação de evidências para a certificação.Quando comparado a Ada, uma linguagem com décadas de história em sistemas críticos, ambos compartilham oobjetivo de produzir software seguro, mas por caminhos distintos. Ada e seu subconjunto SPARK inclinam-sefortemente para a tipagem forte, contratos e métodos formais para provar a correção do programa. Rust, por outrolado, aposta em seu modelo de ownership para eliminar bugs de memória sem recorrer a um garbage collector. Umavisão emergente na indústria de defesa sugere uma abordagem híbrida: usar Ada para a lógica de controle desegurança mais crítica e Rust para gerenciar comunicações seguras ou novos subsistemas com requisitos rigorososde cibersegurança.A Jornada Rumo à Certificação DO-178CApesar de seu potencial, a adoção do Rust na aviônica de mais alta criticidade ainda está em seus estágiosiniciais. A DO-178C não certifica uma linguagem, mas sim um ecossistema de ferramentas e processos. Para que oRust seja utilizável em um sistema DAL A, um caminho de qualificação precisa ser estabelecido. É justamentenesse ponto que a comunidade e a indústria estão trabalhando ativamente.O Pilar Ferramental: Ferrocene e Compiladores QualificadosPara qualquer linguagem seriamente considerada para sistemas críticos, é necessário um compilador qualificado. Oesforço mais notável nessa área é o Ferrocene, um toolchain de compilação desenvolvido pela Ferrous Systems. OFerrocene é um fork de downstream do compilador oficial rustc, que passou por um rigoroso processo dequalificação. Ele já é certificado pela TÜV SÜD para os mais altos níveis de integridade de segurança para asnormas ISO 26262 (automotiva, ASIL D) e IEC 61508 (industrial, SIL 3, com planos para SIL 4). Embora ainda nãoseja oficialmente qualificado para a DO-178C, a Ferrous Systems declara explicitamente seus planos de buscaressa qualificação, o que posiciona o Ferrocene como o principal candidato a viabilizar o Rust na aviônica acurto prazo.Em paralelo, a HighTec, outro membro do Safety-Critical Rust Consortium, também oferece um compilador Rustqualificado para ISO 26262 ASIL D, permitindo uma abordagem híbrida que combina código legado C/C++ com módulosmodernos em Rust, um passo importante para a adoção gradual da linguagem na indústria.O Desafio da Cobertura de Código: MC/DCUm dos requisitos mais estritos para software de nível A na DO-178C é demonstrar a cobertura de decisãomodificada/condição (MC/DC). Até recentemente, uma barreira técnica para o Rust era a ausência de ferramentascapazes de medir essa métrica no código gerado. Esse cenário, contudo, mudou drasticamente. A comunidade Rust jápossui suporte estável e de fácil acesso para a geração de relatórios MC/DC que atendem aos requisitos daDO-178C, ISO 26262 e IEC 61508, principalmente através de ferramentas como cargo llvm-cov.No domínio acadêmico, que pavimenta o caminho para a indústria, um artigo fundamental "Toward ModifiedCondition/Decision Coverage of Rust" (Rumo à Cobertura de Decisão/Condição Modificada em Rust) investigou eclarificou as ambiguidades na aplicação do MC/DC às construções específicas do Rust, como o pattern matching.Este trabalho fornece a base teórica para a implementação de ferramentas de medição e é um marco essencial parao uso do Rust em aplicações de alta garantia.O ecossistema de ferramentas de verificação também está amadurecendo para atender às exigências derastreabilidade e análise de pior tempo de execução (WCET). Um exemplo é a parceria entre a AdaCore (com seuGNAT Pro para Rust) e a Rapita Systems (com sua Rapita Verification Suite), que demonstra como gerar asevidências de auditoria exigidas pela DO-178C de forma integrada, cobrindo desde a rastreabilidade de requisitosaté a análise de cobertura e tempo de execução.Avaliações da Indústria: A Visão do DLR e da ESAO Centro Aeroespacial Alemão (DLR) realizou uma avaliação abrangente sobre a viabilidade do Rust para odesenvolvimento de software aviônico, publicada em 2025. O estudo conclui que Rust é um candidato promissor,pois oferece as características de segurança de memória e concorrência desejadas, e propõe um caminho de adoçãogradual, incluindo a qualificação para padrões aeroespaciais. Contudo, o DLR também destaca com clareza que Rustprecisa competir e se integrar a um ecossistema já estabelecido e dominado por C/C++.Da mesma forma, a Agência Espacial Europeia (ESA) patrocinou atividades para avaliar o uso de Rust em aplicaçõesespaciais. Um dos resultados concretos foi o desenvolvimento do Aerugo, um RTOS de código aberto escrito em Ruste orientado a aplicações críticas de segurança, como parte de um esforço maior para criar um ecossistemafuncional (BSP, RTOS e aplicação de demonstração) para microcontroladores como o ARM Cortex-M7 SAMV71.Aplicações em Andamento e o Estado AtualÉ crucial entender que Rust não é mais uma linguagem meramente experimental nesse campo. Ela já está em produçãoem sistemas críticos de segurança, ainda que em um espectro de criticidade que não atinge o topo da DO-178C. Narobótica móvel, por exemplo, sistemas certificados pela IEC 61508 SIL 2 já estão operando com código Rust.No setor aeroespacial e de defesa, o foco atual está em projetos de pesquisa e desenvolvimento, como frameworksde software de voo para satélites (ex: sat-rs), controladores de drones baseados em ArduPilot (ex:airborne-oxide) e arquiteturas para software de voo ciber-resiliente (ex: Alcyone). O ecossistema debibliotecas, embora ainda não maduro como o de C/C++, está em franca expansão, com projetos como o AeroRustoferecendo crates para protocolos como o MAVLink, que é fundamental para a comunicação com drones.Para a adoção plena em aviônica civil (DO-178C DAL A), a indústria ainda aguarda pela qualificação oficial de umcompilador e de um RTOS que suporte Rust. No entanto, os blocos fundamentais estão sendo construídos:1. O consórcio da indústria foi estabelecido.2. O compilador (Ferrocene) está qualificado para normas análogas e mira a DO-178C.3. As ferramentas de verificação para MC/DC e análise temporal estão em desenvolvimento ou em demonstração.4. Um subconjunto certificado da biblioteca core do Rust (essencial para aplicações embarcadas no_std) já foicertificado pela TÜV SÜD para IEC 61508 SIL 2, removendo uma enorme barreira para o desenvolvimento deaplicações robustas e certificadas.Em conclusão, Rust não tornou Ada ou C irrelevantes para a aviônica, mas representa uma evolução significativa enecessária. Seu modelo de segurança de memória, combinado com o esforço concertado de qualificação ferramental,o posiciona de forma única para ser a linguagem que, no futuro, ajudará a construir sistemas aeroespaciais maisseguros e protegidos, não por substituir as linguagens existentes de uma só vez, mas por oferecer um novo epoderoso caminho gradual para o desenvolvimento de software crítico. A pergunta que paira não é mais "se", mas"quando" e "com que profundidade" o Rust permeará a cabine de comando.