The grand majority of programming language APIs do not use a stack-based API.
Really, stack-based APIs are an exception in just about every way, but not in a good way.
If your question is about cheap memory storage, linked list algorithms already exist, so there's really no good reason to use a faux stack to store data.
It's not so much about what I would like to see, but rather why some developers insist on copying Lua's stack-based API, merely because so many people have accepted Lua as the very definition of a lightweight, embeddable programming language.
It seems like a false promise to me is all I'm saying. People get lured in with a very questionable tactic, and then start to believe "stack-based API == tiny and great", whereas I think that this is a pretty bold statement.
In any case, I did answer your question - you can achieve the same level of minimalism by using linked lists, and yes, OOP in C. Shouldn't be exactly news to anyone who has learned C (not that difficult anyway).
I don't see any compelling reasons to choose a stackbased API over anything else.
I've found myself figuratively battling with Lua when I tried to create nontrivial objects, such as metatables with constructors, indices, missing indices handling, etc, you name it. It's fun and easy for small things, but gets cumbersome really quick. And inline-evaluating Lua code just because the API has been updated in some odd ways, so that previously perfectly fine working code now compiles, but no longer works, just feels hacky to the max.
With a non-stackbased API, this is literally just a matter of walking function calls (the native program stack). But with a stackbased API, you have to walk the machine stack AND the API stack.
That's not fun. Not even remotely. This is how you teach a programmer to hate programming.
The grand majority of programming language APIs do not use a stack-based API. Really, stack-based APIs are an exception in just about every way, but not in a good way.
It makes a great deal of sense, especially when dealing with an interpreter for a stack-like machine, to expose language bindings in terms of that stack.
It's not super friendly, mind, but it makes perfect sense.
If your question is about cheap memory storage, linked list algorithms already exist, so there's really no good reason to use a faux stack to store data.