MEL is a library for cooperative multitasking and generic execution system. Also it includes some quite simple but useful parallelism functionalities. For a powerful parallelism engine there are some good options as https://oneapi-src.github.io/oneTBB/index.html. Those kind of libraries could be integrated in the the execution system as a new engine.
The base piece of the system is the so called microthread, which can be seen as lightweight threads for cooperative multitasking (similar in concept, but not equal, as Windows fibers o coroutines). From now on, we will use Process instead of microthread for readability and to capture de idea that we are talking about processes (tasks), but without forgetting their microthread capabilities, which are almost the same as usually a thread has: wait, sleep, switchProcess (usually known as yield)
Processes, schedulers and runnables together form the basic task system: a Runnable is an object with a ProcessScheduler and this is an aggregate of Process. Also, we have ThreadRunnable which is a Thread specialization to behave as a Runnable, so being able to be posted processes (remember, microthreads, so with microthreading capabilities). On top of this basic tasking system. we have some constructs that allows to apply modern idioms to our code, specifically asynchronous programming. We will talk more about each of this points in detail
The library also has a lot of helper functionalities. Although the code use C++17 features, because the main pieces of this library dates back to the begining of year 2000, a lot of template metaprogramming was done to be able to resolve things like callbacks binding arguments to callables, etc.. Most of this features are now (since C++11) resolved with bind, function, etc.. So, some functionalities could be removed and used the "new" C++11 equivalents, specifically those in mel::mpl namespace.
And on top of this, achieving more genericity and flexibility, we have the Execution System. This is a fully template module that allows to express in a very easy, understable and efficient way, sequences of tasks and where to execute them, in a way independent of the underliying execution system. More on this in its section.