Pull to refresh

Слияние и поглощение

Reading time2 min
Views1.4K
Тихо и незаметно возникло желание написать ещё один пост про Unladen Swallow и опять начать его словами «тихо и незаметно». Причём в данном случае эти слова будут намного более уместны…

Мы все скучаем без новостей о «ласточке». На главной странице проекта в последних новостях сообщается про выпуск очередного ежеквартального релиза — 2009Q3, октябрь прошлого года. На Хабре пробегают новости от самих разработчиков, вызывающие сомнения в перспективах использования Python-а внутри Google-а, и, соответственно, в заинтересованности Google-а в «ласточке». Всё плохо и безрадостно, казалось бы, не видать нам годного JIT-компилятора в Python-е…

Ан нет. Сегодня, случайно зайдя на канал #unladenswallow на OFTC, с меня слетела шляпа меня встретила надпись: PEP 3146 approved! А этот самый PEP 3146 — это, между прочим, описание плана интеграции Unladen Swallow с CPython, имеющее теперь статус Accepted/Standards Track.

Иначе говоря, тихо и незаметно (yesss!) команде Unladen Swallow дан commit-доступ в официальный репозиторий CPython, сделана специальная веточка py3k-jit, и теперь кодовая база с режима совместимости с Python 2.6 постепенно переводится в режим совместимости с Python 3.x. Постепенно, когда будут улажены все проблемы (а их достаточно много — например, в рамках именно этой задачи планируется работа над самим LLVM с целью улучшения его функционирования в режиме shared linking; а то, понимаешь, собранный со статически слинкованным LLVM Unladen Swallow, занимающий 12 мегабайт, против полутора мегабайт CPython — это как-то сурово), и, судя по пометке Python-Version в описании стандарта, в районе Python 3.3, состоится и полный мёрж этого кода в основную ветку CPython.

Интересно, кстати, что добавление поддержки LLVM привнесёт в CPython код на C++ — до этого CPython разрабатывался, как очевидно из его названия, на чистом C, но, чтобы задействовать функционал LLVM полностью, в соответствующих местах кода, работающих с LLVM, было решено использовать C++. Тем не менее, этот вопрос тоже был решён, и проблемой для принятия кода Unladen Swallow в CPython это не стало.

Очевидно, что пока это исключительно «игра на перспективу» — Unladen Swallow всё ещё не показывает запланированного ускорения в среднем в пять раз, по разным тестам давая выигрыш порядка всего (хе-хе) 30-50-100%. Тем не менее, по тону разработчиков понятно, что в последнее время они занимались в основном организационно-интеграционными задачами, едва разве что потрогав реальные оптимизационные возможности LLVM (We believe that we have only begun to scratch the surface of what our LLVM-based JIT can deliver). Логично — самое вкусное на потом. Нас ждёт интересное будущее.
Tags:
Hubs:
+48
Comments17

Articles