Well, it’s that time of the month again. Time to talk about all the OSS updates that’s fit to print!
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:
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 QSH
javalauncher commands, nor does it work with the
For more information on the Java 11 rpm, see our doc
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:
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.
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
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
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.
This fulfills RFE 123942.
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 is a library that implements the SSH2 client protocol. We’ll be talking more about this later.
Right now it’s not actually used by anything, but watch this space.
json-c is a JSON parser library written in C.
Like fontconfig, json-c isn’t used by anything right now.
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 .
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.
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.
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.
You should never, ever, ever use
-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
- 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.
Another big month. I wonder how much we can keep this up. I guess you’ll just have to find out next month.