<commit_before># Ante

[![Travis (.org)](https://img.shields.io/travis/jfecher/ante-rs)](https://travis-ci.org/github/jfecher/ante-rs)

---

Ante is a low-level mostly functional programming language targetted
at gamedev but is still applicable for most domains. Ante aims to
make it easier to write faster, safer code through region-based
memory management and refinement types.

```rs
type Person =
    job: string
    name: ref string

// Ante uses region inference to infer the data allocated
// via `new` should not be freed inside this function
make_person job =
    Person job (new "bob")

// bob is only used at this scope, so it can be safely freed afterward.
bob = make_person "programmer"

// unlike ownership systems, aliasing is allowed in region inference
bob_twin = bob
assert (bob.name == bob_twin.name)
```

Ideally, idiomatic code should be easy to read _and_ run fast so that
developers can spend as little time as possible optimizing and more time implementing new features. This
is accomplished primarily through region inference, which automatically infers the lifetime of pointers
and ensures you will never run into a use-after-free, double-free, or forget-to-free unless you explicitly
opt-out by using a different pointer type. Moreover, because lifetimes are completely inferred, you don't
have to be aware of them while programming, making ante approachable even for developers used to
garbage-collected languages. Memory within a region is allocated in a pool for the best performance, and
regions tend to be small which helps reduce memory fragmentation.

---
<commit_msg>Fix build status and example highlighting<commit_after># Ante

[![Travis (.org)](https://img.shields.io/travis/jfecher/ante)](https://travis-ci.org/github/jfecher/ante)

---

Ante is a low-level mostly functional programming language targetted
at gamedev but is still applicable for most domains. Ante aims to
make it easier to write faster, safer code through region-based
memory management and refinement types.

```scala
type Person =
    job: string
    name: ref string

// Ante uses region inference to infer the data allocated
// via `new` should not be freed inside this function
make_person job =
    Person job (new "bob")

// bob is only used at this scope, so it can be safely freed afterward.
bob = make_person "programmer"

// unlike ownership systems, aliasing is allowed in region inference
bob_twin = bob
assert (bob.name == bob_twin.name)
```

Ideally, idiomatic code should be easy to read _and_ run fast so that
developers can spend as little time as possible optimizing and more time implementing new features. This
is accomplished primarily through region inference, which automatically infers the lifetime of pointers
and ensures you will never run into a use-after-free, double-free, or forget-to-free unless you explicitly
opt-out by using a different pointer type. Moreover, because lifetimes are completely inferred, you don't
have to be aware of them while programming, making ante approachable even for developers used to
garbage-collected languages. Memory within a region is allocated in a pool for the best performance, and
regions tend to be small which helps reduce memory fragmentation.

---

{'fraction_non_alphanumeric': 0.06255806751316197, 'fraction_numerical': 0.0, 'mean_word_length': 4.365448504983389, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 4, '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': '1478758', 'n_tokens_mistral': 860, 'n_tokens_neox': 817, 'n_words': 439}