Вы вообще что-то странное говорите.
Во-первых, программирует не совсем всего себя -- а только всякие макросы синтаксические. Это вполне делается в рамках классического интэрпретатора, ну просто ему ещё макросы интэрпретировать.
Во-вторых, подобное деление "компилятор/интэрпретатор" -- было очень важным где-то в 60-х годах прошлого века. Ужэ к началу 90-х примерно все как-бы "интэрпретаторы" -- на самом деле компилировали код в то или иное представление.
А в нулевых -- многие ужэ не только в байт-код или шытый код, но и в машкод копмилировали.
Осталось фактически значимым только "с repl/без repl".
В-третьих, вон armpit scheme основной интэрпретатор занимает 60 килобайт бинарника, компилятор и ассемблер к нему -- ещё по 22k в исходниках с комментариями.
100к для компилятора -- это как, достаточно "маленький"?