title: Explicitly stack-allocated data
body: <p>I think in most implementations of Common Lisp cons cells are generally/always heap allocated (see <a href="https://stackoverflow.com/questions/2256261/why-is-consing-in-lisp-slow">Why is consing in Lisp slow?</a>)</p>
  
  <p>Common Lisp does provide a facility for returning multiple values from a function (using <code>values</code> when returning and <code>multiple-value-bind</code> at the call-site). I'm speculating a bit here, but I think the motivation for this construction is two-fold: 1) make functions like <code>truncate</code> easier to use in the typical case where you don't care about the discarded value and 2) make it possible to return multiple values without using a heap-allocated data structure at all and (depending on the implementation (?)) avoiding the heap entirely (and GC overhead later down the road).</p>
  
  <p>Does Common Lisp (or a specific implementation like SBCL maybe) give you the ability to use stack-allocated data (maybe in conjunction with something like weak references) or create composite/large-ish value types (something like structs in C)?</p>