A Few Farewells

I’m going to depart from my habit of posting predominantly technical stuff here, and write a bit about some issues that I find very important on a personal level. This is going to be more for my own benefit than anything else, but I truly hope that the exploration is helpful to someone out there who may be confronting similar challenges. If nothing else, it will be a useful reminder to Futu…

Read more

Code Reuse In Actual Practice

It’s very common to hear engineers talking about "code reuse" - particularly in a positive light. We love to say that we’ll make our designs "reusable". Most of the time the meaning of this is pretty well understood; someday, we want our code to be able to be applied to some different use case and still work without extensive changes. But in practice, code reuse tends to fall flat. A…

Read more

Source-Level Debugging For Epoch Programs

This weekend marks a major milestone for the development of the Epoch programming language. For the first time, Windows debuggers such as Visual Studio and WinDbg can perform source-level debugging on Epoch programs. In a nutshell, this means that the comfortable modern development features of setting breakpoints and stepping through code are now available to Epoch programmers. One notable thing…

Read more

Using Poison to Reverse Engineer Code

Recently I’ve been working on a rather difficult task, namely creating PDB debug database files from the Epoch Language compiler toolchain. This is difficult in part because the format of PDB files is generally not well-understood, and is certainly poorly documented. I can’t go much further without a hearty thanks to the LLVM project and particularly their tool llvm-pdbdump which make…

Read more

Debugging Information Success

Early this morning, Epoch achieved a minor success in the debugging department. I was able to generate a working PDB file with symbols for a small test program, run the program in Visual Studio and WinDbg, and step through the disassembly. Along the way, the current Epoch function was correctly tracked, indicating two things: stack unwinding information is working correctly, and function-address-…

Read more

Debugging Epoch Programs

My recent adventures in self-hosting the 64-bit Epoch compiler have led me to a significant conclusion: it isn’t worth trying to self-host a compiler when you can’t debug the target language. A much better use of my time would be to improve the languishing PDB generation experiment and get the code set up to actually emit usable debug symbols for Visual Studio and WinDbg. It presently…

Read more

Epoch 64-bit compiler progress

Just a short while ago, the first working 64-bit compiler for Epoch was produced! Well, "working" might be a minor stretch; it launches, prints a simple text banner message, and then exits cleanly. But that represents a lot of operational code by itself. The 32-bit compiler is able to lex, parse, type-check, and code-gen the entirety of the 64-bit compiler’s source code. The 32-bit linker c…

Read more

Epoch Code-Generation Update

A few minutes ago, the first 64-bit self-hosted compiler for Epoch finished the code-generation process…​ unsuccessfully. For context, this means that the 64-bit compiler (as built by the existing 32-bit compiler) was lexed, parsed, type-checked, and turned into LLVM IR. What didn’t happen is a successful code emission, i.e. the compiler is not yet producing a working executable…

Read more

Epoch 64-bit self-hosting progress

For a decent while now, I’ve been working on self-hosting the Epoch 64-bit compiler. This involves getting the compiler to a point where it is robust enough to actually compile itself. In order to do this, I’m using a modified 32-bit compiler which generates 64-bit binaries. Once a working 64-bit compiler is emitted, I can feed that compiler back into itself, thus completing the head-…

Read more

Welcome to the Bag of Holding

This is a quick test of HubPress.io to see how I like it. Assuming all goes well, I will probably resume posting Bag of Holding entries here soon. Ancient archives from the Bag of Holding are on GameDev.net if you happen to like my writing. They are very, very old though. For now, here’s a sneak preview of where Epoch is headed: simplelist<integer> types = new 0, nothing…

Read more