You do realize all that sugar Delphi gives you is just doing all of what you have described under the hood..
I have converted a few Delphi apps that use those syntaxes and I don't see any advantage as for speed and code space between them.
I have studied the ASM code of Delphi in those regards just so I could get good understanding of their features and found that most of them are just sugar syntax to fool the eye.
All this does really is maybe allow you to punch out a piece of code a little faster but not by much, the end results in speed and space I have not really seen any benefit and I like any thing that gives me an edge, be it a smaller file or extra speed.
Syntax sugar is about describing things shorter and more naturally. For example if I would need to replace closures, I would need to describe them as interfaces and classes, that implement them. That description - is just extra code, that is unnecessary. It's just extra work for me. And it's ok, when you use closures just 3-5 times. Not hard to convert. But I have thousands of test cases.
And about multiple inheritance. Yeah, it can be avoided. But all solutions are "unnatural", require more code and slower. May be inheriting from several classes is wrong. But it's not true for polymorphism. Sometimes implementation of some methods needs to be shared between several classes, but they can't be inherited directly from class, that implements them. Because they're inherited from other classes. Easiest solution - to simply copy-paste this implementation. It's ok, when, again, you need to do it for just 2-3 methods and properties. But it's not ok, when you need to do it for hundreds of them. And making and tracking changes turns into hell. What's the purpose of inheritance then, if not to share code between implementations?
In this case you have 3 ways to solve your problem:
1) Interfaces, if you need to implement abstract classes and you're able to inherit implementations from each other - clunky solution.
2) Class composition, if each implementation should be in it's separate class - very clunky thing.
3) Aggregation - is combination of two above, each implementation can have it's own inheritance tree - but also very clunky.
I analyzed code under the hood and multiple inheritance should be faster, because it's more optimized. Example: class composition requires stub methods, i.e. methods, that contain call to method of other object only. I'm not sure, if such calls are optimized to have minimum possible code. And in case of multiple inheritance only very tiny Self fixup stub is inserted, that contains one asm instruction only. Only one extra instruction is needed in case of virtual inheritance - to read offset from VMT. And you don't need to describe hundreds of that stubs manually - it's done automatically. And of course you don't need to store and pass all that pointers to other objects then.
I.e. problem is with project scalability. If IDE/language allows you to use it for "toy" projects only, not professional ones - then it's used for "toy" projects only.
Example: Does Lazarus support project groups? Project groups aren't only about logical grouping of projects. They're about sharing units between them, that speeds up compilation.