> indeed high level languages often move the other way, abandoning value types altogether
Such as? Every major language currently used has value types. Even Java which in which they are treated like unwanted children (and the language suffers for it).
Scala has value types, and you can even define your own by extending AnyVal and following some tricky rules. It's just that Scala doesn't make you treat them differently than any other types, and they can still be magically autoboxed, just like in Java, if they get in a collection that isn't specialized to handle them.
Auto-boxing isn't really about creating pointers, its just about having some consistency at run-time. Since the boxed item is a value (immutable), it has no state and the fact that it has been given a pointer isn't very interesting.
C# is an example of a language that goes the other way: it provides first class support for custom values in the form of structs. When you are writing performant code, you actually begin to worry about transparent auto boxing and such.
Such as? Every major language currently used has value types. Even Java which in which they are treated like unwanted children (and the language suffers for it).