More generally, I was very confused by the entire stack section. Why sbrk instead of mmap? Why should C provide special functions for creating or using a stack? Isn't a stack just a region of memory and a pointer into it? Isn't their high performance entirely due to data access patterns that facilitate cache locality while minimizing instruction count and pointer dereferences?
I may well have some misconceptions, but if so this article did nothing to address them.
Edit: Aha! From the mmap man page:
> MAP_STACK (since Linux 2.6.27)
> Allocate the mapping at an address suitable for a process or thread stack.
> This flag is currently a no-op on Linux. However, by employing this flag, applications can ensure that they transparently obtain support if the flag is implemented in the future. ... some architectures may (later) require special treatment for stack allocations. ...