This is when I have to cast a pointer type to another that might need higher alignment. Signed-off-by: Gavin D. Howard <gavin@yzena.com> |
4 months ago | |
---|---|---|
benchmarks | 4 months ago | |
cmake@ec7ce30024 | 2 years ago | |
docs | 4 months ago | |
include | 4 months ago | |
lib | 4 months ago | |
samples | 4 months ago | |
src | 4 months ago | |
tests | 4 months ago | |
tools | 4 months ago | |
.clang-format | 4 months ago | |
.clang-tidy | 1 year ago | |
.gitattributes | 4 months ago | |
.gitconfig | 4 months ago | |
.gitignore | 5 months ago | |
.gitmodules | 1 year ago | |
CMakeLists.txt | 4 months ago | |
LICENSE.AGPL.txt | 1 year ago | |
LICENSE.SSPL.txt | 1 year ago | |
LICENSE.YVUL.md | 11 months ago | |
LICENSE.md | 1 year ago | |
NOTICE.md | 4 months ago | |
README.md | 4 months ago | |
TODO.md | 4 months ago | |
bootstrap.sh | 4 months ago | |
build.gaml | 4 months ago | |
build.pkg.rig | 4 months ago | |
build.rig | 4 months ago |
README.md
Yc
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
Dependencies
Yc depends on CMake. On Ubuntu, it can be installed with the following command:
sudo apt install cmake cmake-curses-gui
Status
Yc is not even in Alpha stage yet. This software is not ready for use.
Language
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.
AI-Free
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.
Contents
Files:
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.
Folders:
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.