1. 29
  1.  

  2. 3

    I remember seeing libmill come out and being quite intrigued. It looks like this is a successor to libmill that aims to be more C-like rather than somewhat heavy-handedly porting Go conventions onto C.

    Super exciting, and I sincerely hope I have some usecase to try it some day, but even after finding libmill, I have yet to really need concurrency and parallelism in my C code; usually, I just strive for highly-optimized single-threaded execution.

    Either way, exciting work! You wouldn’t happen to have benchmarks (I know they’re mostly useless, but they can still be enlightening on occasion), would you?

    1. 2

      The implementation is very similar to libmill, so the benchmarks would be likely similar: 20 million coroutines and 50 million context switches per second.

    2. 1

      Very interesting.

      I did a quick grep through the code and you seem to be “rolling your own” context switches in i86 assembler… which if I understand correctly, means it will not port to other architectures without a chunk of assembler for them as well.

      Was there a reason you didn’t use the makecontext / swapcontext libc routines?

      ps: Very interesting blog, spent an enjoyable time reading and thinking about it.

      You seem to be evolving towards Erlang…