C Utils for Yzena
You can not 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 Howard 70374c8f43
Add better description of Yao to its docs
2 days ago
benchmarks Make a script to easily plot memcpy benchmarks against real memcpy 1 week ago
cmake@e028f89999 Update cmake submodule 1 month ago
docs Add better description of Yao to its docs 2 days ago
include Add a memcpy 2 weeks ago
lib Add clang-format officially as the autoformatter 5 months ago
res Stop copying a file that doesn't exist 3 years ago
samples Delete items that I did not write 3 months ago
src Improve ymemcpy 1 week ago
tests Improve the memcpy test 1 week ago
.clang-format Add clang-format officially as the autoformatter 5 months ago
.gitconfig Remove the scripts submodule 3 years ago
.gitignore Make the yvm compiler output no warnings 3 months ago
.gitmodules Make doc gen work with compression 1 month ago
.travis.yml Change copyrights 1 year ago
CMakeLists.txt Add a massive test for maps and vector binary search 1 month ago
LICENSE.md Initial commit into empty repo using template 4 years ago
NOTICE.md Update copyright notice 1 month ago
README.md Remove stuff from NOTICE for last commit and put something in the README 3 months ago
TODO.md Add a couple of TODO items 3 months ago
bootstrap.sh Implement the start to generating actual Yvm code in C 9 months ago
clang_cflags.txt Do a lot of work of renaming and moving stuff around 9 months ago
format.sh Add a script to do formatting 5 months ago
lint.sh Fix the lint script 3 months ago
tsp.json Update tsp 1 month 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 a modified Apache License 2.0. The modification was first used by Pixar Animation Studios for use on the OpenSubdiv project.

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.

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 Pixar's modified Apache 2.0 license.
NOTICE.md       The NOTICE file required by the Apache 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.