With a restrictive package set
I restart the development of vanilla.
But, it will be done differently. I no longer focus on providing every package on earth but instead will carefully chose only what's necessary. I want to provide high quality packages with proper LLVM integration to reach the target of running a fully loaded LLVM distribution. Thanks to the latest version of some upstream packages it's now possible to boot a complete LLVM vanilla right now (even the Linux kernel and elfutils!).
What changed since last work¶
LLVM 13.0 is now available¶
The latest version (at the time of writing) is 13.0.0 and available.
AArch64 support is now available¶
The project has been ported to this architecture and can now be used on Raspberry Pi!
The project will also provide armv7 support later.
There is now a limited set of package split¶
Even though I thought it's a bad idea to split package, it's unfortunately necessary for some of them. It's still considered as a feature of last resort and as such used only when necessary.
- llvm: upstream wants to build LLVM from a monorepo, as such the toolchain is fully built with one package and split into small parts: libcxx, libcxxabi, libunwind and so on.
- util-linux: this package provides libraries that are used in many places which are necessary. It is split into individual libraries: libblkid, libmount, etc.
- linux: splits into linux-headers
The package manager is two different applications¶
vpk is too big right now and as such all build features are put into a different application:
vpkbuild. I thought it was better to split
vpk because the
download function did too many things and now having separate processes simplifies the command line interface.
No summary before installing¶
vpk install command was insanely slow because it was computing the dependency list and then providing user summary. Instead
vpk will now install everything immediately like
No sysvinit anymore¶
We use our very minimalist vinit project instead. It's sole purpose is to boot the system and call init scripts. No magic, no dependencies or anything. It will also have first class silent boot support.
The minimalist vspawn is an application similar to
start-stop-daemon except that it's much more simpler. It should be used to create init scripts that do not have daemonizing features.
Reserved UIDs and GIDs will start with an underscore¶
Similar to what OpenBSD does, all UIDs and GIDs that must not be used by the end user will start with an underscore. At a glance, it helps users to indicate that a user or group must not be manually modified or joined. The first package to have been changed to that is OpenSSH which now uses
All other packages will be modified soon.
Future directions of the project.
As I also already said, I think wayland must replace X.Org at some point. It's a very large package set and wayland must be pushed ahead even more. There is no timeline for now as some desktops still require libx11 and their friends. Those who wants another init system can use their own.
Rewriting few vpk and vpkbuild parts in C¶
Shell is a good language for scripting quick stuff. But it's also limited, slow and painful to debug. When applicable as long as there are no dependencies, some part of
vpk internals will be written in C for better performances, especially in dependencies calculation.