This is interesting, but I don&#x27;t really understand the differences with
the existing coroutine libraries like libtask, libconcurrency or libcoro.<p>Of course, it uses the longjmp&#x2F;setjmp trick, as suggested by Dmitry Vyukov.<p><a href="http:&#x2F;&#x2F;www.1024cores.net&#x2F;home&#x2F;lock-free-algorithms&#x2F;tricks&#x2F;fibers" rel="nofollow">http:&#x2F;&#x2F;www.1024cores.net&#x2F;home&#x2F;lock-free-algorithms&#x2F;tricks&#x2F;fi...</a><p>However, I&#x27;m not sure of the benefit of this approach, compared to
writing a few lines of stack switching assembly code per architecture.
Especially, how portable are the implementations of longjmp and setjmp
across the multitude of C libraries and operating systems?<p>But more importantly, it doesn&#x27;t seem to solve the two main issues
of coroutines libraries written in C that were already solved in Go:<p>- How does the stack can grow or shrink? (specifying the stack size
  in the worse case scenario doesn&#x27;t scale well)<p>- How can a coroutine be moved to another operating system thread
  and back? (useful when blocking or when parallelism is needed)