Zig Programming Language
- [Nrew project] zig-afl-kit: Convenience functions for easy integration with AFL++ for both Zig and C/C++ programmers!github.com GitHub - kristoff-it/zig-afl-kit: Convenience functions for easy integration with AFL++ for both Zig and C/C++ programmers!
Convenience functions for easy integration with AFL++ for both Zig and C/C++ programmers! - kristoff-it/zig-afl-kit
Convenience functions for easy integration with AFL++ for both Zig and C/C++ programmers!
- [New project] dipm: An alternative to `curl | sh`github.com GitHub - Hejsil/dipm: An alternative to `curl | sh`
An alternative to `curl | sh`. Contribute to Hejsil/dipm development by creating an account on GitHub.
A package manager for installing linux programs that are self contained
- [Build system] gnumake: build.zig for GNU's make program: https://www.gnu.org/software/make/github.com GitHub - allyourcodebase/gnumake: build.zig for GNU's make program: https://www.gnu.org/software/make/
build.zig for GNU's make program: https://www.gnu.org/software/make/ - allyourcodebase/gnumake
From the README:
Provides a package to build/run GNU's make program.
The primary use case for this project is to facilitate "incremental ports" to the Zig build system. Start with a project by building it with Make then incrementally transfer parts of it to build.zig while maintaining a working build that can be tested throughout. It's not recommended for projects to use this package long term.
- [New project] y3: i3-inspired wrapper for Yabaigithub.com GitHub - diocletiann/y3: i3-inspired wrapper for Yabai
i3-inspired wrapper for Yabai. Contribute to diocletiann/y3 development by creating an account on GitHub.
From the README:
y3 is a wrapper for yabai that attempts to emulate i3 behavior and adds additional logic to improve the experience. It may not match 1:1, please let me know if something is missing or incorrect.
- [Update] zig-sfml-wrapper: A zig wrapper for csfml, updated for Zig 0.13github.com GitHub - Guigui220D/zig-sfml-wrapper: A zig wrapper for csfml
A zig wrapper for csfml. Contribute to Guigui220D/zig-sfml-wrapper development by creating an account on GitHub.
From the README:
This is a wrapper for CSFML. Theres no problem importing CSFML in Zig, but the resulting code can be a little bit messy. My goal is to make things close enough to SFML, with nice methods.
- [New library] json-schema-gen: Generate zig code from arbitrary json which can parse itgithub.com GitHub - travisstaloch/json-schema-gen: Generate zig code from arbitrary json which can parse it
Generate zig code from arbitrary json which can parse it - travisstaloch/json-schema-gen
From the README:
Generate zig code from arbitrary json data which can parse it.
Depends on python3 - tested with Python 3.10.12
Motivation
When you need to parse arbitrary json in zig, you usually pass
std.json.Value
to one of the parse() methods. This is convenient but is generally slower and allocates more memory than passing a concrete type.Also,
std.json.Value
can be a little akward at times. Here is how it looks to access data from the github apiwith std.json.Value:
zig const url = parsed.value.object.get("items").? .array.items[0].object.get("commits_url").?.string;
with generated schema:zig const url = parsed.value.items[0].commits_url;
This library was developed after struggling with code generated by <https://aerth.github.io/json-to-zig/>. Hopefully std.json gets diagnostics soon cause it can be difficult to tell which fields were causing parse errors.
- [New release] Zigverm v0.3.0 releasedziggit.dev Zigverm (previously zigvm) v0.3.0 released
This release is mainly dedicated towards renaming of zigvm to zigverm because a lot of people suggested to use a better name for it in my first post and this is the new name I am going with. It also covers fixing a bunch of bugs here and there. You can checkout the release here. Keep in mind that ...
zigverm (previously zigvm) is a version manager for Zig
Change log: https://github.com/AMythicDev/zigverm/blob/main/CHANGELOG.md#v030-2024-06-26
- [New library] TLS 1.2 and 1.3 clientgithub.com GitHub - ianic/tls.zig: tls 1.2 and 1.3 client in Zig
tls 1.2 and 1.3 client in Zig. Contribute to ianic/tls.zig development by creating an account on GitHub.
Zig library which implements tls 1.2 and tls 1.3 protocol.
- [New release] ZLS (Zig's language server) releases v.0.13.0github.com Release zls 0.13.0 · zigtools/zls
This release is meant to provide compatibility with Zig 0.13.0 New Contributors @ert78gb made their first contribution in #1887 @Sekky61 made their first contribution in #1896 @WillLillis made the...
Provides compatibility with Zig 0.13.0
- [Infrastructure] GitHub Actions for Zig workflowsgithub.com Setup Zig Compiler - GitHub Marketplace
Download and install the Zig compiler, and cache the global Zig cache
Makes integrating Zig projects with GitHub Actions easy and uses mirrors to reduce load on servers
- [Zig release] 0.13.0 Release Notes ⚡ The Zig Programming Language
Contains plenty of changes and upgrades to LLVM 18.1.7
Go read the release notes
- [New project] Hexdump: The alternative cross-platform hex dumping utilitygithub.com GitHub - KeithBrown39423/Hexdump: The alternative cross-platform hex dumping utility
The alternative cross-platform hex dumping utility - KeithBrown39423/Hexdump
From the README:
Hexdump is designed to replace the standard Hexdump command. If you feel uncomfortable replacing it, simply rename the binary to something else.
Features
- ASCII sidebar
- Skipping bytes
- Specified length
- Multiple formats
- Colored output
- Output to file
- [Update] Zigar 0.12.0 released - a toolkit that lets you use Zig code in a JavaScript project.github.com GitHub - chung-leong/zigar: Enable the use of Zig code in JavaScript project
Enable the use of Zig code in JavaScript project. Contribute to chung-leong/zigar development by creating an account on GitHub.
Zigar is a software tool set that lets you utilize Zig code in your JavaScript project.
- [New library] zig-json - A JSON library for inspecting arbitrary valuesgithub.com GitHub - nektro/zig-json: A JSON library for inspecting arbitrary values
A JSON library for inspecting arbitrary values. Contribute to nektro/zig-json development by creating an account on GitHub.
From the README:
JSON library for inspecting arbitrary values. Optionally accepts trailing commas.
Fully passes https://github.com/nst/JSONTestSuite.
- [Blog post] Zig's New CLI Progress Bar Explained - Andrew Kelley
From the blog:
Sometimes, programming projects are too easy and boring. Sometimes, they're too hard, never ending or producing subpar results.
This past week I had the pleasure of completing a project that felt like maximum difficulty - only possible because I am at the top of my game, using a programming language designed for making perfect software. This problem threw everything it had at me, but I rose to the challenge and emerged victorious.
What a rush.
In this blog post I'll dig into the technical implementation as well as provide the Zig Progress Protocol Specification.
- [Update] sokol-zig - Zig bindings for the sokol headers (https://github.com/floooh/sokol)github.com GitHub - floooh/sokol-zig: Zig bindings for the sokol headers (https://github.com/floooh/sokol)
Zig bindings for the sokol headers (https://github.com/floooh/sokol) - floooh/sokol-zig
From the README:
Auto-generated Zig bindings for the sokol headers.
For Zig version 0.12.0 and 0.13.0-dev
In case of breaking changes in Zig, the bindings might fall behind. Please don't hesitate to ping me via a Github issue, or even better, provide a PR :)
Support for stable Zig versions is in branches (e.g. zig-0.12.0), those versions are 'frozen in time' though.
- [New library] flags - An effortless command-line argument parser for Ziggithub.com GitHub - n0s4/flags: An effortless command-line argument parser for Zig.
An effortless command-line argument parser for Zig. - n0s4/flags
From the README:
An effortless command-line argument parser for Zig.
Features
- Zero allocations.
- Declaratively define your command as a plain Zig type.
- Single-function API.
- Multi-level subcommands.
- Automatic help message generation at comptime.
- [New project] zfe - a terminal file explorer written in Ziggithub.com GitHub - BrookJeynes/zfe
Contribute to BrookJeynes/zfe development by creating an account on GitHub.
From the README:
- Simple to use: Minimal and customizable keymaps with vim binding support.
- Image Previews: Preview images with Kitty terminal.
- File Previews: Preview contents of files directly in the terminal.
- Configurable Options: Customize settings via an external configuration file.
- [New project] ziglang-set: A generic and general purpose Set implementation for the Zig languagegithub.com GitHub - deckarep/ziglang-set: A generic and general purpose Set implementation for the Zig language
A generic and general purpose Set implementation for the Zig language - deckarep/ziglang-set
From the README:
Zig currently does not have a built-in, general purpose Set data structure at this point in time. Until it does, try this!
Rationale: It may be common knowledge that a dictionary or map or hashset can be used as a set where the value is basically void. While this is true, there's a lot to think about in terms of supporting all the common set operations in a performant and correct way and there's no good reason why a common module for this can't exist. After studying the Zig stdlib, I'm hoping this implementation can fill that gap and provide some value.
- [New project] TSxo/zli - A friendly fork of TigerBeetle's `flag` module with support for subcommand help and short options.github.com GitHub - TSxo/zli: A friendly fork of TigerBeetle's `flag` module with support for subcommand help and short options.
A friendly fork of TigerBeetle's `flag` module with support for subcommand help and short options. - TSxo/zli
From the README:
This library is a friendly refactor of TigerBeetle's flags module that adds support for:
- subcommand specific help messages; and
- short options (-k=v).
- [New project] arbor - Easy-to-use audio plugin frameworkgithub.com GitHub - ArborealAudio/arbor: Easy-to-use audio plugin framework
Easy-to-use audio plugin framework. Contribute to ArborealAudio/arbor development by creating an account on GitHub.
From the README:
arbor
For the future of plugin development
Goals
-
Dead-simple plugin development. Write <= 100 lines of code and have a runnable blank-slate plugin.
-
Ideally only require Zig as a toolchain dependency, not as a programming language. You should be able to write plugins in C/C++/whatever and easily link that code to Arbor via a C API and the Zig build system.
- Could also have a
get_zig.sh
that will download latest stable Zig if you don't already have it
- Could also have a
-
Easy cross-compilation. Compile to Mac/Linux/Windows from Mac/Linux/Windows, batteries included.
-
Cross-platform graphics. A simple software renderer (like Olivec), but also native graphics programming, potentially using something like sokol, or making a thin wrapper around Direct2D/CoreGraphics for cross-platform graphics abstraction, giving the programmer a simple choice with little-to-no platform-specific considerations.
-
Simple, declarative UI design. Possibly with the option of using a custom CSS-like syntax (or Ziggy) to declare, arrange, and style UI widgets at runtime or compile-time, all compiling to native code--not running in some god-forsaken web browser embedded in a plugin UI 🤮
Have:
-
A nice abstraction layer over plugin APIs which should lend itself nicely to extending support to other APIs
-
Easy comptime parameter generation
-
Basic CLAP audio plugin supporting different types of parameters, sample-accurate automation
-
A janky VST2 implementation that works in Reaper and mostly works in other DAWs
-
Simple, portable software rendering using Olivec and a custom text rendering function with a bitmap font
-
- [New project] ly - display manager with console UIgithub.com GitHub - fairyglade/ly: display manager with console UI
display manager with console UI. Contribute to fairyglade/ly development by creating an account on GitHub.
From the README:
Ly is a lightweight TUI (ncurses-like) display manager for Linux and BSD.
[...]
Ly should work with any X desktop environment, and provides basic wayland support (sway works very well, for example).
- [New project] md4zig - Zig wrapper around md4c for parsing Markdowngithub.com GitHub - fjebaker/md4zig: Zig wrapper around md4c for parsing Markdown.
Zig wrapper around md4c for parsing Markdown. Contribute to fjebaker/md4zig development by creating an account on GitHub.
From the README:
A Zig wrapper around md4c for parsing Markdown.
Exposes a single function that puts a parser type together from comptime-known Zig functions. The generalisation to using vtables is left as an exercise to the user.
- [New project] zuid - The best UUID library for ZIGgithub.com GitHub - KeithBrown39423/zuid: The best UUID library for ZIG
The best UUID library for ZIG. Contribute to KeithBrown39423/zuid development by creating an account on GitHub.
From the README:
This library provides a simple and efficient way to generate and manipulate UUIDs (Universally Unique Identifiers) in Zig.
Features
- Generate UUIDs of all versions (1, 3, 4, 5)
- Parse UUIDs from strings
- Convert UUIDs to strings, 128-bit integers, and byte-arrays
- Access to parts of UUID (
time_low
,time_mid
,node
, etc.)
- [Video] Zig Master - Zig, ZLS, and Neovim Setup
YouTube Video
Click to view this content.
The code in this video can be found here: https://codeberg.org/dude_the_builder/zig_master
- [Dev Update] Fluent: Fluent interface impementation for native scalar typesziggit.dev Regex: Comptime-Generated Stateless Parsing Trees and Iterators
Hello again, I’m back again with more updates 🙂 I just did a big update to fluent implementing comptime regular expressions and our first iterator that uses them - MatchIterator. Regular expressions follow the PCRE syntax. This update has a full regex parser and finite-state-automaton generator...
From the announcement:
Regular expressions follow the PCRE syntax. This update has a full regex parser and finite-state-automaton generator that builds parsing trees at comptime. All parsing trees are stateless and have @sizeOf(T) == 0.
To use Regex, just look for the fluent.match function and provide your expression string and source string: fluent.match("[abc]\\d+", str)
It’s an on going process, but it’s at a point where people can start using them and be on the lookout for more updates!
---
Fluent can be found on Github: https://github.com/andrewCodeDev/Fluent
- [New project] tuile -A Text UI library for Ziggithub.com GitHub - akarpovskii/tuile: A Text UI library for Zig
A Text UI library for Zig. Contribute to akarpovskii/tuile development by creating an account on GitHub.
From the README:
Tuile is a Text User Interface library written in Zig.
The only currently supported backend is ncurses [...]
- [New project] z2d - Pure Zig 2D graphics librarygithub.com GitHub - vancluever/z2d: Pure Zig 2D graphics library
Pure Zig 2D graphics library. Contribute to vancluever/z2d development by creating an account on GitHub.
From the README:
z2d is a 2D graphics library primarily designed around rasterizing vector primitives like lines and cubic Beziers. In other words, it's designed around supporting operations that you would see in SVG or other vector languages like PostScript or PDF.
Our drawing model is (loosely) inspired by Cairo: most operations take place through the Context, which connect Patterns (pixel/color sources) and Surfaces (drawing targets/buffers). Paths contain the vector data for filling and stroking operations. Additionally, surfaces can be interfaced with directly.
- [New project] clarp - A command line argument parsing library in ziggithub.com GitHub - travisstaloch/clarp: A command line argument parsing library in zig
A command line argument parsing library in zig. Contribute to travisstaloch/clarp development by creating an account on GitHub.
From the README:
Derive command line parsers from union and struct types. Provides nested, context aware usage text similar to the zig compiler. Works with existing data structures you may not control.
Features
-
field types
- int, bool, enum, float, optional, array, slice
- nested unions and structs
-
help / usage
- automatically printed on parsing errors
- very customizable
- nested and context aware, showing only one level of help info at once
- written to
parse_options.err_writer
(defaultstd.io.null_writer
) - accessible from any print() method:
std.debug.print("{help}", .{parse_result});
-
diagnostics which clearly point to parsing errors
-
easily dump parse results
- from any print() method:
std.debug.print("{}", .{parse_result});
- from any print() method:
-
derive short names by setting
clarp_options.derive_short_names
and override them withFieldOption.short
-
apply
clarp_options
to types you don't control withparseWithOptions()
-
rename long names with
FieldOption.long
-
long and short options can be parsed with any of these forms:
| Long | Short | | ------------- | ---------- | |
--foo value
|-f value
| |--foo=value
|-f=value
| |--foovalue
|-fvalue
|
Overview
Union types create alternative commands. Commands match field names exactly.
Struct types create sequences of options. Options match field names with leading dashes such as
--text_color
for fieldtext_color
. Named options can be parsed out of order. Unnamed, positional parsing may be enabled by settingclarp_options.fields.<field_name>.positional
.Tuple types create unnamed sequences and are parsed strictly by position.
Bool fields create 'flags' and may be specified as
--flag
ortrue
/false
when unnamed. They are always optional and default to false.Slice fields require an allocator and consume input until an argument is found which starts with '-' or end of arguments.
clarp_options.end_marker
may also be used to mark the end of field's arguments. This may be necessary with unnamed, positional fields. An Allocator can be passed asParseOptions.allocator
.Zig version
This package was developed against zig version 0.12.0-dev.3594+355cceebc
Usage
You can find many examples in the tests.
Add clarp dependency
Fetch
console $ zig fetch --save=clarp https://github.com/travisstaloch/clarp/archive/<commit-hash>.tar.gz
This will add the followingzig // build.zig.zon .dependencies = .{ .clarp = .{ .url = "https://github.com/travisstaloch/clarp/archive/<commit-hash>.tar.gz", .hash = ..., }, },
Modify build.zig
zig // build.zig pub fn build(b: *std.Build) void { const clarp = b.dependency("clarp", .{}).module("clarp"); const exe = b.addExecutable(.{...}); exe.root_module.addImport("clarp", clarp); }
Full Example
This program creates a parser and dumps the result to stderr. It is available here and can be run with
$ zig build test-demo -- args
. ```zig const std = @import("std"); const clarp = @import("clarp");pub fn main() !void { var arena = std.heap.ArenaAllocator.init(std.heap.page_allocator); defer arena.deinit(); const allocator = arena.allocator();
const ArgParser = clarp.Parser(union(enum) { cmd1: struct { foo: []const u8, pub const clarp_options = clarp.Options(@This()){ .fields = .{ .foo = .{ .desc = "Foo desc." }, }, }; }, cmd2: struct { enum { a, b } = .a }, pub const clarp_options = clarp.Options(@This()){ .fields = .{ .cmd1 = .{ .desc = "Cmd1 desc.", .short = "c1" }, .cmd2 = .{ .desc = "Cmd2 desc.", .short = "c2" }, }, }; }, .{});
const args = try std.process.argsAlloc(allocator); const parsed = ArgParser.parse(args, .{ .err_writer = std.io.getStdErr().writer().any(), }) catch |e| switch (e) { error.HelpShown => return, else => return e, }; std.debug.print("{}\n", .{parsed}); } ```
clarp_options
When a struct or union contains a
pub const clarp_options
declaration, it changes parsing behavior. Nested structs and unions may declare their ownclarp_options
.ParseOptions
Runtime parsing options. The second argument to
clarp.Parser(T).parse()
.ParserOptions
Comptime global parsing options. The second argument to
clarp.Parser()
.help flags
By default, if an arg is
help
,--help
or-h
context aware usage is displayed. You may change the help flags by passing an enum type forParserOptions.help_type
.```console $ zig-out/bin/testexe help Usage: testexe [command]
Commands:
cmd1, c1 Cmd1 description. cmd2, c2 Cmd2 description.
General Options:
help, --help, -h Print command specific usage. ```
Notice how this message is derived from the
union(enum)
passed toclarp.Parser()
above and that itsclarp_options
declaration affects the output, adding thec1
andc2
shorts and descriptions.Command specific help
```console $ zig-out/bin/testexe cmd1 help Usage: testexe cmd1 [options]
Cmd1 description.
Options:
--foo: string Foo description.
General Options:
help, --help, -h Print command specific usage. ```
Command line examples
Here are some results from the
ArgParser
we defined above in Full Example.Long names
```console $ zig-out/bin/testexe cmd1 --foo 'opt1 value'
cmd1: foo: "opt1 value" ```
Short names
```console $ zig-out/bin/testexe c1 --foo 'opt1 value'
cmd1: foo: "opt1 value"
$ zig-out/bin/testexe c2 b
cmd2: 0: b ```
Diagnostics
```console $ zig-out/bin/testexe foo Usage: testexe [command]
Commands:
cmd1, c1 Cmd1 description. cmd2, c2 Cmd2 description.
General Options:
help, --help, -h Print command specific usage.
error at argument 1: foo ^~~ error: UnknownCommand #... stack trace omitted ```
-
- [New relase] River 0.3.0, Waylock 1.0.0, Status Update
River is a dynamic tiling Wayland compositor written in Zig: https://isaacfreund.com/software/river/
Blog post about the River 0.3.0 and Waylock 1.0.0 update: https://isaacfreund.com/blog/river-0.3-waylock-1.0/
- [New project] turbopack - Tiny and efficient rect packer written in Zig, based on rectpack2Dgithub.com GitHub - flut2/turbopack: Tiny and efficient rect packer written in Zig, based on rectpack2D
Tiny and efficient rect packer written in Zig, based on rectpack2D - flut2/turbopack
From the README:
Tiny and efficient rect packer. The algorithm is very similar to and is heavily inspired by rectpack2D and the blog post it's based on.
- [New project] ziglo - zig interface to liblo's OSC server implementationgithub.com GitHub - ryleelyman/ziglo: zig interface to liblo's OSC server implementation
zig interface to liblo's OSC server implementation - ryleelyman/ziglo
From the README:
ziglo is a Zig interface to liblo, an implementation of the Open Sound Control protocol. ziglo provides Zig types for liblo primitives and convenience functions for adding and querying message contents leveraging Zig’s comptime.
- [New project] flex-yacc-zig-json-parser - a json parser in flex yacc and ziggithub.com GitHub - travisstaloch/flex-yacc-zig-json-parser: a json parser in flex yacc and zig
a json parser in flex yacc and zig. Contribute to travisstaloch/flex-yacc-zig-json-parser development by creating an account on GitHub.
From the README:
Explore using a flex/yacc parser from zig to build a json Ast. The resulting json parser is able to parse complex json files such as twitter.json, build a std.json.Value Ast, and print it using std.json.stringify().
- [New project] zik - Source-level static instrumentation framework for Ziggithub.com GitHub - silversquirl/zik: Source-level static instrumentation framework for Zig
Source-level static instrumentation framework for Zig - silversquirl/zik
From the README:
A slightly cursed library for source-level static instrumentation in Zig.
This repository also includes a simple function-level profiler that outputs to the callgrind format, which is readable by KCacheGrind.
- [New project] zig-javascript-bridge - Easily call Javascript from Ziggithub.com GitHub - scottredig/zig-javascript-bridge: Easily call Javascript from Zig wasm
Easily call Javascript from Zig wasm. Contribute to scottredig/zig-javascript-bridge development by creating an account on GitHub.
From the README:
This library creates bindings for accessing Javascript from within a WASM runtime
Calling Javascript functions from Zig is a pain. WASM has restrictions on the function API surface, and how references to the runtime environment (Javascript) can be stored. So to access Javascript functionality from Zig, you must create: a function in Zig which is friendly to call, a function export, and a function in Javascript which translates into the call you actually want.
This isn't too bad so far, but the Javascript API surface is large, has a lot of variadic functions, and accepts many types. The result is that your programming loop of just wanting to write code slows down writing a large amount of ill fitting boilerplate whenever you must cross the Zig to Javascript boundary.
This package is clearly inspired by Go's solution to this problem: https://pkg.go.dev/syscall/js
- [New project] osmium - A Python Interpreter written in Ziggithub.com GitHub - Rexicon226/osmium: A Python Interpreter written in Zig
A Python Interpreter written in Zig. Contribute to Rexicon226/osmium development by creating an account on GitHub.
Work-in-progress Python 3.10 Interpreter written in Zig
- [New project] zeit - a time library written in ziggithub.com GitHub - rockorager/zeit: a time library written in zig
a time library written in zig. Contribute to rockorager/zeit development by creating an account on GitHub.
A time library written in zig, licenced under MIT
- [New project] musa - A multiseat Wayland compositor with external window managers - sourcehut git
Musa is a Wayland compositor with external window managers and first-class multiseat support. Musa is slowly approaching daily usability, but there's still a long way to a polished compositor.
Inspired by River
- [New proejct] zcrun - linux container runtime built with ziggithub.com GitHub - 1nwf/zcrun: linux container runtime built with zig
linux container runtime built with zig. Contribute to 1nwf/zcrun development by creating an account on GitHub.
From the README:
zcrun
a simple linux container runtime built with zig
Features
- namespaces:
- isolate network, pid, mount, and uts namespace
- cgroups:
- support cgroups v2
- limit memory, cpu, or pids (# of procs).
- internet access inside containers using SNAT
Usage
> [!NOTE] > make sure that ip forwarding is enabled to be able to access the internet inside containers. > run
sysctl net.ipv4.ip_forward
to check if it is enabled. > if not, runsudo sysctl -w net.ipv4.ip_forward=1
to enable it.> [!Important] > zcrun must be run as root
```sh $ mkdir rootfs
export container rootfs dir using docker
$ docker export $(docker create busybox) | tar -C rootfs -xvf -
run the container using zcrun
zcrun run <name> <rootfs> <cmd>
$ zcrun run busybox rootfs sh ```
Dependencies:
- The
iptables
command. - Zig. This branch was tested using version
0.12.0-dev.3191+9cf28d1e9
.
- namespaces: