![]() Perpetuate a failure to make Windows paths behave reasonably with path-manipulation functions. In one case, the new implementation seemed better than the old one, so I've changed the old implementation (by deleting code) and test cases. The old code would split "x /y" to "\\?\REL\x " and "y", and the new one splits to "x /" and "y"; the trailing separator is now enough to preserve the space character, and it also preserves the directoryness of the path. Of course, "x /" splits to 'relative and "\\?\REL\x " as it strips away the trailing "/". A remaining problem in both implementations: some Windows API functions implicitly erase a trailing "." in a directory name, making "x./y" equivalent to "x/y". The Racket path-manipulation functions don't do that, so splitting and recombining "x./y" does not access the same path as the original. This apparently hasn't been a problem in practice, and there are so many terrible hacks already, so I left it alone. The new implementation perpetuates also the implementation mistake of representing paths internally as byte strings. If, in some terrible universe, I'm forced to do this again, the right choice is probably to keep the path in a parsed form with enough information to reconstruct the original, but with the information sorted nicely to make various normalizations and combinations easy. |
||
---|---|---|
pkgs | ||
racket | ||
.gitattributes | ||
.gitignore | ||
.mailmap | ||
.travis.yml | ||
appveyor.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 Copyright (c) 2010-2018 PLT Design Inc.
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.