aboutsummaryrefslogtreecommitdiff
path: root/index.md
blob: f20cb69f4a325beb24b2cef421d974cf068e5408 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
---
title: Introduction
---

Crowbar: the good parts of C, with a little bit extra.

**This is entirely a work-in-progress, and should not be relied upon to be stable (or even true) in any way.**

Crowbar is a language that is derived from (and, wherever possible, interoperable with) C, and aims to remove as many [footgun](https://en.wiktionary.org/wiki/footgun)s and as much needless complexity from C as possible while still being familiar to C developers.

Ideally, a typical C codebase should be straightforward to rewrite in Crowbar, and any atypical C constructions not supported by Crowbar can be left as C.

# Motivation

- [Rust is not a good C replacement](https://drewdevault.com/2019/03/25/Rust-is-not-a-good-C-replacement.html)

# Journal

- [Crowbar: Defining a good C replacement](https://www.boringcactus.com/2020/09/28/crowbar-1-defining-a-c-replacement.html)
- [Crowbar: Simplifying C's type names](https://www.boringcactus.com/2020/10/13/crowbar-2-simplifying-c-type-names.html)
- [Crowbar: Turns out, language development is hard](https://www.boringcactus.com/2020/10/19/crowbar-3-this-is-tough.html)

# Comparison with C

The [comparison with C](vs-c.md) is an informal overview of the places where Crowbar and C diverge.

# Syntax

[Read the Syntax chapter of the spec.](syntax.md)

# Semantics

TODO

# Discuss

- [announcement mailing list](https://lists.sr.ht/~boringcactus/crowbar-lang-announce)
- [permanent discussion mailing list](https://lists.sr.ht/~boringcactus/crowbar-lang-devel)
- ephemeral discussions via IRC: #crowbar-lang on freenode ([join via irc](ircs://chat.freenode.net/#crowbar-lang), [join via web](https://webchat.freenode.net/#crowbar-lang))