3 Punkte von GN⁺ 2025-11-24 | 1 Kommentare | Auf WhatsApp teilen
  • Racket 9.0 ist ein wichtiges Release, das parallele Threads einführt und die bisherige Unterstützung für Green Threads, futures und places erweitert
  • Neue Threads können mit dem Argument #:pool erzeugt werden; mit #:keep 'results lassen sich Ergebnisse später über thread-wait abrufen
  • Der black-box-Wrapper verhindert, dass der optimierende Compiler bestimmte Operationen entfernt, und erhöht so die Genauigkeit von Benchmarks
  • Die Funktion decompile-linklet kann linklets wieder in S-Ausdrücke umwandeln, und processor-count wurde so geändert, dass sie die Parallelität zurückgibt
  • Enthält außerdem verschiedene Updates wie das „natipkg“-Paket für AArch64, eine hinzugefügte Weibull-Verteilung und Verbesserungen an der Dokumentation

Wichtige Änderungen in Racket 9.0

  • In diesem Release wird die Funktion parallele Threads (Parallel Threads) neu eingeführt

    • Racket unterstützte bislang Green Threads, futures und places; parallele Threads kommen nun als wichtige Erweiterung hinzu
    • Parallele Threads lassen sich über das Argument #:pool erzeugen; mit #:keep 'results können Ergebnisse später mit thread-wait abgefragt werden
  • Der black-box-Wrapper verhindert, dass der optimierende Compiler bestimmte Berechnungen vollständig entfernt

    • Das ist nützlich, um bei Benchmarks eine genaue Leistungsmessung sicherzustellen
  • Die Funktion decompile-linklet kann linklets wieder auf S-Ausdrücke (s-expressions) abbilden

    • Damit lässt sich bei Codeanalyse und Debugging die interne Darstellung wiederherstellen
  • In BC Racket wurde die Funktion processor-count so geändert, dass sie immer die Anzahl paralleler Prozessoren zurückgibt

    • Dadurch lässt sich in parallelen Laufzeitumgebungen konsistent die Prozessoranzahl ermitteln
  • Das „natipkg“-Paket für AArch64 wurde neu bereitgestellt und kann für die Paket-Build- und Test-Infrastruktur verwendet werden

Weitere Verbesserungen

  • Die Funktion Check Syntax unterstützt jetzt das Verfolgen tiefer verschachtelter Identifikatoren im Feld „origin“ von Syntaxobjekten
  • Zur math-Bibliothek wurde die Weibull-Verteilung hinzugefügt
  • Enthält zahlreiche Bugfixes und Verbesserungen an der Dokumentation

Community und Mitwirkung

  • Zu diesem Release haben mehrere Entwickler beigetragen, darunter Alexander Shopov, Bogdan Popa, Matthew Flatt und Matthias Felleisen
  • Racket ist ein communitybasiertes Open-Source-Projekt und heißt neue Beitragende willkommen

Feedback und Hinweis zur Verbreitung

