Why deleted the string type is a mystery.
No it is not. If it was available it is a bug-fix
: widestring is not a refcounted string type,but a COM BSTR/BWSTR alias. A Pascal AnsiString or UnicodeString is reference counted. Hence the latter two do not fit the mechanism that is used for VarArray types or complex variant types because they need finalization.
Under COM the widestring memory is marshaled by the COM supersystem. Under linux etc, the widestring is simply a non-reference counted 16 bit string type.
In general, in pure Pascal, AnsiString and UnicodeString are way more efficient and portable. But at the cost that they can't be used without transformations, e.g. casting, when interfacing with other languages or formats. The compiler does that automatically for you when you use a hardcast, but it is not a pointer-cast (which you might think) but a transformation/copy. After the hardcast the two copies are not interchangable anymore. Be aware of that. Assign it back to a Pascal type when needed.