Go 1.22 emerges as an exceptional release by addressing an enduring loop
variable issue. This update rectifies the loop variable oversight and
introduces several enhancements that streamline code execution and enhance
developer productivity. The new syntactic sugar for iterating over integers
feature simplifies and beautifies code, making it more elegant and readable. In
addition, the introduction of a new math/rand/v2 package for handling random
numbers facilitates more efficient and versatile random number generation.
Profile-guided Optimization (PGO) builds can now de-virtualize a higher
proportion of calls than previously possible. Most programs form a
representative set of Go programs now see between improvement from enabling
PGO. The compiler now interleaves devirtualization and inlining, so interface
method calls are better optimized
The runtime now keeps type-based garbage collection metadata nearer to each
heap object, improving the CPU performance (latency or throughput) of Go
programs. This change also reduces the memory overhead of the majority of Go
programs by deduplicating redundant metadata
“For” loops may now range over integers reducing bugs
Pattern-based HTTP routing: this enhancement empowers developers to create
more expressive and flexible web applications, streamlining the routing process
and improving overall code organization
One improvement is for the Trace Tool’s web UI (user interface) which is
refreshed to support the new tracer. The web UI now supports exploring traces
in a thread-oriented view. The trace viewer now also displays the full duration
of all system calls
Other improvements are made in the toolchains and minor changes to the
library
Reference: https://tip.golang.org/doc/go1.22
New features in Open Enterprise SDK for Go 1.22 from IBM include the following
(z/OS specific updates)
Supporting sys calls available in z/OS 3.1: Also in Open Enterprise SDK for
Go 1.22 is support for more than 50 additional Linux-like system calls which
were introduced in z/OS 3.1. For example InotifyAddWatch, Futimesat, Getxattr,
Openat, etc. With the support of these additional system calls, developers of
Go applications can now efficiently port packages and modules originally
written for Linux to z/OS
CGO call backs: CGO callbacks is a new feature in Open Enterprise SDK for
Go 1.22. While CGO has always allowed Go to call a C program, CGO callbacks now
enables a C program called from Go, to call back to the original Go program.
For example, calling a C program to perform a quicksort, but providing a
function written in Go as the comparator to the quicksort invocation written in
C
A number of tools such as Github CLI and Github runner have been upstreamed
to the z/OS Open Tools site. These tools are written in Go demonstrating how
the Go language is becoming popular within z/OS. These tools are useful for not
only Go users but for all users of z/OS. They can be found at the IBM z/OS Open
Tools github
site.(https://www.ibm.com/links?url=https%3A%2F%2Fgithub.com%2Forgs%2FZOSOpenTools%2Fpackages)
Go extends applications into modern cloud environments with the new Go
container image option:
Users now have the capability to accelerate their transformation to greater
portability and agility in a hybrid cloud environment using containers and
Kubernetes orchestration for existing and new IBM z/OS applications and
workloads.
Go extends applications into modern cloud environments. Go has emerged as the
language of choice for many cloud native operations. It forms the foundation
for container orchestration such as Kubernetes, containerization technology
such as Open Container Initiative, and container application platforms such as
OpenShift. As clients embark on their cloud native journey on z/OS, Go is
essential for enabling new cloud workloads and connecting z/OS to their private
cloud, strengthening z/OS as a first-class hybrid cloud platform.
With the orchestration of the Go container and container runtime for z/OS users
can:
Increase speed from development to deployment of z/OS-based applications,
users can worry less about the system setup/configuration
Increase predictability and repeatability across the application lifecycle
for z/OS applications
Scaling and load balancing made easy, spread the load on different
containers and processors
Enhance practices across z/OS development, testing, and operations through
a wide ecosystem of open-source application container-based tools
With the release of IBM Open Enterprise SDK for Go 1.22, the Go compiler is
now available as a container image in conjunction with the IBM z/OS Container
Platform (5655-MC3)
(https://community.ibm.com/community/user/ibmz-and-linuxone/blogs/cris-desnoyers/2024/03/15/ibm-zos-container-platform-11-is-generally-availab).
You are now able to develop Go applications and deploy them natively as
container images in z/OS containers.
Here are some resources you could use for the next steps:
How to use the Go container image blog
(https://community.ibm.com/community/user/ibmz-and-linuxone/blogs/joon-lee/2024/02/26/go-and-containers-on-zos)
Download Pax and try the latest version
(https://www.ibm.com/account/reg/us-en/subscribe?formid=urx-49659)
How to obtain blog SMP/E version and Container image for production use
(https://community.ibm.com/community/user/ibmz-and-linuxone/blogs/chandni-dinani2/2023/09/11/obtain-the-latest-smpe-version-of-ibm-open-enterpr)
----------------------------------------------------------------------
For IBM-MAIN subscribe / signoff / archive access instructions,
send email to [email protected] with the message: INFO IBM-MAIN