The compiler (in C) is allowed to assume that infinite loops eventually terminate. This can lead to these kinds of loops not actually running forever when built with an optimizing compiler.
“An iteration statement may be assumed by the implementation to terminate if its controlling expression is not a constant expression, and none of the following operations are performed in its body, controlling expression or (in the case of a for statement) its expression-3: – input/output operations – accessing a volatile object – synchronization or atomic operations."
It can, for example, simply optimize it away, assuming non-productive infinite loops are stupid and not reflective of what the code will actually do.
It really is such a cool concept. The autism in me hates the name though because there's always a server. I wish it were called a "container-based service" or even just "containers" instead of serverless to be more direct. Perhaps even "web functions."
There's so much big talk about scale but really, scaling is not that important to 99% of businesses I've worked at. You're not a startup. Your typical server has a huge amount of resources if managed appropriately. I guarantee and would bet money that you'll never have a million users let alone a billion using your medical coding web app. Like, sit down!
She can be her own heap of trouble but my life is ever richer for it.
Ah, and the resumed conversation from weeks ago is another thing she does with the full expectation that I will remember the thing that she is now answering. Imagine suddenly being thrust backwards through time, weeks peeling away, suddenly arriving at a reply to a comment made in passing a month ago. Like necroposting but in real life.
The compiler (in C) is allowed to assume that infinite loops eventually terminate. This can lead to these kinds of loops not actually running forever when built with an optimizing compiler.
ISO/IEC 9899:2017 §6.8.5 “Iteration statements”, paragraph 6:
“An iteration statement may be assumed by the implementation to terminate if its controlling expression is not a constant expression, and none of the following operations are performed in its body, controlling expression or (in the case of a for statement) its expression-3: – input/output operations – accessing a volatile object – synchronization or atomic operations."
It can, for example, simply optimize it away, assuming non-productive infinite loops are stupid and not reflective of what the code will actually do.