Courses & TutorialsProgramming
Awesome Vala – Massive Collection of Resources
- Data Structures & Data Types
- Editor Plugins
- Language Servers
- Graphic Libraries
- GUI Programming
- Multimedia Processing
- XML & Data Serialization
- Numerical Computation
- Crypto & Security
- Web Development
- IoC and Dependency Injection
Data Structures & Data Types
- Libgee – A utility library providing GObject-based interfaces and classes for commonly used data structures (lists, maps, queues, trees, etc.).
- Graphene – A thin layer of types for graphic libraries. It provides common types needed to handle 3D transformations: points, triangles, rectangles, quads, quaternions, vectors, matrices, spheres, etc.
- Numeric-GLib – A collection of numeric data types for GLib (and Vala) via GCC extensions. It includes 128 bit integers & floats, complex types, vectorized operations, and decimal types.
- United – A library for unit manipulation (like kilograms, meters, etc).
- Vala Code – A plugin for VIsual Studio Code that enables basic autocompletion and syntax highlighting for Vala.
- Vala-TMBundle – A TextMate bundle that provides Vala syntax highlighting, code completion, etc. Sublime Text 3 can also use this plugin.
- language-vala-modern – Provides Vala language support in Atom. It’s a fork of the unmaintained “language-vala package”.
- Vala Syntax 4 Sublime Text – A basic plugin for Sublime Text 3 that provides syntax highlighting.
- GVLS – A service that provides code completion and formatting for Vala. This does not currently work with Visual Studio Code due to missing details on the lsp implementation, but it does work with GNOME Builder.
- vala-language-server – A language server that aims to provide code completion, formatting, syntax highlighting, and everything else according to the Language Server spec.
- Cairo – A 2D graphics library with support for multiple output devices. This is pretty much the default library you get in Vala.
- SDL2 – A cross-platform development library designed to provide low level access to audio, keyboard, mouse, joystick, and graphics hardware via OpenGL, Direct3D, and Vulkan. Bindings are included in Vala and will be available starting with Vala 0.52.
- GRX – A graphics library for simple graphics displays (think 1-bit displays or Adafruit’s PiTFT displays). It also includes keyboard, mouse, joystick and touchscreen input support.
- GEGL – A data flow based image processing framework, providing floating point processing and non-destructive image processing capabilities. Think of it as “Reactive Programming for Images”.
- Babl – A dynamic, any to any, pixel format translation library.
- GTK+ – The de facto library for GUI development in Vala. Bindings are included with the vala compiler.
- GStreamer – A powerful framework for creating multimedia applications.
XML & Data Serialization
- GXML – A GObject API for manipulating XML and a Serializable framework from GObject to XML.
- Json-GLib – Implements a full JSON parser and generator using GLib and GObject, and integrates JSON with GLib data types.
- libyaml-glib – The GLib binding of libyaml, plus a GObject builder that understands YAML.
- Compose – A functional templating library for Vala.
- template-glib – A library for template expansion which supports calling into GObject Introspection from templates.
- vast – A project for generative modeling in Vala. Think of TensorFlow rewritten in Vala.
- balistica – An open source ballistic simulation library. There’s a complete calculator here.
Crypto & Security
- GnuTLS – A secure communications library implementing the SSL, TLS and DTLS protocols and technologies around them. It provides a simple API to access the secure communications protocols as well as APIs to parse and write X.509, PKCS #12, and other required structures.
- Valum – A Web micro-framework entirely written in Vala.
- Ambition – A web framework written in Vala, with the MVC pattern in mind. Kinda unmaintained (someone could refactor it to use Valum under the hood, and maybe move it to Meson 😉)
IoC and Dependency Injection
- Vadi – An IoC Container developed in order to facilitate the usage of dependency injection for Vala developers.