Compare commits

..

5 commits

49 changed files with 1503 additions and 693 deletions

View file

@ -1,33 +0,0 @@
---
name: Change template
about: Use this template to open an issue for a Fedora Change
title: "Change: "
---
This issue tracks the release note for the following Fedora Change:
!!!!LINK TO WIKI HERE!!!!
**If you own this change**, please add additional information here that we should communicate to Fedora users. Specifically, please consider:
* New features available because of this change - pick those that are important to end users
* Considerations for users of previous releases of Fedora (upgrade issues, format changes, etc.)
* Links to any upstream Release Notes
* If this helps Fedora be a superior environment for our target audiences, please explain how so that we can emphasize this.
Your notes to us do not need to be formally written - we will edit them and add details if needed. This is a way for you to ensure that we know what is critical about your change.
**If you want to write this release note**, then:
* Assign this issue to yourself
* Check the wiki page linked above, find out what the change is about
* Determine whether the change actually made it into the release or not[0]
* Write a draft release note using that information against the correct branch here, in Gitlab. (or see below)
* Get in touch with the contact person/people listed on the wiki page, either through IRC/Matrix or e-mail or just by @-mentioning them in a comment here, and ask them to check your draft for technical accuracy
* Submit your Release Note as a PR to this repository.
Once you're done with the above, make sure to either commit the relnote to an appropriate section of the Release Notes, or, if you're not familiar with Git, AsciiDoc, or whatever else, just add it to this issue as a comment and let the team[1] know that you're done with this one and you'd like the note included. Be sure to do this at least one day before the final release (see current schedule[2]). Also make sure to do this even for relnotes that haven't been checked by the change owner.
[0] You can do that by asking the change owner listed on the wiki page; alternatively you can infer it by checking the tracker bug (linked in Wiki) in Bugzilla and looking at its status; see bug comments for details. Ask someone on Matrix if you're not sure.
[1] On Matrix in the Fedora Documentation channel - see https://docs.fedoraproject.org/en-US/project/communications/.
[2] Schedules are all here: https://fedorapeople.org/groups/schedule/ - make sure to pick the correct release.

View file

@ -1,5 +1,5 @@
The text of and illustrations in this document are licensed by Red Hat
under a Creative Commons Attribution-ShareAlike 3.0 Unported license
under a Creative Commons AttributionShare Alike 3.0 Unported license
("CC-BY-SA"). An explanation of CC-BY-SA is available at
http://creativecommons.org/licenses/by-sa/3.0/. In accordance with
CC-BY-SA, if you distribute this document or an adaptation of it, you

137
README.md
View file

@ -1,29 +1,126 @@
# Fedora Release Notes Documentation
# Fedora Release Notes
Release Notes document the most important changes and new features in each Fedora Linux release.
Please report Issues and submit Pull Requests for **Content Fixes** here.
Never done a pull request (or "PR")? Here's the [Pagure documentation for
Pull Requests](https://docs.pagure.org/pagure/usage/pull_requests.html).
## Published documentation
The published version of this documentation is available at:
[https://docs.fedoraproject.org/en-US/fedora/latest/release-notes/](https://docs.fedoraproject.org/en-US/fedora/latest/release-notes/)
General appearance issues and publishing issues should be reported against
the [publishing software](https://pagure.io/fedora-docs/docs-fp-o).
## Contributing
## Structure
We welcome contributions! Whether it's fixing a typo, reporting an outdated
page, or writing new content — every little bit helps.
```
|-- README.md
|-- antora.yml ....................... 1.
|-- build.sh ......................... 2.
|-- preview.sh ....................... 3.
|-- site.yml ......................... 4.
`-- modules
`-- ROOT ......................... 5.
|-- assets
| `-- images ............... 6.
| `-- pizza.png
|-- nav.adoc ................. 7.
`-- pages .................... 8.
|-- architecture.adoc
|-- community.adoc
|-- faq.adoc
|-- index.adoc
|-- pizza-dough.adoc
`-- pizza-oven.adoc
```
> **Note:** This is a versioned repository — there is a separate branch for each
> Fedora release. Pull requests should generally go to these release-specific branches.
> Branch `main` is only used as a template from which each new version is branched.
1. Metadata definition.
2. A script that does a local build. Uses docker.
3. A script that shows a preview of the site in a web browser by running a local web server. Uses docker.
4. A definition file for the build script.
5. A "root module of this documentation component". Please read below for an explanation.
6. **Images** to be used on any page.
7. **Menu definition.** Also defines the hierarchy of all the pages.
8. **Pages with the actual content.** They can be also organised into subdirectories if desired.
See the [Fedora Docs Contributor Guide](https://docs.fedoraproject.org/en-US/fedora-docs/contributing-docs/)
for how to get started.
## Components and Modules
Please report **content issues** in this repository.
For general site/publishing issues, use the
[Fedora Docs Website repository](https://forge.fedoraproject.org/docs/docs-fp-o).
Antora introduces two new terms:
## Contact
- **Matrix:** [#docs:fedoraproject.org](https://matrix.to/#/#docs:fedoraproject.org)
- **Private comms:** Use our FAS emails for anything that shouldn't be public.
- **Discussion forums:** [discussion.fedoraproject.org](https://discussion.fedoraproject.org/tag/docs-team/337)
* **Component** — Simply put, a component is a part of the documentation website with its own menu. Components can also be versioned. In the Fedora Docs, we use separate components for user documentation, the Fedora Poject, Fedora council, Mindshare, FESCO, but also subprojects such as CommOps or Modulartity.
* **Module** — A component can be broken down into multiple modules. Modules still share a single menu on the site, but their sources can be stored in different git repositories, even owned by different groups. The default module is called "ROOT" (that's what is in this example). If you don't want to use multiple modules, only use "ROOT". But to define more modules, simply duplicate the "ROOT" directory and name it anything you want. You can store modules in one or more git repositories.
## Local preview
This repo includes scripts to build and preview the contents of this repository.
**NOTE**: Please note that if you reference pages from other repositoreis, such links will be broken in this local preview as it only builds this repository. If you want to rebuild the whole Fedora Docs site, please see [the Fedora Docs build repository](https://pagure.io/fedora-docs/docs-fp-o/) for instructions.
Both scripts work on Fedora (using Podman) and macOS (using Docker).
To build and preview the site, run:
```
$ ./build.sh && ./preview.sh
```
The result will be available at http://localhost:8080
### Installing Podman on Fedora
Fedora Workstation doesn't come with Podman preinstalled by default — so you might need to install it using the following command:
```
$ sudo dnf install podman
```
### Preview as a part of the whole Fedora Docs site
You can also build the whole Fedora Docs site locally to see your changes in the whole context.
This is especially useful for checking if your `xref` links work properly.
To do this, you need to clone the main [Fedora Docs build repository](https://pagure.io/fedora-docs/docs-fp-o), modify the `site.yml` file to reference a repo with your changes, and build it.
Steps:
Clone the main repository and cd into it:
```
$ git clone https://pagure.io/fedora-docs/docs-fp-o.git
$ cd docs-fp-o
```
Find a reference to the repository you're changing in the `site.yml` file, and change it so it points to your change.
So for example, if I made a modification to the Modularity docs, I would find:
```
...
- url: https://pagure.io/fedora-docs/modularity.git
branches:
- master
...
```
And replaced it with a pointer to my fork:
```
...
- url: https://pagure.io/forks/asamalik/fedora-docs/modularity.git
branches:
- master
...
```
I could also point to a local repository, using `HEAD` as a branch to preview the what's changed without the need of making a commit.
**Note:** I would need to move the repository under the `docs-fp-o` directory, because the builder won't see anything above.
So I would need to create a `repositories` directory in `docs-fp-o` and copy my repository into it.
```
...
- url: ./repositories/modularity
branches:
- HEAD
...
```
To build the whole site, I would run the following in the `docs-fp-o` directory.
```
$ ./build.sh && ./preview.sh
```

View file

@ -1,5 +1,5 @@
---
name: fedora
version: rawhide
version: f32
# Navigation is in the main 'fedora' component:
# https://pagure.io/fedora-docs/release-docs-home

51
build.sh Executable file
View file

@ -0,0 +1,51 @@
#!/bin/bash
image="docker.io/antora/antora"
cmd="--html-url-extension-style=indexify site.yml"
if uname | grep -iwq darwin; then
# Running on macOS.
# Let's assume that the user has the Docker CE installed
# which doesn't require a root password.
echo ""
echo "This build script is using Docker to run the build in an isolated environment."
echo ""
docker run --rm -it -v $(pwd):/antora ${image} ${cmd}
elif uname | grep -iq linux; then
# Running on Linux.
# Let's assume that it's running the Docker deamon
# which requires root.
if [ -f /usr/local/bin/antora ]; then
/usr/local/bin/antora ${cmd}
elif uname -m | grep -iwq aarch64; then
echo "No antora/aarch64 container try just \`npm install -g @antora/cli @antora/site-generator-default\`"
elif [ -f /usr/bin/podman ]; then
echo ""
echo "This build script is using Podman to run the build in an isolated environment."
echo ""
podman run --rm -it -v $(pwd):/antora:z ${image} ${cmd}
elif [ -f /usr/bin/docker ]; then
echo ""
echo "This build script is using Docker to run the build in an isolated environment."
echo ""
if groups | grep -wq "docker"; then
docker run --rm -it -v $(pwd):/antora:z ${image} ${cmd}
else
echo "You might be asked for your password."
echo "You can avoid this by adding your user to the 'docker' group,"
echo "but be aware of the security implications."
echo "See https://docs.docker.com/install/linux/linux-postinstall/"
echo ""
sudo docker run --rm -it -v $(pwd):/antora:z ${image} ${cmd}
fi
else
echo ""
echo "Error: Container runtime has not been found on your system. Fix it by running this command:"
echo "sudo dnf install podman"
exit 1
fi
fi

View file

@ -1,278 +0,0 @@
#!/bin/bash
# script to watch source directory for changes, and re-run build and preview
script_name="docsbuilder.sh"
script_source="https://gitlab.com/fedora/docs/templates/fedora-docs-template/-/raw/main/${script_name}"
version="1.2.0"
image="docker.io/antora/antora"
cmd="--html-url-extension-style=indexify site.yml"
srcdir="modules"
buildir="public"
previewpidfile="preview.pid"
# 4913: for vim users, vim creates a temporary file to test it can write to
# directory
# https://groups.google.com/g/vim_dev/c/sppdpElxY44
# .git: so we don't get rebuilds each time git metadata changes
inotifyignore="\.git.*|4913"
watch_and_build () {
if ! command -v inotifywait > /dev/null
then
echo "inotifywait command could not be found. Please install inotify-tools."
echo "On Fedora, run: sudo dnf install inotify-tools"
stop_preview_and_exit
else
# check for git
# required to get ignorelist
if ! command -v git > /dev/null
then
echo "git command could not be found. Please install git."
echo "On Fedora, run: sudo dnf install git-core"
stop_preview_and_exit
else
# Get files not being tracked, we don't watch for changes in these.
# Could hard code, but people use different editors that may create
# temporary files that are updated regularly and so on, so better
# to get the list from git. It'll also look at global gitingore
# settings and so on.
inotifyignore="$(git status -s --ignored | grep '^!!' | sed -e 's/^!! //' | tr '\n' '|')${inotifyignore}"
fi
while true
do
echo "Watching current directory (excluding: ${inotifyignore}) for changes and re-building as required. Use Ctrl C to stop."
inotifywait -q --exclude "($inotifyignore)" -e modify,create,delete,move -r . && echo "Change detected, rebuilding.." && build
done
fi
}
build () {
if [ "$(uname)" == "Darwin" ]; then
# Running on macOS.
# Let's assume that the user has the Docker CE installed
# which doesn't require a root password.
echo ""
echo "This build script is using Docker container runtime to run the build in an isolated environment."
echo ""
docker run --rm -it -v $(pwd):/antora $image $cmd
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
# Running on Linux.
# Check whether podman is available, else faill back to docker
# which requires root.
if [ -f /usr/bin/podman ]; then
echo ""
echo "This build script is using Podman to run the build in an isolated environment."
echo ""
podman run --rm -it -v $(pwd):/antora:z $image $cmd --stacktrace
elif [ -f /usr/bin/docker ]; then
echo ""
echo "This build script is using Docker to run the build in an isolated environment."
echo ""
if groups | grep -wq "docker"; then
docker run --rm -it -v $(pwd):/antora:z $image $cmd
else
echo ""
echo "This build script is using $runtime to run the build in an isolated environment. You might be asked for your password."
echo "You can avoid this by adding your user to the 'docker' group, but be aware of the security implications. See https://docs.docker.com/install/linux/linux-postinstall/."
echo ""
sudo docker run --rm -it -v $(pwd):/antora:z $image $cmd
fi
else
echo ""
echo "Error: Container runtime haven't been found on your system. Fix it by:"
echo "$ sudo dnf install podman"
exit 1
fi
fi
}
start_preview () {
# clean up a preview that may be running
stop_preview
# always run an initial build so preview shows latest version
build
if [ "$(uname)" == "Darwin" ]; then
# Running on macOS.
# Let's assume that the user has the Docker CE installed
# which doesn't require a root password.
echo "The preview will be available at http://localhost:8080/"
docker run --rm -v $(pwd):/antora:ro -v $(pwd)/nginx.conf:/etc/nginx/conf.d/default.conf:ro -p 8080:80 nginx
elif [ "$(expr substr $(uname -s) 1 5)" == "Linux" ]; then
# Running on Linux.
# Fedora Workstation has python3 installed as a default, so using that
echo ""
echo "The preview is available at http://localhost:8080"
echo ""
pushd "${buildir}" > /dev/null 2>&1
python3 -m http.server 8080 &
echo "$!" > ../"${previewpidfile}"
popd > /dev/null 2>&1
fi
}
stop_preview () {
if [ -e "${previewpidfile}" ]
then
PID=$(cat "${previewpidfile}")
kill $PID
echo "Stopping preview server (running with PID ${PID}).."
rm -f "${previewpidfile}"
else
echo "No running preview server found to stop: no ${previewpidfile} file found."
fi
}
stop_preview_and_exit ()
{
# stop and also exit the script
# if stop_preview is trapped, then SIGINT doesn't stop the build loop. So
# we need to make sure we also exit the script.
# stop_preview is called before other functions, so we cannot add exit to
# it.
stop_preview
exit 0
}
# https://apple.stackexchange.com/questions/83939/compare-multi-digit-version-numbers-in-bash/123408#123408
version () { echo "$@" | awk -F. '{ printf("%d%03d%03d%03d\n", $1,$2,$3,$4); }'; }
check_update () {
if ! command -v curl > /dev/null
then
echo "curl command could not be found. Please install curl."
echo "On Fedora, run: sudo dnf install curl"
exit 0
fi
script_version="$(grep "^version=" ${script_name} | cut -d '=' -f2 | tr --delete '"')"
tempdir="$(mktemp -d)"
echo "$tempdir"
pushd "$tempdir" > /dev/null 2>&1
curl "$script_source" --silent --output "${script_name}"
upstream_version="$(grep "^version=" ${script_name} | cut -d '=' -f2 | tr --delete '"')"
echo "${upstream_version}"
if [ $(version $upstream_version) -gt $(version $script_version) ]; then
echo "Update available"
echo "Script version $upstream_version is available at $script_source"
echo "This version is $script_version."
echo "Please use the '-U' option to update."
echo
fi
popd > /dev/null 2&>1
}
install_update () {
if ! command -v curl > /dev/null
then
echo "curl command could not be found. Please install curl."
echo "On Fedora, run: sudo dnf install curl"
exit 0
fi
curl "$script_source" --silent --output "${script_name}.new"
mv "${script_name}.new" "${script_name}"
chmod +x "${script_name}"
}
usage() {
echo "$0: Build and preview Fedora antora based documentation"
echo
echo "Usage: $0 [-awbpkh]"
echo
echo "-a: start preview, start watcher and rebuilder"
echo "-w: start watcher and rebuilder"
echo "-b: rebuild"
echo "-p: start_preview"
echo "-k: stop_preview"
echo "-h: print this usage text and exit"
echo "-u: check builder script update"
echo "-U: install builder script from upstream"
echo
echo "Maintained by the Fedora documentation team."
echo "Please contact on our channels: https://docs.fedoraproject.org/en-US/fedora-docs/#find-docs"
}
# check if the script is being run in a Fedora docs repository
if [ ! -e "site.yml" ]
then
echo "site.yml not be found."
echo "This does not appear to be a Fedora Antora based documentation repository."
echo "Exiting."
echo
usage
exit 1
fi
if [ $# -lt 1 ]
then
echo "No options provided, running preview with watch and build."
echo "Run script with '-h' to see all available options."
echo
echo
trap stop_preview_and_exit INT
start_preview
watch_and_build
stop_preview
fi
# parse options
while getopts "awbpkhuU" OPTION
do
case $OPTION in
a)
# handle sig INT to stop the preview
trap stop_preview_and_exit INT
start_preview
watch_and_build
stop_preview
exit 0
;;
w)
watch_and_build
exit 0
;;
b)
build
exit 0
;;
p)
start_preview
echo "Please run ./${script_name} -k to stop the preview server"
exit 0
;;
k)
stop_preview
exit 0
;;
h)
usage
exit 0
;;
u)
check_update
exit 0
;;
U)
install_update
exit 0
;;
?)
usage
exit 1
;;
esac
done

File diff suppressed because one or more lines are too long

Before

Width:  |  Height:  |  Size: 6.7 KiB

After

Width:  |  Height:  |  Size: 7.6 KiB

Before After
Before After

View file

@ -1,10 +1,30 @@
include::partial$entities.adoc[]
include::{partialsdir}/entities.adoc[]
* xref:index.adoc[Fedora Release Notes]
** xref:welcome.adoc[Welcome to Fedora]
*** xref:hardware_overview.adoc[Hardware Overview]
*** xref:feedback.adoc[Feedback]
** xref:sysadmin.adoc[System Administrators]
** xref:desktop.adoc[Desktop Users]
** xref:developers.adoc[Developers]
** link:{COMMONBUGS_URL}[Common Bugs]
** xref:welcome/Welcome.adoc[Welcome to Fedora]
*** xref:welcome/Hardware_Overview.adoc[Hardware Overview]
*** xref:welcome/Feedback.adoc[Feedback]
** xref:dedication.adoc[Dedication]
** xref:sysadmin/Sysadmins.adoc[System Administrators]
*** xref:sysadmin/Distribution.adoc[Distribution-wide Changes]
*** xref:sysadmin/Installation.adoc[Installation]
*** xref:sysadmin/Security.adoc[Security]
*** xref:sysadmin/Networking.adoc[Networking]
*** xref:sysadmin/Storage.adoc[Storage]
*** xref:sysadmin/System_Utilities.adoc[System Utilities]
*** xref:sysadmin/Printing_Scanning.adoc[Printing and Scanning]
** xref:desktop/Desktop_index.adoc[Desktop Users]
** xref:developers/Developers.adoc[Developers]
*** xref:developers/Development_Tools.adoc[Development Tools]
*** xref:developers/Development_Binutils.adoc[Binutils]
*** xref:developers/Development_C.adoc[C]
*** xref:developers/Development_Go.adoc[Go]
*** xref:developers/Development_Haskell.adoc[Haskell]
*** xref:developers/Development_LLVM.adoc[LLVM]
*** xref:developers/Development_Dotnet.adoc[.NET]
*** xref:developers/Development_Python.adoc[Python]
*** xref:developers/Development_Ruby.adoc[Ruby]
*** xref:developers/Development_Web.adoc[Web Development]
//CHANGE THIS WITH A NEW RELEASE
** link:https://fedoraproject.org/wiki/Common_F32_bugs[Common Bugs]
** xref:Revision_History.adoc[Revision History]

View file

@ -0,0 +1,5 @@
include::{partialsdir}/entities.adoc[]
[[appe-Release_Notes-Revision_History]]
= Revision History

View file

@ -0,0 +1 @@
.The Fedora Docs Team

View file

@ -1,6 +1,6 @@
:experimental:
include::partial$entities.adoc[]
include::{partialsdir}/entities.adoc[]
== We want feedback
indexterm:[feedback,contact information for this manual]

View file

@ -3,7 +3,7 @@
Copyright {YEAR} {HOLDER}.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons Attribution-ShareAlike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at link:++https://creativecommons.org/licenses/by-sa/3.0/++[]. The original authors of this document, and Red Hat, designate the Fedora Project as the "Attribution Party" for purposes of CC-BY-SA. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
The text of and illustrations in this document are licensed by Red Hat under a Creative Commons AttributionShare Alike 3.0 Unported license ("CC-BY-SA"). An explanation of CC-BY-SA is available at link:++https://creativecommons.org/licenses/by-sa/3.0/++[]. The original authors of this document, and Red Hat, designate the Fedora Project as the "Attribution Party" for purposes of CC-BY-SA. In accordance with CC-BY-SA, if you distribute this document or an adaptation of it, you must provide the URL for the original version.
Red Hat, as the licensor of this document, waives the right to enforce, and agrees not to assert, Section 4d of CC-BY-SA to the fullest extent permitted by applicable law.

View file

@ -0,0 +1,8 @@
:BOOKID: release-notes
:BZURL: https://pagure.io/fedora-docs/release-notes/issues
:COMMONBUGS_URL: https://fedoraproject.org/wiki/Common_F32_bugs
:HOLDER: Fedora Project Contributors
:PREVVER: 31
:PRODUCT: Fedora Documentation
:PRODVER: 32
:YEAR: 2020

View file

@ -0,0 +1,8 @@
include::{partialsdir}/entities.adoc[]
= Dedicated to John McDonough
John McDonough (jjmcd) link:https://www.legacy.com/obituaries/ourmidland/obituary.aspx?n=john-mcdonough&pid=196046706[passed away on 20 April 2020]. John was a long-time contributor to Fedora Docs. For many years, he was the driving force behind the Technical Notes and the Release Notes. John was a kind and patient mentor to many Docs contributors. He was passionate about open source and amateur radio (callsign WB8RCR).
Those wishing to share their memories of John can do so on the link:https://fedoraproject.org/wiki/User:Jjmcd/Friend[Fedora Wiki].

View file

@ -1,4 +0,0 @@
:experimental:
include::partial$entities.adoc[]
= Changes in Fedora {PRODVER} For Desktop Users

View file

@ -0,0 +1,41 @@
include::{partialsdir}/entities.adoc[]
= Notable changes for desktop users
== Change the Desktop release criteria for ARM and AArch64
The following release criteria changes are now present in Fedora 32:
* Drop Xfce on 32-bit ARM from release-blocking desktops.
* Workstation on `AArch64` to release-blocking desktops.
The new additions to release-blocking deliverables include `IoT` and `CoreOS` architecture.
To reduce the overall test coverage and release-blocking desktops, it no longer blocks on the 32-Bit ARM Xfce Desktop spin and adds `Workstation` on AArch64 as a release-blocking desktop.
As a result, this change reduces the release-blocking desktops and potential for blocker bugs.
== Selected bitmap fonts are now available as OpenType
In Fedora 31, the *Pango* library switched to the *HarfBuzz* back end, which does not support bitmap fonts.
Applications that use *Pango* for font rendering, such as *GNOME Terminal*, can no longer use bitmap fonts.
This release introduces new packages that provide selected bitmap fonts converted to the OpenType format.
This format is supported by *Pango*.
The following packages now provide OpenType versions of bitmap fonts:
* `bitmap-lucida-typewriter-opentype-fonts`
* `bitmap-fangsongti-opentype-fonts`
* `bitmap-console-opentype-fonts`
* `bitmap-fixed-opentype-fonts`
* `ucs-miscfixed-opentype-fonts`
* `terminus-fonts`
You cannot install both the bitmap and OpenType versions of the packages, with the exception of `terminus-fonts`, which includes both formats.
== Fonts language Provides moved to the langpacks package
This change aims to provide more reliable, predictable, and consistent fonts installation as well as better user experience around font dependencies.
To achieve this, the change moves the `Provides: font(:lang=\*)` tags into the `langpacks-core-font-\*` sub-packages of the `langpacks` package.
The sub-packages already obtain the default font, locale and input-method for each language.
As a result, whenever a missing glyph font installation is requested, the `langpacks-core-font-_<lang>_` package will be installed and will get the default font using the existing `Requires:` tag.

View file

@ -1,4 +0,0 @@
:experimental:
include::partial$entities.adoc[]
= Changes in Fedora {PRODVER} For Developers

View file

@ -0,0 +1,6 @@
include::{partialsdir}/entities.adoc[]
= Notable changes for developers
This section lists changes in Fedora {PRODVER} relevant to developers.
Use the navigation tab on the left to view release notes for various languages.

View file

@ -0,0 +1,70 @@
include::{partialsdir}/entities.adoc[]
[[sect-binutils]]
= GNU Binutils 2.33
:toc:
Fedora 32 comes with GNU Binutils based on 2.33.1 release. This release brings a lot of bug fixes, improvements to the linker, as well as support for the CTF debug format.
== New Features and Bug Fixes:
=== Assembler
* Adds support for the Arm Scalable Vector Extension version 2
(SVE2) instructions, the Arm Transactional Memory Extension (TME)
instructions and the Armv8.1-M Mainline and M-profile Vector
Extension (MVE) instructions.
* Adds support for the Arm Cortex-A76AE, Cortex-A77 and Cortex-M35P
processors and the AArch64 Cortex-A34, Cortex-A65, Cortex-A65AE,
Cortex-A76AE, and Cortex-A77 processors.
* Adds a `.float16` directive for both Arm and AArch64 to allow
encoding of 16-bit floating point literals.
* For MIPS, Add `-m[no-]fix-loongson3-llsc` option to fix (or not)
Loongson3 LLSC Errata. Add a `--enable-mips-fix-loongson3-llsc=[yes|no]`
configure time option to set the default behavior. Set the default
if the configure option is not used to "no".
=== Linker
* The Cortex-A53 Erratum 843419 workaround now supports a choice of
which workaround to use. The option `--fix-cortex-a53-843419` now
takes an optional argument `--fix-cortex-a53-843419[=full|adr|adrp]`
which can be used to force a particular workaround to be used.
See `--help` for AArch64 for more details.
* Add support for `GNU_PROPERTY_AARCH64_FEATURE_1_BTI` and
`GNU_PROPERTY_AARCH64_FEATURE_1_PAC` in ELF GNU program properties
in the AArch64 ELF linker.
* Add `-z force-bti` for AArch64 to enable `GNU_PROPERTY_AARCH64_FEATURE_1_BTI`
on output while warning about missing `GNU_PROPERTY_AARCH64_FEATURE_1_BTI`
on inputs and use PLTs protected with BTI.
* Add `-z pac-plt` for AArch64 to pick PAC enabled PLTs.
=== Utilities
* Add `--source-comment[=<txt>]` option to objdump which if present,
provides a prefix to source code lines displayed in a disassembly.
* Add `--set-section-alignment` `<section-name>=<power-of-2-align>`
option to objcopy to allow the changing of section alignments.
* Add `--verilog-data-width` option to objcopy for verilog targets to
control width of data elements in verilog hex format.
* The separate debug info file options of readelf (`--debug-dump=links`
and `--debug-dump=follow`) and objdump (`--dwarf=links` and
`--dwarf=follow-links`) will now display and/or follow multiple
links if more than one are present in a file. (This usually
happens when gcc's `-gsplit-dwarf` option is used).
* Add support for dumping types encoded in the Compact Type Format
to objdump and readelf.
See the link:https://lists.gnu.org/archive/html/info-gnu/2019-10/msg00006.html[upstream release announcement] for more detailed information about this release.

View file

@ -0,0 +1,192 @@
include::{partialsdir}/entities.adoc[]
[[sect-c]]
= C
:toc:
== GCC 10.0.1
The GNU compiler suite has been update to version 10.0.1. See the http://gcc.gnu.org/gcc-10/changes.html[upstream documentation] for user visible changes. Packages in Fedora 32 have been rebuilt with the new version of the compiler.
=== New features and general improvements
* New built-in functions:
** The `__has_builtin` built-in preprocessor operator can be used to query support for built-in functions provided by GCC and other compilers that support it.
** `__builtin_roundeven` for the corresponding function from ISO/IEC TS 18661.
* New command-line options:
** `-fallocation-dce` removes unneeded pairs of new and delete operators.
** `-fprofile-partial-training` can now be used to inform the compiler that code paths not covered by the training run should not be optimized for size.
** `-fprofile-reproducible` controls level of reproducibility of profile gathered by -fprofile-generate. This makes it possible to rebuild program with same outcome which is useful, for example, for distribution packages.
* Inter-procedural optimization improvements:
** The inter-procedural scalar replacement for aggregates (IPA-SRA) pass was re-implemented to work at link-time.
** `-finline-functions` is now enabled at -O2 and was retuned for better code size versus runtime performance trade-offs. Inliner heuristics was also significantly sped up to avoid negative impact to -flto -O2 compile times.
** Inliner heuristics and function cloning can now use value-range information to predict effectivity of individual transformations.
** During link-time optimization the C++ One Definition Rule is used to increase precision of type based alias analysis.
* Link-time optimization improvements:
** A new binary lto-dump has been added. The program can dump various information about a LTO bytecode object file.
** Parallel phase of the LTO can automatically detect a running make`s jobserver or can fall back to number of available cores.
** The LTO bytecode can be compressed with zstd algorithm. Configure script can automatically detect the zstd support.
** Most `--param` values can now be specified at translation unit granularity. This includes all parameters controlling the inliner and other inter-procedural optimizations. Unlike earlier releases, GCC 10 will ignore parameters controlling optimizations specified at link-time and apply parameters specified at compile-time in the same manner as done for optimization flags.
* Profile driven optimization improvements:
** Profile New Languages and Language-Specific `Improvementsmaintenance` during compilation and hot/cold code partitioning have been improved.
** Using `-fprofile-values`, an instrumented binary can track multiple values (up to 4) for e.g. indirect calls and provide more precise profile information.
=== New languages and language-specific improvements
* Version 2.6 of the OpenACC specification is now supported in the C, C++ and Fortran compilers.
See the implementation status section on the OpenACC wiki page and the run-time library documentation for further information.
* OpenMP and OpenACC now support offloading to AMD Radeon (GCN) GPUs; supported are the third-generation Fiji (fiji) and the fifth-generation VEGA 10/VEGA 20 (gfx900 or gfx906).
==== C family
* New attributes.
* New warnings.
* Enhancements to existing warnings.
==== C
* Several new features from the upcoming C2X revision of the ISO C standard are supported with `-std=c2x` and `-std=gnu2x`. Some of these features are also supported as extensions when compiling for older language versions. In addition to the features listed, some features previously supported as extensions and now added to the C standard are enabled by default in C2X mode and not diagnosed with `-std=c2x -Wpedantic`.
* GCC now defaults to `-fno-common`. As a result, global variable accesses are more efficient on various targets. In C, global variables with multiple tentative definitions now result in linker errors. With `-fcommon` such definitions are silently merged during linking.
==== C++
* Several `C++20` features have been implemented.
* Several `C++ Defect` Reports have been resolved.
* New warnings.
* G++ can now detect modifying constant objects in `constexpr` evaluation (which is undefined behavior).
* G++ no longer emits bogus `-Wsign-conversion` warnings with explicit casts.
* Narrowing is now detected in more contexts (e.g., case values).
* Memory consumption of the compiler has been reduced in `constexpr` evaluation.
* The `noexcept-specifier` is now properly treated as a complete-class context as per `[class.mem]`.
* The attribute deprecated can now be used on namespaces too.
==== Runtime library (libstdc++)
* Improved experimental `C++2a` support, including.
* Support for RDSEED in `std::random_device`.
* Reduced header dependencies, leading to faster compilation for some code.
== The GNU C Library version 2.31
Fedora 32 provides the GNU C Library - `glibc` - version 2.31. Notable changes include:
=== New features
* The GNU C Library now supports a feature test macro _ISOC2X_SOURCE
to enable features from the draft ISO C2X standard. Only some
features from this draft standard are supported by the GNU C
Library, and as the draft is under active development, the set of
features enabled by this macro is liable to change. Features from
C2X are also enabled by _GNU_SOURCE, or by compiling with `gcc
-std=gnu2x`.
* The `<math.h>` functions that round their results to a narrower type
now have corresponding type-generic macros in `<tgmath.h>`, as defined
in TS 18661-1:2014 and TS 18661-3:2015 as amended by the resolution
of Clarification Request 13 to TS 18661-3.
* The function `pthread_clockjoin_np` has been added, enabling join with
a terminated thread with a specific clock. It allows waiting
against `CLOCK_MONOTONIC` and `CLOCK_REALTIME`. This function is a GNU
extension.
* New locale added: `mnw_MM` (Mon language spoken in Myanmar).
* The DNS stub resolver will optionally send the AD (authenticated
data) bit in queries if the trust-ad option is set via the options
directive in /etc/resolv.conf (or if `RES_TRUSTAD` is set in
`_res.options`). In this mode, the AD bit, as provided by the name
server, is available to applications which call res_search and
related functions. In the default mode, the AD bit is not set in
queries, and it is automatically cleared in responses, indicating a
lack of DNSSEC validation. (Therefore, the name servers and the
network path to them are treated as untrusted.)
=== Deprecated and removed features
* The totalorder and totalordermag functions, and the corresponding
functions for other floating-point types, now take pointer arguments
to avoid signaling NaNs possibly being converted to quiet NaNs in
argument passing. This is in accordance with the resolution of
Clarification Request 25 to TS 18661-1, as applied for C2X.
Existing binaries that pass floating-point arguments directly will
continue to work.
* The obsolete function stime is no longer available to newly linked
binaries, and its declaration has been removed from `<time.h>`.
Programs that set the system time should use `clock_settime` instead.
* We plan to remove the obsolete function ftime, and the header
`<sys/timeb.h>`, in a future version of glibc. In this release, the
header still exists but calling ftime will cause a compiler warning.
All programs should use gettimeofday or clock_gettime instead.
* The gettimeofday function no longer reports information about a
system-wide time zone. This 4.2-BSD-era feature has been deprecated
for many years, as it cannot handle the full complexity of the
world`s timezones, but hitherto we have supported it on a
best-effort basis. Changes required to support 64-bit time_t on
32-bit architectures have made this no longer practical.
* The settimeofday function can still be used to set a system-wide
time zone when the operating system supports it. This is because
the Linux kernel reused the API, on some architectures, to describe
a system-wide time-zone-like offset between the software clock
maintained by the kernel, and the "RTC" clock that keeps time when
the system is shut down.
* SPARC ISA v7 is no longer supported. v8 is still supported, but
only if the optional CAS instruction is implemented (for instance,
LEON processors are still supported, but SuperSPARC processors are
not).
* If a lazy binding failure happens during dlopen, during the
execution of an ELF constructor, the process is now terminated.
Previously, the dynamic loader would return NULL from dlopen, with
the lazy binding error captured in a dlerror message. In general,
this is unsafe because resetting the stack in an arbitrary function
call is not possible.
* For MIPS hard-float ABIs, the GNU C Library will be configured to
need an executable stack unless explicitly configured at build time
to require minimum kernel version 4.8 or newer. This is because
executing floating-point branches on a non-executable stack on Linux
kernels prior to 4.8 can lead to application crashes for some MIPS
configurations. While currently `PT_GNU_STACK` is not widely used on
MIPS, future releases of GCC are expected to enable non-executable
stack by default with `PT_GNU_STACK` by default and is thus likely to
trigger a crash on older kernels.
* System call wrappers for time system calls now use the new time64
system calls when available. On 32-bit targets, these wrappers
attempt to call the new system calls first and fall back to the
older 32-bit time system calls if they are not present. This may
cause issues in environments that cannot handle unsupported system
calls gracefully by returning `-ENOSYS`. Seccomp sandboxes are
affected by this issue.
=== Security-related changes
* CVE-2019-19126: ld.so failed to ignore the `LD_PREFER_MAP_32BIT_EXEC`
environment variable during program execution after a security
transition, allowing local attackers to restrict the possible
mapping addresses for loaded libraries and thus bypass ASLR for a
setuid program. Reported by Marcin Kościelnicki.
For detailed information about glibc-2.31 see the link:https://sourceware.org/legacy-ml/libc-announce/2020/msg00001.html[upstream NEWS document]; note that you may need to scroll down to find version 2.31 as the document continues to be updated.
== mpfr 4.0.2
Fedora 32 provides the GNU MPFR library version 4.0.2. Notable changes include:
* mpfr now supports shared caches for multithreaded applications, thereby reducing memory usage.
* Improved caching: a minimum of 10% increase of the precision is guaranteed to avoid too many recomputations, thereby reducing CPU usage.
* A small-precision `mpz_t` pool is used to reduce the number of memory allocations, thereby reducing CPU usage.
* Several functions are now faster; e.g., `mpfr_add`, `mpfr_sub`, `mpfr_mul`, `mpfr_div`, `mpfr_sqrt`, `mpfr_set_d`, and `mpfr_get_d`.
* The `mpfr_div_ui` function could produce incorrectly rounded results in mpfr 3; the bug has been fixed in mpfr 4.
For more information, visit the upstream release notes for version link:https://www.mpfr.org/mpfr-4.0.0/#changes[4.0.0], link:http://www.mpfr.org/mpfr-4.0.1/#changes[4.0.1], and link:http://www.mpfr.org/mpfr-4.0.2/#changes[4.0.2].

View file

@ -0,0 +1,25 @@
include::{partialsdir}/entities.adoc[]
[[sect-dotnet]]
= .NET
== Mono has been updated to 6.6
The Mono development platform has been updated from version 5.20 to 6.6.
For more information about Mono 6.6, see the link:https://www.mono-project.com/docs/about-mono/releases/6.6.0/[upstream release notes].
== .NET Core 3.1
{empty}.NET Core is now available in Fedora.
The current version of .NET Core is 3.1, which is the latest Long Term Support (LTS) release. See the https://devblogs.microsoft.com/dotnet/announcing-net-core-3-1/[upstream annoucement] for all the new features and user visible changes in this release of .NET Core.
=== New packages
* .NET Core Runtimes:
** `dotnet-runtime-3.1` provides the .NET Core Runtime
** `aspnetcore-runtime-3.1` provides the ASP.NET Core Runtime
* .NET Core SDK:
** `dotnet-sdk-3.1` provides the .NET Core SDK

View file

@ -0,0 +1,10 @@
include::{partialsdir}/entities.adoc[]
[[sect-development-go]]
= Golang version 1.14
A rebase of the `Golang` packages is present in the version 1.14 on Fedora 32.
This rebase provides performance improvements in support for currently supported platforms among other bug fixes and new features.
For a complete list of changes see the notes at link:https://tip.golang.org/doc/go1.14[Go 1.14 Release Notes].

View file

@ -0,0 +1,11 @@
include::{partialsdir}/entities.adoc[]
[[sect-haskell]]
= Haskell Stackage 14 LTS
This release updates the Haskell libraries that are packaged in Fedora. The libraries update from the Stackage platform version 13 LTS to version 14 LTS.
Note that not all packages from Stackage are included in Fedora.
For more information about Stackage 14 LTS, see link:https://www.stackage.org/lts-14[].

View file

@ -0,0 +1,31 @@
include::{partialsdir}/entities.adoc[]
[[sect-llvm]]
= LLVM 10.0.0
Fedora 32 comes with LLVM 10.
Please note that the `soname` version for LLVM libraries has been changed.
Maintainers of packages that depend on `clang-libs` or `llvm-libs` will need to update their spec files to depend on the `clang9.0` and `llvm9.0` compatibility packages if they want to rebuild their package and it does not work with LLVM 10 yet.
Compatibility packages `clang9.0` and `llvm9.0` was added to this release.
Spec file changes are only needed if the package is going to be rebuilt after LLVM 10 and Fedora update.
== Changes
The full list of new features, improvements and bug fixes that comes with LLVM 10 can be found in the https://releases.llvm.org/10.0.0/docs/ReleaseNotes.html[upstream release notes].
=== All LLVM sub-projects in Fedora 32 was also updated to version 10
* clang (https://releases.llvm.org/10.0.0/tools/clang/docs/ReleaseNotes.html[details])
* lld (https://releases.llvm.org/10.0.0/tools/lld/docs/ReleaseNotes.html[details])
* lldb (https://releases.llvm.org/10.0.0/docs/ReleaseNotes.html#changes-to-lldb[details])
* libcxx (libc{plus}{plus}) (https://releases.llvm.org/10.0.0/projects/libcxx/docs/ReleaseNotes.html[details])
==== As well as
* compiler-rt
* libomp
* llvm-test-suite
* libcxxabi (libc{plus}{plus}abi)
* python-lit

View file

@ -0,0 +1,140 @@
include::{partialsdir}/entities.adoc[]
[[sect-python]]
= Python
:toc:
== Improved performance of Python
Depending on the workload, up to 27% improved performance is now observed in Python-based software.
The improved performance is accomplished by building the Python interpreter with `-fno-semantic-interposition`.
Because there is no semantic interposition now, the internal symbol look-ups from `libpython` to `libpython` library are direct and faster.
As a consequence, if Fedora users need to use `LD_PRELOAD` to override symbols in `libpython`, the recommended way is to build a custom Python build without `-fno-semantic-interposition`.
However, it is still possible to use `LD_PRELOAD` to override symbols in other libraries (for example in glibc).
== Python 2 has been removed
The Python upstream stopped supporting Python 2 on 1 January 2020.
For this reason, Fedora 32 removes Python 2 packages.
The following packages are no longer available:
* The `python2` package and all its subpackages.
* All packages that need Python 2 to run.
* All packages that need Python 2 to build.
Fedora 32 still provides a legacy `python27` package.
This package is intended for developers who need to support Python 2 and for users who need to use software that depends on Python 2.
The `python27` package has several limitations compared to the original `python2` package:
* The package has no subpackages. All content is stored in the single package.
* The package provides no debug build, which was previously available as `python2-debug`.
* The package does not provide the `/usr/bin/python` binary.
* Any special backwards compatible Provides are removed (this package is not intended to be depended upon).
== Deprecated support for Nose
Support for Nose is now deprecated.
However for now, the `python3-nose` package continues to be available in the Fedora repositories.
No specific release it yet targeted to remove the `python3-nose` package.
Users and packagers of dependent packages are encouraged to switch to `python3-pytest` or `python3-nose2`.
== Notes on migrating user-installed pip packages
When you upgrade from Fedora 30 or 31 to Fedora 32, the main Python interpreter version changes from 3.7 to 3.8.
If you have any Python packages installed using `pip`, you must complete the following procedure to migrate them to the new version:
. Install the previously main Python version:
+
[source,bash]
----
sudo dnf install python3.7
----
. Get `pip` for the previously main Python version:
+
[source,bash]
----
python3.7 -m ensurepip --user
----
. Observe the installed packages:
+
[source,bash]
----
python3.7 -m pip list
----
. Save the list with specific versions:
+
[source,bash]
----
python3.7 -m pip freeze > installed.txt
----
. Install the same packages for the now default version:
+
[source,bash]
----
python3 -m pip install --user -r installed.txt
----
. Uninstall user-installed packages for 3.7; this ensures proper removal of files in `~/.local/bin`:
+
[source,bash]
----
python3.7 -m pip uninstall $(python3.7 -m pip list --user | cut -d" " -f1)
----
. Optionally, clean up the now empty directory structure:
+
[source,bash]
----
rm -rf ~/.local/lib/python3.7/
----
. Optionally, remove the unneeded Python version:
+
[source,bash]
----
sudo dnf remove python3.7
----
Additionally, if you have any `pip` packages installed using `sudo`, run the following commands _before running the final step above which removes `python3.7`_, or install it again temporarily:
. Get `pip` for the previously main Python version for `root`:
+
[source,bash]
----
sudo python3.7 -m ensurepip
----
. Observe the system-installed packages:
+
[source,bash]
----
sudo python3.7 -m pip list
----
. Uninstall installed packages for 3.7; this ensures proper removal of files in `/usr/local/bin`:
+
[source,bash]
----
sudo python3.7 -m pip uninstall $(python3.7 -m pip list | cut -d" " -f1)
----
. Optionally, clean up now empty directory structure:
+
[source,bash]
----
sudo rm -rf /usr/local/lib*/python3.7/
----
[IMPORTANT]
====
If you followed the first procedure, the packages are already installed for your user account, which is the preferred option. Avoid using `sudo pip` in the future; these instructions are only intended to recover users who already used `sudo pip` in the past.
====

View file

@ -0,0 +1,209 @@
include::{partialsdir}/entities.adoc[]
[[sect-ruby]]
= Ruby
:toc:
== Ruby 2.7
Fedora 32 provides Ruby 2.7 version. With this major update from Ruby 2.6, Fedora becomes the superior Ruby development platform.
[[back]]
=== Changes since Ruby 2.6:
Ruby 2.7 comes with several new features and performance improvements.
==== New features
* <<Pattern,Pattern Matching>>
* <<REPL,REPL improvement>>
* <<GC,Compaction GC>>
* <<Separation,Separation of positional and keyword arguments>>
==== Performance improvements
* JIT [Experimental]
* Fibers cache strategy is changed and fiber creation is speeded up.
* `Module#name`, `true.to_s`, `false.to_s`, and `nil.to_s` now always return a frozen String. The returned String is always the same for a given object. [Experimental]
* The performance of `Monitor` and `MonitorMixin` is improved.
* The performance of `CGI.escapeHTML` is improved.
* `Per-call-site` method cache, which has been there since around 1.9, was improved: cache hit rate raised from 89% to 94%.
* `RubyVM::InstructionSequence#to_binary` method generates compiled binary. The binary size is reduced.
==== Other notable changes
* Some standard libraries are updated.
** Bundler 2.1.2
** RubyGems 3.1.2
** Racc 1.4.15
** CSV 3.1.2
** REXML 3.2.3
** RSS 0.2.8
** StringScanner 1.0.3
** Some other libraries that have no original version are also updated.
* The following libraries are no longer bundled gems. Install corresponding gems to use these features.
** CMath (cmath gem)
** Scanf (scanf gem)
** Shell (shell gem)
** Synchronizer (sync gem)
** ThreadsWait (thwait gem)
** E2MM (e2mmap gem)
* `profile.rb` was removed from standard library.
* Promote `stdlib` to default gems
** The following default gems were published on rubygems.org
*** benchmark
*** cgi
*** delegate
*** getoptlong
*** net-pop
*** net-smtp
*** open3
*** pstore
*** singleton
** The following default gems were only promoted at ruby-core, but not yet published on rubygems.org.
*** monitor
*** observer
*** timeout
*** tracer
*** uri
*** yaml
* `Proc.new` and `proc` with no block in a method called with a block is warned now.
* lambda with no block in a method called with a block raises an exception.
* Update Unicode version and Emoji version from 11.0.0 to 12.0.0.
* Update Unicode version to 12.1.0, adding support for U+32FF SQUARE ERA NAME REIWA.
* `Date.jisx0301`, `Date#jisx0301`, and `Date.parse` support the new Japanese era.
* Require compilers to support C99.
=== Detailed changes
[[Pattern]]
==== Pattern Matching [Experimental]
Pattern matching, a widely used feature in functional programming languages, is introduced as an experimental feature. It can traverse a given object and assign it's value if it matches a pattern.
[source,json]
----
require "json"
json = <<END
{
"name": "Alice",
"age": 30,
"children": [{ "name": "Bob", "age": 2 }]
}
END
case JSON.parse(json, symbolize_names: true)
in {name: "Alice", children: [{name: "Bob", age: age}]}
p age #=> 2
end
----
[[REPL]]
==== REPL improvement
`irb`, the bundled interactive environment (REPL; Read-Eval-Print-Loop), now supports multi-line editing.
It is powered by `reline`, a `readline` -compatible library implemented in pure Ruby.
It also provides rdoc integration. In `irb` you can display the reference for a given class, module, or method.
[[GC]]
==== Compaction GC
This release introduces Compaction GC which can defragment a fragmented memory space.
Some multi-threaded Ruby programs may cause memory fragmentation, leading to high memory usage and degraded speed.
The `GC.compact` method is introduced for compacting the heap.
This function compacts live objects in the heap so that fewer pages may be used, and the heap may be more CoW (copy-on-write) friendly.
[[Separation]]
==== Separation of positional and keyword arguments
Automatic conversion of keyword arguments and positional arguments is deprecated, and conversion will be removed in Ruby 3.
===== Changes
* When a method call passes a Hash at the last argument, and when it passes no keywords, and when the called method accepts keywords, a warning is emitted.
To continue treating the hash as keywords, add a double splat operator to avoid the warning and ensure correct behavior in Ruby 3.
+
[source,ruby]
----
def foo(key: 42); end; foo({key: 42}) # warned
def foo(**kw); end; foo({key: 42}) # warned
def foo(key: 42); end; foo(**{key: 42}) # OK
def foo(**kw); end; foo(**{key: 42}) # OK
----
* When a method call passes keywords to a method that accepts keywords, but it does not pass enough required positional arguments, the keywords are treated as a final required positional argument, and a warning is emitted.
Pass the argument as a hash instead of keywords to avoid the warning and ensure correct behavior in Ruby 3.
+
[source,ruby]
----
def foo(h, **kw); end; foo(key: 42) # warned
def foo(h, key: 42); end; foo(key: 42) # warned
def foo(h, **kw); end; foo({key: 42}) # OK
def foo(h, key: 42); end; foo({key: 42}) # OK
----
* When a method accepts specific keywords but not a keyword splat, and a hash or keywords splat is passed to the method that includes both Symbol and non-Symbol keys, the hash will continue to be split, and a warning will be emitted.
You will need to update the calling code to pass separate hashes to ensure correct behavior in Ruby 3.
+
[source,ruby]
----
def foo(h={}, key: 42); end; foo("key" => 43, key: 42) # warned
def foo(h={}, key: 42); end; foo({"key" => 43, key: 42}) # warned
def foo(h={}, key: 42); end; foo({"key" => 43}, key: 42) # OK
----
* If a method does not accept keywords, and is called with keywords, the keywords are still treated as a positional hash, with no warning.
This behavior will continue to work in Ruby 3.
+
[source,ruby]
----
def foo(opt={}); end; foo( key: 42 ) # OK
----
* Non-symbols are allowed as keyword argument keys if the method accepts arbitrary keywords.
+
[source,ruby]
----
def foo(**kw); p kw; end; foo("str" => 1) #=> {"str"=>1}
----
* `**nil` is allowed in method definitions to explicitly mark that the method accepts no keywords.
Calling such a method with keywords will result in an `ArgumentError`.
+
[source,ruby]
----
def foo(h, **nil); end; foo(key: 1) # ArgumentError
def foo(h, **nil); end; foo(**{key: 1}) # ArgumentError
def foo(h, **nil); end; foo("str" => 1) # ArgumentError
def foo(h, **nil); end; foo({key: 1}) # OK
def foo(h, **nil); end; foo({"str" => 1}) # OK
----
* Passing an empty keyword splat to a method that does not accept keywords no longer passes an empty hash, unless the empty hash is necessary for a required parameter, in which case a warning will be emitted.
Remove the double splat to continue passing a positional hash.
+
[source,ruby]
----
h = {}; def foo(*a) a end; foo(**h) # []
h = {}; def foo(a) a end; foo(**h) # {} and warning
h = {}; def foo(*a) a end; foo(h) # [{}]
h = {}; def foo(a) a end; foo(h) # {}
----
If you want to disable the deprecation warnings, please use a command-line argument `-W:no-deprecated` or add `Warning[:deprecated] = false` to your code.
See the link:https://www.ruby-lang.org/en/news/2019/12/25/ruby-2-7-0-released/[upstream release announcement] for more detailed information about this release.
== Jekyll 4.0
The *Jekyll* static page generator and its plug-ins have been updated to version 4.0.0. This version includes the following changes compared to version 3.8:
* Significant performance improvements
* Cleanups and bug fixes
* Other minor changes incompatible with the previous release
For more information about *Jekyll* 4.0.0, see link:https://jekyllrb.com/news/2019/08/20/jekyll-4-0-0-released/[].

View file

@ -0,0 +1,39 @@
include::{partialsdir}/entities.adoc[]
[[sect-development-tools]]
= Development Tools
:toc:
== Comp-NeuroFedora lab
A new lab called Comp-NeuroFedora has been added to the suite.
This change provides a pre-packaged, ready-to-install lab image with Free and Open Source Software (FOSS) to streamline computational neuroscience work.
The change also aims to encourage more users to use Fedora in their scientific efforts.
For more information about Comp-NeuroFedora, see the link:https://neuro.fedoraproject.org[upstream documentation].
For a list of Fedora labs, see the link:https://labs.fedoraproject.org/[Functional bundles for Fedora] page.
== Switch mingw32 toolchain to dwarf-2 exceptions
The `mingw32` toolchain in Fedora 32 uses the `dwarf-2` exception model instead of the previously used `SJLJ`.
Notable differences include:
* `SJLJ` (`setjmp`/`longjmp`):
** Not "zero-cost": even if an exception isn't thrown, it incurs a minor performance penalty (~15% in exception heavy code).
** Allows exceptions to traverse through e.g. windows callbacks.
* `DWARF` (`DW2`, `dwarf-2`)
** No permanent runtime overhead.
** needs whole call stack to be `dwarf`-enabled, which means exceptions cannot be thrown over e.g. Windows system DLLs (i.e. throwing an exception in a system DLL callback and attempting to catch it won't work)
** DW2 potentially generates bigger libraries. The overhead however is not big (< 10%) for typical applications.
The main reason for switching to `dwarf-2` is that Rust can only be compiled to a link:https://github.com/rust-lang/rust/issues/12859#issuecomment-185081071[MinGW toolchain targeting dwarf exceptions on 32-bit], and Rust usage is starting to appear in some packages (i.e. `librsvg2`).
Switching to `dwarf-2` on `mingw32` would hence allow to keep the same consistent package offering between `mingw32` and `mingw64`, whereas otherwise one would need to either freeze the `mingw32` variants at older versions, or remove them altogether.
== PostgreSQL has been updated to version 12 in the non-modular builds
PostgreSQL `postgresql` and `libpq` components have been updated in Fedora 32 from 11 to 12 version in the non-modular main builds.
For a complete list of enhancements, see link:https://www.postgresql.org/docs/12/release-12.html[PostgreSQL Release 12]

View file

@ -0,0 +1,25 @@
include::{partialsdir}/entities.adoc[]
[[sect-web-development]]
= Web Development
== Django 3.0
The `python-django` package has been updated to version 3.0 in Fedora 32.
Notable changes in this version include:
* ASGI support.
* Official MariaDB support.
* Exclusion constraints on PostgreSQL.
* Enumerations for model field choices.
* Various new minor features.
* Several deprecations and removals.
See the link:https://docs.djangoproject.com/en/3.0/releases/3.0/[upstream release notes] for full information about this release.
== PHP 7.4
Fedora 32 provides the latest version 7.4 of the PHP stack.
This new version provides a large set of new features, new functions, classes, and interfaces, performance improvements, as well as some removals, deprecations, and backward incompatible changes.
Those using the PHP stack on Fedora should therefore read through the link:https://raw.githubusercontent.com/php/php-src/PHP-7.4/UPGRADING[upstream Upgrade Notes]. link:https://raw.githubusercontent.com/php/php-src/PHP-7.4/UPGRADING.INTERNALS[Internals Upgrade Notes] are also available upstream.

View file

@ -1,26 +1,21 @@
include::partial$entities.adoc[]
include::{partialsdir}/entities.adoc[]
= Release Notes
Release Notes for Fedora Linux {PRODVER}
Release Notes for Fedora {PRODVER}
[abstract]
--
This document provides the release notes for Fedora Linux {PRODVER}. It describes major changes offered as compared to Fedora Linux {PREVVER}.
// Fedora Linux {PRODVER} was released on YYYY-MM-DD.
This document provides the release notes for Fedora {PRODVER}. It describes major changes offered as compared to Fedora {PREVVER}.
--
[TIP]
====
Have something that should be included in the release notes?
Notice something wrong?
File an issue in the https://gitlab.com/fedora/docs/fedora-linux-documentation/release-notes/-/issues[Release Notes repository].
====
[NOTE]
====
Use the sidebar on the left to navigate the Release Notes as well as other documentation for Fedora {PRODVER}.
Use the tab on the left to navigate the Release Notes as well as other documentation for Fedora {PRODVER}.
====
image:title_logo.svg[Fedora Logo]
include::partial$Legal_Notice.adoc[]
include::{partialsdir}/Legal_Notice.adoc[]
include::{partialsdir}/Author_Group.adoc[]

View file

@ -1,4 +0,0 @@
:experimental:
include::partial$entities.adoc[]
= Changes in Fedora {PRODVER} For System Administrators

View file

@ -0,0 +1,116 @@
include::{partialsdir}/entities.adoc[]
[[select-distribution]]
= Distribution-wide Changes
:toc:
== Improved usage data gathering through DNF
Before Fedora 32, The Fedora Project was estimating the number of installed Fedora systems by counting the unique IP addresses which access updates from the official mirrors.
This approach is highly inaccurate for multiple reasons, such as undercounting due to NAT and overcounting due to short DHCP leases and laptops moving between different network connections, and this approach also doesn't allow for distinguishing between Fedora variants.
At the same time, accurate usage metrics are highly useful for any software project that wants to serve its community and remain relevant, and so The Fedora Project has been exploring ways to obtain more useful information without compromising privacy of its users.
In Fedora 32, when the installed system contacts one of the official Fedora mirrors, it provides the following information ("user agent"):
* Fedora version (such as "Fedora 32").
* Fedora variant (such as "Server").
* Operating system and architecture (such as "Linux.x86_64").
* A newly introduced `countme` variable.
The `countme` variable is used by Fedora Project to determine the age of the system. The variable has four possible values:
* `1` within the first week of installation - 0-7 days.
* `2` between the first week and the first month of installation - 8-30 days.
* `3` between the first month and the the first 6 months of installation - 31-180 days.
* `4` after the first 6 months of installation - 180 days or more.
Using this system, The Fedora Project can measure the usage levels of various combinations of architectures and variants and collect data short and long term usage of each variant. At the same time, this system avoids collecting any identifying information about any client system.
If you wish to disable this behavior, change the value of the `countme` boolean in DNF configuration. See the `dnf.conf(5)` man page for details.
[NOTE]
====
This system will not be active on Fedora Project's side at the moment of Fedora 32 release because the server side portion is not ready. Clients will send their user agent including `countme`, but it will not be processed at first.
====
== Physical optical media does not require pre-GA testing
Since Fedora 32, the operating system to be installed from the physical optical media will not need to be tested before the general availability.
However, issues regarding physical media boot will still be treated as blocker bugs.
The change will affect the following images:
* `Fedora-Everything-netinst-x86\_64-__<RELEASE_MILESTONE>__.iso`
* `Fedora-Workstation-Live-x86\_64-__<RELEASE_MILESTONE>__.iso`
The change aims to address the trend of ever decreasing amount of new computers and laptops with CD/DVD drives, and errors that installation using this media entails.
As a result, the Fedora QE Team and community testers will have more capacity to test parts of Fedora that are far more visible and exposed to end users.
[IMPORTANT]
====
Due to some bugs, users might not be able in some cases to complete the installation from optical media.
====
== Packaging changes in clang-libs package
The `clang-libs` package no longer includes individual component libraries like `libclangBasic.so`, `libclangAST.so` and so on.
Packages that depend on the clang libraries are now linked to `libclang-cpp.so`.
As a result of this change:
* There is an improved stability in Fedora and application start-up time.
* End-users who develop applications using clang libraries are required to update their applications to use `libclang-cpp.so` instead of the individual component libraries.
* End-users who use Fedora packages that depend on clang libraries do not have any impact due to this change.
== Added support for AArch64 and ppc64le packages with extended availability of FPC-dependent packages
An updated version (3.2.0) of Free Pascal Compiler is now available with Fedora 32.
With the updated Free Pascal Compiler you can now build `Arch64` and `ppc64le` packages.
Also, the Free Pascal Compiler now supports new architectures.
As a result, the programs that are compiled using FPC are available to run on more architectures that Fedora supports.
== Adopting sysusers.d format
Previously, users were created in `%pre` section by calling the commands `getent`, `useradd`, and `groupadd`.
With this update, users are defined in the `sysusers.d` format.
It adds an rpm package `Provides generator` to create `user(__<name>__)` and `group(__<name>__)` virtual Provides for packages with sysusers.d files.
An rpm package `Provides` generator is added to generate `user(__<name>__)` and `group(__<name>__)` for packages with `sysusers.d` files.
As a benefit:
* Packages declare system users using a uniform syntax.
* Scriptlets are more standardized.
* Admins may easily inspect the system user list and find which packages require users.
* Admins may easily override definitions of system users by providing appropriate `sysusers.d` files with higher priority.
+
[NOTE]
====
Users are still created using old-style `useradd` calls.
====
== Limited scriptlet usage of core packages
In Fedora 32, core packages (packages that are used to build the minimal container image) have had all of their scriptlet calls (`%pre`, `%post`, `%preun`, `%postun`) removed.
This means the entire install process of the container image is now declarative and transparent to packaging tools such as `rpm`, `ostree`, or `composer`, the installation is faster, and keeping this approach in the future will allow for additional optimizations and features.
Packages can still make changes to the system during installation by placing files in specific locations that trigger actions.
== Faster recovery from low-memory situations in Fedora Workstation
The `earlyoom` service is now enabled by default in Fedora Workstation.
The `earlyoom` service monitors system memory usage.
If free memory falls below a set limit, `earlyoom` terminates an appropriate process to free up memory.
As a result, the system does not become unresponsive for long periods of time in low-memory situations.
The following is the default `earlyoom` configuration:
* If both RAM and swap go below 10% free, `earlyoom` sends the `SIGTERM` signal to the process with the largest `oom_score`.
* If both RAM and swap go below 5% free, `earlyoom` sends the `SIGKILL` signal to the process with the largest `oom_score`.
For more information, see the `earlyoom` man page.

View file

@ -0,0 +1,39 @@
include::{partialsdir}/entities.adoc[]
[[sect-installation]]
= Installation
[[sect-installation-anaconda]]
== Anaconda changes
This section covers changes in the [application]*Anaconda* installer, including changes in the graphical and text mode interactive installers, Kickstart, and installer boot options.
[[sect-installation-anaconda-general]]
=== General changes
* `/boot` can now be placed on a BTRFS subvolume.
* It is no longer possible to attempt to add more than the maximum allowed number of boot-device NVRAMs on `ppc64le`.
* Anaconda now uses the DBus storage module instead of the local storage object.
This change has been in development for multiple releases, and is now complete.
* Anaconda add-ons now have full DBus support, allowing add-on developers to use their own DBus modules.
See the link:https://github.com/rhinstaller/hello-world-anaconda-addon[add-on example] for more information.
* The Anaconda development team has implemented their own DBus library, `python3-dasbus`.
The library is written in Python, based on GLib, and inspired by `pydbus`.
The repository, including documentation, is available at link:https://github.com/rhinstaller/dasbus[GitHub].
* Comps files can now set specific architectures on which packages can be installed.
* Packages can no longer be downloaded to RAM.
This option has been disabled because it could previously cause out-of-memory issues.
Packages can now only be downloaded to a hard drive, which also means the minimum storage requirements are slightly higher.
* The Network & Hostname screen no longer allows a trailing dot in a host name, which mirrors the behavior of the underlying `systemd-hostnamed` and the kernel.
Previously, attempting to set such a host name crashed the installer.
Note that the actual FQDN specification does technically allow for host names with a trailing dot, but the installer does not.
* Translations have been migrated to the Weblate platform. See the link:https://translate.fedoraproject.org/projects/anaconda/[project page] if you would like to contribute.
[[sect-installation-kickstart]]
=== Kickstart changes
* The `liveimg` command now avoids attempts to download an image twice, which could previously cause the installer to crash due to running out of memory.
* The `%packages` section now supports the `--ignorebroken` option.
Using this option, you can stop DNF from checking packages, groups, or modules with conflicting files.
The default behavior is to abort the installation with an error listing the conflicting files.

View file

@ -0,0 +1,47 @@
include::{partialsdir}/entities.adoc[]
[[networking]]
= Networking
== nftables replaces iptables as the default network packet filtering framework
The `nftables` framework provides packet classification facilities and it is the designated successor to the `iptables`, `ip6tables`, `arptables`, and `ebtables` tools.
It offers numerous improvements in convenience, features, and performance over previous packet-filtering tools, most notably:
* Lookup tables instead of linear processing.
* A single framework for both the IPv4 and IPv6 protocols.
* Rules all applied atomically instead of fetching, updating, and storing a complete ruleset.
* Support for debugging and tracing in the ruleset (`nftrace`) and monitoring trace events (in the `nft` tool).
* More consistent and compact syntax, no protocol-specific extensions.
* A Netlink API for third-party applications.
Similarly to `iptables`, `nftables` use tables for storing chains.
The chains contain individual rules for performing actions.
The `nft` tool replaces all tools from the previous packet-filtering frameworks.
The `libnftables` library can be used for low-level interaction with `nftables` Netlink API over the `libmnl` library.
The `iptables`, `ip6tables`, `ebtables` and `arptables` tools are replaced by nftables-based drop-in replacements with the same name.
While external behavior is identical to their legacy counterparts, internally they use `nftables` with legacy `netfilter` kernel modules through a compatibility interface where required.
Effect of the modules on the `nftables` ruleset can be observed using the `nft list ruleset` command.
Since these tools add tables, chains, and rules to the `nftables` ruleset, be aware that `nftables` rule-set operations, such as the `nft flush ruleset` command, might affect rule sets installed using the formerly separate legacy commands.
To quickly identify which variant of the tool is present, version information has been updated to include the back-end name.
In Fedora 32, the nftables-based `iptables` tool prints the following version string:
[source,bash]
----
$ iptables --version
iptables v1.8.4 (nf_tables)
----
For comparison, the following version information is printed if legacy `iptables` tool is present:
[source,bash]
----
$ iptables --version
iptables v1.8.4 (legacy)
----
For more information, see link:https://fedoraproject.org/wiki/Changes/iptables-nft-default[] and link:https://wiki.nftables.org/wiki-nftables/index.php/Legacy_xtables_tools[].

View file

@ -0,0 +1,16 @@
include::{partialsdir}/entities.adoc[]
[[sect-printing-scanning]]
= Printing and Scanning
== Added support for driverless printing with Dymo LabelWriter and Zebra ZPL printers
Fedora now ships the `lprint` package, which provides driverless support for Dymo LaberWriter and Zebra ZPL label printers. Other label printer support is currently untested with `lprint`, but it is planned to be implemented if hardware is available.
`lprint` is capable of running with CUPS or without CUPS and it provides its own web UI.
== Added driverless scanning support for devices with WSD and eSCL protocols
Fedora now ships the `sane-airscan` package, which provides driverless support for scanners and multi-functions devices, which supports the WSD (WS-Scan) and eSCL (Apple Airscan) protocols.
Most newer devices (released approximately around 2013 and newer) implement at least one of the protocols, so newer devices don't need to depend on regular SANE backends or third party binaries such as HPLIP plugin.

View file

@ -0,0 +1,18 @@
include::{partialsdir}/entities.adoc[]
[[sect-security]]
= Security
== firewalld now uses nftables as its default backend
With this release, the `nftables` filtering subsystem becomes the default firewall backend for the `firewalld` daemon.
To change the backend, use the `FirewallBackend` option in the `/etc/firewalld/firewalld.conf` file.
This change introduces the following differences in behavior when using `nftables`:
* `iptables` rule executions always occur _before_ `firewalld` rules.
** `DROP` in `iptables` means a packet is never seen by `firewalld`.
** `ACCEPT` in `iptables` means a packet is still subject to `firewalld` rules.
* Direct-rule execution occurs _before_ `firewalld` generic acceptance of established connections.
For more information, see link:https://firewalld.org/2018/07/nftables-backend[] and link:https://fedoraproject.org/wiki/Changes/firewalld_default_to_nftables[].

View file

@ -0,0 +1,17 @@
include::{partialsdir}/entities.adoc[]
[[sect-storage]]
= Storage
== Weekly file system TRIM is now enabled
The `fstrim.timer` unit is now enabled by default for new installations and upgrades. The unit weekly runs the `fstrim` tool, which sends the `TRIM` command to all mounted file systems that are listed in the `/etc/fstab` file.
The `TRIM` command informs physical and virtual storage devices about unused blocks. This has the following effects:
* The hinting can make wear leveling and block erasure more efficient.
* `TRIM` returns free logical extents on LVM thin provisioning to the thin pool.
* `TRIM` prevents the slow downs that might occur in certain flash storage devices.
For details about the `TRIM` command and the `fstrim` tool, see the `fstrim(8)` man page.

View file

@ -0,0 +1,6 @@
include::{partialsdir}/entities.adoc[]
= Notable changes for system administrators
This section lists changes in Fedora {PRODVER} relevant to system administrators.
Use the navigation tab on the left to view release notes for various fields of interest.

View file

@ -0,0 +1,72 @@
include::{partialsdir}/entities.adoc[]
[[sect-system-utilities]]
= System Utilities
:toc:
== Bazaar has been replaced by Breezy
In Fedora 32, the `breezy` package for a version control system obsoletes the `bzr` and `git-remote-bzr` packages related to the Bazaar version control system.
As a result, users who install `bzr` will receive `breezy` instead.
The `bzr` command (Bazaar) will be provided as a symbolic link to the `brz` command (Breezy).
== MariaDB 10.4
Fedora 32 provides the `mariadb` package 10.4, up from version 10.3 in Fedora 31.
Notable changes include:
* The `root` and `mysql` users can log in without a password using the `unix_socket` authentication plugin.
* Possibility to use more than one authentication plugins for each user account.
* Support for user password expiry.
* Implementation of the optimizer trace.
* Performance increase in Unicode collations.
* Various changes in syntax, variables and the InnoDB storage engine.
For full information about this release, see the link:https://mariadb.com/kb/en/changes-improvements-in-mariadb-104/[official MariaDB release notes].
== rdiff-backup 2.0.0
This new release has been made truly ready for the future, with a move to https://github.com/rdiff-backup[GitHub], Python 3 support, automated CI/CD pipeline on https://travis-ci.org/rdiff-backup[Travis], availability on https://pypi.org/project/rdiff-backup[PyPi] and no known regression bugs compared to version 1.2.8/1.3.3.
We even found the time to add a few features for you (details in the https://github.com/rdiff-backup/rdiff-backup/blob/v2.0.0/CHANGELOG[change log]):
* Sparse files handling has become more efficient on file systems which support it.
* More compressed file formats are kept as-is.
* Have a look at the `--no-fsync` option to improve speed of backup (at the slight risk of data loss).
* Reproducible builds are possible.
* Verbosity can be set via environment variable `RDIFF_BACKUP_VERBOSITY`.
On the down side, we have to say that due to the many changes, rdiff-backup 2.x can't communicate with older versions 1.x in client-server mode (*but* the repository formats remain compatible), so you'll need to upgrade client and server at once.
Which brings us to the installation, described in details in the https://github.com/rdiff-backup/rdiff-backup/blob/v2.0.0/README.md[read me], but here's the quick version:
* On Fedora 32, in this distribution.
* On Fedora 30 and 31 available as an update.
* CentOS/RHEL 7 and 8, available as an update in https://fedoraproject.org/wiki/EPEL[EPEL]
* On Ubuntu, you may use https://code.launchpad.net/~rdiff-backup/+archive/ubuntu/rdiff-backup-development[Otto's PPA repo].
* Windows, download the asset `rdiff-backup-2.0.0.win32exe.zip` from https://github.com/rdiff-backup/rdiff-backup/releases/tag/v2.0.0[here] and unpack it somewhere in your `PATH`.
* Any other supported platform, use `pip install rdiff-backup` (or download and install the proper asset from
https://github.com/rdiff-backup/rdiff-backup/releases/tag/v2.0.0[here]).
If you encounter issues, log a ticket in https://bugzilla.redhat.com/[Bugzilla], contact us on the https://lists.nongnu.org/mailman/listinfo/rdiff-backup-user[rdiff-backup-users mailing list]
and/or https://github.com/rdiff-backup/rdiff-backup/issues/new[report an issue].
Happy backup, and remember: _no_ backup, _no_ pity!
== apt package rebased from apt-rpm to Debian's apt
Before Fedora 32, the `apt` package did not use the mainline `apt` software from Debian, but instead the `apr-rpm` fork.
It had the advantage of allowing users to use `apt-get` commands in the terminal and use them to install packages from Fedora's DNF repositories.
This was useful because a lot of tutorials online use `apt-get`.
By switching the Fedora apt package from `apt-rpm` to regular `apt` we move from a dead to a living upstream.
We also close security holes and introduce a critical dependency for more packages from the `DPKG` ecosystem.
It is already possible to build Deb packages in Fedora, including with `pbuilder`, an equivalent for `mock` in the `DPKG` ecosystem, however `pbuilder` uses `debootstrap` to provision a build environment.
While we may lose the ability to `apt-get install` Fedora packages from the command line, we also open the gate for `sbuild`, another mock equivalent to build Debs in a clean environment.
This change offers more options to target Debian and derivative systems without leaving the Fedora comfort zone.

View file

@ -1,38 +0,0 @@
include::partial$entities.adoc[]
[[sect-welcome_to_fedora]]
= Welcome to Fedora
The Fedora Project is a partnership of free software community members from around the globe. The Fedora Project builds open source software communities and produces a Linux distribution called Fedora.
The Fedora Project's mission is to lead the advancement of free and open source software and content as a collaborative community. The three elements of this mission are clear:
* The Fedora Project always strives to lead, not follow.
* The Fedora Project consistently seeks to create, improve, and spread free/libre code and content.
* The Fedora Project succeeds through shared action on the part of many people throughout our community.
To find out more general information about Fedora, refer to the following pages:
* link:++https://docs.fedoraproject.org/en-US/project/++[Fedoras Mission and Foundations]
* link:++https://fedoraproject.org/wiki/FAQ++[Fedora FAQ]
* link:++https://docs.fedoraproject.org/en-US/project/communications/++[Communication in Fedora]
* link:++https://docs.fedoraproject.org/en-US/project/join/++[Get Involved in Fedora]
[[sect-need-help]]
== Need Help?
There are a number of places you can get assistance should you run into problems.
If you run into a problem and would like some assistance, go to link:++https://discussion.fedoraproject.org/c/ask/6++[Ask Fedora]. Many answers are already there, but if you don't find yours, you can simply post a new question. This has the advantage that anyone else with the same problem can find the answer, too.
You may also find assistance in the `#fedora` room on link:++https://chat.fedoraproject.org/++[Fedora's Matrix instance]. Keep in mind that the room is populated by volunteers wanting to help, but folks knowledgeable about a specific topic might not always be available.
[[sect-providing-help]]
== Want to Contribute?
You can help the Fedora Project community continue to improve Fedora if you file bug reports and enhancement requests. Refer to link:++https://docs.fedoraproject.org/en-US/quick-docs/bugzilla-file-a-bug/++[How to file a bug] for more information about bug and feature reporting. Thank you for your participation.

View file

@ -1,5 +1,5 @@
include::partial$entities.adoc[]
include::{partialsdir}/entities.adoc[]
[[sect-Release_Notes-Feedback]]
= Feedback
@ -8,12 +8,14 @@ Thank you for taking the time to provide your comments, suggestions, and bug rep
== Providing Feedback on Fedora Software
To provide feedback on Fedora software or other system elements, please refer to link:++https://docs.fedoraproject.org/en-US/quick-docs/bugzilla-file-a-bug/++[Bugs And Feature Requests]. A list of commonly reported bugs and known issues for this release is available from link:{COMMONBUGS_URL}[Common Bugs] on the forums.
To provide feedback on Fedora software or other system elements, please refer to link:++https://fedoraproject.org/wiki/BugsAndFeatureRequests++[Bugs And Feature Requests]. A list of commonly reported bugs and known issues for this release is available from link:{COMMONBUGS_URL}[Common Bugs] on the wiki.
== Providing Feedback on Release Notes
If you feel these release notes could be improved in any way, you can provide your feedback directly to the beat writers. There are several ways to provide feedback, in order of preference:
* Open an issue at link:{BZURL}[] - *This link is ONLY for feedback on the release notes themselves.* Refer to the admonition above for details.
* If you have a Fedora account, edit content directly at link:++https://fedoraproject.org/wiki/Docs/Beats++[Docs-Beats] page on the wiki.
* Fill out a bug request using link:{BZURL}[https://pagure.io/] - *This link is ONLY for feedback on the release notes themselves.* Refer to the admonition above for details.
* E-mail the Release-Note mailing list at link:mailto:relnotes@fedoraproject.org[relnotes@fedoraproject.org].

View file

@ -1,4 +1,4 @@
include::partial$entities.adoc[]
include::{partialsdir}/entities.adoc[]
[[sect-hardware-overview]]
= Hardware Overview
@ -10,18 +10,18 @@ Fedora {PRODVER} provides software to suit a wide variety of applications. The s
The figures below are a recommended minimum for the default installation. Your requirements may differ, and most applications will benefit from more than the minimum resources.
* 2GHz dual core processor or faster
* 1GHz or faster processor
* 2GB System Memory
* 15GB unallocated drive space
* 10GB unallocated drive space
Users of system equipped with the minimum memory of 2GB may want to consider Fedora Spins with less resource intense Desktop Environments
Users of system equipped with the minimum memory of 1GB may want to consider Fedora Spins with less resource intense Desktop Environments
.Low memory installations
[NOTE]
====
Fedora {PRODVER} can be installed and used on systems with limited resources for some applications. Text, VNC, or kickstart installations are advised over graphical installation for systems with very low memory. Larger package sets require more memory during installation, so users with less than 768MB of system memory may have better results performing a minimal install and adding to it afterward.
Fedora {PRODVER} can be installed and used on systems with limited resources for some applications. Text, VNC, or kickstart installations are advised over graphical installation for systems with very low memory. Larger package sets require more memory during installation, so users with less than 768MB of system memory may have better results preforming a minimal install and adding to it afterward.
For best results on systems with less than 1GB of memory, use the DVD installation image.
====
@ -29,7 +29,7 @@ For best results on systems with less than 1GB of memory, use the DVD installati
The figures below are recommended for the default x86_64 Workstation installation featuring the Gnome desktop . Your requirements may differ, depending on Desktop Environment and use case.
* 2GHz quad core processor
* 2GHz dual core processor
* 4GB System Memory
@ -46,9 +46,15 @@ For best results on systems with less than 1GB of memory, use the DVD installati
[[hardware_overview-resolution]]
== Display resolution
Graphical installation of Fedora requires a minimum screen resolution of **1024x768**. Owners of devices with lower resolution, such as some netbooks, should use text or VNC installation.
VGA capable of 1024x768 screen resolution
.Graphical Installation requires 800x600 resolution or higher
[NOTE]
====
Graphical installation of Fedora requires a minimum screen resolution of 800x600. Owners of devices with lower resolution, such as some netbooks, should use text or VNC installation.
Once installed, Fedora will support these lower resolution devices. The minimum resolution requirement applies only to graphical installation.
====
[[hardware_overview-graphics]]
== Graphics Hardware
@ -56,7 +62,7 @@ Once installed, Fedora will support these lower resolution devices. The minimum
[[hardware_overview-graphics-legacy_gpus]]
=== Minimum Hardware for Accelerated Desktops
Fedora {PRODVER} supports most display adapters. Modern, feature-rich desktop environments like *GNOME* and *KDE Plasma Workspaces* use video devices to provide 3D-accelerated desktops. Older graphics hardware may *not support* acceleration:
Fedora {PRODVER} supports most display adapters. Modern, feature-rich desktop environments like *GNOME3* and *KDE Plasma Workspaces* use video devices to provide 3D-accelerated desktops. Older graphics hardware may *not support* acceleration:
* Intel prior to GMA9xx
@ -72,18 +78,22 @@ Systems with older or no graphics acceleration devices can have accelerated desk
[[hardware_overview-graphics-desktops]]
=== Choosing a Desktop Environment for your hardware
Fedora {PRODVER}'s default desktop environment, *GNOME*, functions best with hardware acceleration. Alternative desktops are recommended for users with older graphics hardware or those seeing insufficient performance with *LLVMpipe*.
Fedora {PRODVER}'s default desktop environment, *GNOME3*, functions best with hardware acceleration. Alternative desktops are recommended for users with older graphics hardware or those seeing insufficient performance with *LLVMpipe*.
Desktop environments can be added to an existing installation and selected at login. To list the available desktops, use the [command]`dnf environment list` command:
Desktop environments can be added to an existing installation and selected at login. To list the available desktops, use the [command]`dnf grouplist` command:
----
# dnf environment list
# dnf grouplist -v hidden | grep Desktop
----
Install the desired environment using its ID as listed in the above command's output:
Install the desired group:
----
# dnf install @cinnamon-desktop-environment
# dnf groupinstall "KDE Plasma Workspaces"
----
For more information, see the `dnf5-environment` man page.
Or, use the short group name to install:
----
# dnf install @mate-desktop-environment
----

View file

@ -0,0 +1,39 @@
include::{partialsdir}/entities.adoc[]
[[sect-welcome_to_fedora]]
= Welcome to Fedora
The Fedora Project is a partnership of Free software community members from around the globe. The Fedora Project builds open source software communities and produces a Linux distribution called Fedora.
The Fedora Project's mission is to lead the advancement of Free and open source software and content as a collaborative community. The three elements of this mission are clear:
* The Fedora Project always strives to lead, not follow.
* The Fedora Project consistently seeks to create, improve, and spread Free/Libre code and content.
* The Fedora Project succeeds through shared action on the part of many people throughout our community.
To find out more general information about Fedora, refer to the following pages, on the Fedora Project Wiki:
* link:++https://fedoraproject.org/wiki/Overview++[Fedora Overview]
* link:++https://fedoraproject.org/wiki/FAQ++[Fedora FAQ]
* link:++https://fedoraproject.org/wiki/Communicate++[Help and Discussions]
* link:++https://fedoraproject.org/wiki/Join++[Participate in the Fedora Project]
[[sect-need-help]]
== Need Help?
There are a number of places you can get assistance should you run into problems.
If you run into a problem and would like some assistance, go to link:++https://ask.fedoraproject.org++[]. Many answers are already there, but if you don't find yours, you can simply post a new question. This has the advantage that anyone else with the same problem can find the answer, too.
You may also find assistance on the `#fedora` channel on the IRC net `irc.freenode.net`. Keep in mind that the channel is populated by volunteers wanting to help, but folks knowledgeable about a specific topic might not always be available.
[[sect-providing-help]]
== Want to Contribute?
You can help the Fedora Project community continue to improve Fedora if you file bug reports and enhancement requests. Refer to link:++https://fedoraproject.org/wiki/BugsAndFeatureRequests++[Bugs And Feature Requests] on the Fedora Wiki for more information about bug and feature reporting. Thank you for your participation.

View file

@ -1,9 +0,0 @@
:BOOKID: release-notes
:BZURL: https://gitlab.com/fedora/docs/fedora-linux-documentation/release-notes/-/issues
// Change this to the latest version
:COMMONBUGS_URL: https://discussion.fedoraproject.org/tags/c/ask/common-issues/82/all/f40
:HOLDER: Fedora Project Contributors
:PREVVER: 39
:PRODUCT: Fedora Documentation
:PRODVER: rawhide
:YEAR: 2024

18
preview.sh Executable file
View file

@ -0,0 +1,18 @@
#!/bin/sh
if [ "$(uname)" = "Darwin" ]; then
# Running on macOS.
# Let's assume that the user has the Docker CE installed
# which doesn't require a root password.
echo "The preview will be available at http://localhost:8080/"
docker run --rm -v $(pwd):/antora:ro -v $(pwd)/nginx.conf:/etc/nginx/conf.d/default.conf:ro -p 8080:80 nginx
elif [ "$(expr substr "$(uname -s)" 1 5)" = "Linux" ]; then
# Running on Linux.
# Fedora Workstation has python3 installed as a default, so using that
echo ""
echo "The preview is available at http://localhost:8080"
echo ""
cd ./public
python3 -m http.server 8080
fi

View file

@ -1,181 +0,0 @@
#!/usr/bin/python3
"""
gen_release_notes.py
Retrieve release notes from the wiki, and generate
release notes adoc file for each release notes category in
modules/release-notes/pages/$category_name.adoc.
The generated category document is based on the matching
template $category_name.adoc.j2 in the templates directory.
If this template does not exists, it will use
default_category.adoc.j2 instead.
Requires:
python3-requests
python3-jinja2
dnf install -y python3-requests python3-jinja2
or
pip install -r requirements.txt
"""
import requests
import sys
import re
import jinja2
import logging
import urllib.parse
import os
import argparse
api_url = "https://fedoraproject.org/w/api.php"
def list_changes(release):
"""
Retrieve list of changes from ChangeAcceptedFxx wiki category
returns a list of wiki pages:
[{
"pageid": 12345,
"ns": 0,
"title": "Changes/MyAwesomeChange"
},...]
"""
params = {
"action": "query",
"list": "categorymembers",
"cmtitle": f"Category:ChangeAcceptedF{release}",
"cmlimit": 100,
"format": "json",
}
s = requests.Session()
req = s.get(url=api_url, params=params)
if req.status_code != 200:
logging.error(req.status_code)
return []
data = req.json()
return data["query"]["categorymembers"]
def get_change_info(pageid):
"""
Get change release notes and categories from the wiki page
returns a dict:
{
"title": MyAwesomeChange,
"categories": ["SystemWideChange", "SomeOtherCategory"],
"url": f"https://fedoraproject.org/wiki/Changes/MyAwesomeChange",
"release_notes": "You are awesome!",
}
"""
info = {}
s = requests.Session()
params = {
"action": "parse",
"pageid": pageid,
"prop": "categories|sections",
"format": "json",
}
req = s.get(url=api_url, params=params)
page_data = req.json()
rn_sid = None
info = {
"title": page["title"].replace("Changes/", ""),
"categories": [],
"url": f"https://fedoraproject.org/wiki/{urllib.parse.quote(page['title'])}",
"release_notes": "",
}
# Get categories
for category in page_data["parse"]["categories"]:
if category["*"].startswith("ChangeAccepted"):
continue
info["categories"].append(category["*"])
# Find release notes section
for section in page_data["parse"]["sections"]:
if section["line"] == "Release Notes":
rn_sid = section["index"]
break
if rn_sid:
# Fetch release notes text
params = {
"action": "parse",
"pageid": page["pageid"],
"section": rn_sid,
"prop": "wikitext",
"format": "json",
}
req = s.get(url=api_url, params=params)
section_data = req.json()
# Remove html comments and empty lines
info["release_notes"] = "\n".join(
re.sub(
"<!--.*?-->",
"",
section_data["parse"]["wikitext"]["*"],
flags=re.MULTILINE | re.DOTALL,
).splitlines()[1::]
).strip()
if not info["release_notes"]:
# If no release notes, fallback to summary
params = {
"action": "parse",
"pageid": page["pageid"],
"section": 2, # I expect the summary to be always the first section (after the title) of the page
"prop": "wikitext",
"format": "json",
}
req = s.get(url=api_url, params=params)
section_data = req.json()
# Remove html comments and empty lines
info["release_notes"] = "\n".join(
re.sub(
"<!--.*?-->",
"",
section_data["parse"]["wikitext"]["*"],
flags=re.MULTILINE | re.DOTALL,
).splitlines()[1::]
).strip()
return info
if __name__ == "__main__":
logging.basicConfig(level=logging.INFO)
abs_path = os.path.dirname(os.path.abspath(sys.argv[0]))
rn_per_cats = {}
parser = argparse.ArgumentParser(
description="Generate release notes from the ChangeAccepted wiki category"
)
parser.add_argument("release", help="Fedora Linux version")
args = parser.parse_args()
env = jinja2.Environment(loader=jinja2.FileSystemLoader(f"{abs_path}/templates"))
default_tpl = env.get_template("default_category.adoc.j2")
logging.info(f"Fetching changes for Fedora {args.release}...")
for page in list_changes(args.release):
change = get_change_info(page["pageid"])
logging.info(f"Processed change {change['title']}...")
for cat in change["categories"]:
if cat not in rn_per_cats:
rn_per_cats[cat] = []
rn_per_cats[cat].append(change)
for cat_name, changes in rn_per_cats.items():
logging.info(f"Generating {cat_name}.adoc...")
if os.path.exists(f"{abs_path}/templates/{cat_name}.adoc.j2"):
tpl = env.get_template(f"{cat_name}.adoc.j2")
else:
tpl = default_tpl
output_from_parsed_template = tpl.render(cat_name=cat_name, changes=changes)
with open(
f"{abs_path}/../modules/release-notes/pages/{cat_name}.adoc", "w"
) as fh:
fh.write(output_from_parsed_template)
logging.info("Completed.")

View file

@ -1,2 +0,0 @@
Jinja2
requests

View file

@ -1,16 +0,0 @@
include::{partialsdir}/entities.adoc[]
= Self-Contained Changes
A self-contained change is a change to isolated package(s), or a general change with limited scope and impact on the rest of the distribution/project.
Examples include addition of a group of leaf packages, or a coordinated effort within a Special Interest Group (SIG) with limited impact outside the SIGs functional area.
{% for change in changes %}
== {{ change['title'] }}
{{ change['release_notes'] }}
__Read {{ change['url'] }}[more information] about this change.__
{% endfor %}

View file

@ -1,13 +0,0 @@
include::{partialsdir}/entities.adoc[]
= {{ cat_name }}
{% for change in changes %}
== {{ change['title'] }}
{{ change['release_notes'] }}
__Read {{ change['url'] }}[more information] about this change.__
{% endfor %}

View file

@ -5,11 +5,11 @@ content:
sources:
- url: .
branches: HEAD
- url: https://gitlab.com/fedora/docs/fedora-linux-documentation/release-docs-home.git
branches: main
- url: https://pagure.io/fedora-docs/release-docs-home.git
branches: f32
ui:
bundle:
url: https://gitlab.com/fedora/docs/docs-website/ui-bundle/-/jobs/artifacts/HEAD/raw/build/ui-bundle.zip?job=bundle-stable
url: https://asamalik.fedorapeople.org/ui-bundle.zip
snapshot: true
default_layout: with_menu
output: