Basically all commonly used languages support this nowadays. Even ones you might not expect like C++ and C# have added it. The only major exceptions that come to mind are C and Java.
You have been able to return a struct by value in C since at least C89:
typedef struct { double d; int err; } Ret; Ret foo(void) { Ret r = { 0.0, 43}; return r; } int main() { Ret r = foo(); }
You have been able to return a struct by value in C since at least C89:
You can't return a bare fixed-size array though.