[racket-dev] TR's optimizer eventually going to unbox structs?

From: Neil Toronto (neil.toronto at gmail.com)
Date: Sat Aug 18 14:40:21 EDT 2012

Is TR's optimizer eventually going to unbox structs in the same way it 
unboxes rectangular flonums?

I have a design choice right now: how to represent probabilities. Floats 
are good because of their speed, but because of floating-point 
limitations, *four different representations* are typically used. (For 
the curious: p, 1-p, log(p), and log(1-p).) I'd like to make functions 
that accept any one of these representations, denoted by this type:

   (define-type Probability
     (U probability 1-probability log-probability log-1-probability))

The types are simply struct types that tag Float.

Of course, manually boxing flonums ruins any chance of the compiler 
emitting code that keeps the flonums unboxed. If TR's optimizer unboxed 
structs, though, everything could be speedy.

FWIW, by "eventually," I mean "within the next n years", where "n" is a 
smallish number.

Neil ⊥

Posted on the dev mailing list.