![]() Change the internal port representation to an object-with-vtable representation. The syntax looks similar to the class system of `racket/class`, but everything is first-order: no class values, no mixins, etc. Also, the vtable can contain non-procedures (like #f for "not supported" or a port to mean a direcirection). Using objects will make port instaces smaller and support a reorganization to eliminate ad hoc `data`-field extensions. It will also replace a half-step was was in place for byte input Along with the conversion, change the way the fast path for writing works: When possible, expose a shared buffer and index into that buffer. Only byte string input ports are really converted, so far. A compatibility layer maps the old protocol to the new one, so conversion can continue piecewise. |
||
---|---|---|
.github/ISSUE_TEMPLATE_DRAFT | ||
pkgs | ||
racket | ||
.gitattributes | ||
.gitignore | ||
.gitlab-ci.yml | ||
.mailmap | ||
.travis.yml | ||
appveyor.yml | ||
azure-pipelines.yml | ||
INSTALL.txt | ||
Makefile | ||
README.md |
This is the source code for the core of Racket. See "INSTALL.txt" for full information on building Racket.
To build the full Racket distribution from this repository, run make
in the top-level directory. To build minimal Racket, run make base
.
The rest of the Racket distribution source code is in other repositories, mostly under the Racket GitHub organization.
Contribute to Racket by submitting a pull request, joining the development mailing list, or visiting the IRC channel.
License
Racket is distributed under the GNU Lesser General Public License (LGPL). This implies that you may link Racket into proprietary applications, provided you follow the rules stated in the LGPL. You can also modify Racket; if you distribute a modified version, you must distribute it under the terms of the LGPL, which in particular states that you must release the source code for the modified software.
See racket/src/COPYING_LESSER.txt for more information.