How many Vala programs distributed via Homebrew ?
What is Vala language ? ๐
Vala is an object-oriented programming language designed to bring modern language features to C developers without adding extra runtime overhead. It primarily targets the GNOME desktop ecosystem, allowing developers to write code with high-level abstractions that compiles down to standard C.
Language Overview and Purpose ๐
Vala was created to simplify the development of applications for the GNOME desktop environment by providing a higher-level alternative to plain C. Its primary goal is to combine the productivity and syntax of modern languages like C# with the performance and low resource usage of C. Unlike many high-level languages that require a virtual machine (like Java or C#), Vala produces native binaries that have no additional runtime dependencies beyond the standard C libraries.
Compilation to C ๐
A unique characteristic of Vala is its compilation process; it is a source-to-source compiler that translates Vala code into intermediate C code rather than machine code directly. This generated C code is then compiled by a standard C compiler, such as GCC or Clang, to create the final executable. This approach allows Vala programs to easily interact with existing C libraries and maintain full binary compatibility with the C ABI (Application Binary Interface).
Syntax and Modern Features ๐
Vala’s syntax is heavily inspired by C# and Java, making it immediately familiar to developers coming from those ecosystems. Despite compiling to C, it supports numerous modern programming paradigms that plain C lacks, including:
- Object-Oriented Programming: Full support for classes, interfaces, and inheritance.
- Memory Management: Automated reference counting (ARC) manages memory automatically without the pauses associated with garbage collection.
- Productivity Features: Includes lambda expressions, type inference, generics, exception handling, and signals.
Comparison with C and C# ๐
Vala sits effectively between C and C#, offering the high-level syntax of the latter while retaining the execution model of the former.
| Feature | C | Vala | C# |
|---|---|---|---|
| Syntax Style | Low-level, imperative | High-level, Object-Oriented (similar to C#) | High-level, Object-Oriented |
| Compilation | Direct to Machine Code | Transpiles to C, then to Machine Code | Compiles to Intermediate Language (IL) |
| Runtime | Minimal (Standard Lib) | Minimal (GObject/GLib) | Heavy (Common Language Runtime) |
| Memory Management | Manual (malloc/free) | Assisted (Reference Counting) | Garbage Collection |
Integration with GNOME ๐
Vala is deeply integrated with the GObject type system, which is the foundation of the GNOME desktop platform. It was specifically designed to make writing GObject-based code less verbose and error-prone compared to writing it in pure C. Because of this tight integration, Vala is a popular choice for developing GTK graphical user interfaces and other GNOME-native applications.
Statistics of Vala programming language ๐
On December 16th 2025, The number of CLI apps written in vala and distributed via Homebrew Core Formulae is 61 apps.
You may like to compare it with Python , Rust , Go , and Ruby .
Apps written in vala and distributed via Homebrew Core Formulae ๐
- gxml : GObject-based XML DOM API
- libayatana-indicator : Ayatana Indicators Shared Library
- libosinfo : Operating System information database
- appstream : Tools and libraries to work with AppStream metadata
- libxmlb : Library for querying compressed XML metadata
- jsonrpc-glib : GNOME library to communicate with JSON-RPC based peers
- gupnp : Framework for creating UPnP devices and control points
- libgudev : GObject bindings for libudev
- vte3 : Terminal emulator widget used by GNOME terminal
- gitg : GNOME GUI client to view git repositories
- libgit2-glib : Glib wrapper library around libgit2 git access library
- libspelling : Spellcheck library for GTK 4
- simple-scan : GNOME document scanning application
- gplugin : GObject based library that implements a reusable plugin system
- gspell : Flexible API to implement spellchecking in GTK+ applications
- libgoa : Single sign-on framework for GNOME - client library
- pdfpc : Presenter console with multi-monitor support for PDF files
- vala-language-server : Code Intelligence for Vala & Genie
- gnome-online-accounts : Single sign-on framework for GNOME
- gtkspell3 : Gtk widget for highlighting and replacing misspelled words
- libsecret : Library for storing/retrieving passwords and other secrets
- template-glib : GNOME templating library for GLib
- gupnp-av : Library to help implement UPnP A/V profiles
- enter-tex : TeX/LaTeX text editor
- gssdp : GUPnP library for resource discovery and announcement over SSDP
- gucharmap : GNOME Character Map, based on the Unicode Character Database
- baobab : Gnome disk usage analyzer
- gcr : Library for bits of crypto UI and parsing
- libgdata : GLib-based library for accessing online service APIs
- libgusb : GObject wrappers for libusb1
- libpeas : GObject plugin library
- gtksourceview4 : Text view with syntax, undo/redo, and text marks
- libdazzle : GNOME companion library to GObject and Gtk+
- libpeas@1 : GObject plugin library
- [email protected] : Spellcheck library for GTK 4
- sdb : Ondisk/memory hashtable based on CDB
- spice-gtk : GTK client/libraries for SPICE
- gexiv2 : GObject wrapper around the Exiv2 photo metadata library
- libpanel : Dock/panel library for GTK 4
- valabind : Vala bindings for radare, reverse engineering framework
- babl : Dynamic, any-to-any, pixel format translation library
- ayatana-ido : Ayatana Indicator Display Objects
- gtksourceview3 : Text view with syntax, undo/redo, and text marks
- libdbusmenu : GLib and Gtk Implementation of the DBusMenu protocol
- libdex : Future-based programming for GLib-based applications
- libgee : Collection library providing GObject-based interfaces
- libhandy : Building blocks for modern adaptive GNOME apps
- libsoup@2 : HTTP client/server library for GNOME
- libsoup : HTTP client/server library for GNOME
- msitools : Windows installer (.MSI) tool
- tinysparql : Low-footprint RDF triple store with SPARQL 1.1 interface
- fwupd : Firmware update daemon
- gcab : Windows installer (.MSI) tool
- gtksourceview5 : Text view with syntax, undo/redo, and text marks
- libgda : Provides unified data access to the GNOME project
- umockdev : Mock hardware devices for creating unit tests and bug reporting
- libadwaita : Building blocks for modern adaptive GNOME applications
- libayatana-appindicator : Ayatana Application Indicators Shared Library
- libjcat : Library for reading Jcat files
- libproxy : Library that provides automatic proxy configuration management
- libshumate : Shumate is a GTK toolkit providing widgets for embedded maps
I hope you enjoyed reading this post as much as I enjoyed writing it. If you know a person who can benefit from this information, send them a link of this post. If you want to get notified about new posts, follow me on YouTube , Twitter (x) , LinkedIn , and GitHub .