Зміни у Fedora 41 для розробників

Python 3.13

Fedora 41 містить Python 3.13, останній великий випуск мови Python. Список змін у цьому випуску наведено за посиланням:https://docs.python.org/dev/whatsnew/3.13.html#what-s-new-in-python-3-13[вища документація], зокрема у розділі:https://docs.python.org/dev/whatsnew/3.13.html#porting-to-python-3-13[Перехід на Python 3.13].

Крім того, PythonC тепер збирається з прапором компілятора -03 у Fedora, що узгоджується з тим, як збирається Python, і забезпечує помітне покращення продуктивності (наприклад, середнє геометричне значення pyperperformance в 1.04 рази швидше). Це впливає лише на інтерпретатор та стандартну бібліотеку Python, але не на модулі розширень сторонніх розробників, зібрані як RPM або на системах розробників.

Зауваження щодо перенесення встановлених користувачами пакунків pip

При переході з Fedora 40 на Fedora 41 версія основного інтерпретатора Python змінюється з 3.12 на 3.13. Якщо у вас є пакунки Python, встановлені за допомогою pip, вам слід виконати наступну процедуру, щоб перенести їх на нову версію:

  1. Встановіть попередню основну версію Python:

    sudo dnf install python3.12
  2. Отримайте pip для попередньої основної версії Python:

    python3.12 -m ensurepip --user
  3. Огляньте список встановлених пакунків:

    python3.12 -m pip list
  4. Збережіть список із вказаними версіями:

    python3.12 -m pip freeze > installed.txt
  5. Встановіть ті самі пакунки у новій типовій версії:

    python3 -m pip install --user -r installed.txt
  6. Видаліть встановлені користувачем пакунки для 3.12; це забезпечить правильне вилучення файлів у ~/.local/bin:

    python3.12 -m pip uninstall $(python3.12 -m pip list --user | cut -d" " -f1)
  7. Якщо хочете, вилучіть тепер порожню структуру каталогів:

    rm -rf ~/.local/lib/python3.12/
  8. Якщо хочете, вилучіть непотрібну версію Python:

    sudo dnf remove python3.12

Крім того, якщо у вас є пакунки pip, встановлені за допомогою udo, виконайте наступні команди перед виконанням останнього кроку, який видаляє `python3.12`, або тимчасово встановіть його знову:

  1. Отримайте pip для попередньої основної версії Python для root:

    sudo python3.12 -m ensurepip
  2. Огляньте список загальносистемних встановлених пакунків:

    sudo python3.12 -m pip list
  3. Видаліть встановлені пакунки для 3.12; це забезпечить правильне вилучення файлів у /usr/local/bin:

    sudo python3.12 -m pip uninstall $(python3.12 -m pip list | cut -d" " -f1)
  4. Якщо хочете, вилучіть тепер порожню структуру каталогів:

    sudo rm -rf /usr/local/lib*/python3.12/

Якщо ви виконали першу процедуру, пакунки вже встановлено для вашого облікового запису користувача (цей варіант є бажаним). Не використовуйте надалі sudo pip. Наведені тут настанови стосуються лише тих, хто вже використовував sudo pip раніше.

Pytest 8

Pytest - це фреймворк для тестування проектів на Python. За допомогою Pytest ви можете писати прості та масштабовані тестові кейси для вашого коду. Зараз доступний Pytest 8, в якому вилучено багато застарілих функцій та внесено деякі суттєві зміни. Серед помітних оновлень можна виділити наступні:

  • Покращено відмінності, які виводить pytest у разі невдалого завершення перевірки.

  • Змінено внутрішній метод FixtureManager.getfixtureclosure. Плагіни, які використовують цей метод або підкласи компонента FixtureManager і перезаписують FixtureManager.getfixtureclosure, повинні будуть адаптуватися.

  • Обгортки для гачків нового стилю тепер використовуються всередині.

  • Очищено обробку параметра за замовчуванням під час визначення параметрів конфігурації.

  • Деякі пакунки, ймовірно, не вдасться зібрати.

Більш детальну інформацію можна знайти за посиланням:https://docs.pytest.org/en/stable/changelog.html[upstream release notes].

PyTorch 2.4

Fedora 41 містить PyTorch версії 2.4, останню версію цієї популярної бібліотеки Python для глибокого навчання з використанням CPU та GPU.

Додаткову інформацію можна знайти за посиланням:https://pytorch.org/blog/pytorch2-4/[оголошення про випуск] та за посиланням:https://github.com/pytorch/pytorch/releases/tag/v2.4.0[примітки до випуску].

ROCm 6.2

ROCm 6.2 - це остання версія обчислювальних бібліотек AMD, які працюють з ядром linux і дозволяють користувачам запускати обчислювальні навантаження на своїх графічних процесорах. Задіяно якомога більше графічних процесорів, щоб зробити відкрите прискорення доступним і простим для якомога ширшої аудиторії. Він також інтегрований з PyTorch у Fedora 41. Дивіться посилання:https://rocm.docs.amd.com/en/docs-6.2.0/about/release-notes.html[upstream release notes] для більш детальної інформації.

