License
Racket is distributed under the MIT license and the Apache License, version 2.0, at your option. However, the Racket runtime system includes components distributed under other licenses. In short:
The Racket CS runtime system embeds Chez Scheme, which is distributed under the Apache License, version 2.0.
The Racket BC runtime system includes code distributed under the GNU Lesser General Public License, either version 3 of the license, or (at your option) any later version.
Except for Windows executables that are created with the “embed DLLs” option, the runtime system remains separate as a shared library or additional executable, which means that it is dynamically linked and can be replaced with a modified variant by users.
The source code of Racket is available at https://github.com/racket/racket and https://download.racket-lang.org/releases.
The Racket runtime system includes or extends several components which have their own licenses.
The following are used in all Racket executables:
SHA-224 and SHA-256 implementation from Mbed TLS
Copyright © 2006–2015, ARM Limited, All Rights Reserved
Mbed TLS is licensed under the Apache License, version 2.0.ZLib
Copyright © 1995–2022 Jean-loup Gailly and Mark Adler
Zlib is distributed under a liberal license: see https://zlib.net.
Code translated from earlier versions of Zlib can be found in "<collects>/file/{gzip,gunzip}.rkt". Racket CS executables also use Zlib via Chez Scheme. Additionally, on some platforms, Zlib is packaged with the support libraries for racket/draw.Terminal support from Chez Scheme
Both Racket BC and Racket CS use primitive terminal support code from Chez Scheme’s expression editor, which is based on a command-line editor for Scheme developed from 1989 through 1994 by C. David Boyer. The expression editor, like the rest of Chez Scheme, is licensed under the Apache License, version 2.0.Startup path support from LLVM
The implementation of the C API function racket_get_self_exe_path in Racket CS and related internal functions in Racket BC includes code from the LLVM Project, which is licensed under the Apache License, version 2.0, with LLVM exceptions.
The following are used in all Racket executables for Windows:
MemoryModule
Copyright © 2004–2015 by Joachim Bauch / mail@joachim-bauch.de https://www.joachim-bauch.de
MemoryModule is licensed under the Mozilla Public License, version 2.0: see https://www.mozilla.org/en-US/MPL/2.0/ for the full text of the license. The source code of MemoryModule is included with the source code of Racket.
The following are used only in Racket BC executables:
libscheme
Copyright © 1994 Brent Benson
All rights reserved.
See the file "LICENSE-libscheme.txt" in your Racket installation’s "share" directory for the full text of the libscheme license.GNU Lightning
Copyright © 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2011 Free Software Foundation, Inc.
GNU Lightning is distributed under the GNU Lesser General Public License, version 3, or (at your option) any later version.
The source code of Racket’s variant of GNU Lightning is included with the source code of Racket.GNU MP Library
Copyright © 1991, 1992, 1993, 1994, 1996, 1999, 2000, 2007 Free Software Foundation, Inc.
GMP is distributed under the GNU Lesser General Public License, version 3, or (at your option) any later version.
Source code from GMP is included with the source code of Racket.libunwind
Copyright © 2003–2005 Hewlett-Packard Development Company, L.P.
libunwind is distributed under the MIT license.libffi
Copyright © 1996–2019 Anthony Green, Red Hat, Inc and others.
libffi is distributed under the MIT license.random.inc
Based on "random.c" from FreeBSD 2.2.
Copyright © 1983, 1993 The Regents of the University of California.
This code is distributed under a three-clause BSD license.
In addition to the Racket runtime system, the default mode of building Racket will install some packages, which are distributed under their own licenses.
The Racket code for all packages in the main Racket distribution is primarily under the MIT license and the Apache License, version 2.0, at your option, but some packages contain Racket code under other permissive licenses.
Some components of Racket are implemented using additional shared libraries. For some platforms and installation modes (especially for Windows and Mac OS), these libraries are distributed in platform-specific Racket packages; in other cases, they may be included with the operating system or installable via the system’s package manager. In all cases, these libraries are dynamically loaded and can be replaced with modified variants by users. In particular:
Even the “minimal Racket” distribution may include shared libraries for OpenSSL, SQLite, and/or Editline, depending on the platform.
The Windows distribution also includes GNU libiconv, which is distributed under the GNU Lesser General Public License, either version 3 of the license, or (at your option) any later version. See the byte converter documentation for further details.
The Racket Drawing Toolkit is implemented using Cairo, Pango, HarfBuzz, FriBidi, FreeType, FontConfig, and Glib. Some of these libraries are distributed under the GNU Lesser General Public License: see the applicable platform-specific Racket packages for details.
The Racket Graphical Interface Toolkit is primarily implemented using racket/draw and the native GUI framework for each platform, but can be configured to always use GTK, instead. On Mac OS, racket/gui also uses the libraries MMTabBarView and/or PSMTabBarControl, which are distributed under a three-clause BSD license.
The math/bigfloat library uses GNU MP and MPFR, which are distributed under the GNU Lesser General Public License, either version 3 of the license, or (at your option) any later version.
Files generated by Scribble’s LaTeX renderer use LaTeX packages with various licenses, such as the LaTeX Project Public License. Some of these are distributed with the Racket package "scribble-lib"; others may be installed as part of your TeX distribution.
For further details about the licenses for these libraries, see the "LICENSE.txt" files included with the applicable platform-specific packages.
Similarly, your Racket distribution or installation may have been configured with additional packages, including third-party packages, which could use other licenses: see the documentation or "LICENSE.txt" file included with each package for information about the applicable licenses.