1 Kommentare

 
GN⁺ 2025-11-24
Hacker-News-Kommentare
  • Der Kern dieser Neuigkeit ist, dass Racket jetzt parallele Threads unterstützt
    Früher gab es zwar bereits Parallelisierungsmöglichkeiten wie places, aber dieser Ansatz ist deutlich leichtergewichtig und vertrauter
    Da ich es mag, mit Racket Dinge zu bauen, freue ich mich darüber, dass sich dadurch der Einsatzbereich von Racket erweitert

    • Ich war selbst überrascht, als ich die Release Notes gelesen habe. Es ist erfreulich, dass endlich Multithreading in dieser Form dazugekommen ist
      places war nicht besonders flexibel. Man konnte Lambdas nicht einfach weitergeben, und serializable-lambda verhielt sich ansteckend, sodass man zur Laufzeit keine Funktionen, sondern nur Daten senden konnte
      Deshalb war es schwierig, eine Struktur zu bauen, die Arbeit auf mehrere places verteilt
      Ich hoffe, dass das mit den neuen Concurrency-Funktionen nun möglich ist
      Aus diesem Grund habe ich bisher statt Racket GNU Guile verwendet. Guile war bei der Nutzung mehrerer Kerne über futures oder fibers deutlich verlässlicher
      Ich habe mit futures selbst ein paralleles Entscheidungsbaum-Modell gebaut und dabei eine nahezu lineare Geschwindigkeitssteigerung erzielt
    • Mich würde interessieren, welche Art von Projekten du mit Racket baust
      Ich bin Clojure-Entwickler und mag Lisp-Sprachen. Deshalb würde ich gern wissen, was man mit Racket so macht
    • Dass parallele Threads erst in Version 9 hinzugekommen sind, wirkt auf mich etwas widersprüchlich zu der Beschreibung von Racket auf der Homepage als „reife und ausgereifte Sprache
  • Wenn man dieses Video sieht, wirkt Racket vielleicht schwierig, wenn es nicht die erste Sprache ist, aber es ist leicht genug, dass sogar Kinder es lernen können

    • Wirklich ein großartiges Video
  • Ich mag Racket wirklich sehr
    Aus Spaß habe ich ein Buch über Racket geschrieben, das man online kostenlos lesen kann
    Unter den Scheme-Sprachen würde ich Racket und Gerbil empfehlen
    Racket eignet sich mit seiner guten IDE sowie den umfangreichen Standard- und Third-Party-Bibliotheken gut für Einsteiger, und Gerbil ist gut für Systemprogrammierung oder Netzwerk-Utilities

  • Racket ist wirklich eine großartige Sprache
    Es ist eine gute Lisp-Sprache zum Lernen, und ich erinnere mich noch an meine Aufgaben mit der DrRacket-IDE

  • Ich habe Lisp zum ersten Mal Mitte der 80er ausprobiert und bin später immer wieder darauf zurückgekommen, um neue Denkweisen und Programmiertechniken zu lernen
    Auch Racket habe ich mehrfach ausprobiert, aber irgendwie passte die Software selbst nicht zu mir
    Vielleicht wäre es in Ordnung, wenn ich konsequent dabei bliebe, aber ich kann mir noch immer nicht vorstellen, ein großes Projekt in Racket zu schreiben

    • Früher mochte ich es, bin aber weggegangen, weil der Code zu langsam und schwergewichtig war
      Es war sogar langsamer als Python, und seit der Neuschreibung auf Basis von Chez Scheme hat sich das vielleicht verbessert, aber inzwischen nutze ich schnelles und leichtgewichtiges Common Lisp
    • Ich frage mich, ob mit „Software“ die Sprache selbst gemeint ist oder eher das Tooling
  • Auf Racket aufmerksam geworden bin ich, als ich gesehen habe, dass John Carmack vor 10 Jahren Oculus-bezogene Arbeit mit Racket gemacht hat
    Passendes Video

    • Nur zur Einordnung: HN wurde in Arc geschrieben, und Arc wurde mit Racket gebaut
      Arc-Wiki-Artikel
  • Lisp ist an sich schon eine Metasprache, und Racket ist noch meta-er
    Man kann es praktisch als Baukasten zum Erstellen von Sprachen bezeichnen

    • So etwas hört man oft, aber es gibt in der Praxis nicht viele PL-Entwickler, die mit Racket tatsächlich Sprachen bauen
      Als ich Racket im PL-Unterricht eingesetzt habe, hatten die Studierenden Schwierigkeiten mit der Lisp-Syntax, weil sie an Java oder Python gewöhnt waren
      Deshalb bin ich mir nicht sicher, für wen genau diese Sprache gedacht ist
  • Im Blog von Bogdan Popa (defn.io) gibt es viele interessante Informationen über Racket
    Ich freue mich darauf, die neue Threading-Funktion selbst auszuprobieren

  • Ich habe Racket ein paarmal ausprobiert, aber die IDE war mir zu wenig intuitiv und zu umständlich
    Ich frage mich, ob das ein beabsichtigtes Design ist oder einfach daran liegt, dass es keine bessere Alternative gibt

    • Die IDE ist nicht die Sprache selbst
      Racket wird auch in VSCode (Magic Racket, Langserver), Emacs (Racket Mode), Vim usw. gut unterstützt
      Siehe die offizielle Dokumentation und das Langserver-Repository
      DrRacket hat weiterhin Funktionen wie den Macro Stepper, die andere IDEs nicht haben, und ist deshalb immer noch nützlich
    • Auf racket-mode.com gibt es eine hervorragende Emacs-Integration
  • Racket ist eine interessante Sprache
    An unserer Universität wird in der CS-Einführungsveranstaltung eine Bildungsversion von Racket verwendet
    Manche Studierende hassen es, aber es gibt auch Leute, die es stillschweigend mögen

    • Mich würde interessieren, wie der Kurs hieß
    • Die meisten sagen allerdings, dass sie Racket nach dem Abschluss nie wieder verwenden werden, und das ist schon ziemlich aussagekräftig