Typed Racket
Go to file
Sam Tobin-Hochstadt d89b936cc5 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.

original commit: 0a6537a6cbed7ca477d1539749b0afa371a2fda9
2013-10-22 19:14:26 -04:00
pkgs/typed-racket-pkgs Major revision of subtyping code for performance. 2013-10-22 19:14:26 -04:00