Building blocks for protocol-heavy GLib code, written in Vala.
Efni (Old Norse for "material") is the layer underneath Idun and frida-core. It provides:
Buffer,BufferBuilder,BufferReader: binary (de)serialization with explicit byte order and pointer size.PromiseandFuture: awaitable results for async code.ObjectBuilderandObjectReader: structured value access overGLib.Variantand JSON.VirtualStream: anIOStreambase class for user-space transports.- Socket helpers for TCP, UDP and Unix sockets, and socket address parsing.
FS: small filesystem helpers.Debuggerand friends: an abstract debugger interface, withGDB.Clientimplementing the GDB remote protocol.XpcClient: an XPC connection wrapper, on macOS.Error: the error domain shared by everything above.
./configure
makeFor building a shared library suitable for distro packaging:
$ ./configure --enable-shared --without-prebuilds=sdk && makeThis builds libefni-1.0.so against system dependencies, using
Frida's toolchain for the Vala compiler.
Prerequisites on Omarchy / Arch Linux:
$ sudo pacman -S --needed glib2 libgee json-glib libgirepositoryPrerequisites on Fedora:
$ sudo dnf install glib2-devel libgee-devel json-glib-devel \
gobject-introspection-develPrerequisites on Ubuntu:
$ sudo apt install libglib2.0-dev libgee-0.8-dev libjson-glib-dev \
libgirepository1.0-devRecipes for Arch (PKGBUILD), Fedora (.spec) and Debian/Ubuntu
(debian/) live in packaging/. The Fedora and Debian builds run
without network access, so they take Frida's toolchain as an
additional source, and expect a source tarball that includes the
releng submodule.