Releases: staalmannen/APExp
Version 0.4
This is a huge release even if no major new software has been included in the default build compared to 0.3
Some highlights:
- The compiler has been extensively patched (vibe coding) for C99 features like VLA, compound literals, _Complex, dropping keywords like "hidden" and division by 0.
- A new utility has also been vibe-coded: A GNU as compatible front-end to the native assemblers. It converts Intel or AT&T assembly to Plan9 assembly and passes it on to the native $O assembler.
- A lot of features have been ported from the musl libc : The complete "fenv", "math", "search", "regex" and "complex" modules and several other components. I also replaced the complex mix of sources of third-party components in the library and standardized as much as possible on musl libc as the external source of libc functions.
- A major reorganization of the APExp libc (libap.a) : The sources are organized according to function like the musl libc src directory.
- Several libraries (libap, libbsd, libv, lib9, libnet, libmp, libutf(+libwtf), libfmt, fts-standalone) have been merged into a single libap.a and the sources share the common musl-like directory structure.
- The merger of the libraries also highlighted 2 bugs in "ar" : it truncates long object names and it drops a whole list of objects in case there is a symbol conflict. It has been patched and is now not truncating the names and it only drops the conflicting object file.
- some new software is successfully built and offered by default in this release, most notably: xz
TODOs:
I think one of the scariest changes with the greatest potential (or certainty, because it did, ... spectacularly) breakage was the compiler patching. The big work in reorganizing the sources is done, which will make it much easier to identify missing components in the C library. It might be that I have to extract some functions from multi-function source files into individual files so that it is easier to see what we actually have.
For the next release, there is one major change, and that is to migrate libap from the APE stdio to the musl stdio. An ugly (and potentially dangerous) thing about the current release is that we have a mixed stdio with for example 2 different FILE structs. This can and will break if these are being mixed. Apart from that I hope to do more of the fun stuff for next release: package more 3rd party utilities to make APExp more capable.
Part of the packaging work is also to update as many as possible of the existing ports to new versions. That way, I can also deal with a number of "old sins" with hacks I did to enable building on Plan9 (mostly related to compiler limitations (VLA) or limitations in the C library).
version 0.3
Major highlights in this release
- APE libraries and headers have been updated from upstream
- Updated APE included the bitfield patch for cc
- several partial additions (liblzma etc) which will provide features (xz) in the future
- several (un)archivers have been added: bzip2, minigzip, unarj, unrar, unace, lzip
- Cfront has been removed from the transpilers for now, but included fortran (f2c) and pascal (p2c) transpilers. I might revisit cfront and an objC transpiler later. Suggestions for other fun transpilers or languages welcome (I might try to package perl later).
- Bash source has been added but is not being built by default: Build succeeds but the program crashes. When this is solved, it will replace pdksh as sh in APExp.
Version 0.2
Notable changes since last release:
- GNU make has been upgraded
- gawk has been upgraded
- GNU iconv and gettext included
- GNU m4 included
- several math functions from musl libc included
- a neat little message if the entire compilation completes
Version 0.1
The first version that builds portably in a clean 9front VM (tested on amd64). For some strange reason, mk install has to be run twice from the root directory because syscalls do not get integrated in libap the first time.