3 pontos por GN⁺ 2023-07-15 | 3 comentários | Compartilhar no WhatsApp
  • Um engenheiro de software escreveu um patch para o GCC, simplificando a criação de executáveis realmente portáveis com a Cosmopolitan Libc.
  • Com esse patch, é possível compilar softwares populares como bash, curl, git e o próprio gcc com a Cosmopolitan Libc sem alterar o código-fonte.
  • Os executáveis gerados podem rodar em Linux, FreeBSD, MacOS, OpenBSD, NetBSD e, em alguns casos, no Windows.
  • O artigo fornece instruções passo a passo sobre como portar seu próprio software para a Cosmopolitan Libc.
  • O patch resolve problemas em instruções switch e na inicialização de structs que dependem de valores do sistema.
  • O autor inicialmente tentou automatizar a conversão com scripts em sed e Python por causa do pré-processador C e dos ifdef, mas isso não funcionou completamente.
  • Depois, o autor explorou o uso de um plugin do GCC e a possibilidade de aplicar patch no próprio GCC para resolver o problema.
  • Com o GCC modificado, é possível compilar software com a Cosmopolitan Libc, tornando o processo de portabilidade mais fácil e fluido.
  • O autor conseguiu compilar o lua com sucesso e fez alterações no python3.11 para acessar repositórios ZIP.
  • Ao compilar o busybox, que usa arrays de strings como tabelas de consulta, o autor encontrou dificuldades.
  • Também houve desafios com a inicialização de structs no ncurses por causa de expressões binárias.
  • O autor conclui que, na maioria dos casos, as mudanças necessárias para portar software para a Cosmopolitan Libc são mínimas.
  • O autor reconhece que o patch pode não ser perfeito e pode ter algumas limitações.
  • O autor incentiva os leitores a tentar compilar software em C com a Cosmopolitan Libc.
  • O autor menciona a possibilidade de executar os binários no Windows, mas não testou isso.
  • O autor fornece informações adicionais e materiais de referência.

3 comentários

 
ryuheechul 2023-07-15

Então agora o neo está adotando um formato em que as mensagens ficam envoltas em blocos de código? É um pouco chato ter que fazer rolagem horizontal, e a cor do texto em tons de vermelho também deixa um pouco a desejar...

 
xguru 2023-07-16

Ah, isso ser envolvido em um bloco de código é um bug T_T

 
GN⁺ 2023-07-15
Comentários no Hacker News
  • O autor escreveu uma postagem sobre como corrigir o GCC para compilar executáveis realmente portáveis.
  • Com esse patch, é possível compilar softwares como vim, emacs, ninja, bash, git e gcc com a Cosmopolitan Libc.
  • Os executáveis gerados devem conseguir rodar em Linux, FreeBSD, MacOS, OpenBSD, NetBSD e Windows.
  • O autor fornece uma lista de softwares que podem ser compilados com essa técnica.
  • Há um ticket sobre esse tema no repositório do Go.
  • Um comentarista sugere uma abordagem diferente para compilar um novo alvo de SO.
  • Outro comentarista sugere publicar uma lista de softwares compilados com sucesso usando essa técnica.
  • Alguém questiona qual é o propósito prático de executáveis realmente portáveis.
  • Outro comentarista sugere uma abordagem diferente para lidar com constantes no código.
  • Há uma discussão sobre o uso de números de sinais e de errno.
  • Alguém questiona a biblioteca padrão de C++ e o uso de std::error_code.
  • Um comentarista considera esse tema surpreendente.
  • Há uma discussão sobre a constante de tempo de compilação EINVAL.