Сразу скажу что не очень силен в технологии распределения памяти :)
У меня возникла такая идея. А что если разбить libgtk на несколько библиотек. Например, виджеты таблиц и функции работы с ними в одну либу, базовые функции и базовые виджеты в другую итд.
Во-первых, код будет разделен, что упростит процедуру изучения сырцов для их оптимизации.
Во-вторых, по-идее, программа, которая использует минимальный набор виджетов будет занимать меньше памяти. Или я что-то упускаю из виду?