3 pontos por GN⁺ 2023-11-09 | 3 comentários | Compartilhar no WhatsApp

Por que o build do SciPy para a versão Python 3.12 parece um milagre

  • A versão Python 3.12 foi lançada recentemente.
  • É comum que os principais pacotes lancem rapidamente versões compatíveis com uma nova versão do Python.
  • O fato de o SciPy ter lançado um build compatível com Python 3.12 foi um resultado afortunado do cruzamento de vários cronogramas.

O papel do Fortran e dos compiladores

  • Fortran é uma linguagem de programação importante desde os anos 1950, e muito código científico foi escrito em Fortran.
  • Existiam vários compiladores Fortran, mas todos eram proprietários.
  • Compiladores têm a função de transformar o código escrito pelos programadores em uma forma que o computador possa executar.
  • GCC é um compilador de uso livre que oferece suporte a várias arquiteturas de CPU e sistemas operacionais.

Python e o problema de desempenho

  • Python pode ser usado sem compilador, mas é mais lento do que linguagens compiladas.
  • Quando o desempenho é importante, uma boa solução é usar código compilado encapsulado por uma interface em Python.
  • NumPy e SciPy usam código Fortran por desempenho, e por isso os usuários precisam de um compilador ao instalar os pacotes.

Os problemas de empacotamento no Python

  • O empacotamento no Python precisou ser reinventado continuamente por causa de sua complexidade.
  • Baixar o código-fonte diretamente traz problemas como a necessidade de configurar compiladores e tempos longos de build para o usuário.
  • O formato "wheel" melhorou isso ao distribuir os pacotes com as bibliotecas necessárias incluídas.

O surgimento do conda e do conda-forge

  • O conda oferece uma abordagem mais abrangente, incluindo tudo o que é necessário para o empacotamento.
  • O conda-forge é um canal mantido pela comunidade que realiza o trabalho de integração de pacotes.
  • O conda-forge busca oferecer suporte a todas as plataformas comuns e é operado por voluntários.

A escolha do Meson como ferramenta de build do SciPy

  • O SciPy escolheu o Meson como ferramenta de build.
  • O Meson oferece uma interface no estilo Python e é menos complexo que o CMake.
  • O Meson adota uma filosofia de projeto que evita permitir operações incorretas para usuários que não são especialistas.

O renascimento do Fortran e o LLVM

  • O interesse em Fortran aumentou nos últimos anos.
  • O desenvolvimento de novos compiladores Fortran baseados em LLVM ganhou força.
  • O LLVM fornece uma infraestrutura de compiladores que funciona em várias arquiteturas e plataformas.

A migração do SciPy para Meson e os problemas do conda-forge

  • O SciPy migrou para o Meson, mas surgiram problemas devido à ausência de um compilador Fortran para Windows.
  • O conda-forge precisou recompilar todos os pacotes relacionados para a migração para Python 3.12.

O significado de 'yukatastrophe' e a opinião do GN⁺

  • Como a suíte de testes do SciPy passou 100%, tornou-se possível fazer no conda-forge um build do SciPy compatível com Python 3.12.
  • Isso foi o resultado da combinação de vários esforços e coincidências felizes, trazendo um grande benefício para a comunidade Python.
  • Opinião do GN⁺: este artigo mostra como o esforço e a colaboração da comunidade Python podem resolver problemas técnicos complexos. O lançamento bem-sucedido de um build do SciPy compatível com Python 3.12 é um avanço importante na área de computação científica e simboliza a força do software de código aberto e do poder da comunidade.

3 comentários

 
GN⁺ 2023-11-09
Comentários no Hacker News
  • A comunidade de software livre deveria parar de oferecer suporte ao sistema operacional da Microsoft e deixar que eles mesmos façam o port de coisas como o scipy

    • Quem precisa de Linux pode encontrá-lo no WSL2
    • A Microsoft deveria incluir um compilador no sistema operacional, como todos os outros fornecedores de sistemas operacionais fazem há 60 anos
  • O empacotamento de Python é complicado por causa da falta de padronização das ferramentas de build de C/C++/Fortran e do enorme ecossistema, e não por causa do próprio Python

    • Essa complexidade é uma parte que não pode ser reduzida
    • O simples fato de o sistema de empacotamento de Python funcionar já é um milagre
  • Parece ser um bug a ferramenta de build Meson rejeitar a combinação MSVC+gfortran

    • O objetivo de uma ferramenta de build é executar os comandos instruídos pelo usuário, não recusar o usuário
  • Muitas pessoas estão resolvendo o problema usando WSL2, e fica a dúvida de por que tentar compilar uma versão nativa para Windows

  • A maioria das melhores bibliotecas BLAS foi escrita em C, e fica a curiosidade sobre até que ponto seria possível obter resultados apenas com C e Python

    • Fortran pode ser uma parte inevitável, mas é positivo que melhorias nas ferramentas de Fortran no Windows estejam começando
  • Pergunta ingênua sobre se, como a semântica de Fortran é tão diferente da de C, não seria possível converter para C e depois compilar com um compilador de C, e se seria viável manter isso em C

    • Presume-se que não haja muitos especialistas em Fortran para manter bibliotecas antigas, e manutenção é necessária
  • É difícil acompanhar as mudanças no sistema de build do Python

    • Há curiosidade sobre os números de desempenho no Windows, mas espera-se que a maior parte do trabalho sério rode em máquinas Linux
  • Pergunta sobre se aarch64 e arm64 são a mesma coisa

    • A Wikipedia redireciona ARM64 para AArch64
  • Fortran era alvo de piadas no departamento de TI, mas nos últimos anos passou por um renascimento dramático

    • O motivo desse renascimento não é claro, mas é possível entendê-lo pelos links relacionados
  • Pergunta sobre a diferença entre arm64 e aarch64 na tabela de compilador/arquitetura

    • Menção ao fato de que o artigo ARM64 da Wikipedia redireciona para AArch64
 
ahwjdekf 2023-11-10

Isso expõe de forma bem crua a nossa maldita dependência de linguagens compiladas para binário.

 
kayws426 2023-11-10

Não resolveram no Python, mas não foi resolvido em outros ecossistemas, certo? Por isso devem fornecer binários pré-compilados.