Wednesday, August 13, 2025

New version of Golf available

Golf has undergone a major rewrite and this new version comes with great many improvements in performance, usability and stability. A full recount is at https://golf-lang.com/blog.html

Probably the most important change is that Golf is now installed from source only, and it no longer needs sudo (i.e. it installs in user's home directory). Of course, new Golf comes with an easy-to-use gginst.sh installer, which will do all the installation bits for you in a few seconds.

The reason isn't just transparency and wider audience, but performance as well. Golf generates C code from your programs, and now it uses LTO (Link Time Optimization) for an even better performance. Think of it as if you're compiling Golf's source code directly with your own, allowing whole-program optimizations that just aren't possible with simply linking libraries.

This blog will be replaced with a blog at the above URL, and future posts will be made there. This blog will redirect traffic to the new URL. Golf will no longer keep git repo mirrors in other places; GitHub will be its sole source code repository.

Overall these changes allow for a better focus of time and efforts going forward. There was lots of energy (and frustration) spent on packaging for a myriad of Linux packaging formats (apt, dnf, zypper, pacman just to name some); this kind of fragmentation was really costly. All I can say is that Linux should use a unified packaging at some point, IMO. Source-only distribution with a user-friendly installer seems like a better idea, especially since it doesn't require sudo, and since Golf compiles in mere seconds.

Note that to install 3rd party libraries that provide toolkit services (database, XML, regex etc), you still need to have sudo privileges. But these libraries are well-tested, trusted and very common and can be installed system wide once by an administrator; and if you have sudo privileges, you can safely install them individually, if and when you need them. Golf's installer (gginst.sh) can do this for you if you want, but you don't have to.

Also, since Golf now changes versioning from a single-number to semantic versioning (major.minor.patch), the version has reverted back to single digits. If you have Golf installed now, please remove (uninstall) it first before installing this new version.