3 points par GN⁺ 2025-11-24 | 1 commentaires | Partager sur WhatsApp
  • Racket 9.0 est une version majeure qui introduit les threads parallèles (Parallel Threads), en étendant la prise en charge existante des green threads, des futures et des places
  • Les nouveaux threads peuvent être créés avec l’argument #:pool, et avec le réglage #:keep 'results, il est possible de récupérer les résultats plus tard via thread-wait
  • Le wrapper black-box empêche le compilateur d’optimisation de supprimer certaines opérations, ce qui améliore la précision des benchmarks
  • La fonction decompile-linklet peut reconvertir un linklet en S-expression, et processor-count a été modifiée pour renvoyer le nombre de traitements parallèles
  • Diverses mises à jour sont incluses, comme le package « natipkg » pour AArch64, l’ajout de la distribution de Weibull et des améliorations de la documentation

Principaux changements de Racket 9.0

  • Cette version introduit une nouvelle fonctionnalité de threads parallèles (Parallel Threads)

    • Racket prenait déjà en charge les green threads, les futures et les places, mais les threads parallèles constituent une extension majeure supplémentaire
    • Les threads parallèles peuvent être créés via l’argument #:pool, et avec #:keep 'results, leurs résultats peuvent être récupérés plus tard avec thread-wait
  • Le wrapper black-box empêche le compilateur d’optimisation d’éliminer complètement certains calculs

    • Il est utile pour garantir des mesures de performance précises lors de l’exécution de benchmarks
  • La fonction decompile-linklet permet de remapper un linklet en S-expression

    • Elle offre la possibilité de restaurer la représentation interne pour l’analyse du code et le débogage
  • Dans BC Racket, la fonction processor-count a été modifiée pour toujours renvoyer le nombre de processeurs parallèles

    • Cela permet de vérifier de manière cohérente le nombre de processeurs dans un environnement d’exécution parallèle
  • Le package « natipkg » pour AArch64 est désormais distribué, afin d’être utilisé dans l’infrastructure de build et de test des packages

Améliorations supplémentaires

  • La fonctionnalité Check Syntax prend désormais en charge le suivi d’identifiants imbriqués plus profondément dans le champ « origin » des objets de syntaxe
  • La bibliothèque math ajoute la distribution de Weibull
  • De nombreuses corrections de bugs et améliorations de la documentation sont incluses

Communauté et participation

  • Plusieurs développeurs ont contribué à cette version, dont Alexander Shopov, Bogdan Popa, Matthew Flatt et Matthias Felleisen
  • Racket est un projet open source porté par sa communauté, et accueille volontiers de nouveaux contributeurs

Retours et relais de l’annonce

