Generated by GPT-5-mini| Racket | |
|---|---|
| Name | Racket |
| Paradigm | Multi-paradigm: functional, imperative, metaprogramming |
| Designer | Matthias Felleisen |
| Developer | PLT Scheme / RacketCon contributors |
| First appeared | 1995 |
| Latest release | 2024 |
| Typing | Dynamic, strong |
| Influenced by | Scheme (programming language), Lisp (programming language), ML (programming language) |
| Influenced | Typed Racket, Pyret, DrRacket |
| License | MIT License |
Racket is a general-purpose, multi-paradigm programming language and platform originating from the Scheme (programming language) family. It emphasizes language-oriented programming, macro-driven extensibility, and a rich ecosystem of libraries and educational tools. Racket has been used in research, education, scripting, and large-scale application development across industry and academia.
Racket evolved from the PLT Scheme project developed at Rice University and later at Northeastern University under the leadership of Matthias Felleisen, with early contributions from PLT Research members and collaborators at Indiana University, University of Utah, and University of Chicago. The project was originally known as PLT Scheme in the 1990s and rebranded in 2010 to reflect a broader vision influenced by work on macro systems and programming language design pioneered by researchers such as Paul Graham and John McCarthy. Major milestones include the development of the #lang system for custom languages, the introduction of Typed Racket driven by work from Sam Tobin-Hochstadt and Matthias Felleisen, and the integration of a pedagogical IDE inspired by educational projects at MIT and Harvard University. Funding and collaborative research ties have involved institutions like National Science Foundation and partnerships with conferences such as PLDI and ICFP where Racket-related papers have been presented.
The language descends from Scheme (programming language) and shares lexical scoping and first-class continuations detailed in work by Guy L. Steele Jr. and Gerald Jay Sussman. Its implementation is written in a combination of Racket's core and lower-level systems, incorporating a virtual machine and native code generation influenced by techniques from Lambda calculus research and compilers described in Dragon Book. The platform supports a foreign function interface used in integrations with C (programming language), Python (programming language), and Java (programming language). Runtime behavior, garbage collection, and concurrency primitives reflect research from Jon L. Bentley and system designs appearing at venues like USENIX and SIGPLAN conferences.
Racket provides powerful hygienic macro facilities building on concepts from Warren Teitelman and John McCarthy, module systems inspired by Apple Computer and academic work at Carnegie Mellon University, and a contract system influenced by Findler and Felleisen's research. The standard library includes libraries for web development (HTTP and web-server utilities comparable to frameworks like Django (web framework) and Ruby on Rails), GUI toolkits with inspirations from GTK and Qt (software), data serialization influenced by JSON and XML, and networking stacks discussed at IETF meetings. Typed Racket brings static typing ideas researched in Milner-style type systems and influenced by ML (programming language) families and Haskell (programming language). Domain-specific language support is central: the #lang mechanism enables language designers in the mold of Guy Steele and Edsger W. Dijkstra to create tailored syntaxes and semantics.
The flagship IDE, DrRacket, was shaped by pedagogical design research at MIT and integrates editor features, a stepper inspired by debugging work at Bell Labs, and pedagogical languages aligned with curricula from Harvard University and Carnegie Mellon University. Tooling includes package management comparable to npm and PyPI with an ecosystem curated on the Racket package server, build systems reflecting patterns from Make (software), and testing frameworks influenced by JUnit and RSpec. Integration plugins exist for editors and environments such as Visual Studio Code, Emacs, and Vim. Research tooling and workshops at ICFP, PLDI, and OOPSLA have highlighted Racket as a platform for prototyping language features.
Adoption spans academic institutions including MIT, Harvard University, Brown University, Cornell University, and University of California, Berkeley where Racket is used in introductory and advanced programming courses. Industry usage appears in startups and companies inspired by language-oriented approaches, with practitioners active in communities like GitHub, Stack Overflow, and conferences including LambdaConf and RacketCon. The community contributes packages and educational materials, often collaborating with organizations such as The Association for Computing Machinery and SIGPLAN to publish research and host tutorials. The project governance includes maintainers and contributors who coordinate via mailing lists, Git repositories, and issue trackers hosted on platforms like GitHub.
Common use cases include introductory programming courses modeled after Structure and Interpretation of Computer Programs curricula, domain-specific language creation used in web applications akin to projects at Mozilla Foundation, scripting and automation analogous to use cases for Python (programming language), and research prototypes published in ICFP and PLDI proceedings. Notable applied projects include web services, compilers, language experiments, and educational tools employed at institutions such as Stanford University and University of Washington. Extensions and libraries have been developed for data science workflows paralleling work at Google and Facebook, rapid prototyping in startups reminiscent of Y Combinator projects, and embedded scripting similar to integrations in Blender (software) and AutoCAD.