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 10 release.
Python Released at Version 3.12
Oracle Linux 10 includes Python 3.12 as the default Python implementation. Python is
distributed as a non-modular
python3
package in the BaseOS repository and is
typically installed by default. Python 3.12 includes full life cycle support on Oracle Linux
10. Other versions of Python 3 with a shorter life cycle, available through the AppStream
repository, are installable in parallel. /usr/bin/python
and other
Python-related commands, such as pip
, are available in the unversioned form
and point to the default Python 3.12 version. Notable enhancements compared to Python 3.11
include:
- A new type statement and type parameter syntax for generic classes and functions.
- Formatted string literal (f-strings) formalized in the grammar and can now be integrated into the parser directly.
- A unique per-interpreter global interpreter lock (GIL).
- You can now use the buffer protocol from Python code.
- To improve security, the built-in hashlib implementations of the SHA1, SHA3, SHA2-384, SHA2-512, and MD5 cryptographic algorithms are replaced with formally verified code from the HACL* project. The builtin implementations remain available as fallback if OpenSSL doesn't provide them.
- Dictionary, list, and set comprehensions in CPython are now inlined to increase the speed of a comprehension execution.
- CPython now works with the Linux perf profiler.
- CPython now provides stack overflow protection on supported platforms.
- Python 3.12 is compiled with GCC’s -O3 optimization flag, which is used by default in upstream, for improved performance.
To install packages from the Python 3.12 stack, you can use the following commands:
# dnf install python3
# dnf install python3-pip
To run the interpreter, you can use the following commands:
$ python
$ python3
$ python3 -m pip --help
Perl Released at Version 5.40
Perl version 5.40, includes the following changes from the 5.32 version:
- Core enhancements:
- Unicode 15.0 available.
- -g command-line option, an alias for the umask option -0777.
- The -M command-line option accepts a space.
- builtin module now includes documentation for new always-present functions.
- try/catch feature for exception handling.
- Deprecation warnings now have specific subcategories to provide finer-grained control. Note that you can still disable all deprecation warnings in a single statement.
- The @INC hooks are enhanced with the new $INC variable and INCDIR method.
- Forbidden control flow out of the defer and finally modules is now detected at compile-time.
- Using
(?{ … })
and(??{ … })
in a pattern now disables various optimizations globally in that pattern. - The limit for the
REG_INF
regex engine quantifier is increased from 65,536 to 2,147,483,647. - The new regexp variable ${^LAST_SUCCESSFUL_PATTERN} allows access to the last successful pattern that matched in the current scope.
- A new __CLASS__ keyword
- Perl now provides the
^^
logical XOR operator.
- Incompatible changes:
- A physically empty sort function now triggers a compile-time error.
- The readline() function no longer clears the stream error and EOF flags.
- INIT blocks no longer run after an exit() function inside a BEGIN block.
- Calling the import method on an unknown package now produces a warning.
- The return function no longer allows an indirect object.
- Changes in errors and warnings can now cause failures in tests.
- Deprecations:
- The use of the ' character as a package name separator is deprecated.
- The switch feature and the smartmatch operator ~~ are deprecated.
- Using the goto function to jump from an outer scope into an inner scope is deprecated.
- Internal Changes:
- Multiple deprecated C functions have been removed.
- Internal C API functions are now hidden with the __attribute__((hidden)) attribute on the platforms that support it. This means they're no longer callable from XS modules on those platforms.
- Modules:
- The Term::Table and Test2::Suite modules have been added to Perl Core.
- Most modules are updated.
For more information, see the perl5340delta
,
perl5360delta
, perl5380delta
, and
perldelta
man pages.
Ruby Released at Version 3.3.7
Ruby version 3.3.7 includes performance enhancements, fixes, and several new features, including:
- The new
Prism
parser provides an alternative toRipper
. See https://github.com/ruby/prism for more information. - YJIT, the Ruby just-in-time (JIT) compiler is stable and is updated for performance improvements. Use this compiler in production.
- The
Regexp
matching algorithm includes security enhancements. - The M:N thread scheduler is available.
- Use the
Lrama
LALR parser generator instead ofBison
. - The
Racc
gem is now a bundled gem.
Node.js Released at Version 22
Node.js
version 22 includes the following changes from version 20:
- V8 JavaScript engine version 12.4.
- V8 Maglev compiler enabled by default on architectures where available. For example, the AMD/Intel 64-bit architectures and the 64-bit ARM architecture.
- Maglev improves performance for short-lived CLI programs.
- npm package manager version 10.8.1.
node --watch
mode now considered stable. In watch mode, changes in watched files cause theNode.js
process to restart.- The browser-compatible implementation of WebSocket is now considered stable and
enabled by default. A WebSocket client to
Node.js
is therefore available without external dependencies. Node.js
includes an experimental feature for execution of scripts from package.json. To use this feature, run thenode --run
<script-in-package.json> command.
MySQL Released at Version 8.4
MySQL version 8.4 includes the following notable changes since 8.0:
mysql_native_password
authentication plugin is deprecated and no longer enabled by default.- User accounts or roles with the
BINLOG_ADMIN
privilege automatically receive theTRANSACTION_GTID_TAG
privilege after upgrading to MySQL 8.4. - The
mysql_upgrade_history
file is created or updated in the server’s data directory when installing MySQL 8.4. The file is in JSON format and includes information about the version installed, date, and time of installation, and whether the release was part of a Long-Term Support (LTS series) or an Innovation series. - The use of the
%
and_
characters as wildcards in database grants is deprecated. These characters are treated as literals. They're already treated as literals when thepartial_revokes
server system variable is set to ON. - The treatment of the
%
character by the server as a synonym forlocalhost
when checking privileges is deprecated. - Use the
--tls-version
and--admin-tls-version
server system variables. The deprecated--ssl
and--admin-ssl
server options andhave_ssl
andhave_openssl
server system variables are removed. - Use the
authentication_policy
server system variable. The deprecateddefault_authentication_plugin
system variable is removed. - Use the
SET_ANY_DEFINER
privilege for definer object creation and theALLOW_NONEXISTENT_DEFINER
privileges for orphan object protection. The deprecatedSET_USER_ID
privilege is removed. - The deprecated
mysql_upgrade
utility is removed.
For more information, see the MySQL documentation.