IBM i Open Source Updates June 2020
Well, it's that time of the month again. Time to talk about all the OSS updates that's fit to print!
New Packages
OpenJ9 + OpenJDK Java 11
Definitely the biggest new package of June (possibly of the year) is the Early Access release of Java 11 for IBM i via RPM. This is built using a combination of the OpenJ9 JVM and the OpenJDK class libraries. OpenJ9 is the open source version of the same J9 JVM that already ships on IBM i today. We now have a 100% open source Java runtime running on IBM i (albeit in Early Access form).
There's a couple things to look out for in this new runtime:
-
Early Access
This is an Early Access version, which means that it's not production ready. While we have put it through its paces running various workloads in Jenkins, Apache Camel, ActiveMQ, and others, we have not completed comprehensive testing. It surely has bugs and you may experience crashes. -
No more IBM class libraries
While OpenJ9 should largely be the same as the traditional IBM J9, the RPM Java uses a completely different set of Java class libraries. This should not matter for most code, but if you have Java code which has made use of IBM extensions or specific behavior, this will no longer work. -
No ILE integration
This is a pure-PASE implementation and as such it has no integration with ILE. This means it can't integrate with RPG or Db2, it doesn't support ILE native methods, and it doesn't support passwordless JT400 logins as*CURRENT
. It also does not work using the standard PASE or QSHjava
launcher commands, nor does it work with theRUNJVA
CL command.
For more information on the Java 11 rpm, see our doc
GNU Privacy Guard
GNU Privacy Guard, also referred to as GnuPG or GPG is an open source implementation of the OpenPGP standard.
It uses public key cryptography to serve two main purposes:
-
Encryption
With gpg, you can encrypt data using a public key. Only the owner of the corresponding private key can decrypt it. Likewise, someone can encrypt something with your public key and only you can decrypt it. -
Signing
Using your private key, you can create attach a signature to data. Anyone receiving this data and signature can validate that you were the one who signed using your public key.
What kind of data can gpg
work with? Really, any data can be used,
though it's easiest to work with IFS files in the root (/) or QOpenSys
filesystems. gpg
can also used with git to sign your commits. You can read
more about it in the git docs
or from GitHub's docs.
NOTE: Make sure to read /QOpenSys/pkgs/share/doc/gnupg2-2.2.19/README.IBMi
for
steps on how to correctly set the GPG_TTY
environment variable. Without this,
gpg can't prompt you for the password correctly. This also means that gpg will
not work from QSH or QP2TERM if you use a password.
This fulfills RFE 119042.
p7zip
p7zip is a port of the command line version of 7-Zip to Unix-like POSIX systems. If you need to decode 7-Zip archives (those ending with .7z) on IBM i, now you can!
This fulfills RFE 123942.
zstd
zstd (or Zstandard) is a newer compression library from Facebook. It is designed for real-time compression, so it trades speed for compression ratio. That doesn't mean to say that it's compression is poor, however! It has very good compression, outperforming zlib across the board not only in compression ratio, but compression and decompression speed too!
libssh2
libssh2 is a library that implements the SSH2 client protocol. We'll be talking more about this later.
fontconfig
fontconfig is a library for configuring fonts, of course 😉. This along with freetype are used by open source software for font configuration and text rendering.
Right now it's not actually used by anything, but watch this space.
json-c
json-c is a JSON parser library written in C.
Like fontconfig, json-c isn't used by anything right now.
DejaGnu
DejaGnu is a testing framework written by the GNU project. It's built upon Tcl and Expect.
libuuid / util-linux
util-linux is a project that provides a bunch of utilities for the Linux, though many work on other platforms including PASE on IBM i. We had originally built the libuuid package from this for fontconfig, but fontconfig removed that dependency. Since we had it built, we decided to ship it anyway.
We may end up shipping other software from the util-linux collection. I'd especially like to see hexdump 😁.
Package Updates
Curl w/ SSH/SFTP support
Curl has been upgraded to 7.70.0 and was also built with the newly released libssh2. This allows it to use ssh:// and sftp:// URLs.
NCurses "wide" APIs
The ncurses package was updated to build the "wide" APIs and now provides the libncursesw shared library. Some software prefers or requires the libncursesw APIs.
man page compression
RPM was updated to compress man pages automatically. This should save some disk space at the cost of some extra build-time processing. Of course, since we don't have a man page viewer it would save even more space to just not ship them. I wonder why we didn't do that? Hmm. 🤔
Readline minus -bexpfull
You should never, ever, ever use -bexpall
or -bexpfull
when building
software in AIX or PASE. If you ever think you might need it, you should
re-evaluate your life and figure out where you went wrong. Sadly, I didn't know
any better — or at least I didn't have time to fix it properly — when I updated
readline to use -bexpfull
to allow GDB to work.
I have now fixed Readline properly to not use -bexpfull
.
Other Updates
- nodejs10 was updated to 10.21
- nodejs12 was updated to 12.18.
- libutil was updated to 0.8.1 fixed a bug in backtrace() introduced in 0.8.0.
Closing
Another big month. I wonder how much we can keep this up. I guess you'll just have to find out next month. 😉