The OpenNET Project / Index page

[ новости /+++ | форум | wiki | теги | ]

Выпуск Cython 3.0 и Nuitka 1.7, компиляторов для языка Python

20.07.2023 08:13

После пяти лет разработки опубликован релиз проекта Cython 3.0, развивающего компилятор для языков Python и Cython. Компилятор транслирует Python-код в представление на языках C/C++ и предоставляет дополнительные возможности для взаимодействия кода на языках Python и Си. Cython наиболее востребован для создания Python-обвязок вокруг библиотек на языке Си и для создания модулей на Си, ускоряющих выполнение кода на языке Python. Код компилятора написан на языке Python и распространяется под лицензией Apache 2.0.

Язык Cython является расширенным вариантом языка Python, нацеленным на упрощение интеграции с кодом на языке Си и позволяющим создавать расширения на языке Си для проектов на языке Python так же просто, как писать код на Python. Cython расширяет возможности Python средствами для прямого вызова функций на языке Си, поддерживает определение переменных с типами языка Си и позволяет компилировать итоговый код на языке Cython в представление на языке Си, которое затем собирается штатным системным компилятором. Применение расширенных возможностей языка Cython позволяет значительно повысить эффективность выдаваемого компилятором кода.

Производительность выполнения Python-кода при использовании Cython примерно на 30% выше, чем при использовании CPython при тестировании пакетом pybench. В некоторых случаях, прирост скорости составляет 60-90%, например, при выполнении операций if-elif-else или при работе циклов. Для кода, интенсивно работающего в циклах и использующего встроенные Си-типы Cython (списки, словари, строки), обычно удаётся поднять производительность в разы, а для кода с числовыми вычислениями при использовании статических типов ускорение может достигать 100-1000 раз. Подобная особенность позволяет значительно ускорить работу наиболее критичных к производительности участков Python-кода, переведя их на применение статических Си-типов.


   def f(x: cython.double):
       return x ** 2 - x

   def integrate_f(a: cython.double, b: cython.double, N: cython.int):
       i: cython.int
       s: cython.double
       dx: cython.double
       s = 0
       dx = (b - a) / N
       for i in range(N):
           s += f(a + i * dx)
       return s * dx

Новый выпуск примечателен изменением схемы нумерации версий. После выпуска 0.29 осуществлён переход на систему семантического версионирования и вместо выпуска 0.30 сформирован релиз 3.0.0. Новая модель представления версий подразумевает использование нотации X.Y.Z, в которой X меняется при внесении значительных изменений и изменений нарушающих обратную совместимость, Y меняется при расширении функциональности и Z при исправлении ошибок.

Присвоение номера версии 3.0 также подчёркивает переход Cython на использование синтаксиса и семантики Python 3 по умолчанию (ранее по умолчанию применялась семантика Python 2.7). В новой версии реализована поддержка большинства возможностей ветки Python 3.11 (в прошлом выпуске поддержка ветки Python 3 ограничивалась Python 3.6 и отдельными возможностями из Python 3.7). Поддержка Python 2.6 прекращена.

Из других существенных улучшений выделяется предоставления возможности указания аннотаций Cython в обычном Python-коде без необходимости использования отдельных файлов на языке Cython. В новой версии также добавлена поддержка Unicode символов в идентификаторах, обеспечена автоматическая генерация ufunc для NumPy, добавлены быстрые расширенные типы @dataclass и @total_ordering, по умолчанию обеспечена безопасная обработка исключений в функциях на Си, добавлена ограниченная поддержка API CPython.


Одновременно доступен выпуск проекта Nuitka 1.7, также развивающего компилятор для трансляции скриптов на языке Python в представление на языке C, которое затем можно скомпилировать в исполняемый файл, использующий libpython для обеспечения максимальной совместимости с CPython (используются штатные средства CPython для управления объектами). В Nuitka обеспечена полная совместимость с актуальными выпусками Python 2.6, 2.7, 3.3 - 3.11. По сравнению с CPython скомпилированные скрипты демонстрируют в тестах pystone повышение производительности на 335%. Код проекта распространяется под лицензией Apache.

