Racket is a programming language in the Lisp and Scheme tradition. Its own home page describes it as “the Language-Oriented Programming Language” and as “a language for making languages, so that a programmer can write every module in a well-suited language.” The central idea is that programmers can define new syntactic constructs and even whole domain-specific languages as ordinary libraries, using Racket’s macro system, rather than reaching for external tools.
The project grew out of PLT Scheme, a Scheme system developed over roughly two decades. As Racket’s own announcement of the rename explains, the team found that the “Scheme part of the name PLT Scheme is misleading” and an obstacle to explaining their work, so the system was rebranded: DrScheme became DrRacket and the mzscheme executable became racket. The announcement notes that older Scheme code would still be supported for backward compatibility.
The principles behind the language are laid out in “The Racket Manifesto” by Matthias Felleisen and colleagues, which states that “Racket is a programming language for creating new programming languages.” The manifesto argues that programming is fundamentally about formulating a problem domain as its own language, and that a system should make creating such languages a normal part of programming.
Because of this flexibility and its strong tooling, Racket is widely used in programming-languages research and in education, where the same platform can host teaching languages of increasing sophistication and full general-purpose programming alike.