The type alias feature is not only costly at run-time, it also prevents certain optimizations from being correct in the current implementation.
Because vallang is mainly used as a run-time for Rascal, it can do without the alias feature. The Rascal compiler offers a compile-time type alias feature which is equivalent from a programmer's perspective.
By removing type aliases, I believe the only source of type representation ambiguity at run-time will be labed fields of tuple types. Those too, can be replaced by a compile-time feature.
The type alias feature is not only costly at run-time, it also prevents certain optimizations from being correct in the current implementation.
Because vallang is mainly used as a run-time for Rascal, it can do without the alias feature. The Rascal compiler offers a compile-time type alias feature which is equivalent from a programmer's perspective.
By removing type aliases, I believe the only source of type representation ambiguity at run-time will be labed fields of tuple types. Those too, can be replaced by a compile-time feature.