Red Hat Enterprise Linux (RHEL) 8.4 is generally available, and developing your applications on RHEL has never been easier. When we ask developers why they choose Red Hat Enterprise Linux for development over other operating systems, consistency and reliability rank at the top of the list.
A big part of that reliability comes from using curated runtimes for your programming language. These are available through application streams on Red Hat Enterprise Linux, which bring the same reliability promise, but on a closer parity to the pace of languages and frameworks that developers love to use. As with every RHEL release, we are excited to bring you newer versions of popular language runtimes in Red Hat Enterprise Linux 8.4. In this article, we will take a closer look at the newly added runtimes and discuss why they matter for your applications.
Time zone support in Python 3.9
With Python 3.9, you can modernize your existing applications by leveraging the latest Python features, including time zone–aware timestamps, the new string prefix and suffix methods, and dictionary union operations.
Let's dive a bit more into the details of time zone–aware timestamps in Python. Prior to version 3.9, datetime
objects had no time zone information by default. The tz
attribute had to be set to add a time zone—but only one time zone was available (UTC).
In Python 3.9, you can now use ZoneInfo
to access the local machine's time zone database, which has hundreds of different possible time zones. This is quite useful when you are building an application such as a calendar utility that has to span across multiple time zones.
>>> from datetime import datetime, timezone
>>> from zoneinfo import ZoneInfo
>>> datetime.now(tz=ZoneInfo(“America/Toronto”))
Faster allocation with Golang 1.15
With Go 1.15, you can easily get access to the quickly evolving upstream version of Go. This gives you tools including improved memory allocation for small objects at high core counts, linker improvements that can speed up build times as well as reduce binary sizes, and several other core library improvements. There are many use cases for needing to allocate a large number of small objects very quickly—for example, if you are loading a social graph with a million nodes and then running analytics on that graph. For more information, check out the Go 1.15 release notes.
var nodes []*node
for j := 0; j < 1e6; j++ {
b := allocator.AllocateAligned(nodeSz)
n := (*node)(unsafe.Pointer(&b[0]))
n.val = rand.Int63()
nodes = append(nodes, n)
}
sort.Slice(nodes, func(i, j int) bool {
return nodes[i].val < nodes[j].val
})
// The graph nodes are now sorted in ascending value of val
Improved testing features in Rust 1.49
With Rust 1.49, you can write high-performance applications that run with a low memory footprint, making it highly suitable for edge use cases. Additionally, Rust is a statically typed language, making it easy to catch errors at compile-time and maintain. For more information, check out the Rust 1.49 release notes.
Better tooling in LLVM 11.0
With the latest LLVM toolset, you can take advantage of fresher tooling and compatibility with other code built with compatible versions of LLVM/Clang. For more information on LLVM, check out the LLVM 11.0 release notes.
Getting started with Red Hat Enterprise Linux 8.4
We hope you download Red Hat Enterprise Linux 8.4, and we can’t wait to see the amazing applications you develop on it.
If you're new to using Red Hat products, register for the Red Hat Developer program to get access to the no-cost individual developer subscription for Red Hat Enterprise Linux, which can be used in production for up to 16 systems.
These are only a few of the cool things you can do with Red Hat Enterprise Linux application streams. Application streams unlock a huge set of modules that you can use in various application use cases. To get a list of all the application stream modules, simply run the following command on your Red Hat Enterprise Linux command line:
$ yum module list
New to application streams in Red Hat Enterprise Linux? Try out our hands-on lab.
Last updated: September 27, 2024