3.13 Scripting and Dynamic Programming Languages

The following scripting and dynamic programming language changes are introduced in this release:

  • Python version 3.6 included.  Oracle Linux 8 includes Python version 3.6. Note that this version of the Python package is not installed on your Oracle Linux 8 by default.

    The Python 2.7 package python2 is also available for installation on your Oracle Linux 8 system; but, note that Python 2.7 is provided to facilitate a smoother transition to Python 3 and that its life cycle will be shorter than that of Python 3.

    Note

    Developers may want to migrate former code that is written in Python 2 to Python 3. After the migration, the original Python 2 code becomes interpretable by the Python 3 interpreter, while also remaining interpretable for the Python 2 interpreter.

    The default python package, as well as the unversioned /usr/bin/python executable, is included in Oracle Linux 8. You should use either python3 or python2 directly. Or, alternatively, you can configure the unversioned python command by using the alternatives command.

  • PHP updated to version 7.2.  Oracle Linux 8 includes PHP version 7.2, which includes several improvements over the previous version of PHP, including the following:

    • PHP now uses the FastCGI Process Manager (FPM) by default, which is safe for use with a threaded httpd.

    • In this release, you no longer specify the php_value and php-flag variables in the httpd configuration files. Instead, set these variables in the pool configuration, /etc/php-fpm.d/*.conf.

    • PHP script errors and warnings are now logged to /var/log/php-fpm/www-error.log instead of /var/log/httpd/error.log.

    • Changing the PHP max_execution_time configuration variable requires that you also change the httpdProxyTimeout setting so that the configurations match.

    • The user who is running PHP scripts is now configured in the FPM pool configuration file, /etc/php-fpm/d/www.conf. Also, the apache user is the now the default.

    • If you make configuration changes or install a new extension, you are now required to restart the php-fpm service for the changes to take effect.

    • The following PHP extensions are removed in this release:

      • aspell

      • memcache

      • mysql

        The mysqli and pdo_mysql extensions are still provided by php-mysqlnd package.

      • zip

  • Ruby improvements.  Oracle Linux 8 includes Ruby version 2.5, which provides several improvements over Ruby 2.0.0, including the following:

    • Symbols are now garbage collected.

    • Several refinements syntax improvements.

    • The $SAFE=2 and $SAFE=2 levels are obsoleted.

    • The consolidation of the Fixnum and Bignum classes into the Integer class.

    • Performance improvements, including optimization of the Hash class, improved access to instance variables, as well as performance improvements to the Mutex class.

    • The deprecation of some older APIs.

    • Updated bundled libraries, including the following: RubyGems, Rake, RDoc, Psych, Minitest, and test-unit.

    • The mathn, DL, ext/tk, and XMLRPC libraries that were previously distributed with Ruby are deprecated or no longer included.

    • The SemVer versioning scheme is now used for Ruby versioning.

  • Perl features and improvements.  Oracle Linux 8 includes Perl version 5.26, which provides new features and improvements over the previous version of Perl. Note that in this version of Perl, some features are deprecated.

    Notable changes in this version of Perl include the following:

    • Availability of Unicode 9.0.

    • Addition of the op-entry, loading-file, and loaded-fileSystemTap probes.

    • Addition of the Config::Perl::V module to access perl -V data in a structured way.

      Addition of the IO::Socket::IP module to handle IPv4 and IPv6 sockets transparently.

    • New perl-App-cpanminus package has been added. This package includes the cpanm utility, which enables you to get, extract, build, and install modules from the Comprehensive Perl Archive Network (CPAN) repository.

    • Ability to use the copy-on-write mechanism when assigning scalars for improved performance.

    • Hashes are now randomized by default. Also, the order in which keys and values are returned from a hash changes on each perl run. You can disable the randomization by setting the PERL_PERTURB_KEYS variable to 0.

    • The perl packaging is now aligned with upstream and also installs core modules. The /usr/bin/perl interpreter is provided by the perl-interpreter package, which is a change from previous releases, where the perl package included only a minimal interpreter and the perl-core package included both the interpreter and the core modules.

    The following Perl features are deprecated or removed:

    • The current directory (.) has been removed from the @INC module search path. This change was made for security reasons.

    • The do statement returns a deprecation warning when it fails to load a file.

    • The do subroutine(LIST) call is no longer supported and results in a syntax error.

    • Unescaped literal { characters in regular expression patterns are not allowed.

    • Removed lexical scope support for the $_ variable.

    • Cannot use the defined operator on an array or a hash, as it results in a fatal error.

    • Importing functions from the UNIVERSAL module result in a fatal error.

    • Removal of the find2perl, s2p, a2p, c2ph, and pstruct tools.

    • Removal of the ${^ENCODING} facility. In addition, the encoding pragma’s default mode is no longer supported. To write source code using encoding other than UTF-8, use the encoding’s Filter option.