top | item 33582179

(no title)

rui314 | 3 years ago

Author here. I'm amused that I opened HN thinking that https://docs.google.com/document/d/1kiW9qmNlJ9oQZM6r5o4_N54s... (which I posted today) might come to the front page and found this post instead.

So the chibicc book is not available yet. I'm busy working on the other project (the mold linker) and don't have time to work on it. That being said, I believe the repo is still very valuable for those who want to learn how easy it is to implement a simple C compiler. chibicc's each commit was carefully written so that you can read one commit at a time. I'd recommend starting from the initial commit and observe how each feature (`if`, `for`, local variables, global variables, etc.) is implemented by following each commit.

discuss

order

samatman|3 years ago

I'm charmed by projects like this, thanks for sharing.

What I want to see is a program like this, with very simple assembly/object code, and very fast compilation, and uses DynASM to build the executable in-memory.

Then use a tracing JIT to make it fast.

Having good, tiny, reference C compilers is a prerequisite for that, so I'm always happy to see work in that field.

samsquire|3 years ago

I am interested in this too. I would do different tradeoffs. I am more interested in optional garbage collection, the parallelism and async story in the language such as threading and coroutines or both together.

I suspect combining garbage collection, exceptions, closures, tail call optimisation, parallelism, JIT compilation and coroutines is difficult to do orthogonally.

On eatonphil's discord someone recently shared this link: This is a framework for building high performance language runtimes

https://github.com/eclipse/omr

I am currently implementing a programming language and compiler and interpreter in my multiversion-concurrency-control repository.

https://github.com/samsquire/multiversion-concurrency-contro...

I am doing codegen that is interpreted by my imaginary interpreter. My assembly has primitives for thread safe multithreading.

stefanos82|3 years ago

Rui, can you open a new Discussions thread at https://github.com/rui314/mold so we can transfer the whole conversation there?

We could ask for advice from other project developers that have succeeded on their own journey.

Rochus|3 years ago

> If they need to buy a license, that's fine, that's part of their usual business

Why not release mold linker under a dual license (open source and commercial) and sell them a commercial license?

rui314|3 years ago

It didn't work. If it is available as open-source, they don't _need_ a different license. Anyway, it's off-topic.

carapace|3 years ago

I think I recall you saying that you elided the bugs, yeah? (Am I under-caffeinated this morning?) If so, you could write a second book about the bugs and issues you encountered while implementing chibicc and, uh, that would be awesome too! (I'd buy a copy.)

- - - -

Fantastic work, congrats and thank you!