Yzena's monorepo. Contains Yvm, Yao, Rig, Ur, and Yar.
You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
Gavin D. Howard 95c1f7e88b
Change the signing key
I'm going to re-sign everything soon after this.

Signed-off-by: Gavin Howard <gavin@gavinhoward.com>
4 months ago
benchmarks Add some more missing y_nodiscard and fix compile errors 4 months ago
cmake@ec7ce30024 Change the license headers 2 years ago
docs Add basic docs for the lang module 4 months ago
include Move the common lexing and parsing plumbing to its own module 4 months ago
lib Move seedrng.c to the lib/ directory 4 months ago
samples Add some more missing y_nodiscard and fix compile errors 4 months ago
src Improve the UTF-8 handling 4 months ago
tests Make a serdes module and move GAML into it 4 months ago
tools Make sure the format script skips the lib directory 4 months ago
.clang-format Use a new header sorting order 4 months ago
.clang-tidy Add a .clang-tidy config file 1 year ago
.gitattributes Update Yzena's name 4 months ago
.gitconfig Change the signing key 4 months ago
.gitignore Add a file and directory to the gitignore 5 months ago
.gitmodules Move the doc scripts into Yc 1 year ago
CMakeLists.txt Separate YC_DEBUG_CODE and YC_DEBUG_PRINT 4 months ago
LICENSE.AGPL.txt Add the actual license(s) to the repo 1 year ago
LICENSE.SSPL.txt Add the actual license(s) to the repo 1 year ago
LICENSE.YVUL.md Update the YVUL license 11 months ago
LICENSE.md Put the docs under a CC license 1 year ago
NOTICE.md Add the PCG PRNG as my seeded PRNG 4 months ago
README.md Add a note about 100% AI-free to the README 4 months ago
TODO.md Remove some TODO items 4 months ago
bootstrap.sh Update Yzena's name 4 months ago
build.gaml Separate YC_DEBUG_CODE and YC_DEBUG_PRINT 4 months ago
build.pkg.rig Fix bugs in the Rig build 4 months ago
build.rig Separate YC_DEBUG_CODE and YC_DEBUG_PRINT 4 months ago



WARNING: This project has moved to https://git.yzena.com/ for these reasons.

Yc is a library of utilities for C.

Yc is developed by Yzena.

Yc is Free and Open Source Software (FOSS). It is licensed under the Yzena Viral User License 0.1, the GNU AGPL, and the SSPL.

Getting Started

To get started, clone the repo, and then run the following commands in the root directory:

git config --local include.path ./.gitconfig
git submodule update --init --recursive


Yc depends on CMake. On Ubuntu, it can be installed with the following command:

sudo apt install cmake cmake-curses-gui


Yc is not even in Alpha stage yet. This software is not ready for use.


Yc is written in pure ISO C11.

Git Workflow

Yc uses the git workflow described here. Developers who want to contribute to Yc are encouraged to read that post carefully.

For feature branches, it uses rebase + merge --no-ff (option 3). It also uses a develop/master split. (Main development is on develop, and master just points to the latest tagged release to make it easy for users to get the latest release.)

Commit Messages

Projects under Yzena, including Yc, use the commit message guidelines laid out in this blog post.

Semantic Versioning

Yc uses semantic versioning.

Open Source, Not Open Contribution

Similar to SQLite and Litestream, Yc is open source, not open contribution, for many reasons:

  • The code uses specific implementations of math and bit operations to avoid undefined behavior, so the code "looks" wrong at first glance.
  • New features are required to have a requirements document, a comprehensive specification (preferably in a formal specification language), fully fleshed-out design documents, and a comprehensive test suite.
  • The code uses features specifically in this library to provide the semantics of Rust's borrow checker, but in C. This will also be confusing to newcomers, especially since it uses Structured Concurrency.
  • The code uses an internal build system.
  • The code style is my own slightly eccentric style.


This repository is 100% AI-Free code.

Contents Listing

Every folder contains a README file which lists the purposes for the files and folders in that directory.



CMakeLists.txt  CMake is the build system used for Yc. This is the root
                config file.
LICENSE.md      A Markdown version of the Yzena Network License 0.1.
NOTICE.md       The NOTICE file required by the Yzena Network License.


cmake       Contains CMake utilities.
docs        Contains all of the documentation for Yc (currently empty).
include     Contains all of the public header files for Yc.
src         All of Yc's source code.
tests       Tests for Yc.