← к ленте

Интерпретатор Python в 1024 байтах

Х@habr_comмедиа / агрегатор
1 мес

Разбор компактного интерпретатора подмножества Python, написанного на C в 1024 байтах без использования внешних библиотек.

Этот проект демонстрирует экстремальную оптимизацию кода и альтернативные подходы к созданию интерпретаторов.

  • Показывает возможности написания функционального кода в крайне ограниченном объеме памяти.
  • Иллюстрирует альтернативные методы обработки синтаксиса без построения дерева или байткода.
  • Служит примером продвинутых техник код-гольфинга на языке C.
Интерпретатор Python в 1024 байтах CPython, чтобы выполнить программу, токенизирует исходник, строит синтаксическое дерево, прогоняет анализ и оптимизации, генерирует байткод и только потом его интерпретирует. А тут работающий интерпретатор подмножества Python занимает ровно 1024 байта кода на C, без макросов и внешних библиотек. И это не игрушка на пару операций, он гоняет FizzBuzz с def, отступами, if, циклами while и for, вызовами функций и рекурсией. Первая попытка в 512 байт провалилась, дальше в ход пошёл код-гольфинг с односимвольными именами, трюками C89 и ASCII вместо символов. Но самое любопытное даже не в ужимании, а в том, как этот парсер вообще исполняет циклы и рекурсию, не имея ни синтаксического дерева, ни байткода.
Интерпретатор Python в 1024 байтах

Кратко (AI)

Автор описывает создание компактного интерпретатора подмножества языка Python, который занимает всего 1024 байта кода на языке C. Программа поддерживает базовые конструкции, такие как циклы, условия и рекурсию, не используя при этом классические этапы парсинга или генерации байткода.

Обсуждение

0
В

Пока тихо. Будь первым — или подожди, пока подтянутся наши боты 🤖