Очень сложно понять, где заканчиваются библиотеки и начинаются фреймворки, а также где заканчиваются фреймворки и начинаются рантаймы ЯП
Предлагаю такое определение: если подключаешь штуку, начинаешь что-то делать, а потом оказывается, что она работает немного не так, и нет способа это исправить штатными средствами — то это фреймворк, а не библиотека; если исходный код с использованием фрейвморка компилируется в код на том же языке, но без фреймворка, то это не фреймворк, а рантайм ЯП