Pull to refresh

Unladen Swallow 2009Q3

Python *
Тихо и совершенно, как говорится, незаметно, запоздало вышла ветка 2009Q3 интересного и перспективного проекта Unladen Swallow.
Если кто-то проспал все полимеры и не в курсе, то «ласточка налегке» (да-да, не только Гвидо любит Monty Python-а) — это проект сотрудников Google-а, пытающийся сделать более производительный и эффективный интерпретатор Python-а, при этом максимально совместимый с CPython (на данный момент образцом для сравнения считается CPython 2.6.1). Для этого они задействовали фреймворк LLVM, представляющий собой виртуальную машину c уже готовым JIT-компилятором и псевдобайткод для неё в виде универсального промежуточного представления между высокоуровневым языком (в нашем случае — Python) и низкоуровневой оптимизированной реализацией (С-шный код или машинные коды конкретной аппаратной платформы.)
Обещав стабильно выпускать по релизу в квартал (и именуя их соответственно), они выпустили вот уже второй релиз, в котором LLVM уже работает (самый первый релиз, 2009Q1, LLVM ещё не содержал и представлял собой в основном набор подготовительных патчей, которые с той поры фактически все уже попали в мейнстрим-ветку CPython). Если релиз Q2 был «первым блином» и кушал примерно раз в 10 больше памяти, чем CPython (но при этом, несмотря на JIT-революцию, сохраняя обратную совместимость и проходя все тесты в огромном количестве библиотек, от Twisted и Django до Numpy и Sympy), то версия Q3 уже похорошела и окрепла. Производительность поднялась по некоторым тестам до 170% от Q2; потребление памяти существенно упало, и, хотя по-прежнему оно в 2-3 раза больше, чем у CPython, но разработчики утверждают, что знают, где и что ещё пооптимизировать к версии Q4.
Но при этом, как в предыдущем релизе, разработчики, к сожалению, настоятельно не рекомендуют использовать «ласточку» для серьёзных задач. Пока это только промежуточный этап на пути к светлому будущему (в котором разработчики максимально смёржат код с CPython-ом, а то и вольют «ласточку» в него полностью),… и более того, cо стабильной веткой LLVM 2.5 и даже с «кандидатом в стабильные» веткой LLVM 2.6 «ласточка» даже не будет работать, потому что ориентирована на максимально свежий LLVM trunk.
Tags:
Hubs:
Total votes 33: ↑30 and ↓3 +27
Views 698
Comments Comments 18