개발자를 위한 페도라 41의 변경 사항

파이썬 3.13

Fedora 41 provides Python 3.13, the latest major release of the Python language. For a list of changes in this release, see the upstream documentation, especially the Porting to Python 3.13 section.

In addition, PythonC is now built with the -03 compiler flag in Fedora, which aligns with how Python is built upstream, and provides a noticeable performance improvement (for example, 1.04x faster pyperformance geometric mean). This only affects the interpreter and standard Python library, not any third party extension modules built as RPMs or on developer systems.

사용자-설치된 pip 꾸러미를 이전하는데 기록합니다

When you upgrade from Fedora 40 to Fedora 41, the main Python interpreter version changes from 3.12 to 3.13. If you have any Python packages installed using pip, you must complete the following procedure to migrate them to the new version:

  1. 이전의 주요 파이썬 버전을 설치합니다:

    sudo dnf install python3.12
  2. 이전 주요 파이썬 버전을 위해 `pip`을 가져옵니다:

    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. 선택적으로, 불필요한 파이썬 버전을 제거합니다:

    sudo dnf remove python3.12

Additionally, if you have any pip packages installed using sudo, run the following commands before running the final step above which removes `python3.12`, or install it again temporarily:

  1. `root`를 위해 이전 파이썬 버전용 `pip`을 가져옵니다:

    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 is a testing framework for Python-based projects. With Pytest you can write simple and scalable test cases for your code. Pytest 8 is now available, which removes a lot of deprecated functions and introduces some breaking changes. The notable updates include:

  • Improved differences that pytest prints when assertion fails.

  • The internal FixtureManager.getfixtureclosure method has changed. Plugins that use this method or that subclass the FixtureManager component and overwrite FixtureManager.getfixtureclosure, will need to adapt.

  • The new-style hook wrappers are now used internally.

  • Sanitized the handling of the default parameter when defining configuration options.

  • Some packages will likely fail to build.

For more details, see the upstream release notes.

PyTorch 2.4

Fedora 41 provides PyTorch version 2.4, the latest upstream of this popular Python library for deep learning using CPUs and GPUs.

For more information, see the upstream release announcement and release notes.

ROCm 6.2

ROCm 6.2 is the latest iteration of AMD’s compute libraries that work with the linux kernel to allow users to run compute workloads on their GPUs. As many GPU’s as possible are enabled so open acceleration is available and easy for to as wide an audience as possible. It is also integrated with PyTorch in Fedora 41. See the upstream release notes for details.

Python 2 retired

The python2.7 package has been retired without replacement from Fedora Linux 41. There will be no Python 2 in Fedora 41 or later, other than PyPy. Packages requiring python2.7 on runtime or buildtime will have to be updated to use Python 3, or be retired as well.

Golang 1.23

이와 같은 프로그래밍 언어의 최신 안정 배포판은 이제 페도라 41에서 사용 할 수 있습니다. 주목할 만한 변경은 다음을 포함합니다:

  • The range clause in the for-range loop accepts iterator functions as range expressions. The supported types of iterator functions are:

    • func(func() bool)

    • func(func(K) bool)

    • func(func(K, V) bool)

    Calls of the iterator argument function produce the iteration values for the for-range loop.

  • The Go toolchain can collect usage and breakage statistics. These are referred to as "Go telemetry" and represent an opt-in-system controlled by the go telemetry command.

  • The GOROOT_FINAL environment variable no longer works. Install a symbolic link instead of relocating or copying the go binary if your distribution installs the go command to a location other than $GOROOT/bin/go.

  • The traceback message printed by the runtime after a fatal error now indents the second and subsequent lines of the message by a single tab.

  • Significant changes to the implementation of the time.Timer and time.Ticker types.

For more details, see the upstream release notes.

Perl 5.40

이와 같은 프로그래밍 언어의 최신 안정 배포판은 이제 페도라 41에서 사용 할 수 있습니다. 주목할 만한 변경은 다음을 포함합니다:

  • New CLASS keyword

  • :reader attribute for field variables. This requests that an accessor method be automatically created that returns the value of the field variable from the given instance.

  • When processing command-line options, Perl allows a space between the -M switch and the name of the module after it.

  • The inf and nan functions (experimental) have been added to the builtin namespace. They act as constants that yield the floating-point infinity and Not-a-Numer value respectively.

  • Calling the import method of an unknown package produces a warning.

  • The syntax of the return operator now rejects indirect objects.

  • Using goto to jump from an outer scope into an inner scope is deprecated and will be removed completely in Perl 5.42.

For more details, see the upstream release notes.

NodeJS 22.0

Fedora 41 now ships with Node.js 22.x as the default Node.js JavaScript server-side engine. If your applications are not yet ready for this newer version, they will need to be modified to depend on the compatibility package nodejs20 and to rely on /usr/bin/node20 instead of /usr/bin/node for operation.

Haskell GHC 9.6 and Stackage LTS 22

For Fedora 41, the main GHC Haskell compiler package have been from version 9.4.5 to the latest stable 9.6.6 release (rebasing the ghc package from the ghc9.6 package). Along with this, Haskell packages in Stackage (the stable Haskell source package distribution) have been updated from the versions in LTS 21 to latest LTS 22 release. Haskell packages not in Stackage have been updated to the latest appropriate version in the upstream Hackage package repository.

For full information about this release, see the upstream release notes and migration guide.

GNU Toolchain update

The GNU toolchain in Fedora 41 has been updated to:

  • GNU C Compiler (gcc) 14.1+

  • GNU Binary Utilities (binutils) 2.42+

  • GNU C Library (glibc) 2.40

  • GNU Debugger (gdb) 14+

Also see the upstream release notes for GCC, Binutils, GLibC NEWS, and GDB NEWS.

LLVM 19

LLVM sub-projects in Fedora have been updated to version 19.

Compatibility packages clang18, llvm18, lld18, compiler-rt18, and libomp18 have been added to ensure that packages that currently depend on clang and llvm version 18 libraries will continue to work. Previous compatibility packages present in Fedora 40, such as llvm17, clang17, etc. have been retired.

See the LLVM 19 Release Notes for additional information about this release.