Scala 2.8 introduced specialized generics and manifests to address limitations of type erasure. Specialized generics avoid boxing/unboxing by generating subclasses for base types. Manifests provide type information to allow array creation with type parameters by passing an implicit parameter containing runtime type details. These features help Scala generics more closely resemble static generics by preserving type information.