<commit_before>ylib
====

A set of C header files, implements a variety of stuffs. The major aim is to bring cross-platform easy access to a variety of utils to C.

## Contents

### /

* ylist.h: A linked list implementation, imported from Linux kernel.
* yskiplist.h: A skip list implementation.
* ythread.h: A C11 thread implementation, imported from [TinyCThread](https://tinycthread.github.io)
* yref.h: WIP
* ydef.h: Some useful, compiler-independent macros.
* yrnd.h: Some fast random number generators.
* yatomic.h: A set of atomic functions.
* compiler.h: Some compiler specific macros.

### exinc/

These are some external dependencies of ylib. I'll sync those headers with upstream regularly, but I'm not the maintainer of those headers.

## How to use

You can simply copy those files into your project and include them where you need. Since some of these headers depends external headers, you should add the path to exinc to your include paths.

If you are using ythread.h on Windows, remember to link your program with ythread\_stub.c<commit_msg>README: Update yref.h<commit_after>ylib
====

A set of C header files, implements a variety of stuffs. The major aim is to bring cross-platform easy access to a variety of utils to C.

## Contents

### /

* ylist.h: A linked list implementation, imported from Linux kernel.
* yskiplist.h: A skip list implementation.
* ythread.h: A C11 thread implementation, imported from [TinyCThread](https://tinycthread.github.io)
* yref.h: A reference counting implementation, with some sanity checks to help debugging problems like missing unref.
* ydef.h: Some useful, compiler-independent macros.
* yrnd.h: Some fast random number generators.
* yatomic.h: A set of atomic functions.
* compiler.h: Some compiler specific macros.

### exinc/

These are some external dependencies of ylib. I'll sync those headers with upstream regularly, but I'm not the maintainer of those headers.

## How to use

You can simply copy those files into your project and include them where you need. Since some of these headers depends external headers, you should add the path to exinc to your include paths.

If you are using ythread.h on Windows, remember to link your program with ythread\_stub.c
{'fraction_non_alphanumeric': 0.07174887892376682, 'fraction_numerical': 0.0017937219730941704, 'mean_word_length': 4.274231678486998, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 2, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '5226876', 'n_tokens_mistral': 622, 'n_tokens_neox': 603, 'n_words': 313}