For the last few months, I've been working on-and-off on my
re-implementation of ~ATH that I mentioned previously, and for a
while I thought I was being optimistic by even attempting the
project. Now that it's finished, I realized I massively
overestimated the complexity of the problem on the scale that I
am working with. I have created what is, to my knowledge, the
first compiler implementation of ~ATH. In my mind, this was
going to be a very difficult task, especially seeing as I am
relatively new to serious programming and it was my first
project on this scale. In reality, when your compiler only needs
to target one platform (amd64 Linux), doesn't need to be
optimized, and is implementing a very simplistic language where
most operations are handled entirely by a runtime library, it is
not very difficulto to create at all. In fact, discounting
testing code, tildeathc is less than 2000 lines of C. I thought
code generation (especially assembly code generation) would be a
fundamentlaly difficult concept, regardless of scope. That is, I
learned, just not true. Compilers aren't complicated because
compilation is fundamentally complicated, they're complicated
because languages and different platforms and optimizations are
all very, very complicated. I also learned a lot about building
an actual project with code, something I had never done before.
It was overall, tremendously fun. Also, I have a ~ATH compiler
that I get to use now, so that's fun too.
I made a few small changes to the language while I was rewriting
it. Small things that I grew to be annoyed by or decided would
work better if they worked differently. I also have ideas for
much larger additions, and so I plan to keep adding to this
project over time. I've designed tildeathc in such a way that
adding optimization passes is very doable, and I hope to learn
some simple compiler optimizations with this project. Then I
want to play with some features, some being aspects of ~ATH in
homestuck that my form of ~ATH doesn't live up to yet, and some
being my own ideas for the sake of my sanity while i write the
language.
In any case, if you're curious about this project at all, or
want to try my version of ~ATH yourself, I'll leave a link to
the repository in the links section of this gopherhole. I'm
fairly sure, however, that it's something that interests myself
almost exclusively, and that is exactly how I like it.