Steel Bank Common Lisp versão 2.6.7

Steel Bank Common Lisp 2.6.7 introduz recursos notáveis voltados para desempenho, como suporte ampliado a SIMD em ARM64 e AVX-512 em x86-64, levando a discussões técnicas sobre como operações vetoriais programadas explicitamente funcionam no SBCL. Os comentaristas avaliam a praticidade do Common Lisp hoje, contrastando seus pontos fortes — desenvolvimento interativo, implantação baseada em imagens, alto desempenho e uso em sistemas reais como o Hacker News — com lacunas percebidas no ecossistema, limitações de concorrência e sua reputação de linguagem de nicho ou “hobby”. A discussão também aborda detalhes de ferramentas e portabilidade, incluindo a maturidade do SBCL no Windows, recursos de alocação em arenas de memória e comparações com outros ecossistemas como Elixir, Clojure e workflows de imagens no estilo Smalltalk.

SIMD, AVX-512 e recursos de desempenho

  • A nova versão adiciona suporte de contrib SIMD para ARM64 e suporte a AVX-512 no backend x86-64.
  • SIMD é explícito, não auto-vetorizado: os usuários trabalham com tipos e operações SIMD (semelhantes a intrínsecos de C), que compilam para instruções específicas (por exemplo, adições e carregamentos vetoriais).
  • Padrões de exemplo: construir pacotes SIMD e iterar sobre arrays com acessores cientes de SIMD; o código compilado são loops apertados sobre instruções vetoriais.
  • O AVX-512 atualmente tem suporte no nível do compilador; os usuários finais precisariam definir VOPs personalizados para chamar instruções específicas de AVX-512 até que o sb-simd tenha bindings de nível mais alto.
  • Vários comentaristas estão entusiasmados com o novo suporte a ISA para projetos hobby de alto desempenho.

Onde o Common Lisp se encaixa (e onde não se encaixa)

  • Fortes encaixes sugeridos: ferramentas CLI/TUI e GUIs de desktop em que tempos de inicialização de dezenas de milissegundos são aceitáveis e o desenvolvimento interativo é valioso.
  • Serviços web são vistos como um encaixe mais fraco: implementações de CL geralmente oferecem apenas threads do sistema operacional e promises; a falta de concorrência leve de primeira classe torna backends do tipo “10k conexões” menos agradáveis em comparação com plataformas como Elixir/BEAM.
  • Motores de jogos e aplicações intensivas em computação são considerados plausíveis, especialmente com o desempenho do SBCL e seu bom FFI.
  • Alguns argumentam que CL é melhor como linguagem de extensão/incorporação (por exemplo, via ECL) e para ferramentas pessoais; outros relatam usá-la profissionalmente, inclusive em grandes empresas e domínios complexos.

Ecossistema, “Boring Tech” e o papel do Lisp

  • Uma visão: Lisp (e, de forma semelhante, Haskell) continua sendo em grande parte um nicho de hobbyistas; macros, reflexão e DSLs incentivam fragmentação e prejudicam a manutenibilidade em escala de equipe. Pilhas “simples e chatas” são preferidas no trabalho.
  • Visão contrária: o uso moderno de Lisp (Common Lisp, Clojure, Emacs Lisp etc.) é prático e difundido em certos nichos; macros são usadas com discernimento, e as equipes convergem para bibliotecas internas sem caos.
  • O debate gira em torno das compensações entre linguagens expressivas e altamente personalizáveis e ecossistemas padronizados e de baixa fricção.

Arenas de memória e controle de baixo nível

  • As arenas de memória do SBCL são mencionadas como poderosas, mas pouco documentadas: os usuários podem criar arenas e redirecionar alocações com funções/macros fornecidas.
  • São levantadas preocupações sobre a interação com GC, compartilhamento entre threads e o uso correto de destruição/rewind de arena para evitar vazamentos ou referências pendentes; é solicitada uma documentação oficial mais clara.

Implementação, portabilidade e ferramentas

  • O SBCL agora roda bem no Windows; outra implementação de CL é citada por compilar mais rápido, mas com menos otimização e manutenção mais fraca.
  • Múltiplas implementações são valorizadas por exporem problemas de portabilidade.
  • O SBCL pode gerar executáveis únicos com imagens embutidas; dependências dinâmicas de bibliotecas C continuam sendo uma consideração de implantação.
  • O SB-MANUAL (manual via docstrings e integração com editor) é destacado como uma melhoria de usabilidade.