Dynamic Programming Languages, Web and Database Servers (2024)

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 Linux perf 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

For more information, see Oracle Linux 8: Installing and Managing Python.

Note:

The Python 3.12 series documentation is available in the python3.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 the Ripper 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 of Bison.
  • 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 named random. 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 new load_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 and pg_ident.conf files.

  • Enhanced regular expression matching of user and database names in pg_hba.conf, and user names in pg_ident.conf files.

Other changes include:

  • PostgreSQL is no longer distributed with the postmaster binary. Users who start the postgresql server by using the provided systemd unit file (the systemctl start postgres command) are not affected by this change. If you start the postgresql server directly through the postmaster binary, you must use the postgres 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 the ngx_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 the ngx_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 to Informational.

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 each WW-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.

Dynamic Programming Languages, Web and Database Servers (2024)
Top Articles
Latest Posts
Article information

Author: Errol Quitzon

Last Updated:

Views: 6533

Rating: 4.9 / 5 (59 voted)

Reviews: 90% of readers found this page helpful

Author information

Name: Errol Quitzon

Birthday: 1993-04-02

Address: 70604 Haley Lane, Port Weldonside, TN 99233-0942

Phone: +9665282866296

Job: Product Retail Agent

Hobby: Computer programming, Horseback riding, Hooping, Dance, Ice skating, Backpacking, Rafting

Introduction: My name is Errol Quitzon, I am a fair, cute, fancy, clean, attractive, sparkling, kind person who loves writing and wants to share my knowledge and understanding with you.