1 commentaires

 
GN⁺ 2025-11-24
Avis Hacker News
  • L’essentiel de cette annonce, c’est que Racket prend désormais en charge les threads parallèles
    Il existait déjà des méthodes de parallélisation comme places, mais cette approche est bien plus légère et familière
    Comme j’aime créer des choses avec Racket, je me réjouis de voir son champ d’usage s’élargir grâce à cela

    • Moi aussi, j’ai été surpris en lisant les notes de version. C’est vraiment une bonne nouvelle de voir enfin arriver ce type de multithreading
      places manquait de souplesse. On ne pouvait pas facilement transmettre des lambdas, et serializable-lambda fonctionnait de manière contagieuse, si bien qu’au moment de l’exécution on ne pouvait envoyer que des données, pas des fonctions
      Du coup, il était difficile de construire une architecture qui répartit le travail entre plusieurs place
      J’espère que ce sera possible avec cette nouvelle fonctionnalité de concurrence
      Jusqu’ici, c’est pour cette raison que j’utilisais GNU Guile plutôt que Racket. Avec ses futures ou ses fibers, Guile exploitait les multicœurs de manière bien plus fiable
      J’ai moi-même construit un modèle parallèle d’arbre de décision avec des futures, et j’ai obtenu un gain de vitesse presque linéaire
    • Je me demande quel genre de projets vous faites avec Racket
      Je suis développeur Clojure, donc j’aime la famille Lisp. J’aimerais savoir ce que vous construisez avec Racket
    • Le fait que les threads parallèles n’arrivent qu’en version 9 me semble un peu contradictoire avec la présentation de Racket sur son site, qui le décrit comme un « langage mature et abouti »
  • Quand on regarde cette vidéo, on voit que Racket peut sembler difficile si ce n’est pas votre premier langage, mais qu’il reste assez simple pour être appris par des enfants

    • C’est vraiment une super vidéo
  • J’aime vraiment beaucoup Racket
    J’ai écrit pour le plaisir un livre sur Racket, lisible gratuitement en ligne
    Parmi les langages de la famille Scheme, je recommande Racket et Gerbil
    Racket convient bien aux débutants grâce à son IDE, à ses bibliothèques standard et tierces très riches, tandis que Gerbil est excellent pour la programmation système ou les utilitaires réseau

  • Racket est vraiment un langage formidable
    C’est un bon langage de la famille Lisp pour apprendre, et j’ai encore en mémoire mes devoirs faits avec l’IDE DrRacket

  • J’ai expérimenté Lisp pour la première fois au milieu des années 80, et j’y suis revenu de temps en temps depuis pour découvrir de nouvelles façons de penser et de nouvelles techniques de programmation
    J’ai aussi essayé Racket plusieurs fois, mais il y avait quelque chose dans le logiciel lui-même qui ne me convenait pas
    Peut-être qu’en l’utilisant régulièrement cela irait mieux, mais j’ai encore du mal à imaginer écrire un gros projet en Racket

    • J’aimais bien avant, mais je l’ai abandonné parce que le code était trop lent et trop lourd
      C’était encore plus lent que Python. Peut-être que cela s’est amélioré depuis la réécriture sur Chez Scheme, mais aujourd’hui j’utilise un Common Lisp rapide et léger
    • Quand vous dites « logiciel », vous parlez du langage lui-même, ou plutôt du tooling ?
  • J’ai découvert Racket en voyant que John Carmack avait fait du travail lié à Oculus avec Racket il y a 10 ans
    Vidéo associée

  • Lisp est en soi un métalangage, et Racket l’est encore plus
    On pourrait pratiquement parler d’un kit de fabrication de langages

    • J’entends souvent ça, mais en pratique il n’y a pas tant de développeurs PL qui créent réellement des langages avec Racket
      Quand j’ai utilisé Racket pour enseigner un cours de PL, les étudiants, habitués à Java ou Python, avaient du mal avec la syntaxe Lisp
      Du coup, je ne sais pas très bien à qui ce langage s’adresse exactement
  • Le blog de Bogdan Popa (defn.io) contient beaucoup d’informations intéressantes sur Racket
    J’ai hâte d’essayer moi-même la nouvelle fonctionnalité de threading

  • J’ai essayé Racket plusieurs fois, mais l’IDE m’a semblé trop peu intuitif et maladroit
    Je me demande si c’est un choix de design assumé, ou simplement le résultat de l’absence de meilleure alternative

    • L’IDE n’est pas le langage lui-même
      Racket est aussi bien pris en charge dans VSCode (Magic Racket, Langserver), Emacs (Racket Mode), Vim, etc.
      Vous pouvez consulter la documentation officielle et le dépôt Langserver
      DrRacket reste intéressant grâce à des fonctions absentes des autres IDE, comme le macro stepper
    • On trouve une excellente intégration Emacs sur racket-mode.com
  • Racket est un langage amusant
    Dans notre université, on utilise une version pédagogique de Racket pour les cours d’introduction à l’informatique en première année
    Certains étudiants détestent ça, mais d’autres l’apprécient discrètement

    • Je serais curieux de connaître le nom de ce cours
    • Mais la plupart disent aussi qu’ils ne réutiliseront plus jamais Racket après leur diplôme, ce qui est assez révélateur