<commit_before>Fast Parser Combinators for C#
==============================

Example usage:

```CSharp
public sealed class Point {
    // (X can't be set externally, but the library will detect that it can use the constructor parameter 'x' to do it)
    public readonly int X;
    public readonly int Y;
    public Point(int x, int y) {
        X = x;
        Y = y;
    }
}

var pointParser = new Parse.Builder<Point> {
    // since y comes first in these entries, the serialized form will have y first
    {"y", Parse.Int32LittleEndian},
    {"x", Parse.Int32LittleEndian}
}.Build();

var p = pointParser.Parse(new byte[] {2,0,0,0, 3,0,0,0}).Value;
// p now contains a Point with X=3 and Y=2
```

Example optimizing usage:<commit_msg>Updating readme<commit_after>PickleJar
=========

**PickleJar is not yet ready for usage.**

PickleJar is a library for describing the binary serialized formats, and using that description to pack and parse values into and out of said format.

PickleJar performs optimization and compilation of parsers/packers at runtime, to avoid the overhead of interpreting the descriptions anew each time.

(The name comes from python, which refers to serialization as 'pickling', and the process of actually making pickles, which uses actual jars.)

========
Examples
========

Parsing a 2d point, serialized as two contiguous floats:

```CSharp
public sealed class Point {
    public readonly float X;
    public readonly float Y;
    public Point(float x, float y) {
        X = x;
        Y = y;
    }
}

var pointJar = new Jar.Builder<Point> {
    {"x", Parse.Float32},
    {"y", Parse.Float32}
}.Build();

var p = pointParser.Parse(new byte[]{0,0,0,0, 0,0,128,63}).Value;
// p now contains a Point with X=0.0f and Y=1.0f
```

Using StructLayoutAttribute to allow memcpy optimizations:
{'fraction_non_alphanumeric': 0.12341597796143251, 'fraction_numerical': 0.018732782369146005, 'mean_word_length': 3.7168831168831167, 'pattern_counts': {'":': 0, '<': 5, '<?xml version=': 0, '>': 5, 'https://': 0, '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': '4565083', 'n_tokens_mistral': 571, 'n_tokens_neox': 535, 'n_words': 227}