Dynamic Programming Languages, Web and Database Servers
The following features, enhancements, and changes related to programming languages, web servers, and database servers are introduced in this Oracle Linux 8 release.
Python Version 3.12 Availability
With this release of Oracle Linux 8.10, the newest release of Python 3.12 is available for use. Notable enhancements in Python 3.12 (compared to the 3.11) include :
-
Syntax feature updates include a
type
statement and a type parameter syntax for generic classes and functions. -
Grammar feature updates include syntactic formalization of f-strings which can be integrated into the parser directly.
-
The use of a unique per-interpreter Global Interpreter Lock (GIL). This feature enables Python programs to take full advantage of multiple CPU cores. Note that in this release this feature is only available through the C-API.
-
Python data model updates include a way to the use a buffer protocol from Python code. Classes that implement the
__buffer__()
method are now usable as buffer types. -
Security improvements include the replacement of the built-in
hashlib
implementations of SHA1, SHA3, SHA2-384, SHA2-512, and MD5 with formally verified code from the HACL* project. These built-in implementations remain as fallbacks that are only used when OpenSSL does not provide them. -
Dictionary, list, and set comprehensions in
CPython
are now inlined. This enhancement increases the speed of a comprehension execution. -
CPython
is available for use with the Linuxperf
profiler. -
Stack protection is provided by
CPython
on supported platforms.
Note that Python 3.12 series packages can be installed in parallel with Python 3.9 and Python 3.11 on the same system.
For example:
- To install packages from the
python3.12
stack, type:# dnf install python3.12 # dnf install python3.12-pip
- To run the interpreter,
type:
$ python3.12 $ python3.12 -m pip --help
Note:
The Python 3.12 series documentation is available in thepython3.12-docs
package.
For information about product support for Python language versions, see Oracle Linux: Product Life Cycle Information.
Python Improvements for Controlling Email Addresses Parsing
A fix relating to CVE-2023-27043, introduced the ability to
enable stricter parsing of email addresses in Python 3 in the
getaddresses
and parseaddr
functions from the email.utils
module. However, this fix is
not compatible with the old parsing behavior and so this improvement
includes two methods to disable the new behavior in favor of the old
behavior without having to implement the new code changes in existing code.
The first methods is a new PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING
environment variable that when set to true
, enables the older parsing
behavior as the default. For example:
export PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING=true
You can do the same by creating the /etc/python/email.cfg
configuration
file with the following section:
[email_addr_parsing]
PYTHON_EMAIL_DISABLE_STRICT_ADDR_PARSING = true
Note:
If the new functions are implemented in the code, the functions can still enable the stricter behavior despite these settings.Ruby Version 3.3 Availability
Ruby 3.3.0 is included in a new ruby:3.3
module stream with the following
notable enhancements:
-
New
Prism
parser. Prism is a portable, error tolerant, and maintainable recursive descent parser for the Ruby language.Prism
is an alternative parser to theRipper
script parser. -
Major performance improvements are available for Ruby just-in-time YJIT compiler.
-
The
Regexp
matching algorithm was updated to reduce the impact of potential Regular Expression Denial of Service (ReDoS) vulnerabilities. - The new pure-Ruby JIT compiler (RJIT) is available for use on x86-64 architecture Unix platforms. The RJIT compiler replaces the MJIT compiler.
- The new M:N thread scheduler is available for use.
Other notable changes:
- Use the
Lrama
LALR parser generator instead ofBison
. -
Several deprecated methods and constants have been removed.
-
The
Racc
gem has been promoted from a default gem to a bundled gem.
To enable and install the ruby:3.3
module stream, type:
sudo dnf module enable ruby:3.3
sudo dnf module install ruby:3.3
If you want to upgrade from an earlier ruby
module stream, see Oracle Linux: Managing Software on Oracle Linux.
For information about product support for Ruby modules, see Oracle Linux: Product Life Cycle Information.
perl-DateTime-TimeZone
Module Updated to Version 2.62
The perl-DateTime-TimeZone
module is updated to version 2.62. Notably, the
name()
method is changed to return the main time zone name rather than the
alias value.
PHP Version 8.2 Availability
PHP 8.2 is included in the new php:8.2
module stream with the following
notable changes:
-
Ability to mark a class with a readonly modifier.
-
Ability to use null, false, and true as stand-alone types.
-
A new
Random
extension namedrandom
. This extension helps to organizes and integrate existing PHP functionality related to random number generation. -
Ability to define constants in traits.
To install the php:8.2
module stream, use the following command:
sudo dnf module install php:8.2
If you want to upgrade from the php:8.1
stream within Oracle Linux, see
Oracle Linux: Managing Software on Oracle Linux.
For information about the length of support for the php
module streams, see
the Oracle Linux: Product Life Cycle Information.
PostgreSQL Version 16 Availability
With Oracle Linux 8.10, PostgreSQL 16 is available for use as a
postgresql:16
module stream. PostgreSQL 16 contains many new features and
enhancements over version 15.
Notable enhancements include:
-
Improved performance for bulk-loading database operations.
-
The
libpq
library handles connection-level load balancing. A newload_balance_hosts = disable | random
option is available for use to control the order in which the client tries to connect to the available hosts and addresses. -
Ability to create custom configuration files and include them in the
pg_hba.conf
andpg_ident.conf
files. -
Enhanced regular expression matching of user and database names in
pg_hba.conf
, and user names inpg_ident.conf
files.
Other changes include:
-
PostgreSQL is no longer distributed with the
postmaster
binary. Users who start thepostgresql
server by using the providedsystemd
unit file (thesystemctl start postgres
command) are not affected by this change. If you start thepostgresql
server directly through thepostmaster
binary, you must use thepostgres
binary instead. -
PostgreSQL no longer provides documentation in PDF format within the package. Use the PostgreSQL online documentation instead. Also, see Using PostgreSQL
To install the postgresql:16
stream, use the following command:
sudo dnf module install postgresql:16
To upgrade from an earlier postgresql
stream within Oracle Linux, follow the
procedure described in Oracle Linux: Managing Software on Oracle Linux.
For information about the length of support for the postgresql
module
streams, see the Oracle Linux: Product Life Cycle Information.
NGINX Version 1.24 Availability
NGINX 1.24 web and proxy server is included in the new nginx:1.24
module
stream with the following notable changes:
New features and changes related to Transport Layer Security (TLS):
-
Encryption keys are automatically rotated for TLS session tickets when using shared memory in the
ssl_session_cache
directive. -
Memory usage optimization improvements in configurations with Secure Sockets Layer (SSL) proxy.
-
You can now use
ipv4=off
parameter to disable look up of IPv4 addresses while resolving IP addresses. - New
$proxy_protocol_tlv_*
variables are available for use. You can use these variables to store the values of the Type-Length-Value (TLV) fields that appear in the PROXY v2 TLV protocol. -
New
byte range
functionality added to thengx_http_gzip_static_module
.
Other changes:
-
Header lines now appear as linked lists in the internal API.
-
NGINX can now combine arbitrary header lines with identical named header strings as they get passed to the FastCGI, SCGI, and uwsgi back ends in the
$r->header_in()
method of thengx_http_perl_module
, and during lookups of the$http_...
,$sent_http_...
,$sent_trailer_...
,$upstream_http_...
, and$upstream_trailer_...
variables. -
A warning message appears if protocol parameters of a listening socket are redefined.
-
NGINX closes connections with lingering if pipeline request was used by the client.
-
The logging level for various SSL errors has been lowered from
Critical
toInformational
.
To install the nginx:1.24
stream, use:
sudo dnf module install nginx:1.24
To upgrade from the nginx 1.22
stream within Oracle Linux, see Oracle Linux: Managing Software on Oracle Linux.
For information about the length of support for the php
module streams, see
the Oracle Linux: Product Life Cycle Information.
Git Updated to Version 2.43.0
Git version 2.43 is included in this release with the following notable enhancements.
-
The
git check-attr
command has a new--source
option you can use to read the.gitattributes
file from the provided tree object instead of the current working directory. -
When Git receives an HTTP response that includes one or more
WWW-Authenticate
headers, the values for eachWW-Authenticate
header are then passed by Git to credential helpers. -
In the case of an empty commit, you can use the
git format-patch
command to write an output file containing a header of the commit instead of creating an empty file. -
You can use
git blame --contents=*<file>* *<revision>* -- *<path>*
command to examine the origins of lines starting at*<file>*
through the history that leads to*<revision>*
. -
The
git log --format
command was updated to accept the%(decorate)
placeholder for further customization and to extend the capabilities provided by the--decorate
option.
Git LFS Updated to Version 3.4.1
The Git Large File Storage (LFS) version 3.4.1 is included with the following notable changes:
-
The
git lfs push
command now reads references and object IDs from standard input. -
Git LFS now handles alternative remotes without relying on Git.
-
Git LFS now handles the
WWW-Authenticate
response-type header as a credential helper.