Oct 10, 2019, 4:44:34 AM10/10/19
to korn-...@googlegroups.com, flo...@gentoo.org, m...@suse.com, Boyuan Yang, eric desrochers, c...@freebsd.org, esch...@archlinux.org, sme...@gmail.com, ryand...@macports.org
Today we are announcing the availability of new stable release of ksh-2020.0.0. This is the first stable release of ksh after a gap of more than 6 years. It is based on the ksh93v- release, which was a beta release of ksh released by AT&T AST development team in 2014.
Release tarballs can be downloaded from GitHub. Here are the highlights for this release:
* This is based on the ksh93v- code base but with some features removed or disabled. For example, new builtins that were not present in the ksh93u+ release have been (temporarily) removed. Support for JSON (through `read` and `print` builtins) added after ksh93u+ is currently disabled due to serious bugs in the implementation.
* We’ve switched from the ksh93[letter][-+] versioning scheme to semantic versioning. Hence the 2020.0.0 version rather than ksh93w+. This should make it much clearer moving forward when a release is a patch, minor, or major release.
* Build system has been changed to make it easier and faster to build.
* The AST Vmalloc subsystem has been removed and replaced by the system malloc (which makes it possible to use tools like Valgrind and ASAN).
* Almost all the AST locale subsystem has been replaced by the system locale support.
* Support for non-POSIX operating systems and EBCDIC has been removed.
* Hundreds of new tests have been added to improve test coverage. Including tests of interactive behavior (using the expect utility).
* Coverity defect rate (bugs per thousand lines of code) has been brought from above 2 to zero (almost). See https://scan.coverity.com/projects/ksh?tab=overview
* Downstream patches from different vendors were merged upstream.
* All of the bugs found through ASAN were fixed with the exception of a few memory leaks.
* Lots of bugs identified by cppcheck, oclint, clang-analyzer and gcc were fixed.
* The code has been reformatted to have a consistent style via clang-tidy and clang-format.
* `declare` and `local` are now builtin keywords.
* `times` has been changed from an alias to a builtin that conforms to the POSIX spec.
* It’s now possible to build and pass all tests on Solaris and modern BSD platforms like macOS and FreeBSD.
See the changelog for more details about the changes made since the ksh93u+ release 6 years ago.