But when you get to hierarchical data structures like JSON/protobuf there very often simply isn't a streaming library available. There's a library function to decode the whole thing into an object in memory, and that's all.
Nothing prevents streaming in theory, it's just far more complicated to write that library.
e.g. standard go json library https://pkg.go.dev/encoding/json#example-Decoder.Decode-Stre...
Lesson for technologists: if you want to make the world a better place arrange your tech such that the lowest-friction path is also the correct path.
(Another example: disasterous multi-byte UTF encodings [correct solution was more friction] vs basically successful UTF8 [correct solution was less friction].)
I don't know if you're still dealing w/ this particular problem for protobufs, but based on my experience with thrift, a very similar library, there are probably some not too terrible ways you can kinda hack up the client-side parsing to be more streaming-ish...
[1]https://jpa.kapsi.fi/nanopb/docs/#features-and-limitations
It's very common that other programming languages have basic SAX parsers.
What are these languages that don't which you've encountered?
Does your language have the concept of streaming files?