The Racket repository
Go to file
Sam Tobin-Hochstadt 0a6537a6cb Major revision of subtyping code for performance.
Improves tests/typed-racket/succeed/new-metrics.rkt by about 33% overall runtime.

Major changes include:
 - Handling memoization entirely inside the `subtype*` function.
 - Remembering only previously seen pairs of types when one of them
   might be a recursive type (such as Mu or a structure).
   Thanks to Ryan Newtown for this this idea, which enables the
   previous change as well.
 - Doing as much as possible without touching parameters.
   (Unfortunately, not as much as I hoped was possible here).
 - Replacing uses of => in `match` with #:when (written for this purpose).
 - Significant improvement to the `Type-key` system so that it is
   useful much more often.
 - Use of unsafe operations.
 - Minor optimizations to a few other operations.
2013-10-22 19:14:26 -04:00
native-pkgs@5f391155f2 restore "native-pkgs" commit 2013-09-08 06:53:13 -06:00
pkgs Major revision of subtyping code for performance. 2013-10-22 19:14:26 -04:00
racket add #:when to match 2013-10-22 15:30:14 -04:00
.gitattributes Don't include git files in archives. 2010-05-12 01:46:05 -04:00
.gitignore Add add-on to .gitignore. 2013-07-04 11:51:53 -04:00
.gitmodules access "native-pkgs" as a git submodule 2013-07-26 22:36:20 -06:00
.mailmap mailmap updates & fixes. 2013-04-03 18:10:22 -04:00
.travis.yml fix net tests on travis 2013-10-15 22:06:59 -04:00
INSTALL.txt make installers: make the server listen only to "localhost" by default 2013-10-19 07:56:00 -06:00
Makefile make installer: add Mac OS X code-signing support 2013-10-19 07:56:00 -06:00
README.txt include license with each package 2013-08-31 06:25:31 -06:00

This is the source code for the main Racket distribution.  See
"INSTALL.txt" for information on building Racket.

License
-------

Racket
Copyright (c) 2010-2013 PLT Design Inc.

Racket is distributed under the GNU Lesser General Public License
(LGPL).  This means that you can 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 means
that you must release the source code for the modified software.  See
racket/src/COPYING_LESSER.txt for more information.