Racket version 8.11 is now available

Release 8.11 of Racket, the Language-Oriented Programming Language is now available from https://download.racket-lang.org/

Racket can be use to implement a general purpose programming language (idris is build on top of Racket) or prototype your PL before implementation another platform. (Pyret was prototyped before being implemented in Javascript - this was before Racket had a Javascript compiler). It can also be used to develop or prototype embedded or external
DSLs.

Racket allows programmers to add new syntactic constructs in the same way that other languages permit the formulation of procedures, methods, or classes.

PLT Redex consists of a domain-specific language for specifying reduction semantics, plus a suite of tools for working with the semantics.

PLT Redex is embedded in Racket, meaning all of the convenience of a modern programming language is available, including standard libraries (and non-standard ones) and a program-development environment.

——

As of this release:

  • Match clauses can include a #:do option to allow evaluation of code and bindings before a following #:when clause. See match

  • JSON Serialization supports indentation with an #:indent option to write-json. See write-json

  • An initiate-sequence function simplifies the creation of sequences. See initiate-sequence

  • The :do-in form allows an inner definition sequence. See :do-in

  • The redex-define form allows pattern-matching in PLT Redex using a define-like syntax. See redex-define

  • Racket and Chez Scheme use Robert L. Smith’s “Algorithm 116” for division of complex numbers. See Robert L. Smith. 1962. Algorithm 116: Complex division. Commun. ACM 5, 8 (Aug. 1962), 435.
    https://dl.acm.org/doi/10.1145/368637.368661

  • DrRacket has indentation guides that provide visual cues indicating how code is indented and grouped, accessible by using (<menu-key>-shift-i).

  • “Comment-out” menu items can be specific to the #lang used by the current file. See text:indent-guides<%>

  • Unused identifiers have a tooltip indicating that they have no bound occurrences.

  • Quickscript includes a new form of scripting in the form of “hook” functions that can be attached to existing events. See Hooks

  • Plots include plot-inset and plot-legend-padding parameters to control the amount of space left unused around the plot edge and plot legend. See plot-inset

  • There are many other documentation improvements, optimizations, and bug fixes!

Feedback Welcome

2 Likes

Do you think Racket can be used for implementing the JetWork compiler? Looking through the docs., it looks like Scheme…