3 pontos por GN⁺ 2025-11-24 | 1 comentários | Compartilhar no WhatsApp
  • Racket 9.0 é um grande lançamento que introduz threads paralelas (Parallel Threads), expandindo o suporte existente a green threads, futures e places
  • As novas threads podem ser criadas com o argumento #:pool, e com a configuração #:keep 'results é possível consultar os resultados depois com thread-wait
  • O wrapper black-box impede que o compilador otimizador elimine certas operações, aumentando a precisão dos benchmarks
  • A função decompile-linklet pode converter um linklet de volta para S-expressions, e processor-count foi alterada para retornar o número de execuções paralelas
  • Inclui várias outras atualizações, como o pacote “natipkg” para AArch64, adição da distribuição de Weibull e melhorias na documentação

Principais mudanças no Racket 9.0

  • Nesta versão, foi introduzido o novo recurso de threads paralelas (Parallel Threads)

    • O Racket já oferecia suporte a green threads, futures e places, e agora as threads paralelas chegam como uma grande expansão
    • As threads paralelas podem ser criadas por meio do argumento #:pool, e ao definir #:keep 'results, os resultados podem ser consultados depois com thread-wait
  • O wrapper black-box impede que o compilador otimizador elimine completamente certos cálculos

    • Isso é útil para garantir medições de desempenho mais precisas ao executar benchmarks
  • A função decompile-linklet permite mapear um linklet de volta para uma S-expression

    • Ela oferece uma forma de restaurar a representação interna para análise de código e depuração
  • No BC Racket, a função processor-count foi alterada para sempre retornar o número de processadores paralelos

    • Isso permite verificar de forma consistente a contagem de processadores em ambientes de execução paralela
  • O pacote “natipkg” para AArch64 passou a ser distribuído e pode ser usado na infraestrutura de build e testes de pacotes

Melhorias adicionais

  • O recurso Check Syntax agora oferece suporte ao rastreamento de identificadores aninhados mais profundamente no campo “origin” de objetos de sintaxe
  • A biblioteca math agora inclui a distribuição de Weibull
  • Também estão incluídas diversas correções de bugs e melhorias na documentação

Comunidade e como participar

  • Nesta versão, contribuíram vários desenvolvedores, incluindo Alexander Shopov, Bogdan Popa, Matthew Flatt e Matthias Felleisen
  • O Racket é um projeto open source orientado pela comunidade e recebe bem novos contribuidores

Pedido de feedback e divulgação

1 comentários

 
GN⁺ 2025-11-24
Comentários do Hacker News
  • O ponto principal desta novidade é que o Racket agora suporta threads paralelas
    Já existiam formas de paralelização antes, como places, mas desta vez a abordagem é muito mais leve e familiar
    Como gosto de criar coisas com Racket, fico feliz em ver isso ampliar o campo de uso da linguagem

    • Também fiquei surpreso ao ler as notas de lançamento. É muito bom ver que esse tipo de multithreading finalmente entrou
      places não era flexível. Não dava para passar lambdas com facilidade, e serializable-lambda funcionava de forma contagiosa, então em tempo de execução só era possível enviar dados, não funções
      Por isso era difícil montar uma estrutura para distribuir trabalho entre vários places
      Espero que com esse novo recurso de concorrência isso passe a ser possível
      Por esse motivo, até agora eu vinha usando GNU Guile em vez de Racket. O Guile era bem mais confiável para aproveitar múltiplos núcleos com futures ou fibers
      Eu mesmo já fiz um modelo paralelo de árvore de decisão com futures e obtive um ganho de velocidade quase linear
    • Fico curioso sobre que tipo de projeto você faz com Racket
      Sou desenvolvedor Clojure e gosto da família Lisp. Queria saber o que você costuma construir com Racket
    • O fato de só na versão 9 terem adicionado threads paralelas parece um pouco contraditório com a forma como o Racket é apresentado no site, como uma “linguagem madura e refinada
  • Vendo este vídeo, dá para perceber que o Racket pode parecer difícil se não for sua primeira linguagem, mas é simples o bastante para até crianças aprenderem

    • Vídeo realmente excelente
  • Eu gosto muito de Racket
    Escrevi por diversão um livro sobre Racket, que pode ser lido online de graça
    Entre as linguagens da família Scheme, recomendo Racket e Gerbil
    O Racket é bom para iniciantes por ter uma IDE boa e bibliotecas padrão e de terceiros bem ricas, enquanto o Gerbil é ótimo para programação de sistemas e utilitários de rede

  • Racket é uma linguagem realmente muito legal
    É uma boa linguagem da família Lisp para aprender, e ainda tenho lembranças de fazer trabalhos no IDE DrRacket

  • Eu experimentei Lisp pela primeira vez em meados dos anos 80 e, desde então, costumo voltar de tempos em tempos para aprender novas formas de pensar e técnicas de programação
    Também tentei usar Racket várias vezes, mas por algum motivo o software nunca combinou comigo
    Talvez com uso contínuo eu passasse a gostar, mas ainda não consigo me imaginar escrevendo um projeto grande em Racket

    • Eu gostava antigamente, mas abandonei porque o código era muito lento e pesado
      Era mais lento até que Python; talvez isso tenha melhorado depois da reescrita sobre Chez Scheme, mas hoje uso Common Lisp, que é rápido e leve
    • Quando você diz “software”, está falando da linguagem em si ou do tooling?
  • Conheci Racket porque vi que John Carmack usou Racket em trabalhos ligados ao Oculus cerca de 10 anos atrás
    Vídeo relacionado

  • Lisp é por si só uma meta-linguagem, e Racket é ainda mais meta
    Dá para pensar nele praticamente como um kit de criação de linguagens

    • Ouço isso com frequência, mas na prática não vejo muitos desenvolvedores de PL criando linguagens com Racket
      Já usei Racket ao dar aulas de PL, mas os alunos, acostumados com Java ou Python, tinham dificuldade com a sintaxe Lisp
      Então não sei muito bem para quem exatamente essa linguagem é feita
  • O blog do Bogdan Popa (defn.io) tem muita coisa interessante sobre Racket
    Estou ansioso para testar o novo recurso de threading por conta própria

  • Já tentei usar Racket algumas vezes, mas a IDE me pareceu pouco intuitiva e estranha
    Fico me perguntando se isso é uma escolha de design deliberada ou se é só falta de alternativas melhores

    • A IDE não é a linguagem em si
      Racket também tem bom suporte em VSCode (Magic Racket, Langserver), Emacs (Racket Mode), Vim e outros
      Dá para consultar a documentação oficial e o repositório do Langserver
      O DrRacket ainda vale a pena por ter recursos que outras IDEs não têm, como o macro stepper
    • Em racket-mode.com dá para ver uma integração excelente com Emacs
  • Racket é uma linguagem divertida
    Na nossa universidade, usamos a versão educacional do Racket nas aulas introdutórias de Ciência da Computação
    Alguns alunos detestam, mas há quem goste em silêncio

    • Fiquei curioso para saber o nome da disciplina
    • Mas a maioria diz que nunca mais quer usar Racket depois de se formar, o que é bem revelador