Python 2 у відставці

Пакунок python2.7 було вилучено без заміни з Fedora Linux 41. У Fedora 41 та пізніших версіях не буде Python 2, окрім PyPy. Пакунки, які потребують python2.7 під час виконання або збірки, мають бути оновлені для використання Python 3, або їх також буде вилучено.

Golang 1.23

Останній стабільний випуск цієї мови програмування тепер доступний у Fedora 41. Серед помітних змін можна виділити наступні:

  • Оператор range у циклі for-range приймає функції-ітератори як вирази діапазону. Підтримуються наступні типи ітераторних функцій:

    • func(func() bool)

    • func(func(K) bool)

    • func(func(K, V) bool)

    Виклики функції аргументу ітератора дають значення ітерації для циклу for-range.

  • Інструментарій Go може збирати статистику використання та поломок. Ці дані називаються "телеметрія Go" і являють собою опціональну систему, керовану командою go telemetry.

  • Змінна середовища GOROOT_FINAL більше не працює. Встановіть символічне посилання замість переміщення або копіювання двійкового файла go, якщо у вашому дистрибутиві команду go встановлено у місце, відмінне від $GOROOT/bin/go.

  • У повідомленні трасування, яке виводиться під час виконання після фатальної помилки, тепер другий і наступні рядки повідомлення відступають на один табулятор.

  • Значні зміни в реалізації типів time.Timer та time.Ticker.

Більш детальну інформацію можна знайти за посиланням:https://tip.golang.org/doc/go1.23[upstream release notes].

Perl 5.40

Останній стабільний випуск цієї мови програмування тепер доступний у Fedora 41. Серед помітних змін можна виділити наступні:

  • Нове ключове слово CLASS

  • Атрибут :reader для польових змінних. Це означає, що автоматично створюється метод доступу, який повертає значення польової змінної з даного екземпляра.

  • При обробці опцій командного рядка Perl допускає пробіл між ключем -M і назвою модуля після нього.

  • До простору імен builtin додано функції inf та nan (експериментальні). Вони діють як константи, що повертають значення нескінченності з плаваючою комою та не-числа відповідно.

  • Виклик методу import невідомого пакунка видає попередження.

  • Синтаксис оператора return тепер відкидає непрямі об’єкти.

  • Використання goto для переходу із зовнішньої області видимості у внутрішню є застарілим і буде повністю вилучено у Perl 5.42.

Більш детальну інформацію можна знайти за посиланням:https://perldoc.perl.org/perl5400delta[upstream release notes].

NodeJS 22.0

Fedora 41 тепер постачається з Node.js 22.x як серверним рушієм JavaScript Node.js за замовчуванням. Якщо ваші застосунки ще не готові до цієї нової версії, їх потрібно буде модифікувати, щоб вони залежали від пакету сумісності nodejs20 і покладалися на /usr/bin/node20 замість /usr/bin/node для операції.

Haskell GHC 9.6 та Stackage LTS 22

Для Fedora 41 основний пакет компілятора GHC Haskell було оновлено з версії 9.4.5 до останнього стабільного випуску 9.6.6 (перезавантаження пакунка ghc з пакунка ghc9.6). Крім того, пакунки Haskell у Стеку (стабільному дистрибутиві вихідних текстів Haskell) було оновлено з версій у LTS 21 до останнього випуску LTS 22. Пакунки Haskell, які не входять до Stackage, було оновлено до останньої відповідної версії зі сховища пакунків Hackage, розташованого вище.

Повну інформацію про цей випуск можна знайти за посиланням:https://downloads.haskell.org/~ghc/9.6.6/docs/users_guide/9.6.1-notes.html[примітки до випуску] та за посиланням:https://gitlab.haskell.org/ghc/ghc/-/wikis/migration/9.6[посібник з міграції].

Оновлення набору інструментів GNU

Набір інструментів GNU у Fedora 41 оновлено до:

  • Компілятор GNU C (gcc) 14.1+

  • Двійкові утиліти GNU (binutils) 2.42+

  • Бібліотека GNU C (glibc) 2.40

  • Налагоджувач GNU (gdb) 14+

Також див. примітки до попередніх випусків: GCC, Binutils, GLibC NEWS, і GDB NEWS.

LLVM 19

Підпроекти LLVM у Fedora оновлено до версії 19.

Додано пакунки сумісності clang18, llvm18, lld18, compiler-rt18 та libomp18, щоб забезпечити подальшу роботу пакунків, які наразі залежать від бібліотек clang та llvm версії 18. Попередні пакунки сумісності, присутні у Fedora 40, такі як llvm17, clang17 тощо, було вилучено.

Додаткову інформацію про цей випуск можна знайти за посиланням:https://releases.llvm.org/19.1.0/docs/ReleaseNotes.html[LLVM 19 Release Notes].