cone
datatype99
Our great sponsors
cone | datatype99 | |
---|---|---|
7 | 29 | |
502 | 791 | |
- | - | |
0.0 | 3.5 | |
over 1 year ago | 18 days ago | |
C | C | |
MIT License | MIT License |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
cone
-
An Accessible Introduction to Type Theory and Implementing a Type Checker
Hm sounds interesting ... but I couldn't find the type checker here? https://github.com/jondgoodwin/cone/tree/master/src/c-compiler
-
AST Implementation in C
I would encourage you to look at other implementations as well. The Cone compiler is written in C: https://github.com/jondgoodwin/cone as well as my C3 compiler: https://github.com/c3lang/c3c
-
Simple compilers (LLVM backend) for studying
The Cone source code: https://github.com/jondgoodwin/cone The C3 source code: https://github.com/c3lang/c3c
-
Looking for guidance on understanding/using LLVM C API
I recommend studying the Cone source code: https://github.com/jondgoodwin/cone and if you want to dig deeper, C3: https://github.com/c3lang/c3c if you show up in the C3 discord (https://discord.gg/qN76R87) or the LLVM discord I can answer any additional questions you might have.
-
A language with non-escaping stack allocations and regions
I thought it was, but there are new commits this month.
-
What does your ideal programming language look like?
Just read about gradual memory management (https://github.com/jondgoodwin/cone)
datatype99
-
Future of high-level languages
Sum types and pattern matching have already been hacked together in a preprocessor macro in C; see https://github.com/Hirrolot/datatype99.
- So far there is no evidence that Rust adds any value here. And if C is missing certain features, they can be added.
-
Does C have an equivalent to an algebraic data type?
It does not. There are people who have implemented such constructs in C code however, for example: https://github.com/Hirrolot/datatype99
-
Memory Management Reference
Nice reference but with some strange bits:
> Algebraic data types are usually represented using a heap. Because of their non-uniformity, algebraic data types are more difficult to scan.
Using a heap??? We can represent ADTs using stack as well, that's what we usually do in C and Rust.
Shameless plug: https://github.com/Hirrolot/datatype99 (a library of mine that generates type-safe ADTs for pure C99).
-
Pretty-Printable Enumerations in Pure C
I agree; I would especially not recommend abusing macros throughout an application codebase too much. Conceptually, Metalang99 is more of a (sub)language than a library, which also adds some entry barrier. Ideally, I see the application of Metalang99 being used "behind the scenes", e.g., encapsulated in separate code files/libraries such as Datatype99 and Interface99. This is what I (mostly) do in SmolRTSP.
-
lipstick: a Rust-like syntax frontend for C
I've done something similar with Datatype99 and Interface99. They are like a macro eDSL that compiles to C. The first one features algebraic data types, the second one features interfaces.
-
Any alternative to vala?
If you need a bit more high-level constructions, you can use the Datatype99 and Interface99 libraries. The former provides polymorphism over data, the latter -- over behaviour (I am the creator of these libraries).
-
Syntatic Sugar that compiles to C
OP, you might find datatype99 and its sibling projects interesting, though they mostly leverage the C preprocessor without going all the way towards defining a new language.
-
AST Implementation in C
You can use Datatype99 to represent your AST tagged union conveniently.
-
Rust for Linux Redux
Compared to plain C, you have ADTs which help from day to day programming. You can bring them to C (https://github.com/Hirrolot/datatype99) but I don't know if the Linux guys would allow it.
What are some alternatives?
memreduct - Lightweight real-time memory management application to monitor and clean system memory on your computer.
metalang99 - Full-blown preprocessor metaprogramming
unison - A friendly programming language from the future
zig - General-purpose programming language and toolchain for maintaining robust, optimal, and reusable software.
verona - Research programming language for concurrent ownership
corrode - C to Rust translator
c3c - Compiler for the C3 language
Cloak - A mini-preprocessor library to demostrate the recursive capabilites of the preprocessor
SinScheme - Sinister's Scheme Compiler!
llvm-cbe - resurrected LLVM "C Backend", with improvements
expr-ir - An Expression Tree to LLVM-IR Example.
epilepsy - A functional language for C99 preprocessor metaprogramming [Moved to: https://github.com/Hirrolot/metalang99]