В новой версии Nuitka предложена опция "--python-flag=isolated", включающая новый изолированный режим для ограничения возможностей импорта модулей из файловой системы. Расширены возможности плагина anti-bloat, который теперь может применяться для уменьшения числа пакетов при использовании библиотек sympy, numpy, torch, transformers, pandas, pycountry, statsmodels, no-qt, dask, patsy, matplotlib и tqdm (в основном исключена привязка к pytest, dask, tkinter и IPython). Обеспечена совместимость с новыми версиями библиотеки torch. Внесены различные оптимизации.

  1. Главная ссылка к новости (https://mail.python.org/piperm...)
  2. OpenNews: Facebook открыл код Cinder, форка CPython, используемого в Instagram
  3. OpenNews: Выпуск Cython 0.27, компилятора для языка Python
  4. OpenNews: Представлен Pyston-lite, JIT-компилятор для штатного Python
  5. OpenNews: Опубликован Codon, компилятор для языка Python
  6. OpenNews: Выпуск Nuitka 1.6, компилятора для языка Python
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/59466-cython
Ключевые слова: cython, python, nuitka
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (40) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.2, Аноним (2), 08:29, 20/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Большинство либ explicitly не поддерживают cython 3. Большинство правда компилируются с ним, но с предупреждениями, но те, которые компилируются с ошибками, обычно не принимают PRы по этому поводу: "не релиз? Ну вот когда будет релизом - тогда и приходите. Closed as not planned."

    Ну и сейчас эти либы стали де-факто сломаны (но их владельцам пофиг, это всё закономерно было, когда отказались, такая же закономерность со всеми либами, использующими спецификатор "<"), ибо даунгрейд других либ - это grave bug.

     

     ....ответы скрыты модератором (2)

  • 1.3, Анонус (?), 08:32, 20/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Что-то не слышно новостей от проекта HPy. Вроде такой многообещающий был. Особенно для альтернативных реализаций Пайтона.
     
  • 1.4, Аноним (4), 08:40, 20/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Чего это они вместе зарелизились это же не связанные друг с другом проекты.
     
     
  • 2.39, Аноним (39), 13:42, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Cython и Nuitka, они, если честно, не пара, не пара, не пара..
     

  • 1.5, Аноним (5), 08:45, 20/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • –6 +/
    Как только люди не извращаются, лишь бы не пользоваться языком, изначально лишенным всех этих недостатков. Я понимаю, что Python неплох, как оболочка для вызова Си-кода, но всё же это противоестественно. Есть же Julia, ещё там что-то, очень похожее на Python, но гораздо более быстрое. Берите, пользуйтесь. Нет, будем костыль очередной сооружать.
     
     
  • 2.6, Аноним (4), 08:50, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Mojo
     
     
  • 3.15, tonal (?), 09:16, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Mojo раздают или пока только пиарят?
     
     
  • 4.19, Аноним (4), 09:40, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +4 +/
    Mojo просто уже всех победил бай дизайн.
     
  • 4.63, Старший Аноним (?), 13:48, 21/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Mojo:

    1. Mojo (афроамериканская культура) — талисман, использующийся в шаманстве;
    2. Mojo — сексуальная энергия.
    3. Mojo — некая задумка ЯП.

    Поэтому смело можно утверждать, что Mojo уже пользуются, причем огромное количество людей, особенно Остин Пауэрс (https://www.youtube.com/watch?v=pUJCNoLmRO4)

     
  • 2.7, Жижа (?), 08:52, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    люди покупаются на простоту и "экосистему" питона. Жаль, что только изнутри становится понятно что это тормозная экосистема из говна и палок, и есть целые проекты типа сабжа которые пытаются это как-то исправить.
     
     
  • 3.10, Аноним (10), 08:58, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • –5 +/
    ты так же своей маме рассказываешь и она тебя хвалит? но это не значит что ты что-то знаешь, лалка

    питон для своих основных целей более чем адекватный инструмент, а там где нужно быстродействие си тебе в руки

     
     
  • 4.25, Аноним (25), 11:05, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Numpy, numba, cupy и тд. И результат вдруг получается быстрее (и в смысле разработки и времени исполнения), чем у мамкиного кульхацкера на с/с++. Питоном надо уметь пользоваться. Более того, выбирая "не написать быстрый код изза неумения пользоваться С" и "написать медленный код но на питон" выбор во многих случаях очевиден. Выбор в пользу "учить годами С" не для всех. Уж лучше учить numpy/cupy, не говоря о еще более высокоуровневых вещах.
     
  • 4.49, YetAnotherOnanym (ok), 16:24, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    > питон для своих основных целей более чем адекватный инструмент

    Ага, а цель у него - пабыринькому на коленке слепить из соплей "рабочий прототип", чтобы обогревать Вселенную на  средства заказчика.

     
     
  • 5.50, Аноним (50), 18:27, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    premature optimization is the root of all evil
     
  • 3.56, Аноним (56), 20:53, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Жаль, что только изнутри становится понятно что это тормозная экосистема из говна и палок, и есть целые проекты типа сабжа которые пытаются это как-то исправить.

    Ахаха... Экосистема настолько "тормозная", что на ней нынче работает весь machine learning и числодробилки.

    В чес секрет? В том, что вообще-то адекватные люди не пишут критичный по скорости код на скриптовом языке. По этой причине сабжы как раз и есть говно с палками, ибо во всех нормальных проектах критичные части пишут на C/C++/Rust, а Python лишь как интерфейс к ним.

     
     
  • 4.58, Аноним (58), 21:41, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • –2 +/
    >> адекватные люди не пишут критичный по скорости код на скриптовом языке.

    Скриптовые языки бывают разные. Нет никаких проблем писать числодробилку или критичные части machine learning на Julia, например. Что, в общем-то, и делают те, кому своё время дорого.

     
     
  • 5.60, Аноним (56), 03:03, 21/07/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    > Нет никаких проблем писать числодробилку или критичные части machine learning на Julia, например. Что, в общем-то, и делают те, кому своё время дорого.

    Ну-ну, пиши - удачи тебе. А другие люди вместо велосипедов возьмут готовый питоний CuPy. Потом посмотрим, сколько ты по сравнению с ними времени сэкономишь и чей код окажется быстрее.

     
     
  • 6.89, Аноним (89), 22:41, 21/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Ну ты уже взял? Хотя бы про компиляторы занешь что?
     
     
  • 7.90, Аноним (56), 00:44, 22/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    > Ну ты уже взял?

    Взял.

    > Хотя бы про компиляторы занешь что?

    Заню.

     
  • 6.91, Аноним (-), 04:09, 22/07/2023 Скрыто ботом-модератором
  • –1 +/
     
  • 2.11, Аноним (10), 08:58, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    в идеале язык нужно изучать вдоль и поперёк, с его костылями и недостатками, а на это ВНЕЗАПНО нужно время
     
     
  • 3.12, Аноним (12), 09:10, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • –8 +/
    а c++ можно за 21 день выучить, в этом и есть причина его первого места по популярности во всех рейтингах
     
     
  • 4.14, Аноним (10), 09:14, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    here we go again...

    a] выучить то можно, но писать на нём что то помимо хеллоуворлдов это уже из другой лиги, за это взрослым дяденькам платят как правило хорошие деньги
    b] насчёт первого места во всех рейтингах ты явно погорячился, юный падаван

     
  • 4.38, Аноним (38), 13:07, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Вы абсолютно правы, отличная книга была. Если каждый день штудировать по главе и выполнять упражнения то через 21 день станете знатоком с++
     
     
  • 5.47, Аноним (50), 15:47, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    И можно лихо выполнять задачи с литкода типа "добавить в конец списка", "поменять элементы списка местами", "отсортировать", "найти подстроку в строке","сложить массивы поэлементно" и тд. А если еще поднапрячься, то за пару недель можно и матричное умножение освоить. На литкоде, кстати, можно такие задачки и на питоне решать, надо только внимательно читать условия задачи (типа "решите не используя встроенных типов данных/функций/библиотек, не говоря уже о посторонних").
     
  • 4.92, филателист (?), 07:27, 25/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    кто-то ещё помнит этот раритет?
     
  • 3.54, Аноним (58), 20:47, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Если питон будут сначала изучать вдоль и поперёк, с его костылями и недостатками, то кто же им станет после этого пользоваться? Особенно на фоне современных языков. Питон и для 90-х был чем-то странным.
     
  • 2.26, Аноним (26), 11:31, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Чтобы пользоваться другими языками, их нужно знать.
     

  • 1.18, Аноним (18), 09:34, 20/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > для создания модулей на Си, ускоряющих выполнение кода на языке Python

    для создания модулей на Си, делающих возможным выполнение кода на языке Python

     
     
  • 2.21, Аноним (4), 09:43, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Делающем возможность отвязаться от интерпретатора питона.
     
     
  • 3.27, Аноним (27), 11:52, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Ты в этом уверен? Оно линкуется с _конкрентным_ интерпретатором и иначе не работает. Так что всё наоборот. Просто позволяет встроить нативный код посреди питон скрипта, или там временно отключить GIL. Но это уже бинарь получается, а не скрипт. Собственно, кроме этого ничего и не требуется.
     
     
  • 4.30, Аноним (4), 12:07, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Да правильнее говорить отвязаться от интерпретатора при выполнении бинарника, но не на этапе трансляции Питона в Си код.
     

  • 1.28, Аноним (28), 11:55, 20/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    Отличная вещь, если в прод менеджеры пихают прототип.
     
     
  • 2.29, Аноним (4), 12:06, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Лучше уж PyPy всё таки. Cython требует допилки, а Нуитка ничего не ускоряет на самом деле.
     
     
  • 3.51, Бил Гейтс (?), 18:50, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    На счёт напильника - не осведомлён, а вот на счёт "Нуитка ничего не ускоряет" пожалуй соглашусь, сударь.
     

  • 1.55, BrainFucker (ok), 20:53, 20/07/2023 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    А ведь на Cython можно писать целиком весь код, в том числе с чего стартует, а не только подключаемые модули. Есть ли какой известный проект где так поступили?

    Вообще чего больше всего питону не хватает это удобства разработки под мобильные платформы. Да, в курсе что есть Kivy и Beeware, но такое себе.

     
     
  • 2.57, Аноним (58), 21:14, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Зачем вообще нужна мобильная разработка на питоне? В случае серверов хотя бы понятно. Сервис-провайдеры типа AWS тупо на хомяках-питонопрограммистах поднимают весьма приличные деньги за железо. А вот на личных мобильных устройствах мало кто готов жертвовать автономностью и скоростью ради хотелок питонистов. Здесь уже нужны современные средства разработки, обеспечивающие формирование оптимального кода. И да, выбор есть, проще взять решение от нормальных программистов, а не у питонистов.
     
     
  • 3.59, BrainFucker (ok), 22:14, 20/07/2023 [^] [^^] [^^^] [ответить]  
  • +/
    Я конечно понимаю что выше толстый троллинг, но всё равно прокомментирую:

    > В случае серверов хотя бы понятно. Сервис-провайдеры типа AWS тупо на хомяках-питонопрограммистах поднимают весьма приличные деньги за железо.

    Ну и дураки, на джаве можно было бы поднять больше. Причём для этого даже клиентов много привлекать не пришлось бы.

    > А вот на личных мобильных устройствах мало кто готов жертвовать автономностью и скоростью ради хотелок питонистов.

    Зато много кто готов жертвовать автомономностью и скоростью ради Электрона, лол.

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру